Slashdot Mirror


Prothon - A New Prototype-based Language

Ben Collins writes "Prothon is a new industrial-strength, interpreted, prototype-based, object-oriented language that gets rid of classes altogether in the way that the Self language does. It uses the sensible, practical syntax and add-on C module scheme from Python. This major prototype improvement over Python plus many other general improvements make for a clean new revolutionary breakthrough in language development. Prothon is simple to use and yet offers the combined power of Python and Self. Check out the first public pre-alpha release at prothon.org."

630 comments

  1. Pre Alpha Release? by Thanatopsis · · Score: 4, Insightful

    A pre alpha release really isn't newsworthy. Is this some one's pet project? I wasn't aware Python was broken.

    1. Re:Pre Alpha Release? by seaswahoo · · Score: 5, Funny

      Well, it would be newsworthy if it were a pre-alpha release of Duke Nukem Forever.

    2. Re:Pre Alpha Release? by Frymaster · · Score: 5, Funny
      A pre alpha release really isn't newsworthy. Is this some one's pet project?

      this language doesn't just use prototypes... it is one.

    3. Re:Pre Alpha Release? by stoolpigeon · · Score: 0, Offtopic

      gotta push that x-34 dupe down off the front page- no matter what it takes

      --
      It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    4. Re:Pre Alpha Release? by Anonymous Coward · · Score: 0

      Regarding Pre Alpha... is it really fit to be called industrial strength at this time?

    5. Re:Pre Alpha Release? by Lord+Agni · · Score: 2

      And didn't Ruby fix Python already, in the same way that Python fixed Perl? May Prothon is actually the name of this anime robot.

    6. Re:Pre Alpha Release? by FortKnox · · Score: 5, Insightful

      A pre alpha release really isn't newsworthy. Is this some one's pet project?

      That's what it sounds like to me.
      Someone has an idea, makes a sourceforge page for it, gets some developers, writes up his ideas full of marketspeak. What happens to it? About 95% of the time, it dies a long, slow death.
      That's pre-alpha, folks! I'll be happy to look at it when it reaches 1.0, but until then, I'm playing the odds.

      I wasn't aware Python was broken.

      Perl wasn't broken when Python was made, right? Adding another language never harms anyone, really. If it proves to be powerful, people will use it. If it proves to be clean and easy to understand, people will use it as a learning tool. If it doesn't offer anything better than any other language, it will die. Its just the evolution of coding languages.

      Hell, if everyone followed the philosophy of "well, [programing language] isn't broken, why make another." We'd all be programming in assembly... or worse, bytecode.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    7. Re:Pre Alpha Release? by Mateito · · Score: 1

      > Well, it would be newsworthy if it were a
      > pre-alpha release of Duke Nukem Forever

      Acutally, it is a pre-alpha release of Duke Nukem Forever, but Taco hasn't finished downloading yet.

    8. Re:Pre Alpha Release? by Anonymous Coward · · Score: 2, Interesting
      Perl wasn't broken when Python was made, right?

      You must be joking! Perl has always been broken. They may change the implementation as much as they want, but as long the syntax stays like it is I (along with many others) will consider it broken.
    9. Re:Pre Alpha Release? by rabbot · · Score: 1

      I like programming in assembly.

    10. Re:Pre Alpha Release? by Funkitup · · Score: 2, Funny

      are you Ralph Wiggum?

    11. Re:Pre Alpha Release? by Anonymous Coward · · Score: 0

      You forgot to add: "You insensitive clod!"

    12. Re:Pre Alpha Release? by rabbot · · Score: 0, Offtopic

      3 simpsons

    13. Re:Pre Alpha Release? by rabbot · · Score: 0, Offtopic

      err love simpsons.

    14. Re:Pre Alpha Release? by Lifewish · · Score: 1

      I program in bytecode, you insensitive clod!

      --
      For the love of God, please learn to spell "ridiculous"!!!
    15. Re:Pre Alpha Release? by costas · · Score: 1
      Well, it's an interesting experiment, and if it comes up with something neat that can then be rolled into Python, that'd be great. But, out of the list of differences with Py (and Py is my favorite language by far) I only saw one thing that I liked, and that is that integers automatically provide generators so that:
      for i in 7:
      actually makes sense without having to use range(). Neat idea, but obviously limited (have to start from 0, no stepping) and not a justification for another language. Plus, every one of the other differences was actually a *worse* way to do it...
    16. Re:Pre Alpha Release? by Short+Circuit · · Score: 1

      The only thing I hate is having to keep up to date with the latest runtimes of Perl, Python, and their dependancies.

      I'm on sneakernet right now, and apt-zip still isn't up to snuff for what I need.

    17. Re:Pre Alpha Release? by Anonymous Coward · · Score: 2, Funny

      Hell, if everyone followed the philosophy of "well, [programing language] isn't broken, why make another." We'd all be programming in assembly... or worse, bytecode.

      Bytecode?!?! In my day we didn't have these fancy "bytes". We didn't even have binary; we had to program in unary. Try writing an operating system in all zeros, and then maybe I'll take you seriously.

    18. Re:Pre Alpha Release? by hereticmessiah · · Score: 1

      Ah, but prototype-based languages are much cooler than class-based languages. That's the best thing about JavaScript, IMHO.

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    19. Re:Pre Alpha Release? by Davin+Boling · · Score: 1

      Yeah, well-meaning or not, it fits my definition of a pet project. Taking just the *first* item from the list of Python differences, it already looks as if it's deviating from the hyped "vision" and taking advantage of the fork to make an existing language conform to one's own personal standards. But maybe that's just me, I'll let you decide. Said example:

      "Only tabs are allowed in indents. Spaces are not allowed. Indenting two or more indents than the line above indicates a continuation of the line above. Spaces are allowed after the extra indents to align the continuation line. Continuation is not allowed due to comma lists alone as allowed in Python."

      I could pick apart a few others, but this is enough to illustrate my point already. I'm not blindly against the idea of a prototype-based Python. But changes like this with no justified explanation provided (changing established standards for the hell of it because you happen to like it better that way yourself) this early into a project's history is a little uncalled for.

    20. Re:Pre Alpha Release? by Indras · · Score: 4, Funny

      Well, it would be newsworthy if it were a pre-alpha release of Duke Nukem Forever.

      Yes, hell freezing over and the end of all mankind would be newsworthy, wouldn't it?

      --
      The speed of time is one second per second.
    21. Re:Pre Alpha Release? by oldwarrior · · Score: 0
      Hell, if everyone followed the philosophy of "well, [programing language] isn't broken, why make another." We'd all be programming in assembly... or worse, bytecode.


      Actually, we all do. It's just that most of us have "expert mode" filters turned off and are using applications (high level languages) to guide the development environment to produce our machine code. Same thing for javalike langs as ultimately we are shaping the instructions run by the virtual machine. It's all machine code.

      --
      If it were done when 'tis done, then t'were well it were done quickly... MacBeth
    22. Re:Pre Alpha Release? by Anonymous+Brave+Guy · · Score: 1
      Try writing an operating system in all zeros, and then maybe I'll take you seriously.

      You and your new-fangled concepts. People managed quite happily without zero for millions of years! Then along came your Babylonian friends, and look what happened...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    23. Re:Pre Alpha Release? by ip_freely_2000 · · Score: 1

      Agreed. It's the expression of ideas that help us advance. A proposal for a new way to solve problems can generate momentum and tangents that can help us in unknown ways. I'm sure someone looked at Linux in the early days and said "I'm pretty happy with Unix, but maybe this Torvalds kid is on to something"

    24. Re:Pre Alpha Release? by Anonymous Coward · · Score: 0

      >>... or worse, bytecode.

      Um, Nope. Worse would still be bits, toggled in via little switches. Real programmers don't need no stinkin' keyboards! ;)

    25. Re:Pre Alpha Release? by jovlinger · · Score: 1

      python is class based, this is object based.

      This makes it easier to do proper role-based problem decomposition. Imagine that I have a person class, and that person can sometimes be married. So I make a subclass of person to represent that. oh. well, if they get divorced, I've got to make a new object of the person type and copy over my data, and also update a handle so that all references point to the person object.

      And what if we also wanted to model the person's employment status? Well, now we need to somehow order the Married and Employed subclasses so that a person can be any combination of the lot.

      Prototypes allow objects to be inherited from. Thus, if aPerson is the parent of both anEmployee and aMarriedPerson, then we get precisely the behavior we want.

      Prototypes are like explicit delegation, but with the 'this' value kept at the original reciever. hrm. You could actually build this fairly easily in standard python, w/o even using metaclasses: just override the method lookup functionality to walk the inheritance chain.

    26. Re:Pre Alpha Release? by rsborg · · Score: 1
      Perl wasn't broken when Python was made, right?

      You must be joking! Perl has always been broken. They may change the implementation as much as they want, but as long the syntax stays like it is I (along with many others) will consider it broken.

      Everyone is entitled to their opinion, you're probably a big fan of Python (or would be if you used it)... and a good reason why it is so popular today. So maybe Prothon will have the same success? Time will tell, I suppose

      --
      Make sure everyone's vote counts: Verified Voting
    27. Re:Pre Alpha Release? by costas · · Score: 1

      But that's the point of metaclasses, you could overwrite the method lookup functionality once for your metaclass prototype and then enforce that behavior on all of your classes.

    28. Re:Pre Alpha Release? by metalslinger · · Score: 1

      good sig.

      --
      /. Heroics - 99.999%
    29. Re:Pre Alpha Release? by Anonymous Coward · · Score: 0
      We'd all be programming in assembly... or worse, bytecode.

      Hmmh. Why would programming in bytecode be worse than assembly? I'd think bytecode is a slightly higher-level abstraction than simple assembler... and thus potentially having some benefits over assembly.

    30. Re:Pre Alpha Release? by cshark · · Score: 1

      It doesn't really sound much like a new language. It sounds more like a programming methodology. Which is great... if you call it that.

      --

      This signature has Super Cow Powers

    31. Re:Pre Alpha Release? by Anonymous Coward · · Score: 0

      No, because, if all mankind ended, who would hear it, irrespective of surrounding forests?

    32. Re:Pre Alpha Release? by Courageous · · Score: 1

      python is class based,...

      Not really. Python "classes" behave like instances of objects, the way you'd expact out of a metaclassing language (which is what Python is, nothing like C++ or Java classes AT ALL).

      C//

    33. Re:Pre Alpha Release? by Euler · · Score: 1

      From a coding perspective, I don't see a huge advatage to be gained by throwing away class definitions and using existing objects instead. In both cases you (hopefully) get a fresh copy of an object with all values set to a known/sane state.

      But I have to say that inhereting from an existing object as prothon does is really bad from a design and maintainablility standpoint. Its hard to follow exactly what properties a given instance will have at a given time. What if objects are created dynamically (as most sophisticated programs would do). Now at run-time, we can't count on exactly what state the parent object will be in... what if a member function or variable was deleted or over-ridden, now any children spawned will be broken.

      There is an important motivation to have inheritance from instances though. This could allow for modeling real-world data such as business rules which don't fit well into traditional data structures like tables or trees. I'm intereested in designing a system that does this by modeling differences and similarities between concepts simulataneously. However, I wouldn't do it as a programming language, but as a data storage model to be implemented in Python. The idea is to have data structures that can implement successively more specific instances of nodes, and abstract groups of nodes to better model structures needed for AI problems.

    34. Re:Pre Alpha Release? by sglines · · Score: 1

      I'm still not sure why people gave up on Fortran.

  2. Pity about the name by Eunuchswear · · Score: 5, Funny

    Sounds like a korean car.

    --
    Watch this Heartland Institute video
    1. Re:Pity about the name by Earle+Martin · · Score: 5, Funny

      Maybe it's a cunning anagram of "hot porn".

    2. Re:Pity about the name by Anonymous Coward · · Score: 1, Funny

      Only if the API includes a eatNeighborsDog() function.

    3. Re:Pity about the name by Anonymous Coward · · Score: 0

      Or a mystical anagram of "horn top" or "horn pot"?

    4. Re:Pity about the name by eclectro · · Score: 4, Funny

      Maybe it's a cunning anagram of "hot porn"

      Thanks a lot dude. I'll never be able to use "prothon" without thinking of "hot porn" now.

      You pretty much have managed to kill it right out of the box.

      --
      Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
    5. Re:Pity about the name by Anonymous Coward · · Score: 0

      I tried re-arranging the letters and found that it is not maybe an anagram of "hot porn", but definitely such an anagram.

    6. Re:Pity about the name by tverbeek · · Score: 4, Funny
      Thanks a lot dude. I'll never be able to use "prothon" without thinking of "hot porn" now.

      {puzzled} You say that as if it were a bad thing.

      --
      http://alternatives.rzero.com/
    7. Re:Pity about the name by Chmarr · · Score: 1

      I'll get back to you on that, once I actually find some truly Yellow People.

      (Hey... I have this tub of Yellow Aquacolour here... anyone up for some bodypainting? For science, of course :) Ugly people need not apply. )

    8. Re:Pity about the name by Anonymous Coward · · Score: 0

      Then getting this name adopted would really be a cunning stunt.

    9. Re:Pity about the name by Tablizer · · Score: 2, Funny

      They had a chance to name a new language, and didn't go with "Quaoar", after the trans-plutonian big-ass asteroid? What a shame. You can't get more geeky than Quaoar. I love to watch people injure their tungs[1] trying to pronouce it. Massive coolness.

      [1] Another word I cannot spell.

    10. Re:Pity about the name by Anonymous Coward · · Score: 1, Interesting

      How about the new aspect-oriented front end for databases? We could call it . . . wait for it . . . MyAss!

    11. Re:Pity about the name by Anonymous Coward · · Score: 0

      heh heh... you said "box"

    12. Re:Pity about the name by StarfishOne · · Score: 0


      Well it is if you tell your boss that you've discovered this revolutionary new programming language called "hot porn". :o

      Now that this association has been made in the minds of countless /. readers.. you can expected to hear someone make this mistake soon :p

    13. Re:Pity about the name by koali · · Score: 1

      >>Thanks a lot dude. I'll never be able to use >>"prothon" without thinking of "hot porn" now.
      >{puzzled} You say that as if it were a bad thing.

      You say that as if you didn't think of it all the time (hot porn, that is).

    14. Re:Pity about the name by identity0 · · Score: 3, Funny

      Well, let me kill some other languages for you -

      Python - Hot Nyp(ple), Not Hyp
      COBOL - B Cool
      FORTRAN - Rant Fro, Nor Fart
      Lisp - Slip, Lips
      Objective-C - Object Vice
      BASIC - I Scab

      And the most horrific of all....

      C - C !!!!

    15. Re:Pity about the name by kin_korn_karn · · Score: 1

      I would offer, but you'd run out of paint just from trying to paint my cock

    16. Re:Pity about the name by zhenlin · · Score: 1

      Proton is the name of a Malaysian automobile company.

      Proton is also the name of the positively charged particle in the nucleus of atoms.

    17. Re:Pity about the name by Anonymous Coward · · Score: 0

      Malaysian

    18. Re:Pity about the name by Anonymous Coward · · Score: 0

      The name is "ProtHon".

    19. Re:Pity about the name by Koguma · · Score: 1

      Actually it's a Malaysian Car.

  3. How can they... by ThrasherTT · · Score: 5, Insightful

    call it "Industrial-Strength" if it's "pre-alpha?"

    --

    All Your Memory Are Belong To Java
    1. Re:How can they... by Thanatopsis · · Score: 1

      Good point. Especially if it's running on that server, it doesn't appear to industrial strength.

    2. Re:How can they... by O2n · · Score: 5, Funny

      call it "Industrial-Strength" if it's "pre-alpha?"
      Microsoft gets away with this every time....

    3. Re:How can they... by ThrasherTT · · Score: 1

      Funny, but I'd agree with you if it had said, "Beta." Pre-alpha, to me, means almost completely and totally unusable, and I don't think we've gotten something like that from Volesoft in a while. Although some parts of 99% of MS products are unusably broken, the could at least be called beta...

      --

      All Your Memory Are Belong To Java
    4. Re:How can they... by Magada · · Score: 0

      Probably by "projection of final capabilities". Also known as "how defence R&D contractors get their contracts" aka "wishful thinking in a convincing manner". Better to ask "why has this made news altogether?".

      --
      Something bad is coming when people are suddenly anxious to tell the truth.
    5. Re:How can they... by Gilk180 · · Score: 1

      I have to admit that I didn't RTFA, but from the post it looks like it is being called an "Industrial-Strength ... language," not an industrial strength interpreter or project.

      Given, a language by itself is useless, but it is possible to design a language with certain attributes before having the tools to actually use it.

    6. Re:How can they... by Lozzer · · Score: 1

      I thought industrial-strength meant it could be used do dissolve things. It is something I've always found lacking in other languages (except brainf*ck, ulamda, INTERCAL et al which dissolve braincells for breakfast).

      --
      Special Relativity: The person in the other queue thinks yours is moving faster.
    7. Re:How can they... by tsvk · · Score: 2, Interesting

      Without having looked at the project pages, I'd guess that the features of the language (syntax, etc.) make it industrial-strength, but this particular first implementation of the language (compiler, libraries, etc.) is only at the pre-alpha stage.

    8. Re:How can they... by bogado · · Score: 1

      I would guess that all of that are the goals the author want to achieve in the gold (1.0) version.

      --
      []'s Victor Bogado da Silva Lins

      ^[:wq

  4. YANISL: Just What We Needed by Khelder · · Score: 3, Funny

    Yet Another New and Improved Scripting Language! Just what we needed!

    Oops, did I say that out loud?

    1. Re:YANISL: Just What We Needed by Jahf · · Score: 1

      No kidding, I finally bothered to look at a Python script last week.

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
    2. Re:YANISL: Just What We Needed by cratermoon · · Score: 5, Funny

      A new language is here! A new language is here! I needed something to go between "Perl" and "Python" in my alphabetical index of languages.

    3. Re:YANISL: Just What We Needed by parvenu74 · · Score: 1

      "A good solution applied with vigor now is better than a perfect solution applied too late." -- General George S. Patton

      What exactly is the "perfection" of Prothon going to allow that cannot now be achieved with Python, Perl, C, Java, etc....

    4. Re:YANISL: Just What We Needed by Hater's+Leaving,+The · · Score: 4, Informative

      Not improved - just as bad:

      "Like Python, Prothon uses indentation ..."

      Oh joy.

      THL.

      --
      Keeping /. cynic density high since the fscking Kwhores/trolls arrived.
    5. Re:YANISL: Just What We Needed by Hater's+Leaving,+The · · Score: 2, Insightful

      Prolog

      --
      Keeping /. cynic density high since the fscking Kwhores/trolls arrived.
    6. Re:YANISL: Just What We Needed by arose · · Score: 1

      Pike.

      --
      Analogies don't equal equalities, they are merely somewhat analogous.
    7. Re:YANISL: Just What We Needed by AJWM · · Score: 1

      PL/1.

      --
      -- Alastair
    8. Re:YANISL: Just What We Needed by jilles · · Score: 1

      Normally I would agree. There's a lot of reinvent the wheel type of languages. However, this particular language uses a delegation based, class-less paradigm rather than the class based, inheritance paradigm most other languages come with.

      It derives from Self, which was an experimental language developed by SUN's researchers in the eighties. While the language itself never got out of the prototype stage (ironically), much of the research that went into the project eventually resulted in Java. Particularly hotspot derives from compiler research for self.

      Prototype languages are really cool once you grasp how they work. Especially in a dynamically typed environment like a scripting language, it makes sense to use one. Prothon seems to combine the right concepts with a popular, proven python like syntax and for that alone deserves some attention.

      Basically delegation is a feature that current oo languages do not have. They allow you to delegate to another object but you then get to suffer from the so-called self problem (if the delegating method calls a method on itself, the executing object is not the same as the delegating object).

      Example: suppose your object A was based on object B (i.e. B is the prototype of A). Suppose B has a method m1 that calls another method m2 on self. Now m1 is called on A which does not have that method and delegates to its prototype B. B executes m1 and calls m2. Suppose that A does have a method m2. In prothon and self m2 will be called on A, in java, c++, c#, smalltalk and all regular OO languages m2 will be called on B.

      This is what delegation is about in a nutshell. Inheritance and polymorphism in regular OO languages can be seen as very limited version of delegation. If class A (which has m2) inherits from class B (which has m1 and m2), instance o of A will use B's m1 and A's m2.

      Interestingly C# has a delegate construct used for events, but language purists will be able to point out this is not the real deal and that C# suffers from the self problem.

      --

      Jilles
    9. Re:YANISL: Just What We Needed by Khelder · · Score: 1

      I know about Self (very cool, I agree) and I know about prototype-based languages. Mainly, I was trying to be funny. I was also slightly serious, I admit. I really doubt that yet another interpreted language is going to have much impact or is really that important. Especially considering how early in the process things are.

      "It's a joke, son. Laugh." - Foghorn Leghorn

  5. YAL (INTL)... by Doches · · Score: 1, Redundant

    ...Yet Another Language I Need To Learn...

    1. Re:YAL (INTL)... by tomstdenis · · Score: 3, Insightful

      Need to? I find most people that brag about knowing a dozen languages never really use any one of them.

      See also: jack of all trades, master of none.

      Tom

      --
      Someday, I'll have a real sig.
    2. Re:YAL (INTL)... by Anonymous Coward · · Score: 1, Funny

      Your keen biting observation humbled 50,000 readers today. Keep up the terrible work.

    3. Re:YAL (INTL)... by be-fan · · Score: 1

      Actually, that's a bit off. The "trade" in this case is programming. Languages themselves are just like tools. You don't see a carpenter bragging "yeah, I'm a master --- I only use hammers."

      --
      A deep unwavering belief is a sure sign you're missing something...
    4. Re:YAL (INTL)... by tomstdenis · · Score: 2, Insightful

      well sorta I guess. An analogy would be if a carpenter claimed to know how to use all tools of the trade yet never actually builds anything.

      I dunno, I take this from experience. At school many of my friends put on their resumes that they can "code" in C, C++, Perl, Java, Javascript, PHP, etc. yet haven't accomplished a single thing in any of them outside of the usual lab assignment.

      While new programming languages aren't always a bad thing they have to serve purpose. Perl in my books is cool because it's a fast and expressive language that has handy string/hash/array ops. But langs like Java/C++ really are just a dime-a-dozen. Might as well stick with C for compiled languages...

      Tom

      --
      Someday, I'll have a real sig.
    5. Re:YAL (INTL)... by AJWM · · Score: 3, Insightful

      I've been paid (as in, it was part of my job at the time) to write code in: APL, Assembler, Basic, C, C++, Cobol, Fortran, Java, JavaScript, Pascal, Perl, PHP, PL/I, PostScript and SQL (plus variants of some of those), as well as job control languages like JCL and WFL, simple scripting in sh and csh, several proprietary application-specific scripting languages like MITS, SPSS, GML and GSL, and miscellanous markup languages (troff, formal, HTML, XML, rtf, etc). And a half-dozen different text editors (CANDE, Teco, FIX, vi, emacs...)

      I've probably left a few out, and that's not even mentioning languages I learned incidental to a class assignment (GPSS, Simscript II and Simula for a course on discrete event digital simulation, SNOBOL for something on text processing, Lisp).

      The point is not to brag, but to point out that any professional software developer should be both expected to know several languages and should expect to learn and use several more over the course of his career. (But if you're going to mention it on a resume, give some indication of skill level -- expert, experienced or just "I wrote a 'hello world' in it once"?)

      A mechanic is expected to have a pretty complete toolkit, with both metric and imperial wrenches, slot and Phillips and Torx screwdrivers, etc. -- and in Canada, Robertson screwdrivers too. (OTOH, he probably doesn't need a left-handed blivet impeller unless he's just into collecting tools for their own sake.) Somebody designing a product to be built -- whether a machine or a software system -- needs to be aware of what tools and materials are available to build the product with, and to maintain it. (In this regard progamming languages are more like materials than tools, either way they should be chosen for their properties.)

      --
      -- Alastair
    6. Re:YAL (INTL)... by FictionPimp · · Score: 1

      I find that only knowing a single language really limits your productivity. I mean not every language fits every task. I think of them as tools, and while I may only use 2-4 of the tools in my box, I like having them all in there just in case. Just the otherday I had a guy ask me if I could help him finish up his website in asp. I've never really wrote a vb app, but it was simple childs play by using basic programming principles. Thats also why I spend my free time working with assembly (well a hybrid of high level assembly and masm as i get better) I dont really plan to write my next program in it, or any major project, but its nice to know its there if I ever need it.

    7. Re:YAL (INTL)... by jovlinger · · Score: 1

      The part where this analogy breaks down is getting the tools to work together; being able to write text munging in PERL, business logic in OO, and the really hairy bits in a functional language.

      Doing it UNIX style works for simple architectures, but, as little as I'd like to admit it, the CLR and the JVM may be the only realistic ways to make there parts fit together.

    8. Re:YAL (INTL)... by be-fan · · Score: 1

      How does my analogy break down under those conditions? That was precisely my point! Programmers need to be well-versed with a range of tools, and know how to use them wisely.

      --
      A deep unwavering belief is a sure sign you're missing something...
    9. Re:YAL (INTL)... by tomstdenis · · Score: 1

      One point though is knowing "of" other languages and being able to learn them as required [e.g. being smart about computors] is more important than memorizing parts of "cobol for jackasses" books.

      Tom

      --
      Someday, I'll have a real sig.
    10. Re:YAL (INTL)... by jovlinger · · Score: 1

      because for a carpenter, a hammer and screwdriver trivially work together.

      when you want to apply multiple computer languages to a problem, you are often faced with foreign function call hassles that are bigger than the gains from good language choice.

  6. Maybe they should write a new webserver by DarkFencer · · Score: 3, Funny

    Maybe they should write a new webserver in Prothon... to survive the slashdotting...

    1. Re:Maybe they should write a new webserver by kyjello · · Score: 5, Funny

      They would if it wasn't easier to do in python.

      --
      kyjello is too damn smooth to make a signature.
    2. Re:Maybe they should write a new webserver by PCM2 · · Score: 1

      A Beowulf cluster of Prothon-based Web servers could never survive the slashdotting of our new Natalie Portman overlords, to whom all our base now belong!

      --
      Breakfast served all day!
  7. Here we go.... by Anonymous Coward · · Score: 4, Interesting

    with the "witty" names again. Anyway, can someone explain to me how eliminating classes is better? I thought that implementing classes, the OOP approach, was the better way to go.

    They don't really explain why their way is better. They just state it as though it was a matter of fact.

    Make your vote count

    1. Re:Here we go.... by Anonymous Coward · · Score: 0

      So why do you assume OOP is the better way to go?

    2. Re:Here we go.... by keoghp · · Score: 0

      How can they have eliminated classes. Even if its in a class of its own its in a class, and if its in a class.... (Russels paradox)

      --
      For problems, seek only the simplest solution, complexity brings with it more problems.
    3. Re:Here we go.... by orangenormal · · Score: 5, Interesting

      Prototype languages still hold many of the OO concepts, but objects are created directly. That is, a "blueprint" approach (i.e., the class) is not used in the creation of objects. Inheritance still works by cloning and modifying existing objects. Although this makes sense in some ways (ideas like the Singleton pattern fit more nicely in this paradigm), in reality prototype languages gain features that make them more and more class-like. I'm not a big fan, personally.

    4. Re:Here we go.... by Eagle5596 · · Score: 4, Insightful

      So why do you assume OOP is the better way to go? I don't assume that OOP is the better way to go. I know it is from experience. I work with a lot of OPC (other people's code for those who don't know the term), and let me tell you, working with objects is about 10x easier for maintence, and for adding functionality. OOP isn't an excuse to code poorly though, I will take non-OOP that is well written over OOP that is poorly written, however as most of the code I deal with is poorly written, the OOP does make it easier.

      OOP enables you to easily swap out modules, or replace existing code. As long as you know the inputs and outputs of an object, it can be seemlessly removed for a newer version. This makes maintence much easier, and so long as public/private/protected conventions are followed, it can allow for some really smooth upgrades.

      IMHO inheritance is an overrated feature of OOP, I primarily like it because it forces people to work in a black box model, which makes the whole problem of updates and bug fixes 100x easier for the person who has to deal with your otherwise crappy code.

    5. Re:Here we go.... by icklemichael · · Score: 3, Informative

      implementing classes, the OOP approach

      The OOP approach isn't limited to the class based languages. Class based languages have traditionally been more popular. The only recent mainstream prototype based language I can think of is javascript.

      Saying one is better than the other is only ever likely to generate an argument, they're just different.

      Have a look here for the classic paper on the prototype based approach.

    6. Re:Here we go.... by Anonymous Coward · · Score: 0

      Prototype languages eliminate classes by erasing the dictinction between classes and instances of a class.

    7. Re:Here we go.... by Anonymous Coward · · Score: 2, Informative

      Other prototype languages. The only one (other than JavaScript) to attain some real use is NewtonScript (the language for the Apple Newton).

    8. Re:Here we go.... by Mr.+Slippery · · Score: 1
      OOP enables you to easily swap out modules, or replace existing code. As long as you know the inputs and outputs of an object, it can be seemlessly removed for a newer version.

      But that's encapsulation and abstraction, which can be achieved in most any language. (C, for example, lets you do this by encapsulating things in the scope of one file.)

      IMHO inheritance is an overrated feature of OOP

      Exactly. What you like is not object orientation, it's modularity - encapsulation and abstraction.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    9. Re:Here we go.... by TheRaven64 · · Score: 2, Informative
      What you like is not object orientation, it's modularity - encapsulation and abstraction

      Umm, that's what object orientation is. It is possible to write OO code in C. It's easier in a language like Objective-C, which provides syntactic constructs to help.

      For a good explanation of OOP, read the beginning chapters of Stroustrup's `The C++ Programming Language'. He gives a good description of the difference between object oriented code (which can be written in almost any language) and code written in a language which supports object orientation.

      --
      I am TheRaven on Soylent News
    10. Re:Here we go.... by Anonymous Coward · · Score: 0

      Weid that they have such a description in a C++ book then. That language can't be blamed for supporting object orientation well.

    11. Re:Here we go.... by Bjimba · · Score: 1

      Two L's in Russell, heathen.

      --
      --- question = 0xFF; // optimized Hamlet
    12. Re:Here we go.... by Too+Much+Noise · · Score: 1

      scripting languages and set theory fans don't grok each other's jokes it seems. You didn't even get someone asking something like "what's a russel and why's it messing up my classes, I have enough homework already!"

      You're still in your own class it seems, so you're not in ... uh, nevermind.

    13. Re:Here we go.... by Suicide+Clown · · Score: 1

      I wonder how long it will take until we see Prothon++ (a.k.a. Prothon with classes, templates, etc.) announced.

      I can hardly wait.

      --

      "I don't know why I bothered to type this in."

    14. Re:Here we go.... by Cthefuture · · Score: 1

      Written like someone who has never used a functional language before. And I know a lot of functional programmers that would argue that OOP is not the way.

      Give Haskell or Erlang a try. If you've never done functional programming it'll take a while to get used to it but it's worth it. I wouldn't bother with O'Caml straight away because it's kinda convoluted and the default syntax sucks.

      Personally I feel future better languages will combine OOP and functional programming. Some languages are already doing it but I haven't seen any really tasty combinations yet.

      --
      The ratio of people to cake is too big
    15. Re:Here we go.... by Anonymous Coward · · Score: 0

      I thought that implementing classes, the OOP approach, was the better way to go.

      Sure, just ask any functional programmer.

    16. Re:Here we go.... by Mr.+Slippery · · Score: 1
      What you like is not object orientation, it's modularity - encapsulation and abstraction

      Umm, that's what object orientation is.

      No, object orientation also implies inheritance. Without that you have what's sometimes called "Abstract Data Types" (though that term is also used by some OO folks to describe abstract base classes), not objects. Don't have Stroustrup handy, but I can cite Yourdon's "Object-Oriented Systems Design" on this. Or see this Wikipedia page. Objects = Abstract Data Types + Inheritance. (Some insist that polymorphism must also be present to give OO.)

      You can easily get encapsulation and abstraction (Abstract Data Types) in C. Put your module in a separate .c file, keep your private stuff in the .c file and mark it static and put declarations of anything you want to export in a .h file and use the "external" keyword.

      You can get real OOness in C but it takes some heavy lifting, see gtk for an example.

      And of course you can write non-OO code, or really bad OO code ("object obfuscated"), in C++.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    17. Re:Here we go.... by Eagle5596 · · Score: 1

      Written like someone who has never used a functional language before. And I know a lot of functional programmers that would argue that OOP is not the way.

      Give Haskell [haskell.org] or Erlang [erlang.org] a try. If you've never done functional programming it'll take a while to get used to it but it's worth it. I wouldn't bother with O'Caml straight away because it's kinda convoluted and the default syntax sucks.

      Personally I feel future better languages will combine OOP and functional programming. Some languages are already doing it but I haven't seen any really tasty combinations yet.


      Actually I've done a lot of functional programming before, mostly LISP, and while it is great for some things it isn't for others. Imperitive programming works best for the majority of situations, especially considering its wide spread use.

    18. Re:Here we go.... by Cthefuture · · Score: 1

      LISP isn't a functional language. LISP can be any type of language.

      --
      The ratio of people to cake is too big
    19. Re:Here we go.... by gstoddart · · Score: 1

      Hmmm .... So if we then have 'Prototype Object Oriented Programming' (POOP), would we then up with OH-POOP for "Other Humans Prototype Object Oriented Programming"?

      Sure sounds like it to me.

      --
      Lost at C:>. Found at C.
    20. Re:Here we go.... by Anonymous+Brave+Guy · · Score: 2, Insightful
      I don't assume that OOP is the better way to go. I know it is from experience.

      Let's not over-generalise, eh? There are plenty of things that don't fit neatly into a purely OO form as commonly supported by major OO languages, and I'm not just talking about functional programming techniques. Not everything is an object (in the OO sense), simple as that.

      IMHO inheritance is an overrated feature of OOP, I primarily like it because it forces people to work in a black box model, which makes the whole problem of updates and bug fixes 100x easier for the person who has to deal with your otherwise crappy code.

      It's certainly true that many people don't understand the rationale behind inheritance and polymorphism, both of which are key components of object oriented programming. It's also true that these features are heavily over-used in some systems as a result of that lack of understanding, leading to "clever" designs that are actually harder to maintain than a completely non-inheritance-based system would have been.

      The key advantage of inheritance/polymorphism in an OO design is really just a well-defined structure for implicit type conversions. If you're not using polymorphism, there's usually not much point in inheritance either. (You could achieve code reuse using aggregation instead, without all the overheads of having a whole class hierarchy.)

      However, without inheritance and polymorphism, you're not talking about OO. You're advocating modular design and/or the use of abstract data types (OK, those aren't independent concepts). I've often heard a data-centric approach without inheritance and polymorphism called "object based" programming, which strikes me as quite a good term for it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    21. Re:Here we go.... by Eagle5596 · · Score: 1

      Notice I never said "Don't use inheritence", just that it was overrated. Programming OO forces people to use encapsulation, left to their own devices, people will just cobble together shit that barely functions. OO approaches force a structure, which to me is the beauty. Inheritance is nice when you can use it, and I have before on a few occasion. But most of the time, I can deal without it.

    22. Re:Here we go.... by demi · · Score: 1

      Yea! An Erlang booster!

      Seriously, really work through it for a couple of weeks, and then one day you will have an epiphany--you will "get it" and become a fan.

      I really like Erlang because it's functional programming done in a completely practical, common-sense way. The syntax is elegant without being over-general, and its pattern-matching and function clause selection enable you to write in a really expressive yet compact way.

      I haven't tried Haskell because I was originally attracted to Erlang specifically for its concurrency features. Also, I fear and distrust lazy evaluation.

      --
      demi
    23. Re:Here we go.... by Anonymous Coward · · Score: 0

      eliminating classes isn't the same thing as disallowing OOP

      in C++, there must be a distinction between classes and the instances of those classes, for no other reason than that it's a compiled language. classes are the compile-time representations of your objects, while the instances are the runtime representations

      in a scripting language, there *is* no "compile-time", so drawing a distinction between classes and instances isn't really necessary

      python's object model makes this especially clear, since operations on classes and instances are essentially the same. a prototype-based python (making classes and instances "the same thing") seems very natural....

    24. Re:Here we go.... by Anonymous Coward · · Score: 0

      > Programming OO forces people to use encapsulation, left to their own devices, people will just cobble together shit that barely functions.

      I don't know; this sounds to me like you're saying the problem is that people don't encapsulate, and you propose teaching them OO as the answer (instead of teaching encapsulation). I mean, it sounds like you're sidestepping solving the problem directly, to apply a more complicated solution.

    25. Re:Here we go.... by Minna+Kirai · · Score: 1

      Philosophical programmers are free to argue about what OO means, but the only true requirement is what's expressed in the name: "Object Oriented". Meaning a program is based on objects as the fundamental unit of coding (as compared with the earlier "function oriented" languages).

      Any attempt to further constrain the term's meaning is but an expression of opinion. Neither Yourdon or Stroustrup originally invented it; their works only tell what they think it is most useful for OO to mean. (That's the best any mortal can really do)

      You can get real OOness in C but it takes some heavy lifting, see gtk for an example.

      Implementing OO in C is a patented technique and may not be used the express written consent of Sun Microsystems, Incorporated.

      Notice of this "gtk" product has been forwarded to the cognizant lawyers, who will presently establish terms to convey all "gtk" intellectual property rights to Sun Microsystems, Incorporated. The win-win synergy will leverage to new frontiers of UCI innovationness.

    26. Re:Here we go.... by jcr · · Score: 1

      " I thought that implementing classes, the OOP approach, was the better way to go."

      Implementing classes isn't the OOP approach, it's one OOP approach.

      In a prototype-based language like Self, for example, instead of inheriting your behavior from your class and its superclasses, and keeping instance variables for each instance, you can inherit your behavior (and your storage) from your prototype.

      So, for example: if I have three rectangle objects, and they each need a color, a line width, and dimensions to describe how to draw them, in a class-based language like Objective-C, each instance would have variables for each attribute.

      In a prototype-based system, I could have each rectangle refer to a prototype, and only store the variables that differ from the prototype.

      I can fully model a class hierarchy with prototypes, but in a class-based system, I couldn't put different methods on individual instances.

      All in all, protoypes are simpler and more expressive than classes.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    27. Re:Here we go.... by Mr.+Slippery · · Score: 1
      ...but the only true requirement is what's expressed in the name: "Object Oriented". Meaning a program is based on objects as the fundamental unit of coding

      Sure, but one then has to ask, "What is an object"? The concepts of encapsulation and abstraction predate the widespread use of the term "object" to describe a software entity.

      But, yeah, so long as the code is clear, I don't care what you call your technique. :-)

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    28. Re:Here we go.... by hak1du · · Score: 1

      OOP enables you to easily swap out modules, or replace existing code. As long as you know the inputs and outputs of an object, it can be seemlessly removed for a newer version.

      The input/output behavior of objects is not sufficient to describe its behavior completely because objects are stateful. In fact, this is a key drawback of OOP.

      Functional programming fixes that: in functional programming, you really do only need to lknow the "input/output behavior" of functions.

      (Note that "functional programming" is not the same as "procedural programming". Languages like ML and Haskell are functional programming languages, languages like C and Pascal are procedural programming languages.)

  8. Prototype-based Prothon ehh? by arose · · Score: 3, Funny

    Call me when Producthon is ready.

    --
    Analogies don't equal equalities, they are merely somewhat analogous.
    1. Re:Prototype-based Prothon ehh? by Chuffpole · · Score: 2, Funny

      I thense a thynic, you inthenthetive clod :o)

    2. Re:Prototype-based Prothon ehh? by arose · · Score: 1

      That was a reeeeeeeeally uuuuuuuseful comment. /comic book guy

      --
      Analogies don't equal equalities, they are merely somewhat analogous.
  9. Re:Uh by Anonymous Coward · · Score: 0

    This could be considered a fix for Python that doesn't break compatibility.

    Anyway, IHBT IHL IHAND etc

  10. industrial strenght ???!!! by lfourrier · · Score: 3, Funny

    Obviously, the web server is not industrial strength, at least not /.proof.

    As for industrial strength of the langage, knowing some industry guys, some pre alpha system is certaintly not ready.

  11. Tabs, no classes by Sloppy · · Score: 2
    At firest reading about the tab thing, the bile swelled up. (Heck, my vim config won't even let me type a tab anymore.) But it's not really a bad idea. I can see how it will incite flames, though.

    I didn't see much in the way of code examples on the site. The "no classes" thing confused me and I would have loved to see some example Prothon code that accomplishes the kinds of things that I would have used a class for, in Python.

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    1. Re:Tabs, no classes by Garion911 · · Score: 1

      The other thing I found that was interesting was the introduction of using the case of the first char of a variable to signify the scope.. That would take some getting used to I suppose..

      --
      Slashdot is like Playboy: I read it for the articles
    2. Re:Tabs, no classes by Waffle+Iron · · Score: 1
      The "no classes" thing confused me and I would have loved to see some example Prothon code that accomplishes the kinds of things that I would have used a class for, in Python.

      One of the inspirations for this kind of thing is the Self language. In a nutshell, instead of defining classes, you make up an example object instance by adding fields and methods to it, then you keep it around and clone it to make more. You can do "subclassing" by altering a prototype object then keeping it and cloning that one.

      When I read up on Self, I thought it was kind of cool. However, IMO it suffers from the same issue as languages like Scheme: it's so stripped down, malleable and flexible that it ends up being too "slippery", and normal programmers can't really get a grip on it.

      IIRC, the JavaScript language also essentially uses a prototype-based object system, so more people may be familiar with the concept than they realize.

    3. Re:Tabs, no classes by ajs · · Score: 1

      It's an interesting idea, but I'm not sure I see how using an object as a prototype in this way is valuable. For starters, it seems like it would force libraries to instantiate fully-formed objects instead of defining behaviors. That means you're going to carry around a LOT of baggage from every object type you might ever want to instantiate!

      I also don't see how this can perform terribly well. There's certainly no such thing as inlining....

    4. Re:Tabs, no classes by Anonymous Coward · · Score: 0

      > I also don't see how this can perform terribly well.

      Well, it is a prototyping language. If your software ends up running slow as hell, don't let it sneak its way into produc'thon' because "hey, it works now."

    5. Re:Tabs, no classes by be-fan · · Score: 1

      Well, not necessarily. If the compiler can determine the "class" of an object statically, the methods can easily be inlined. You just need smarter compilers than what you usually see in the C/C++/C#/Java world.

      --
      A deep unwavering belief is a sure sign you're missing something...
    6. Re:Tabs, no classes by tverbeek · · Score: 1
      The other thing I found that was interesting was the introduction of using the case of the first char of a variable to signify the scope.. That would take some getting used to I suppose..

      Not too difficult if you're old enough to remember Fortran's first-letter-of-the-variable-name requirements. Not high on my own list of "quaint ideas to revive".

      --
      http://alternatives.rzero.com/
    7. Re:Tabs, no classes by Jay+Maynard · · Score: 2, Insightful

      I don't mind indentation syntax (after all, all it really is is enforcing prettyprinting, something I do anyway), and having tabs only as indentation characters makes sense to me.

      However, having character case be syntactically significant is a major botch. Case sensitivity was Dennis Ritchie's biggest mistake, and every time someone perpetuates it - or, as in this case, makes it even more significant - it just entrenches the botch even more.

      Case sensitivity is wrong because people don't naturally think that way. In no natural language does the case of a character convey information that cannot be gained from context. I'm sure I'll get flooded with replies saying "but I do think of C and c as different!"...to which I'll reply by asking, "But did you, before you learned C/Unix/whatever computer language or OS first required you to pay attention to character case?"

      I predict that this will be a rich source of bugs and programmer frustration in Prothon programs, just as it is in C. That assumes, of course, that Prothon ever makes it out of the Sourceforge page and into the real world.

      --
      Disinfect the GNU General Public Virus!
    8. Re:Tabs, no classes by castanaveras · · Score: 1

      I tend to name lists/sets/tuples as N so that I can later do

      for n in N:
      foo
      bar

      for me, it's immediately apparent that n is an element of N, but maybe that's just me.

    9. Re:Tabs, no classes by maxwell+demon · · Score: 3, Interesting
      In no natural language does the case of a character convey information that cannot be gained from context.


      German:
      "Mein Sohn soll Forscher werden." = "My son shall become a researcher."
      "Mein Sohn soll forscher werden." = "My son shall become more snappy."
      --
      The Tao of math: The numbers you can count are not the real numbers.
    10. Re:Tabs, no classes by gazbo · · Score: 1, Insightful
      Hoo - boy! If I thought you were trolling I'd congratulate you for that great line. As it is, I think you need to learn a bit about programming.

      "Prototyping" doesn't just mean "to make prototype applications"

    11. Re:Tabs, no classes by jdunn14 · · Score: 1

      I predict that this will be a rich source of bugs and programmer frustration in Prothon programs, just as it is in C.

      Personally I don't find it all that frustrating because of exactly the reason you stated. I am a C programmer, and I do think of C and c as different due to my programming experience. However, the only way capitolization could cause bugs (i.e. not a simple compiler-caught syntax error thats fixed in 5 seconds on 1 line) is if you are using capitolization to differentiate between C and c. Thats a prorgammer who knows the difference between C and c and is trying to be too clever. But then again my variable names tend to be a bit on_the_verbose_side (or is that onTheVerboseSide or maybe g_onTheVerboseSide =).

      As for indentation. I don't generally like the enforced indentation format simply because it doesn't always match what I find to be the most readable. Also, I personally use spaces not tabs since a weird editor setting can't really make spaces a different size and make for odd layouts.

    12. Re:Tabs, no classes by sketerpot · · Score: 1
      When I read up on Self, I thought it was kind of cool. However, IMO it suffers from the same issue as languages like Scheme: it's so stripped down, malleable and flexible that it ends up being too "slippery", and normal programmers can't really get a grip on it.

      That's why Scheme needs to replace all those slippery parentheses with brackets that you can get a grip on. Which would be easier to hold: () or []?

      Seriously, though, Scheme is worth learning for mind expansion purposes alone. It's fun to deal with such a flexible language.

    13. Re:Tabs, no classes by bosef1 · · Score: 1

      Also consider the difference between Polish and polish in English. The first is a nationality, the second is something you rub on wood.

    14. Re:Tabs, no classes by Tet · · Score: 1
      At firest reading about the tab thing, the bile swelled up. (Heck, my vim config won't even let me type a tab anymore.)

      Funny... my first thought was almost exactly the opposite -- "thank the gods that someone's finally done this right!" It will prevent a whole class of subtle bugs, simply by flagging the error immediately, rather than silently continuing with different (and unintended) behaviour.

      --
      "The invisible and the non-existent look very much alike." -- Delos B. McKown
    15. Re:Tabs, no classes by Anonymous Coward · · Score: 0

      It said context,
      One sentence hardly has any context

    16. Re:Tabs, no classes by Anonymous Coward · · Score: 0

      But this is still a very nice example. One can easily imagine a conversation about "where my son is going", future career, personality traits, etc, in which this phrase would be entirely ambiguous.

    17. Re:Tabs, no classes by AJWM · · Score: 2, Insightful

      In no natural language does the case of a character convey information that cannot be gained from context.

      Glad you added that qualifier. But the whole point of programming languages is to minimize the amount of context (read, "redundancy") needed to make the meaning clear.

      Now you can go back to putting a polish on your Polish sausage ;-)

      --
      -- Alastair
    18. Re:Tabs, no classes by spitzak · · Score: 1

      Don't be an ass. With "enough context" you can replace entire words with meaningless alternatives, or delete them, or insert new ones, or rearrange them, and still "understand" the text. With "enough context" you can understand the text even if whole paragraphs are missing or rearranged. With "enough context" you can understand something written in Chinese.

    19. Re:Tabs, no classes by spitzak · · Score: 1

      Using case to indicate different things has well-established history in mathematics notation back to at least the 1700's, and is often used in phonetics and pronouciation indicators that date back to 1900 at least. It was not invented by K&R.

    20. Re:Tabs, no classes by tdelaney · · Score: 1

      It's going to make post code to newsgroups and mailing lists absolute hell.

      I used to program with all tabs, but i saw the light when I started being involved in the Python newsgroups. All those people with crappy news/mail programs (including myself) that do stupid things with tabs - but they all handle spaces just fine.

    21. Re:Tabs, no classes by Hektor_Troy · · Score: 3, Insightful

      Not to mention Danish and danish ... one is a language and a nationality, the other is a pastry.

      --
      We do not live in the 21st century. We live in the 20 second century.
    22. Re:Tabs, no classes by Carnildo · · Score: 1

      Don't be an ass. With "enough context" you can replace entire words with meaningless alternatives, or delete them, or insert new ones, or rearrange them, and still "understand" the text.

      `Twas brillig, and the slithy toves
      Did gyre and gimble in the wabe:
      All mimsy were the borogoves,
      And the mome raths outgrabe.

      "Beware the Jabberwock, my son!
      The jaws that bite, the claws that catch!
      Beware the Jubjub bird, and shun
      The frumious Bandersnatch!"

      He took his vorpal sword in hand:
      Long time the manxome foe he sought --
      So rested he by the Tumtum tree,
      And stood awhile in thought.

      And, as in uffish thought he stood,
      The Jabberwock, with eyes of flame,
      Came whiffling through the tulgey wood,
      And burbled as it came!

      One, two! One, two! And through and through
      The vorpal blade went snicker-snack!
      He left it dead, and with its head
      He went galumphing back.

      "And, has thou slain the Jabberwock?
      Come to my arms, my beamish boy!
      O frabjous day! Callooh! Callay!'
      He chortled in his joy.

      `Twas brillig, and the slithy toves
      Did gyre and gimble in the wabe;
      All mimsy were the borogoves,
      And the mome raths outgrabe.

      --
      "They redundantly repeated themselves over and over again incessantly without end ad infinitum" -- ibid.
    23. Re:Tabs, no classes by DavidHumus · · Score: 1

      English:
      "I'm going to a playboy party."
      "I'm going to a Playboy party."

    24. Re:Tabs, no classes by Ozan · · Score: 1

      Although I agree to your point of case-sensitivity being wrong...

      In no natural language does the case of a character convey information that cannot be gained from context.

      German:
      "Ich bin gut zu Vogeln" translates to "I am nice to birds"
      "Ich bin gut zu vogeln" translates to "I am good to be fscked"

      Gee am I glad to speak it natively, it's impossible to learn it completedly as foreign language.

    25. Re:Tabs, no classes by 2short · · Score: 1



      Oh, you just need smarter compilers than anyone has managed to produce for any of the most widely used languages. Great then, no problem there.

    26. Re:Tabs, no classes by Anonymous Coward · · Score: 0

      Sun's HotSpot JIT is derived from their work on Self. C++ compilers tend to suck because all sorts of rare and bizzare semantics are required to work and because the kind of lusers who make ordinary applications in C++ whine about slow optimizers of all things.

    27. Re:Tabs, no classes by Anonymous Coward · · Score: 0


      Don't know what C++ compilers you've been using, or what lusers you've been listening to.

      For anything too big for assembly (i.e. basically everything) a good C++ coder and a good C++ compiler will produce the fastest code you can get.

      Just out of humerous curiosity, what C++ semantics would you consider "rare and bizarre"?

    28. Re:Tabs, no classes by Jay+Maynard · · Score: 1

      The comments on case break down into two classes:

      1) German. Here, character case is, inexplicably, a grammatical marker that the word denotes a noun, rather than some other part of speech. Aside from the few cases (two examples in this thread; how many others)? where two words are, in fact, separated by case only, miscapitalizing the first letter results in an error that's easily compensated for without actual loss of information. (The German equivalent of "I read the handbook" would be no less understandable if you wrote "handbuch" instead of "Handbuch", although your reader would cluck his tongue at the error.) For those cases where there are indeed two distinct words separated only by case, how do you disambiguate in conversation instead of written communication? In particular, if I were to say one of those sentences above to you out of the blue, how could you tell which I meant? Context, and context alone.

      2) Homonyms. "Polish" and "polish" are the most common examples here. They are disambiguated both by context and pronunciation, and if I were to write "I had a polish sausage for lunch", one would have to stretch the possibilities to consider that I had eaten a sausage skin full of Pledge. (That's a common furniture polish here in the US, for those of you who aren't inundated with American advertising.) Other cases are simply nonsensical: consider the alternative meaning of "polish prime minister". Similarly, danish (the pastry, which is often written with a leading capital) and Danish (the nationality) are disambiguated by use, since the latter is an adjective or adverb, not a noun. (The English noun is Dane.)

      That the few examples here are commonly trotted out whenever this argument is raised further proves my point: if capitalization truly conveyed information in the common case, there would be lots of counterexamples. As it is, there are only a few, and they tend to happen by coincidence or importation of foreign words rather than by the normal process of language evolution.

      --
      Disinfect the GNU General Public Virus!
    29. Re:Tabs, no classes by Jay+Maynard · · Score: 1

      Both of these, however, are specialized uses that have nothing to do with natural language and the way the average person thinks. Not all programmers have backgrounds in mathematics or linguistics, nor should they be required to.

      --
      Disinfect the GNU General Public Virus!
    30. Re:Tabs, no classes by Jay+Maynard · · Score: 1
      Actually, in this case, a capitalization bobble can create an actual bug, not just a compile error, since Prothon isn't compiled. Consider the following (which may not be exactly correct Prothon syntax, but you'll get the idea):
      account.balance := 0; /* assign to the local variable */
      [...]
      Account.balance += 5000; /* increment the local variable, I thought */
      [...]
      print account.balance; /* WTF?! I put $5000 in that account! */
      See the problem? The sequence above (which will, almost certainly, be separated by lots of other code) will silently fail, and the change intended to the local variable will instead be applied to a global that's not used for anything. If the programmer is lucky, that will be detected at runtime the first time that code path is exercised, but even that is problematical at best.
      --
      Disinfect the GNU General Public Virus!
    31. Re:Tabs, no classes by Jay+Maynard · · Score: 1

      If I had to work on a program you committed that one in, I'd come after you with a rusty, mistuned chainsaw. $DEITY, how deliberately obscure.

      --
      Disinfect the GNU General Public Virus!
  12. p fixation? by Anonymous Coward · · Score: 5, Funny

    What's with all these languages that start with 'p'? perl, python, php, not to mention good old pascal, and now prothon. Is there a joke here that I'm missing?

    1. Re:p fixation? by Anonymous Coward · · Score: 2, Interesting

      What's with all these languages that start with 'a'? Ada, APL, Awk, not to mention good old ALGOL, and now AsmL.

      What's with all these languages that start with 'b'? BASIC, BCPL, Brainfuck...

      c: C, C++, C#, caml, COBOL
      d: DELPHI, Dylan,
      e: ERLANG, Eiffel, E
      f: Fortran, Forth, FP

      etc, etc.

    2. Re:p fixation? by SamSim · · Score: 3, Funny

      The truth is that the vast majority of programmers need to use the bathroom *really* badly. Hence the p fixation.

    3. Re:p fixation? by tverbeek · · Score: 2, Interesting
      What's with all these languages that start with 'p'? perl, python, php, not to mention good old pascal, and now prothon. Is there a joke here that I'm missing?

      Don't forget Pike, Postscript, Prolog, POP11, Prograph, Proteus, Pliant, PL/I, and (the one that started it all) Plankalkuel.

      It's probably just the law of averages in action. There are only 26 (or so, depending on the human language) letters to start with, and many hundreds of programming languages out there. But I would be a little suspicious of any new web-scriting language that starts with P, wondering if they chose the name to get in on the LAMP acronym (where P stands for one of the popular open scripting langauges).

      --
      http://alternatives.rzero.com/
    4. Re:p fixation? by Tinidril · · Score: 1

      I think it has to do with the popularity of LAMP. ( Linux Apache MySql Perl/Python/Php/Prothon? ) Any new high-level language that wants to be taken seriously by the open-source comunity has to start with a P.

      BSD and Postgres are dying, because a serious OS has to start with an 'L' and a serious database has to start with an 'M'.

      Yes this was a joke. Please don't flame me. :)

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    5. Re:p fixation? by DrStrangeLoop · · Score: 2, Funny

      Windows
      Internet Information Server
      Microsoft DB
      PHP


    6. Re:p fixation? by Tinidril · · Score: 1

      Aaaaaaggggggggg Noooooooo!

      Now Microsoft will never die!

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    7. Re:p fixation? by krumms · · Score: 1

      What's with all these languages that start with 'p'?

      They're all programming languages maybe?

    8. Re:p fixation? by thestarz · · Score: 1

      First there was BCPL. Then B was based on it. Then C was based on B. Until C++ came along, there was some discussion of whether the next language would be called D or P. Perhaps that's where it comes from?

      --

      c++; /* this makes c bigger but returns the old value */
    9. Re:p fixation? by Short+Circuit · · Score: 1

      It's the easiest way to shorten a meeting. Make sure you ply your boss with a much coffee as you can get him to drink.

    10. Re:p fixation? by tangent3 · · Score: 1

      If it weren't for C we would all be using PASAL, OBOL and BASI

    11. Re:p fixation? by AJWM · · Score: 1

      Well, if Modula were a good scripting language, you could go with Linux Apache Modula Postgres. But I'm having trouble coming up with any other language starting with M.

      Probably just as well that there's no popular scripting language starting with C, and that CGI is out of favor, can you imagine CGI Linux Apache Postgres? Unfortunate.

      --
      -- Alastair
    12. Re:p fixation? by Mr.+Piddle · · Score: 3, Funny


      Programmers are largely male, so it all started back in 1957 with

      Programmable Extensible Neutral-platform Integration System

      Ever since, it has been tradition--no an homage--to name languages with 'p' as the first character.

      --
      Vote in November. You won't regret it.
    13. Re:p fixation? by corprew · · Score: 1
      The UCSD p-Machine was the precursor (roughly) of "today's" virtual machine technology. This system was based more or less on a generic runtime that ran 'P-code,' which could be generated by high level language compilers instead of having to write something that could compile machine code for each platform.

      A quote from the link above:
      People mention the UCSD P-System when they recount the predecessors of portable, interpreted virtual machines like Java. In theory, a P-System executable program was portable between machines with different processors because the program was not expressed in machine-dependent assembly code but instead the "p-code" machine language of a virtual computer. Java uses the same approach to gain platform independence.


      So, anyway, that's my theory on why language designers are so obsessed with P, because the system (or one of the systems) that originated them was the P-system.

      --Corprew
      (or its a coincidence. either way.)
    14. Re:p fixation? by Haeleth · · Score: 1

      Well, if Modula were a good scripting language, you could go with Linux Apache Modula Postgres. But I'm having trouble coming up with any other language starting with M.

      Er, you can't be trying very hard. ML, Miranda, Mercury, Malbolge? That's just the four that spring to mind.

      Probably just as well that there's no popular scripting language starting with C...

      ...apart from csh, but I guess that's not as popular as it used to be. Doesn't anyone have a COBOL-script?

    15. Re:p fixation? by AJWM · · Score: 1

      Malbolge? That sounds more like a disease... ;-)

      Mercury is a planet, Miranda is a moon -- but I guess that's okay, Algol is a star.

      Doesn't anyone have a COBOL-script?

      Actually, it seems, yes. (Scary, isn't it?)

      --
      -- Alastair
    16. Re:p fixation? by smithmc · · Score: 1

      What's with all these languages that start with 'p'? perl, python, php, not to mention good old pascal, and now prothon. Is there a joke here that I'm missing?

      Well, how is Prothon ever going to be eligible to be part of a LAMP (Linux, Apache, MySQL, Perl/Python/PHP) installation if it doesn't start with "P"?

      --
      Downmodding is the refuge of the weak. Don't downmod, make a better argument!
    17. Re:p fixation? by nobbis · · Score: 1

      I always thought it stemmed from p-ness envy.

  13. Shhhh... by spacefight · · Score: 4, Funny

    Prothon is a new industrial-strength, interpreted, prototype-based, object-oriented language

    Haven't seen so many buzzwords in one sentence for a long long time...

    1. Re:Shhhh... by Hektor_Troy · · Score: 1

      On the brighter side out of 9 words, 4 of them aren't buzzwords.

      Prothon (that's one)
      is (that's two)
      a (that's three)
      new (that's four)

      See ... 45% of that sentence wasn't even buzz-words.

      --
      We do not live in the 21st century. We live in the 20 second century.
    2. Re:Shhhh... by Otter · · Score: 1

      Could some kind person please explain what "prototype-based" means in this context?

    3. Re:Shhhh... by Anonymous Coward · · Score: 0

      I can only count one: "industrial-strength". The others are technical words with particular technical meanings. They are not buzzwords. Silly person.

    4. Re:Shhhh... by fredrikj · · Score: 4, Funny

      An even better piece of buzzwords, though fabricated, from the TUNES FAQ:

      A proven 32-bit cutting-edge state-of-the-art industrial-strength Y2K-compliant zero-administration plug-and-play industry-standard Java-enabled internet-ready multimedia professional personal-computer Operating System that is even newer and faster yet compatible, with a user-friendly object-oriented 3D graphical user interface, amazing inter-application communication and plug-in capability, an enhanced filesystem, full integration into Enterprise networks, an exclusive way to deploy distributed components, seamless network sharing of printers and files.

      A work of art, except that it doesn't have "XML" in it somewhere.

    5. Re:Shhhh... by micromoog · · Score: 1
      Prothon (that's one)

      I don't think Prothon counts as a "word".

    6. Re:Shhhh... by Anonymous Coward · · Score: 0

      Here. Or Google for it.

      You may have used a prototype-based OO language before: Javascript is one.

    7. Re:Shhhh... by be-fan · · Score: 2, Informative

      Okay, in a class-based language, inheritence is statically decided at compile-time. In a prototype-based language, inheritience is just another operation that can be done at run time. You don't define classes statically, with each object having a predefined class. Rather, you copy an existing object (in the process copyings its existing members) and add new members to it.

      --
      A deep unwavering belief is a sure sign you're missing something...
    8. Re:Shhhh... by cberetz · · Score: 1

      >dotComBS<
      Prothon will repurpose wireless users and incentivize e-business solutions while iterating integrated supply-chains, allowing you to synthesize back-end infrastructures and leverage real-time architectures.
      </dotComBS>

    9. Re:Shhhh... by anonicon · · Score: 2, Funny

      You're right, unless your Scrabble opponent is too girly to challenge it.

    10. Re:Shhhh... by mackman · · Score: 1

      You're right! You think they need any venture capital?

    11. Re:Shhhh... by tverbeek · · Score: 1
      A work of art, except that it doesn't have "XML" in it somewhere.

      Look again.

      ...an eXclusive way to deploy distributed components, seaMless network sharing of printers and fiLes.

      The XML is "embedded".

      --
      http://alternatives.rzero.com/
    12. Re:Shhhh... by KrispyKringle · · Score: 1

      Wait, where can I buy it?

    13. Re:Shhhh... by Kupek · · Score: 1

      A proven 32-bit cutting-edge state-of-the-art industrial-strength Y2K-compliant zero-administration plug-and-play industry-standard Java-enabled internet-ready multimedia professional personal-computer Operating System that is even newer and faster yet compatible, with a user-friendly object-oriented 3D graphical user interface, amazing inter-application communication and plug-in capability due to not having binaries but having the syntax tree defined in XML, an enhanced filesystem, full integration into Enterprise networks, an exclusive way to deploy distributed components, seamless network sharing of printers and files.

      (Someone was going to do it. Might as well be me.)

    14. Re:Shhhh... by chromatic · · Score: 1
      Okay, in a class-based language, inheritence is statically decided at compile-time.

      Not always true; several dynamic languages allow you to declare or to change inheritance at runtime.

      Perhaps you meant that inheritance is a property of the class, in a class-based language.

    15. Re:Shhhh... by the+chao+goes+mu · · Score: 1

      It also fails to use the following: e-commerce interactive lifecycle COM/DCOM/LDAP (You need them, even if you already said "distributed") implementation and, maybe, rollout

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    16. Re:Shhhh... by Anonymous Coward · · Score: 0

      Not always true; several dynamic languages allow you to declare or to change inheritance at runtime.

      Which is exactly why I find this so-called "language", er, DUMB. Doesn't do anything that can't already be done in certain other languages. Plus, the syntax is even more annoying that Python. Worthless crap.

    17. Re:Shhhh... by arethuza · · Score: 1

      Not to mention "seamless integration".

  14. Woohoo! by Anonymous Coward · · Score: 0

    ...and its server running on dial-up with a 286 running Windows 2000 and IIS under vmware....

  15. Bondage by spellraiser · · Score: 5, Interesting

    This is taken from the Prothon Description

    Like Python, Prothon uses indentation to control the block structure of the program instead of block/end or {}. However, Prothon only allows tabs for indentation. Any space in an indent will cause an error.

    Classic bondage-and-discipline. Why oh why is this so ??

    --
    I hear there's rumors on the Slashdots
    1. Re:Bondage by Just+Some+Guy · · Score: 4, Informative
      I can think of two good reasons:
      1. If you're using indentation for structure, then it's horribly confusing to allow both tabs and spaces. How many spaces is a tab worth? You could add a "tabsize=" variable to the core language, but you have to be able to parse a file before you can start evaluating it, so that would necessarily have to be an ugly hack.
      2. An (old) Python topic-of-heated-discussion was the relative merit of tabs vs. spaces. Setting one as the standard avoids the whole issue and lets everyone get back to work.
      My only gripe is that out of the two choices, they picked the wrong one <ducks>.
      --
      Dewey, what part of this looks like authorities should be involved?
    2. Re:Bondage by Ender+Ryan · · Score: 3, Insightful
      Yeah, that's why indentation as block structure is a ridiculous idea in the first place!

      <ducks>

      --
      Sticking feathers up your butt does not make you a chicken - Tyler Durden
    3. Re:Bondage by Anonymous Coward · · Score: 0
      That was funny, but how the hell did it justify "insightful"? That's like moderating "Emacs is better than vi" as insightful - it says a lot more about the moderator than the comment.

      Asshats with modpoints. Geez.

    4. Re:Bondage by Cylix · · Score: 1

      Funny thing is, in an older IDE, I changed TAB to insert 3 spaces.

      It was tighter regime for me.

      --
      "You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
    5. Re:Bondage by sporty · · Score: 1

      So instead of using a block operator which is 2 characters, i have to use one based on many MANY tabs.

      Nice way to garantee i screw up.

      --

      -
      ping -f 255.255.255.255 # if only

    6. Re:Bondage by p3d0 · · Score: 1
      Mixed spaces and tabs in a Python file may look identical in your editor, yet have different meanings.

      I think this is an improvement. It will prevent subtle bugs.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    7. Re:Bondage by p3d0 · · Score: 1
      Well, at risk of starting a flame war, I think tabs are the right choice. With tabs, people can set the tab size in their editor to be whatever they are comfortable with. Also, because spaces are disallowed, whatever they choose will look right. Thus, all the classic indentation problems vanish.

      What is the downside of using tabs exclusively?

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    8. Re:Bondage by nattt · · Score: 1

      Using indentation for block structure is the work of a mad-man. I'll never wilingly use such a "programming" language.

      --
      -- oldthinkers unbellyfeel ingsoc
    9. Re:Bondage by p3d0 · · Score: 1

      I have no idea what you just said. Are you complaining about a weakness in your editor?

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    10. Re:Bondage by juhaz · · Score: 1, Insightful

      Well, no offense but you're stupid. Especially as it probably comes without even trying and without explanation.

      Using {} for block structure is the work of a mad-man. I'll never willingly use such a "programming" language.

      There's really no difference between those equally idiotic statements. It's just about what you're used to.

    11. Re:Bondage by sporty · · Score: 1

      No, i'm complaining about depending on a character that's not only invisible, but needs to be typed in many times just to make a block.

      --

      -
      ping -f 255.255.255.255 # if only

    12. Re:Bondage by nattt · · Score: 1

      "Well, no offense but you're stupid" Offense taken!

      {} for block sructure works very well in paractice. Sure, it's good "style" to tab in your code so to help visualise block structure, but to enforce it's use is harsh in the extreme. And at least I can see a { or } in printed code. Seeing white space is altogether more difficult!

      I think it's more than just a case of what you're used to. It's like putting full stops at the end of sentances, and starting them with capital letters. It's a clear, visual sign to structure. White space is unclear unless you turn on "display tabs" or something similar in your text editor.

      --
      -- oldthinkers unbellyfeel ingsoc
    13. Re:Bondage by Jeremi · · Score: 1


      I completely agree. The tab character was a design abortion that lost its applicability when we switched from typewriters to teletypes. I propose we modify the ASCII character set to remove it, and replace it with a happy-face glyph instead.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    14. Re:Bondage by RdsArts · · Score: 1
      Seriously.

      Espectally when we all know vi is much better.

      ... What?



      /it's funny, laugh

    15. Re:Bondage by Anonymous Coward · · Score: 0

      What, are you using notepad.exe or something?

    16. Re:Bondage by p3d0 · · Score: 1

      How does that differ from space?

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    17. Re:Bondage by juhaz · · Score: 1

      "Well, no offense but you're stupid" Offense taken!

      Well, sorry if I was overly harsh, but I still think judging something so abruptly without trying or explaining is pretty stupid. Especially considering you claimed it's not even a programming language because of this small thing. Please give it a try. If you still think it's insane after thousand lines, well, then you've at least got a reason to dislike it of knee-jerking juts on princible.

      {} for block sructure works very well in paractice. Sure, it's good "style" to tab in your code so to help visualise block structure, but to enforce it's use is harsh in the extreme. And at least I can see a { or } in printed code. Seeing white space is altogether more difficult!

      Well, I'll grant you that using something like 1 space for block structure in printed code would be very hard to see, but bit more is pretty much instantly visible. It can even be much better than badly or non-intended {} blocked code in some cases. Consider totally flat c-code, that is long enough that it's not immediately visible - you have absolutely NO IDEA about what block is what if the starting {:s are outside of your view, whereas with whitespace blocks are still clearly separate.

      I think it's more than just a case of what you're used to. It's like putting full stops at the end of sentances, and starting them with capital letters. It's a clear, visual sign to structure.

      Well, it's kind of like that. But is the full stop really absolutely necessary? It ALWAYS comes just before capital letter and python (and these new derivatives and clones) DO have the capital letter equivalent : at the beginning of each block.

      White space is unclear unless you turn on "display tabs" or something similar in your text editor.

      Well, that depends on the amount of the whitespace.

    18. Re:Bondage by sporty · · Score: 1

      spaces and tabs are evil for context sensitive operations. that's why {} rule. you can't mix up a { for a space or a tab.

      --

      -
      ping -f 255.255.255.255 # if only

    19. Re:Bondage by goodviking · · Score: 1

      Consider totally flat c-code, that is long enough that it's not immediately visible - you have absolutely NO IDEA about what block is what if the starting {:s are outside of your view, whereas with whitespace blocks are still clearly separate.

      The nice thing about using a fixed block delimeter as opposed to white space, imho, is that it doesn't add "context" to the idea of what's important to a reader, versus what's important to a compiler. Further, it can bring you closer to the model of generating human and machine output from the same document (which has some merit and proponents).

      Also, if you have a flat c file, just run indent. Because the blocking is context independent, you can apply any style to the code that makes it easy for you to read.

    20. Re:Bondage by Augusto · · Score: 1

      Using { and } are infintently better than relying on whitespace. These characters are clearly visible, and you can spot the being and end of a block of code more easily than with whitespace that could be used for either start or end.

      Chosing whitespace for this type of stuff in a modern computer language is just plain stupidity. Talk about maintenance nightmares!

      --

      - sigs are for wimps.
    21. Re:Bondage by Mr.+Piddle · · Score: 1

      An (old) Python topic-of-heated-discussion was the relative merit of tabs vs. spaces.

      Now that everyone and their uncle has wasted their time configuring their IDE to use two, three, four, six, or eight spaces for automatic tab replacement, they will have to waste more time trying to type tabs in a language that acually requires them.

      Tabs really are better than spaces for indentation. The only reason people want two-space "tabs" is so bad programming with many many nested loops, structures, and other declarations will fit within a maximized terminal window.

      When a program with traditional 8-space tabs starts to fill a screen left-to-right, that's a good indication for the programmer to step back and re-think their work.

      --
      Vote in November. You won't regret it.
    22. Re:Bondage by p3d0 · · Score: 1
      Oh now I see. You're comparing tabs to braces.

      Do you know Python does not use braces? That makes your initial comment quite confusing.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    23. Re:Bondage by pompousjerk · · Score: 1
      Seeing white space is altogether more difficult!
      def thatsFunny():
      "I bet you can see the whitespace to my left just fine, because you can see when it stops."
      if poor_argument:
      "I also bet you can tell that this is intented farther!"

      def evenMoreFunny():
      "I also bet you can tell when the previous block ended!"
    24. Re:Bondage by costas · · Score: 2, Informative

      Just so that non-Pythonistas don't get the wrong idea: Python doesn't restrict your identation that much: it only restricts you as to the *consistency* of your identation: i.e. if you use a tab for an outer for-loop and then 1 tab and 3 spaces inside that loop for an inner if-then block, that is fine by python; but if you switch to 6 spaces for the inner loop (i.e. no tab for the outer block), you will get a syntax error.

      Python doesn't try to enforce a particular style of whitespace, just a consistent one, and I think that any professional programmer comes to appreciate that almost immediately.

    25. Re:Bondage by Anonymous Coward · · Score: 0
      The nice thing about using a fixed block delimeter as opposed to white space, imho, is that it doesn't add "context" to the idea of what's important to a reader, versus what's important to a compiler.
      Huh? Consider C code like this:
      if ( a == 17 )
      write_int( a );
      a = 0;
      In this case, the human reader is rather likely to use a different context than a machine reader. Result: nasty, subtle bug. I've seen good people waste a lot of time on crap like this.

      You might say "Well, the reader has to be competent and understand the language, or of course they'll get bugs." That shit doesn't fly in the real world. It's as ridiculous as forcing programmers to manually do all array bounds checking and storage management, and we know how well that works. If you predicate anything on human perfection, you have left the path of wisdom.

      In practice, probably 95% of code suffers nothing* by making the indention strictly identical to the lexical scoping. Doing so eliminates certain classes of cognitive errors, like my example above. It also standardizes the important elements of style, making code noticeably easier to read. (You wanna bitch about how you're good enough that style doesn't really matter? Get your bug rate below one per 10,000 lines of code and we'll talk.)

      *And the code that does "suffer" is usually tabular data declarations. Python and Prothon allow multi-line declarations to be indented sensibly, so this isn't a problem.

    26. Re:Bondage by Anonymous Coward · · Score: 0
      I'm interested in new languages, so not long ago I subscribed to a Python newsgroup. One of the first messages I read was a case where the newsreader had stripped out leading spaces and the repliers thus had no idea what the intended code structure was. Yuck, unsubscribe.

      Call me narrow minded, but I don't have time to learn every language (I wish I did). I see whitespace messed up all the time for various reasons, and at least with C-style blocks I can correct it.

      But yes, istm that tabs are absolutely the wrong one. You don't really solve the "how many spaces is a tab" problem by outlawing spaces. Sure, all your indented lines line up with eachother, but they don't line up with code above and below:
      example(argument,
      argument);
    27. Re:Bondage by Hater's+Leaving,+The · · Score: 2, Insightful

      "There's really no difference between those equally idiotic statements."

      Wrong.

      When was the last time you saw a mail client fuck up your braces?

      When was the last time you saw an editor decide to insert a different character than a brace when you wanted to insert one?

      When was the last time a web-browser rendered a brace in such a way that the mouse couldn't drag/select it?

      Never, never, and never.

      However, all the above can and do fuck up white-space.

      THL.

      --
      Keeping /. cynic density high since the fscking Kwhores/trolls arrived.
    28. Re:Bondage by demi · · Score: 1

      The fact is, it can sometimes be hard to find the block ends in Python. This isn't a knee-jerk evaluation, it's based on examining and maintaining thousands of lines of a Python application.

      I actually do agree that because mixing tabs and spaces is confusing, one tab per indentation level is probably better--but the unfortunate fact is that the code often shows up overly indented in someone else's editor, or when cat-ting or printing. Python proponents (at least the tab flavor) often say, "just set your tab stops to what you like;" but if I have to perform an operation in order to make a file readable I might as well run it through indent which removes the argument to make indentation == syntax in the first place!

      I like Python a lot, actually, but I consider this its biggest weakness.

      --
      demi
    29. Re:Bondage by nattt · · Score: 1

      And if one of my programmers wrote C doe like that, they'd be fired. Neat and readable code is a necessity no matter what language you're writing. Good use of { } makes for readable code. White space is too easy to screw up and doesn't print well. I remember the old days of typing in programs from magazines. If languages back then had been the type that uses white space for block structure, then nobody would have gottten a magazine type in program to work (not that they ever used to work anyway, but that's besides the point).

      --
      -- oldthinkers unbellyfeel ingsoc
    30. Re:Bondage by demi · · Score: 1

      Someone else viewing your file won't have the same tab stops and it will be ugly. The file may be viewed with a pager, with cat, formatted for printing with enscript or sent to the printer--all places likely to have tab stops at 8 spaces, which is too much.

      Of course these issues are individually soluble (though sending the file to a printer--well, that could be tricky), but the fact is it's a hassle. That's why I don't like tabs.

      --
      demi
    31. Re:Bondage by gughunter · · Score: 1

      Check out some back issues of COMPUTE!'s Gazette. I think they had a program to double the number of displayable columns.

    32. Re:Bondage by William+Tanksley · · Score: 3, Insightful
      And at least I can see a { or } in printed code. Seeing white space is altogether more difficult!

      Not completely true. Seeing _whitespace_ is impossible; seeing _indentation_, however, is extremely easy. In fact, it's enormously easier than seeing { and }; consider the fact that many C bugs are of the form
      if (something)
      do_this();
      do_that();
      ...where "do_that" appears to most people to be conditional, but is actually unconditionally executed.

      -Billy
    33. Re:Bondage by William+Tanksley · · Score: 0, Troll

      The problem is that while tabs can be size-adjusted, the rest of the letters can't be. Thus, although all your tabs expand and contract, the letters that you're indenting against don't, and the formatting looks gradually crazier.

      I'm sure you're worked with small tabs (for example 4-space), and then seen your code in a "normal" editor or printout (8-space) -- the result looks just crazy.

      -Billy

    34. Re:Bondage by tomk · · Score: 1

      I'm a C (and C-like languages) programmer. I've worked on tens of thousands of lines code, collaboratively developed by over 200 developers. Never in my life have I seen a programmer make that mistake, ever. And the error was instantly visible to me, as it should be to any decent programmer. In fact, any editor I've ever used will immediately outdent do_that(), preventing you from making that mistake.

      C has its warts, but the brackets aren't one of them.

      I've never had the opportunity to program in python or any other whitespace-delimited language, so I won't disparage that method. But your statement about "many C bugs" being caused by improper indentation is just rediculous.

    35. Re:Bondage by nattt · · Score: 1

      Sure, that's bad C style to write that, and I don't think I'm suggesting C is perfect. I'd prefer it mandatory that {} are used in the above situation to make it perfectly clear what's intended.

      But I can count { easier than counting white space.

      --
      -- oldthinkers unbellyfeel ingsoc
    36. Re:Bondage by corban.elektrolite · · Score: 1

      Using indentation for block structure is the work of a mad-man. I'll never wilingly use such a "programming" language.

      you are right. there is one reason why using two different characters that look the same on nearly every texteditor for two different purposes is a bad thing.

      someone did mention it already: you gotta be able to see from the source wether it would compile or not. at least theoretically.

    37. Re:Bondage by 2short · · Score: 1

      str = " ";
      if (IsATab(str))
      {
      CompileSuccessfully();
      }
      if (IsFiveSpaces(str))
      {
      Print("No, actually, you can't see whitespace 'just fine'");
      FailForNoGoodReason();
      }

    38. Re:Bondage by 2short · · Score: 1


      "I've seen good people waste a lot of time on crap like this."

      If they were good, they wouldn't waste their time on stuff like this. When I pull up someone elses C/C++ code, I can reformat/indent it the way I like with one mouse click. I'd have it happen automatically, except for that 5% of diferently formatted code that is differently formated for a good reason. And if I'd written the code above it would have braces, every time.

      Good, standardized style is very important. Forcing a particular style for all cases is stupid. And distinguishing at all between spaces, multiple spaces and tabs is just braindead.

    39. Re:Bondage by p3d0 · · Score: 1
      I don't feel too strongly about this, but just to continue the holy war...

      What if I think your 4-space tabs are ugly? If you use actual tabs, I can just set them to whatever I want.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    40. Re:Bondage by William+Tanksley · · Score: 1

      I can't argue with your experience; all I can do is trust that what you say is correct (it would be odd of me to claim that it's not). You can't argue with my experience either; I _have_ seen numerous bugs caused by this specific misunderstanding. Calling my claims ridiculous will take more than citing your own personal experience.

      Many editors DO outdent do_that, but many editors get OTHER things wrong, and I've fought with editors enough to understand someone fighting them in that.

      And BTW, tens of thousands of lines isn't very much code, even if you meant 99 thousand. Certainly no basis for a judgement like that.

      C has its warts, but the brackets aren't one of them.

      I have no problem with that statement :-). I don't want to sound like I'm nitpicking C's brackets; they work perfectly well (although making the brackets optional was less defensible, and both Ada and Oberon chose good alternatives in that respect).

      What I take exception to isn't any part of C; it's the claim that Python's choice of indentation is worse than C's choice of brackets. Both are vulnerable to certain problems; furthermore, C's block structure is MORE, not less, vulnerable to invisibility than Python's.

      -Billy

    41. Re:Bondage by William+Tanksley · · Score: 1

      Sure, that's bad C style to write that, and I don't think I'm suggesting C is perfect.

      Nor am I suggesting that Python is perfect, or even that C is inadequate.

      But I can count { easier than counting white space.

      But you don't HAVE to count white space; all you have to do is look and see that the text lines up. You DO have to count brackets, unless you just trust the indentation; and do I have to stress the risk in that?

      -Billy

    42. Re:Bondage by William+Tanksley · · Score: 1
      But if you set them to anything other than what I wrote them as, my lines won't line up anymore. For example, consider the classic C
      int MyFunc(
      void *source,
      void *dest
      )
      Now, whatever you may think about my choice of coding standards, I definitely intended the parameters to line up with the end of the function name. There's no way to do that with changable tabs.

      Indentation depth is only a tiny part of coding standards, and it interacts with the rest. Pretending you can change it without affecting the rest isn't really logical; getting offended at someone's choice for it isn't either.

      -Billy
    43. Re:Bondage by p3d0 · · Score: 1
      But what if I don't want your parameters to line up with the end of the function name?

      Anyway, I agree 100% with this:

      ...offended at someone's choice for it isn't either.
      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    44. Re:Bondage by sorbits · · Score: 1
      where "do_that" appears to most people to be conditional, but is actually unconditionally executed

      I think instead of people you wanted to say Python programmers who have never programmed in C.

      Seriously, I have never ever seen such a bug and would like to know from wher you have "the fact that many C bugs are of the form".

    45. Re:Bondage by William+Tanksley · · Score: 1

      First, are you REALLY keeping track of other people's bugs? I don't see why you'd expect to get real numbers on bug cause frequency unless you conducted a real survey.

      Second, my #1 source for this bug was hardware engineers (I used to work for a chip design company). They tend to be sloppy about indentation on their own, so they *trust* other people's indentation.

      Finally, I wouldn't expect a huge number of released bugs to be caused by this. It's a consmetic mistake with (usually) obvious consequences.

      My point wasn't that C is fatally flawed; I was claiming only that Python ISN'T flawed. My point about this one is that C's choice is actually worse than Python's by any human standard. (Computer text manipulation, on the other hand, is definitely harder in Python, although still nothing like impossible.)

      -Billy

    46. Re:Bondage by William+Tanksley · · Score: 1

      But what if I don't want your parameters to line up with the end of the function name?

      That's my point -- your gripe isn't with my tabsize, it's with my coding style. Changing my tabsize will only make my coding style inconsistent (in most cases).

      -Billy

    47. Re:Bondage by p3d0 · · Score: 1
      Ok, I doubt we'll ever agree, but I think if you have a language that uses indentation as a syntactical feature, then it makes sense that there be one designated "indentation character", and that you can tell the indentation level simply by counting the occurrences of this character. It seems the simplest and most elegant way to deal with an indentation-based language, rather than tack on extra rules like "four spaces equals a tab" and then rely on editors/printers/etc. to obey this rule.

      Using tabs exclusively also has the benefit that anyone can choose the indentation level they like the best, and the code will still look right. (I have seen people use tab sizes anywhere from 2 to 8 spaces.) Your mindset is to make the code look the way you want it to by forcing the issue with spaces. The tabs-only approach, in an indentation-based language, lets you make the code look the way you want by adjusting your editor settings, and allows other users to do the same without changing the code.

      Your example is from C, where I don't have any strong argument in favour of tabs (though I still think they're better there too).

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    48. Re:Bondage by William+Tanksley · · Score: 1

      Ok, I doubt we'll ever agree,

      Probably not, but thank you very much for taking the time; it's an enjoyable discussion for some odd reason ;-).

      but I think if you have a language that uses indentation as a syntactical feature, then it makes sense that there be one designated "indentation character", and that you can tell the indentation level simply by counting the occurrences of this character.

      I agree 100%. In fact, so do the official guidelines for Python.

      http://www.python.org/peps/pep-0008.html

      Although they state that using spaces is preferred, you can see from the rule and rationale that using tabs consistently is good for that purpose.

      Using tabs exclusively also has the benefit that anyone can choose the indentation level they like the best, and the code will still look right.

      I've already demonstrated that this is simply false -- changing tab size is NOT sufficient to change coding standards in many cases. The exceptions exist, but I've never found one, even in the days when I used tabs-only (and would religiously convert spaced code to tabbed code). Really -- have you? I mean, have you ever actually changed someone's tab size because you were unhappy with it, or have you ever done the opposite, change your tab size to match the original author's tabs because you realized that his code didn't read right otherwise? (I've done the latter!)

      Your mindset is to make the code look the way you want it to by forcing the issue with spaces.

      No. Think about it -- I *can't* force the issue. If you want to make my code look different, you can do ANYTHING to it; search and replace will do what tab redefinition can't. Thus, my use of spaces doesn't "force the issue".

      YOUR mindset, on the other hand, is that _you_ can make my code look more to your taste simply by changing the tab level. My point is that you can't, either, unless my coding convention randomly happened to be indentation-agnostic.

      The tabs-only approach, in an indentation-based language, lets you make the code look the way you want by adjusting your editor settings, and allows other users to do the same without changing the code.

      Again, have you ever done this? Have you seen the results? Not only do little things like line alignment get messed up, but also big things like continued lines get torched.

      The problem isn't tabs versus spaces; the problem is that tabs are entirely unique in the programmer's character set. They're the only characters whose size changes in different places. If it was only tabs versus spaces tabs would win every time (because they take less storage). But it's not -- you also have to compare tabs to all the other characters they're next to.

      -Billy

    49. Re:Bondage by Anonymous Coward · · Score: 0

      Your style relies on not only a fixed tab width but also a monospace font. That's two strikes against it. If the args don't fit on one line (a symptom of bigger problems) why not indent them one level like the body?

    50. Re:Bondage by p3d0 · · Score: 1
      If you want to make my code look different, you can do ANYTHING to it; search and replace will do what tab redefinition can't.
      Have you ever done this? I don't think it's as easy as you say it is.
      I've already demonstrated that this is simply false -- changing tab size is NOT sufficient to change coding standards in many cases.
      You demonstrated it on C code. As I said, I'll plead no contest on that count. But in a language where indentation is syntactically significant, I think your view is harder to defend.

      Anyway, I'll tell you what would be cool. I'd like to specify tab stops in the code, with a special comment or something, and have the editor obey them.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    51. Re:Bondage by William+Tanksley · · Score: 1
      Have you ever done this? I don't think it's as easy as you say it is.

      Use search and replace to change code indentation? Yes. Only with tab-based code, though -- I've never found screwed-up space-based code (because most really old code is tab-based, not because space-based code can't get screwed up). The idea is the same, though; and the search expression is a complex regexp. (I never said it was easy.)

      I've already demonstrated that this is simply false -- changing tab size is NOT sufficient to change coding standards in many cases.


      You demonstrated it on C code. As I said, I'll plead no contest on that count.

      I never mentioned C code in that context. I don't know what you're talking about. Changing tabs size is simply NOT sufficient to change coding standards, and that's all there is to it! There's no language dependancy in that statement of ANY kind, nor in the proof; even the example I gave was legal Python (or C).

      But in a language where indentation is syntactically significant, I think your view is harder to defend.

      Why? I'm really confused now -- that doesn't make any sense to me. In a language where indentation is syntactically significant -- the only significant current one in Python (Prothon isn't any different) -- indentation means exactly the same thing _semantically_ as it does in every other modern language. The only difference is that the Python compiler *checks* the indentation.

      So how could "syntactic significance" of indentation change anything about my argument?

      Anyway, I'll tell you what would be cool. I'd like to specify tab stops in the code, with a special comment or something, and have the editor obey them.

      vi does this with a special form at the beginning line of a file. I don't know emacs, but it probably does that too. I've seen people paste "tab bogosity meters" at the beginning of code, looking somewhat like this:
      too small [ * ] too big
      (tabs) ^
      The first line is laid out with spaces; the second line starts with a few tabs, and the instructions for the bogosity meter says that if the carat doesn't line up within the brackets, adjust your tab size.

      Cute. Anyhow...

      The best solution, of course, is to use spaces instead of tabs; spaces are indentation instructions that _every_ editor and printer recognises to mean the same thing. (Abuses such as proportional fonts excepted.)

      -Billy
    52. Re:Bondage by p3d0 · · Score: 1
      Changing tabs size is simply NOT sufficient to change coding standards, and that's all there is to it!
      Here's a story for you. When Dijkstra published his admonition against gotos, people at first thought he was an egghead academic. After a while, the more open-minded programmers thought they'd give this "structured programming" a try. They would ask him "ok, so if I'm at this point in the program and I want to transfer control to that point, how do I do that without a goto?"

      The answer to this question is just that it is the wrong question to ask. Structured programming doesn't mean grepping for the word "goto" and replacing it with another word that means the same thing. It's a whole different mindset that those folks just didn't grasp.

      Likewise, if you write your program text with variable tabs in mind in the first place, then you can change the layout of the code cleanly just by adjusting tab size. And that's all there is to it! :-)

      And it's really not that restrictive.

      (Please note: I am not comparing myself to Dijkstra in any way. I'm just trying to communicate how I perceive your objection that using tab size to change code layout doesn't work.)

      I never mentioned C code in that context.
      So what was this?
      int MyFunc(
      void *source,
      void *dest
      )
      (Hmm, I can't seem to find the right Slashdot HTML to match the indentation you used. How did you do it?)

      Another thing to keep in mind: I do know at least one programmer who prefers proportional fonts. Why shouldn't he use them?

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    53. Re:Bondage by William+Tanksley · · Score: 1
      I like how you're referencing "Goto Considered Harmful," so I think I'll quote from its nemesis:

      We will perhaps eventually be writing only small modules which are identified by name as they are used to build larger ones, so that devices like indentation, rather than delimiters, might become feasible for expressing local structure in the source language.
      --Donald E. Knuth, "Structured Programming with goto Statements", Computing Surveys, Vol 6 No 4, Dec. 1974

      Seriously, your comparison of using spaces to unstructured programming is at best beside the point; the only similarity between the two practices is that you personally don't like either one. BUT, I like how you present your point, and I think I see what you're saying. I'm going to take the following paragraph as the REAL point you were making, and ignore the guilt-by-association :-). (Don't worry, I'm smiling when I'm saying all that stuff -- I'm enjoying the conversation.)
      Likewise, if you write your program text with variable tabs in mind in the first place, then you can change the layout of the code cleanly just by adjusting tab size. And that's all there is to it! :-)
      Again, this is a coding conventions question, not simply a question of whether or not to use tabs. In order to gain a vaguely alleged advantage to a hypothetical reader, you have to throw out a _lot_ of possibilities for using code structure to convey information about your code.
      Now, if you could provide me with an advantage more concrete than "I might not like your indentation level," I might find that to be a more interesting tradeoff. But as things stand, the only time I've felt the need to change someone's indentation is when their code was messed up by *my* editor settings not matching theirs.

      Yes, my example used C types -- what of it? Remove the text "void *" and that's valid Python code. Contrary to what you said, my statement applies precisely to any language. Well, at least any language whose lines appear next to each other :-).
      The Slashdot HTML to preserve Python indentation is "ecode". :-)

      Another thing to keep in mind: I do know at least one programmer who prefers proportional fonts. Why shouldn't he use them?
      An excellent question. There are a lot of advantages to using proportional fonts -- I've tried it, and it's really easy to get used to. So long, that is, as your editor can handle treating the leading spaces and tabs both correctly and consistently :-).

      But let me answer your question more completely, as it deserves.
      When writing code using proportional fonts, the programmer will still tend to group lines together in a way that communicates any parallelism in the lines; he won't count letters to line them up, rather he'll press space (or tab) until they line up. Just like he did back when he used a fixed-width font.

      -Billy
    54. Re:Bondage by p3d0 · · Score: 1
      Seriously, your comparison of using spaces to unstructured programming is at best beside the point...
      Well, that wasn't really the comparison. I was equating the question "how do I get from here to there without a goto" to your statement "you can't change coding styles just by changing tab size". Both demonstrate a certain stubborn adherence to past practices when faced with new techniques.
      Now, if you could provide me with an advantage more concrete than "I might not like your indentation level," I might find that to be a more interesting tradeoff.
      Ok, how is this... I like smaller tab size (2 or even 1) better for deeply-nested code, and larger tab size (say 4) for shallow code. Neither tab size is optimal in all cases. When dealing with my own code, which uses only tabs, I can change the tab size dynamically based on the code I'm looking at.
      Yes, my example used C types -- what of it?
      Besides the fact that you said you never used C code? :-)
      Remove the text "void *" and that's valid Python code. Contrary to what you said, my statement applies precisely to any language.
      Well, I'm no Python language lawyer, so I may need to concede that point. But I still find it distasteful to be so liberal with indentation in a language where indentation is syntactically significant. Pick the wrong number of spaces, and you might change the semantics of your code!
      The Slashdot HTML to preserve Python indentation is "ecode". :-)
      That's what I used. I wonder why it doesn't work for me.
      ...he won't count letters to line them up, rather he'll press space (or tab) until they line up.
      Christ, he had better not press spaces until they visually line up in the font he happens to be using at the time. That's the most abhorrent practice you have suggested so far.
      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    55. Re:Bondage by William+Tanksley · · Score: 1

      Well, that wasn't really the comparison. I was equating the question "how do I get from here to there without a goto" to your statement "you can't change coding styles just by changing tab size". Both demonstrate a certain stubborn adherence to past practices when faced with new techniques.

      That's not true.

      The problem here is that you're telling me that using tabs is the new advanced wave of computer science, and I'm being obsolete to think of opposing it. You've got it exactly backwards. ALL the old code uses tabs; tabs were the primary means of indentation, mainly because they take less disk space. So _your_ solution is firmly in "the old way" camp, and mine is the up-and-coming "new way".

      And this STILL has nothing to do with our debate. It's _entirely_ beside the point. The fact that your is old and mine is new doesn't mean anything.

      Again, if you wish to debate this, you'll have to do better than make analogies and/or appeal to age. Even a valid analogy (which this is not) wouldn't be evidence, much less proof.

      Ok, how is this... I like smaller tab size (2 or even 1) better for deeply-nested code, and larger tab size (say 4) for shallow code. Neither tab size is optimal in all cases. When dealing with my own code, which uses only tabs, I can change the tab size dynamically based on the code I'm looking at.

      Deeply nested code is going to have a lot of continuation lines, which are going to be the most indentation-dependant things you'll see. Changing the indentation may mess other things up; it WILL mess up continuation lines.

      You'll also find that as you change depths, your line lengths will become more obviously non-optimal since they were written with much less horizontal room than you're using to read (unless the original developer didn't care about line lengths, in which case you'll just be lucky if his code is readable).

      And finally, of course, the better solution is to realise that what you're doing is a shoddy replacement for re-indenting the code -- nothing WRONG with what you're doing, but it'll never be as effective as doing the job properly.

      Well, I'm no Python language lawyer, so I may need to concede that point. But I still find it distasteful to be so liberal with indentation in a language where indentation is syntactically significant. Pick the wrong number of spaces, and you might change the semantics of your code!

      You sound fearful -- I suspect you've never used Python. Go ahead, there's nothing to be afraid of -- Python's very smart about indentation. The only rules you have to follow are:

      1. Make sure every line in a block lines up with the other lines *in that block* at any tabsize. (The parser will complain if you get it wrong and refuse to execute the file, so don't worry about it.)
      2. Don't EVER put a space before a tab. (You can turn on an option to make the compiler complain, but it's pretty much a waste of time, because most programmer have an instinctive fear of this kind of silliness.)

      Reccommended: Use only tabs OR only spaces.

      As long as you stick to the first two rules, everything will work out. Stick to the third rule, and other people will be able to edit your code without worrying about it.

      The code I typed doesn't even care about indentation -- stuff inside parentheses ignores indentation.

      Strange that ecode didn't work for you. Hmm.

      Christ, he had better not press spaces until they visually line up in the font he happens to be using at the time. That's the most abhorrent practice you have suggested so far.

      Why? I honestly have no idea why you don't like that.

      Keep in mind that any editor that claims to support proportional fonts had better have special support for spaces and tabs used as indentation!

      -Billy

    56. Re:Bondage by p3d0 · · Score: 1

      Ok, this is going nowhere, but thanks for the discussion. Happy indenting!

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  16. Karma Whoring by froody · · Score: 3, Informative

    Prothon Description:
    This document assumes a working knowledge of Python. Many features are described as differences to Python features. If you are new to Python, a good starting point can be found at www.python.org.

    Comments

    Standard Python comments using the # character work exactly the same in Prothon. Prothon also supports the C comment format of /* and */. This is useful for temporarily blocking out large blocks of code and inserting inline comments.

    # this line is a comment
    x=5 # this is a trailing comment
    if not rlst /*no response*/ or is_too_long:

    Indentation is Tab-Only

    Like Python, Prothon uses indentation to control the block structure of the program instead of block/end or {}. However, Prothon only allows tabs for indentation. Any space in an indent will cause an error. This allows each programmer to set the editor to show the tab width to whatever he pleases and the Python problems of mixed spaces and tabs cannot happen in Prothon. It also allows for minimum typing.

    Line Continuation

    A line can be continued by placing a backslash ( \ ) as the last character of a line as in Python. Also, any tab indent of more than one level deeper than the previous indent level will cause the line to be considered a continuation of the previous line, which is a new feature to Prothon. The automatic continuation of lines in comma separated lists found in Python is not allowed in Prothon because of parsing differences, but usually the auto-continuation from indents alleviates the need for this.

    Note that you can put spaces after tabs when in an auto-continuation. This allows you to line up the continued line for appearance.

    x = 1 + 2 + 3 + 4 + \
    5 + 6 + 7 + 8 + 9 # backslash continuation

    s = "this is a normal line \
    this is a continuation" # backslash works in quotes

    y = long_function_name() +
    another_function_name() # extra indent continuation

    z = function_name(variable_name_1, # this is legal in Prothon because
    variable_name_2) # of extra indents, not commas

    Variable Names and Scope (No more "self variable")

    The syntax for a variable name (label) is the same as Python except that one exclamation mark is allowed at the end and only at the end. This usage should be reserved for functions that modify the object's content in place. This allows a function such as list.sort!() to return the modified list, which was not allowed in Python. One should ALWAYS use this naming convention for in-place modification functions to warn programmers.

    Prothon has a very different concept of self than Python. Any and every object can be "self", whether the code is in a function or not. So the Python tradition of using the variable named "self" does not fit in Prothon. The next section shows how an object becomes the "self". For now just imagine that somehow there is always one special "self" object at any one time.

    Prothon code needs a way to differentiate between local variables, attributes in the self our code is running on, and global variables (in Prothon, globals are attributes of the module running our code). Prothon is introducing a relatively new concept in order to make it very easy to know which of these three types of variable you are referring to. This is the use of character case. Just as Python pioneered the use of white-space (indentation) to control syntax, Prothon is using case to control syntax.

    Local variables always start with a lower-case letter or underbar ( _ ). Global variables always start with an upper-case letter. Attributes in the self object are prefixed by a period ( . ), but the name of the attribute itself can start with any case.

    def .get_hdr(text): # define func "get_hdr" as attribute of self .text = text # attribute "text" loaded from local "text" .hdr = Mime

  17. Re:Uh by congaflum · · Score: 5, Insightful

    Of course we need more programming languages. That is how we learn how to make programming languages better.

    Sure, only a small number of languages become popular in the end. But that doesn't mean the unpopular ones don't have academic value.

    Cheers.

  18. Why is there only one database access language? by Anonymous Coward · · Score: 5, Interesting

    There are sooo many general programming languages but only one database access languages: SQL? SQL is so old, it hurts. It's basically COBOL.

    Ok, there is one additional database access language I know of: NewSQL (http://newsql.sf.net).

    But it seems nobody is really interested in database access. And everybody is interested in all kinds of general programming language. Why is that?

    1. Re:Why is there only one database access language? by jrexilius · · Score: 4, Insightful

      Thats a good question, but I would say that because in general (arguably because SQL is so limited) there has been a seperation of data storage and application logic paradigm. Its similar to why filesystems dont have lots of complex logic constructs built in to them.

      You might question the eveolution of how much we push into the platform level though. For instance the hot libraries/tools people are playing with are things like object serialization packages, cheap DB replication, etc. These are places where application space is trying to address lack of evolution in data storage space and might be good candidates for new storage interfaces.

      Just a thought..

    2. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      My alter ego says programming database tools is really boring, and that SQL works good enough anyway.

    3. Re:Why is there only one database access language? by jon3k · · Score: 2, Insightful

      If it ain't broke ...

    4. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      Well, COBOL works good enough, or what features are you missing?

      But I kind of agree with the argument that programming databases is boring. This is really only for the nerd. While 'I created a new object oriented script language' sounds way cooler.

    5. Re:Why is there only one database access language? by proj_2501 · · Score: 2, Informative

      you're forgetting OOSQL (which is basically completely different) and all the various DBMS-particular languages like Oracle's PL/SQL

    6. Re:Why is there only one database access language? by Anonymous Coward · · Score: 1

      Yea, sure, SQL isn't broken!

      Just look at the great compatiblity of the various databases among each other. It's like having another flavour of C for each processor.

      Then the language itself:

      INSERT INTO sometable(realllllllllly long of column names) VALUES(realllllllllly long column of values where you have no clue if you match the right column)

      another example:
      updateCount = UPDATE some table
      if updateCount == 0 then
      INSERT INTO ......
      There's not even a 'put' or similar (UPSERT or whatever) in SQL.

    7. Re:Why is there only one database access language? by Mr.+Slippery · · Score: 5, Interesting
      There are sooo many general programming languages but only one database access languages: SQL? SQL is so old, it hurts

      Arabic numbers are old too, but I don't see anyone proposing to change them.

      SQL is an English-like representation of relational calculus. Relational calculus has not, and is not going to, change significantly. When the problem is solved well, there's no need to change the solution.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    8. Re:Why is there only one database access language? by torok · · Score: 1

      Actually, there is more research being done on databases now than ever, although most of it is in relation to new algorithms to speed up selection and insertion.

      There are a lot of hot spots right now where people are trying to figure out how to index images.

      And don't forget all those SQL extensions!

    9. Re:Why is there only one database access language? by AndyElf · · Score: 1

      There is a standard and non-compliance of various vendors -- well, this is just non-compliance.

      --

      --AP
    10. Re:Why is there only one database access language? by frodo+from+middle+ea · · Score: 2, Insightful
      The reason why SQL is incompatible across various vendors, is because they make it so.

      Any way there is no standards defined for stored procedures, triggers, OODBMS etc, and even if there were, which vendor whould implement them and risk losing business to another competing products.

      --
      for the last time people, I am "frodo from middle eaRTH", not "middle eaST".
    11. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      Roman number (I, II, III) where replaced by Arabic numbers because arabic numbers are actually simpler. Normally, people have 10 fingers except carpenters.

      COBOL was replaced because C++/Java/Perl/whatever is better (simpler to use, more powerful). You get more chicks with Java :-)

      SQL was not replaced because... probably because nobody stores his pr0n in databases!

    12. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      Resarch in algorithms doesn't make a new language, and extensions are... only extensions. I kind of agree with the original post: somebody experienced in programming language design should probably have a look at SQL and come up with something smarter. Instead of creating just-another-object-oriented-script-language.

    13. Re:Why is there only one database access language? by Tablizer · · Score: 2, Interesting

      There are sooo many general programming languages but only one database access languages: SQL? SQL is so old, it hurts. It's basically COBOL.

      This sounds like something I would say. I assume you mean that more research or alternatives to SQL as far as relational languages would be nice.

      I agree. The two other candidates I have seen promoted or mentioned fairly often are Tutorial-D, by Chris Date's group, and Business System 12 (BS-12), an early contender by IBM that kind of got ignored because IBM wanted something more "English-like", in other words COBOL-like, and thus settled on SQL.

      I have also been working on my own pet relational language that somewhat resembles BS-12 in that it is functional in nature, but has simpler parameter "types" (scalars, expressions, and tables) so that you always know what the parameters are instead of invent funny syntax like some other query languages do.

      There are also some OO query languages, but I don't think very highly of OO. OO databases resemble the abandoned 1960's "navigational" databases. They were abandoned for good reason IMO. Nobody seem to miss their philosophy until OO proponents tried to revive it. Relational uses constraints (conditions) to find information, while navigational uses links, pointers, and paths. The relatonal philosophy is to ask for what you want rather than have to know how to get to it (navigate). Classes/objects pointing to other classes/objects is very close to the "navies".

      Fascinating topic either way.

    14. Re:Why is there only one database access language? by hereticmessiah · · Score: 1

      Nah, SQL isn't that bad. What hurts it is that there's a horrible dissonance between the core declarative, set-based language and the various procedural extensions slapped on to make it complete enough to write stored procedures and the like.

      Like COBOL? Hardly.

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    15. Re:Why is there only one database access language? by sparkywonderchicken · · Score: 1

      Actually there is a standard for triggers and SPs see ISO/IEC 9075 spec ISO/IEC 9075-4:2003 for SPs

    16. Re:Why is there only one database access language? by leandrod · · Score: 1
      > SQL is so old, it hurts

      No, it hurts because it is not relational and because it was badly designed as a language anyway.

      Looking like COBOL is not a problem in itself.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    17. Re:Why is there only one database access language? by leandrod · · Score: 0
      > forgetting OOSQL

      Better forget it, and anything non-relational too.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    18. Re:Why is there only one database access language? by leandrod · · Score: 1
      > it ain't broke

      Badly designed, too complex, not relational.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    19. Re:Why is there only one database access language? by leandrod · · Score: 1
      > SQL is an English-like representation of relational calculus

      It ain't. It is less powerful and more complex than a relational language would be.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    20. Re:Why is there only one database access language? by proj_2501 · · Score: 1

      trust me, i'm trying to forget, but i don't there's enough vodka in this hemisphere

    21. Re:Why is there only one database access language? by lpp · · Score: 1

      I kinda like having dynamic allocation capabilities as part of the language, rather than having to hack around the issue.

    22. Re:Why is there only one database access language? by ndogg · · Score: 1

      That misses the point that the grand parent post was trying to get across. Assembly, C, or Cobol were not broken, so why are there so many different programming languages these days, and yet only one DB language?

      It's not a question of whether SQL is broken, but more of the idea of whether or not other lingquistic paradigms for data storage have been explored and experimented with to see if they are better (in terms of readability, efficiency, flexibility, etc.)

      --
      // file: mice.h
      #include "frickin_lasers.h"
    23. Re:Why is there only one database access language? by jon3k · · Score: 2, Interesting

      Well, I don't think relational logic has changed much in the last 400 years or so, and apparently no one has come up with a better way to express those relationships, either.

      I can't say whether or not this has been explored extensively (enough) - I don't know if anyone can.

    24. Re:Why is there only one database access language? by jon3k · · Score: 1

      Care to explain or justify any of that?

      "C sucks, its old, and badly designed, way to complex ..."

    25. Re:Why is there only one database access language? by bob_jenkins · · Score: 1

      The cool thing about SQL is that it's up to the compiler to figure out what the algorithm is for answering the query. If you want something more general than SQL that's still basically SQL, that means getting the compiler to be able to generate algorithms for all that too. That can be done easily if there's only one algorithm it knows to use for it, but if you want lots of options ...

    26. Re:Why is there only one database access language? by jovlinger · · Score: 1

      huh?

      I thought that SQL was the embodiment of the relational calculus? While I'm asking, could you perhaps post a link to the seminal paper; a quick google isn't doing it for me.

    27. Re:Why is there only one database access language? by leandrod · · Score: 1
      > I thought that SQL was the embodiment of the relational calculus?

      The Third Manifesto, DBDebunk, DMoz.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    28. Re:Why is there only one database access language? by leandrod · · Score: 2, Informative
      > Care to explain or justify any of that?

      Check David McGoveran, Chris(topher) J Date, Fabian Pascal, Hugh Darwen, and BTW Eduard F 'Ted' Codd. Start at DMoz, then Google around...

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    29. Re:Why is there only one database access language? by tigersha · · Score: 1

      Search for Chris Date on Google and look for his books or his website "Database Debunkings" or something like that. Ok, he is a bit of a fanatic (and his colleague, Fabian Pascal, is like the Osama bin Laden radical of databases) but they can give you quite a few reasons why SQL sucks.

      http://www.dbdebunk.com

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    30. Re:Why is there only one database access language? by jon3k · · Score: 1

      I've read quite a bit of that site, and most of it seems like nitpicking, and them personally attacking people to try and prove their superiority. He tries to elude to the fact that he's above actual SQL programming, and his time is best spent strictly on theory.

      Basically the guy sounds like an arrogant asshole, and I quit reading pretty quickly. Too bad too, since he might have something interesting worth saying.

    31. Re:Why is there only one database access language? by slamb · · Score: 3, Insightful
      There are sooo many general programming languages but only one database access languages: SQL?

      There are more than that. Here's one: Xplain. That page describes a converter to SQL, so you can write Xplain queries and make them against a standard DBMS. I don't know much about this language, as I just learned of it recently.

      There are many others which are not based on the relational model. It's difficult for me to take them seriously, as the relational model is so powerful.

      SQL is so old, it hurts. It's basically COBOL.

      I don't care how old it is. What's wrong with it?

      By "is basically COBOL", are you complaining that it favors words over symbols? I do not find this to be a problem. My SQL queries are short enough and a small enough part of the whole program that I prefer the clarity over any additional possible terseness. COBOL is different in that whole programs are written in it.

      If I were to make any complaints about SQL, they would be:

      • null lumps together "unknown" and "inapplicable". For this reason, a lot of people find the comparison rules for "x == null" and "x null" confusing. If these were separated, I think more logical behavior would be possible. (Dr. Codd, the relation algebra guy, proposed having multiple types of null at one point.)
      • it requires you to match up pairs of lists in several situations:
        • insert into table (column_a, column_b, column_c)
          values (value_a, value_b, value_c)
          ...which looks okay there, but gets hard when you have too many columns to fit on one line. Versus insert into table (column_a => value_a,
          column_b => value_b,
          column_c => value_c
          which is always clear.
        • insert into table (column_a, column_b, column_c)
          select 'foo',
          'bar',
          column_c
          ...
          versus insert into table
          select 'foo' as column_a,
          'bar' as column_b,
          column_c
          ...
        • $sth = $dbh->prepare('insert into mytable values (?, ?, ?)');
          $sth->execute($foo, $bar, $baz);
          versus $sth = $dbh->prepare('insert into mytable values (:foo, :bar, :baz)');
          $sth->execute(foo => $foo,
          bar => $bar,
          baz => $baz);
          I think the placeholder syntax is not actually specified by the SQL standard, but it should be. The '?' syntax is dumb. The named syntax should be mandatory. In most DBMS/API combinations, only the '?' syntax is available.
      • there are no parameterized views. I'd like to be able to do something like
        select *
        from latest_chronological_v(some_date)
        where ...
        instead of the
        select *
        from chronological_table
        where date <= some_date
        and not exists (
        select 'x'
        from chronological_table later_entry
        where later_entry.group = chronological_table.group
        and later_entry.date > chronological_table.date)
        that I need now to do whenever date is not sysdate. (I believe SQL-99 has something like this, but it's not implemented in PostgreSQL or Oracle.)
    32. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      There is OQL Object Query Language

    33. Re:Why is there only one database access language? by mattypants · · Score: 1

      There are many, in fact. Most are embedded in obscure products. Often they involve navigational access. Check out Equinox from Compsoft plc and you will see what I mean.

    34. Re:Why is there only one database access language? by MenTaLguY · · Score: 2, Interesting

      I wish the grandparent poster would bother posting something more informative than simple assertions.

      In the strictest sense, he is correct. SQL is based on relational calculus, but manages to mangle it pretty badly.

      Suffice to say that employing many relational concepts in SQL is not really possible, and SQL makes the remainder a lot more complicated than they need to be.

      this thread manages to cover the bases, I think...

      --

      DNA just wants to be free...
    35. Re:Why is there only one database access language? by MenTaLguY · · Score: 1

      Actually, there are probably more informative links. That's the best I could do with a quick googling (I'm at work) though.

      --

      DNA just wants to be free...
    36. Re:Why is there only one database access language? by metachor · · Score: 1

      Arabic numbers are old too, but I don't see anyone proposing to change them.

      Actually we use binary now. Arabic numerals are just a backwards compatibility layer for humans.

    37. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      Requiring tuples' values to have (valid identifier) names would take SQL even further away from relational algebra, and who knows what other changes in the language would be required to ensure that every value has a name. VALUES is a table constructor; interleaving identifiers and literals only makes sense if you're inserting a single record.

      DBI's encouragement to use dynamic SQL to prepare the same statement over and over is dumb. Perl should support embedded SQL (which uses the :name syntax to access any language's local variables) instead.

      Re your parameterized view, it seems like all you need is

      CREATE VIEW latest (cgroup, cdate) AS
      SELECT cgroup, MAX(cdate) FROM chronological_table GROUP BY cgroup;

      SELECT * FROM chronological_table WHERE cgroup IN
      (SELECT cgroup FROM latest WHERE cdate <= :some_date);
      Views only exist for access control or optimization of frequent queries. Can a parameterized view do anything that a subquery on a normal view doesn't?
    38. Re:Why is there only one database access language? by slamb · · Score: 1
      Requiring tuples' values to have (valid identifier) names would take SQL even further away from relational algebra, and who knows what other changes in the language would be required to ensure that every value has a name.

      What I proposed was solely a syntactic change. Every column in the table already has to have a valid identifier. My modified example just has the column name and associated value closer together; they were both there in the original case. (I'm talking about the insert into mytable (foo, bar, baz) values (:foo, :bar, :baz) case here.)

      I would not take away the syntax in which you do not need to specify the column names at all (insert into mytable values (:foo, :bar, ...)). I never use it myself (for similar reasons), but I don't see a need to eliminate it.

      VALUES is a table constructor; interleaving identifiers and literals only makes sense if you're inserting a single record.

      No, it's not. insert values (...) and insert (...) values (...) always insert a single record. values does not occur anywhere else in SQL, AFAIK.

      DBI's encouragement to use dynamic SQL to prepare the same statement over and over is dumb. Perl should support embedded SQL (which uses the :name syntax to access any language's local variables) instead.

      I don't like the embedded syntaxes. I prefer an external query library, as provided by my xmldb project. SQL is different enough that I think it should not be lumped in the same file, for maintenance reasons if nothing else.

      xmldb also provides a form of named parameters, internally using the ? placeholders. I'd like the JDBC people and all the vendors to support the named syntax, but this way I can use something similar right away.

      Re your parameterized view, it seems like all you need is ...

      Check your query again. It would return (for each group) all records if and only if they are all on or before :some_date. I'm looking for one that (for each group) returns the latest record on or before :some_date.

      Views only exist for access control or optimization of frequent queries.

      Those are good reasons, but convenience is important, too.

      Can a parameterized view do anything that a subquery on a normal view doesn't?

      Not sure. Maybe not.

    39. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      Binary is a base. The Arabic numerals (which aren't Arabic, anyway...) are symbols representing numbers. I can represent binary using the Arabic numerals. I can represent binary using clumps of feces, too.

    40. Re:Why is there only one database access language? by Greger47 · · Score: 1
      No, it's not. insert values (...) and insert (...) values (...) always insert a single record. values does not occur anywhere else in SQL, AFAIK.

      Nope, you can insert multiple records with one statement, the syntax is:

      insert into foo (x,y,z) values (1,1,1), (2,2,2), (3,3,3),...

      /greger

    41. Re:Why is there only one database access language? by whatteaux · · Score: 1

      There's at least one other: DL/I (Data Language 1). It's the language one uses to access IBM's IMS databases. IMS was IBM's main DBMS before DB2 (that's why DB2 is called DB2 rather than, say, DB1 or DB3). IMS is a hierarchical DB, rather than relational. It's still IBM's main high performance DBMS (built for speed, definitely not for comfort).

    42. Re:Why is there only one database access language? by slamb · · Score: 1

      Greger47 said: VALUES is a table constructor; interleaving identifiers and literals only makes sense if you're inserting a single record.

      I said: No, it's not. insert values (...) and insert (...) values (...) always insert a single record. values does not occur anywhere else in SQL, AFAIK.

      Greger47 replied: Nope, you can insert multiple records with one statement, the syntax is: insert into foo (x,y,z) values (1,1,1), (2,2,2), (3,3,3),...

      I've never seen that syntax before, and it's not allowed by the Oracle grammar or the PostgreSQL grammar.

    43. Re:Why is there only one database access language? by Anonymous Coward · · Score: 0

      According to ISO/IEC 9075-2:1999 section 7.3, can have any number of s. However, some implementations only accept one row because they don't support OLAP facilities like feature F641.

    44. Re:Why is there only one database access language? by sander · · Score: 1

      SQL is not the only database access language. It is simply the de facto standard database acess language for client-server relational databases. which means that most people never meet any others

    45. Re:Why is there only one database access language? by sander · · Score: 1

      Well, sort of. They have a bunch of valid issues with some of the endless blather of hype coming from other people and good theory based objections to some other things. And not too good social skills.

  19. come on... by Anonymous+Fart · · Score: 1

    hey why don't you "Yet Another" people move on. I mean, we have free will don't we? We don't HAVE to keep making the same jokes, using the same acronym themes, etc. do we? STALE.

    1. Re:come on... by Anonymous Coward · · Score: 0

      "...We don't HAVE to keep making the same jokes, using the same acronym themes, etc. do we? STALE. "

      What does STALE stand for

      Stupid Talentless Assholes Living Everywhere?

    2. Re:come on... by QuijiboIsAWord · · Score: 1, Funny

      Yet Another Guy Complaining About STALE Jokes

      --
      -Hmm...I got a G+ invite, better remember to remove the request from my sig...-
    3. Re:come on... by Anonymous Coward · · Score: 0

      We'll stop making the same jokes, using the same acronym themes, when they stop hawking new languages with the same old variations, using the same set of buzzwords.

    4. Re:come on... by Anonymous+Fart · · Score: 1

      Err... OK... but you *could* just stop making stale jokes regardless, you know.

  20. text of website Prothon by Anonymous Coward · · Score: 3, Informative

    Why a new language?

    Python is a interpreted language with object-oriented features that is practical, powerful, and fun to program at the same time. Over time capabilities have been added to the core Python language, while compatibility with earlier versions has been maintained, and Python has became loaded with features, some quite complex. The metaclass is an example of a recent feature addition. Even Python experts admit that metaclasses are brain-achingly complex.

    Prothon is a fresh new language that gets rid of classes altogether in the same way that Self does and regains the original practical and fun sensibility of Python. This major improvement plus many minor ones make for a clean new revolutionary break in language development. Prothon is quite simple and yet offers the power of Python and Self.

    Prothon is also an industrial-strength alternative to Python and Self. Prothon uses native threads and a 64-bit architecture to maximize performance in applications such as multiple-cpu hosting.
    What is Prothon like?

    See a quick description of the Prothon language.

    Take a look under the hood at how Prothon is implemented.

    Summary of differences from Python.
    Development status?

    As of 3/04 Prothon exists as a pre-alpha interpreter with minimum capabilites, just enough to try out the language.

    Summary of currently implemented functions. Known problems.

    Tested platforms: i386-linux, , sparc-linux, sparc64-linux, i386-Win2K, i386-XP, Dual-Opteron-Win2K

    Target Schedule:

    7/04: Freeze core language specs (keywords, etc.)

    10/04: Release version 0.1
    Download

    Stable (build 115) Source tarball (175 KB)

    Stable (build 115) Windows executable zip file (400 KB)

    Latest (probably broken) SVN access: svn://svn.prothon.org/prothon/trunk

    Latest source view and tarball: http://www.prothon.org/viewcvs/trunk
    How can I contribute?

    (Mailing list)

    For now, the biggest contribution you can make would be adding to the discussion of 0.1 features. Please join the mailing list. Of course helping with the coding effort is always welcome.
    Credits

    Language design & win32 coding: Mark Hahn

    Linux/Unix coding: Ben Collins

  21. YES that's it, "Prothon" by Anonymous Coward · · Score: 0

    Even the name brings me chills

  22. Or even... by ThrasherTT · · Score: 2, Insightful

    newborn-infant-strength...

    --

    All Your Memory Are Belong To Java
  23. .NET? by CharAznable · · Score: 3, Funny

    So, when can we expect Prothon.NET?

    Me, I can't wait for Intercal.NET and Brainfuck.NET

    --
    The perfect sig is a lot like silence, only louder
    1. Re:.NET? by wed128 · · Score: 3, Funny

      Brainfuck.net ... 8 whole instructions...this needs simplification...and bytecode!!!

    2. Re:.NET? by maxwell+demon · · Score: 1

      Well, maybe we should invent the languages Inter and Use.
      The .NET versions of course being Inter.NET and Use.NET.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  24. The problem with Python is...? by parvenu74 · · Score: 2, Insightful

    I wasn't aware Python was broken.

    Nor I... if one wants to create a new scripting language to overcome perceived weaknesses, why make it look 99% like something else that is already out there? Now if the goal were to be object oriented, extensible with C (or Perl or {insert your favorite language here}) modules, free of "brain-aching" complexity, easy to learn and fun to use, skip the Python syntax and make something with clearer scope termination, like say, a *proper* form of VB Script...

    1. Re:The problem with Python is...? by sketerpot · · Score: 1
      Actually, this does have some rather cool aspects. It could be thought of as a testbed for Python, at least. I sort of like the syntax for dealing with "self", I dislike the way it standardized on tabs rather than spaces. I generally prefer to just use whatever indentation emacs wants me to use, so I don't feel too strongly on this, but it strikes me as odd that "it saves typing" would be an argument for using tabs. Is anyone actually indenting python code by typing all those spaces manually?

      What I would really like to see in Python is something like this:

      with x = 1, y = 2, z = "wooglywooglywoo":<br>
      print z, x, y # Spaces don't come out right
      Where the with statement would bind those variables locally, so you don't have to worry so much about polluting the global namespace.
    2. Re:The problem with Python is...? by Anonymous Coward · · Score: 0

      Congratulations: you have just reinvented the lexical closure

    3. Re:The problem with Python is...? by Jeremi · · Score: 1
      Nor I... if one wants to create a new scripting language to overcome perceived weaknesses, why make it look 99% like something else that is already out there?


      Because the #1 problem for a new language is getting people to actually use it. That is why C++ looks so much like C, why Java looks so much like C++, and why C# looks so much like... well, whatever you want it to look like...

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    4. Re:The problem with Python is...? by CableModemSniper · · Score: 1
      http://gnosis.cx/publish/programming/charming_pyth on_16.html

      Scroll down until you get to the part about 'Bindings'. That should give you basically what you want, although its more verbose than just

      with x = 2, y = 3:
      x + y
      --
      Why not fork?
    5. Re:The problem with Python is...? by mrogers · · Score: 1
      Is anyone actually indenting python code by typing all those spaces manually?

      I use vi you insensitive clod!

    6. Re:The problem with Python is...? by sketerpot · · Score: 1

      And can't vi (or at least vim) do smart indentation? Or do the emacs people in emacs vs. vi flamewars actually have a point? I think (and hope) it's the former.

    7. Re:The problem with Python is...? by jovlinger · · Score: 1

      with is just a mis-nomer for let, but yes, in general nested lexical scoping for python would rock.

      Of course, it's easy to roll your own first class scopes out of classes and the __get__ (or whatever they're called) accessors.

    8. Re:The problem with Python is...? by Mad+Marlin · · Score: 1
      And can't vi (or at least vim) do smart indentation? Or do the emacs people in emacs vs. vi flamewars actually have a point? I think (and hope) it's the former.

      Put set ai (set autoindent) in your ~/.vimrc file. It will make your life easier.

    9. Re:The problem with Python is...? by Anonymous Coward · · Score: 0
      What I would really like to see in Python is something like this:
      with x = 1, y = 2, z = "wooglywooglywoo":
      print z, x, y # Spaces don't come out right
      Where the with statement would bind those variables locally, so you don't have to worry so much about polluting the global namespace.

      So kind of like Caml's
      let x = 1 and y = 2 and z = "wooglywooglywoo" in
      printf "%d, %d, %s" x y z
      then?
    10. Re:The problem with Python is...? by Kent+Recal · · Score: 1

      Put set ai (set autoindent) in your ~/.vimrc file. It will make your life easier.

      Yes, but only until you try to make use of your middle mouse button.

    11. Re:The problem with Python is...? by Anonymous Coward · · Score: 0

      :set paste

  25. Addresses an interesting point... by ndykman · · Score: 1

    Well, the site is down. (Slashdot: The fun and friendly DDOS attack). I wonder if the twist on being prototype based will catch on in the script world.

    The nature of the prototype OO model is a much more SmallTalkish (ooh, a new word). One problem is that you have to make a prototype, and that raises issues with default values and such.

    The model is much more dynamic than class-based OO model. An interesting exercise I guess.

    1. Re:Addresses an interesting point... by Anonymous Coward · · Score: 2, Informative

      I wonder if the twist on being prototype based will catch on in the script world.

      It already has. Javascript is also prototype-based.

    2. Re:Addresses an interesting point... by cbiffle · · Score: 1

      Naw -- Smalltalk's class-based, like Simula. You're probably thinking of Self and/or NewtonScript.

      Prototype-based inheritance, while not personally within my tastes, is nothing to scoff at. In Self, the inheritance scheme worked its way through the entire language, from variable scoping to collections, and allowed a lot of optimizations. Self still holds the claim, as far as I know, of being the fastest pure-OO language, with a relatively small interpreter/JIT to boot.

      (Oops, that might qualify as a 'boot' pun.)

      One difference, of course, is that while Self was designed specifically to be JIT compiled (though they didn't call it that back then), Prothon doesn't seem to be. But I might be wrong.

      Without the compilation-on-the-fly, Self would likely perform far worse....

    3. Re:Addresses an interesting point... by ndykman · · Score: 1

      I understand the differences, but I find Self fits more in the SmallTalk OO camp. Smalltalk is, of course, still class-based, but the programming model in Self feels like Smalltalk to me. Maybe it's Self syntax, but a part of it is that it feels very dynamically typed. So, Smalltalkish. Besides, selfish is a word already. What's the fun in that?

    4. Re:Addresses an interesting point... by ndykman · · Score: 1

      Eek. Good point. I guess I was thinking more along the lines of Perl and Python there. Whoops.

  26. I have also invented a new language by blue_adept · · Score: 0, Offtopic

    called neuthron, and since prothon revolves around it, you could say it's more important. ;)

    --

    "Is this just useless, or is it expensive as well?"
  27. even better by swagr · · Score: 5, Interesting
    --

    -... --- .-. . -.. ..--..
    1. Re:even better by Anonymous Coward · · Score: 0
      or worse..
      Create a simple object and show how to use it

      Account := Object clone
      Account balance := 0
      Account deposit := method(v, balance = balance + v)
      Account withdraw := method(v, balance = balance - v)
      Account show := method(
      write("Account balance: $", balance, "\n")
      )

      myAccount := Account clone
      myAccount show
      "Depositing $10\n" print
      myAccount deposit(10)
      myAccount show
  28. Like school in the summer time by Sloppy · · Score: 4, Informative

    Found a little example code inside the tarball, that shows what they mean by no classes:

    Emp_proto = Object()

    with Emp_proto: .name = ""

    def .__init__(name): .name = name .hello()
    return .

    def .hello():
    print "My name is:", .name

    Emp_proto.hello()
    emp = Emp_proto("Jim")
    emp.hello()

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    1. Re:Like school in the summer time by Sloppy · · Score: 1

      #D'oh, something got screwed up with the formatting in that example. It's actually:

      Emp_proto = Object()

      with Emp_proto:

      .name = "<proto name>"

      def .__init__(name):
      .name = name
      .hello()
      return .

      def .hello():
      print "My name is:", .name

      Emp_proto.hello()
      emp = Emp_proto("Jim")
      emp.hello()

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    2. Re:Like school in the summer time by p3d0 · · Score: 1
      "return ."??? Yeah, that's intuitive.

      Next...

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    3. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      So ... How is this different from JavaScript?

      It seems like the market has already chosen it's prototype-based loose-typed language.

    4. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      return ..!..

    5. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      Crackers, that's fugly.

      Sorta like twisted Python (and Python syntax ain't nothing to write home about).

    6. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      I've been a pythonista for some time now, & I don't see Prothon's differences from Python as being advatageous... One of the main goals of Python is to make a language that a non-programmer can read & get some sense as to how it works.... Having inline C-style comments (/* */) that allows programmers to put comments in the middle of an expression can be abused much too easily! Lazily using '.property' instead of typing out 'self.property' is more prone to mistyping/misreading, & is harder to debug.... it's like trying to find that missing ';' Prototypes are interesting, I've had some use with them, but I don't see it as providing ANY advantage over classes. & what about multiple inheritance with prototypes?

    7. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      Isn't that the defining characteristic of you "Pythonista"s?

      That you you don't see ANY advantage to ANY language other than Python and if shown a snippet of readable perl code would declare it blasphemy and say that the author was trying to "copy" Python?

      I find it amusing that the rigidity level is the same for the language and its proponents.

    8. Re:Like school in the summer time by Anonymous Coward · · Score: 0

      Python is a very flexible language, metaclasses make a lot of perl look rigid. But I like them both and can't wait for more interoperability.

      Perhaps your prejudice of "Pythonistas" is the most rigid thing in this discussion.

  29. The wave of the future! by Anonymous Coward · · Score: 0, Troll

    It slices! It dices! It's object-orientated, and weblified with an eye toward enterprise strategeries! It will orally gratify you while you cruise down the freeway in your Camaro!

    Seriously, is there a real need for another do-it-all, whizbang language? This seems like a solution to a non-problem, with feature that address non-deficiencies.

  30. Re:I have also invented a new language by blue_adept · · Score: 1

    no wait, I mean prothon is tightly bound to it. d-oh!

    --

    "Is this just useless, or is it expensive as well?"
  31. --prothon; return; by Vampyre_Dark · · Score: 1

    industrial-strength

    Strong enough for a man, but made for a woman?

    interpreted
    STRIKE TWO!

    prototype-based
    moving along...

  32. When things come together, they combine ... by Chromodromic · · Score: 4, Insightful
    Anytime a programming language "combines" the power of X with the simplicity/power/convenience of Y, what it really means is, "Here's a new set of compromises and we're calling it this, but the marketing guys are making us say that it's a new way of slicing bread."

    Bottom line, someone wanted Python with prototypes. I'm not sure that prototyping -- creating objects from other existing objects by copying, essentially making inheritance a "first class" consideration -- is an analogy that's going to truly redefine the way I look at programming. Or let me put it this way, I'm not at all sure that the benefits of prototyping are going to make me want to restructure -- yet again -- everything I know about programming so far. I mean, after a certain point, programming is a job and I have to produce, not just theorize all the time about new approaches.

    Also, judging from Sun's tutorial on Self, it doesn't seem ready for primetime, so I'd be a little edgy about "Prothon".

    Prothon. God.

    I dunno. This may seem curmudgeonly, but it is, after all, yet ANOTHER language ... Sigh.

    --
    Chr0m0Dr0m!C
    1. Re:When things come together, they combine ... by Anonymous Coward · · Score: 0
      judging from Sun's tutorial on Self, it doesn't seem ready for primetime
      Self was designed by David Ungar and Randall Smith in 1986. An initial implementation was undertaken at Stanford University in 1987. A public releases of Self from Stanford took place in 1990. In 1991 the Self project moved to Sun Microsystems Labs. Further public releases took place in 1992 and 1993, and the latest release, 4.0, emerged in July 1995.
      When will it be ready for primetime?
    2. Re:When things come together, they combine ... by oliverk · · Score: 1

      dunno. This may seem curmudgeonly, but it is, after all, yet ANOTHER language ... Sigh.

      Yes, but it paves the way for Pro-arrot...the prototype-inclusive all-language compiler (said with fancy eyebrow-wagging sarcasm).

      --
      ---- Please be nice in case my Slashdot karma ~= my real life karma.
    3. Re:When things come together, they combine ... by Anonymous Coward · · Score: 0

      Do you mean Parrot?

    4. Re:When things come together, they combine ... by nosferatu-man · · Score: 1

      I'm not sure that prototyping -- creating objects from other existing objects by copying, essentially making inheritance a "first class" consideration -- is an analogy that's going to truly redefine the way I look at programming.

      Perhaps not, but there already is a very widely used prototype-based language -- sure it's got some crappy implementations, but lots of people all over the world use it every day. It's as "ready for primetime" as most anything else we're stuck with.

      'jfb

      --
      To spur "enterprise Linux," Big Bang, the distributed two-phase commit.
    5. Re:When things come together, they combine ... by Anonymous Coward · · Score: 0
      I'm not sure that prototyping -- creating objects from other existing objects by copying, essentially making inheritance a "first class" consideration -- is an analogy that's going to truly redefine the way I look at programming.

      Yeah. If it did, Javascript would not only be used on web-pages to create trivial triggers that modify DOM tree. Javascript is probably the prototype-based language most people around here are somewhat familiar (albeit may not know it's one).

      In Javascript, having prototypes is kind of neat, but I would probably trade that in in a second, if I was offered just plain old OO with inheritance.

  33. Not 'instrustrial strength' by Chmarr · · Score: 5, Insightful

    I'm a bit of a 'language lawyer', so new languages that try to solve problems in interesting ways always interests me. So... I decided to give it a good reading. I got turned off IMMEDIATELY as I saw the following text:

    "Unlike python, there is no 'global' keyword. Any variable name starting with a capital letter is global."

    (Taken from memory... the prothon site is a bit slow at the moment, for some odd reason ;) )

    That is NOT the sign of an 'industrial strength' language.

    1. Re:Not 'instrustrial strength' by cnf · · Score: 1, Flamebait

      I do not know if the following is applicable, as their site is down, but as it is based on python? ..

      I refuse to even consider ANY language that is whitespace sensitive

    2. Re:Not 'instrustrial strength' by Chmarr · · Score: 1


      I thought so too until I wrote my first project in Python. It becomes totatally invisible; just indent your program like you would anyway. Give it a 'serious try' on a moderately sized project, I'll wager you'll change your mind.
      </standard python reply>

      Prothon is even weirder... you HAVE to indent with tabs, and a 'double indent' counts as a line continuation (rather than a backslash). Lists of items do NOT auto-continue, meaning you MUST double-indent if you have your list spanning multiple lines.

      It sounds like the language designer added in a bunch of stuff he thought was cool without giving due consideration to 'User Interface'.

      Nice work. Needs thought.

    3. Re:Not 'instrustrial strength' by Just+Some+Guy · · Score: 4, Insightful
      I refuse to even consider ANY language that is whitespace sensitive

      It's never cool to brag about an unwillingness to learn something new. No matter what other good things you might have heard about Python, you refuse to even try to get past the formatting? That's really sad.

      Question to mods: what part of that comment justified "informative"?

      --
      Dewey, what part of this looks like authorities should be involved?
    4. Re:Not 'instrustrial strength' by uucp2 · · Score: 0

      I got turned off IMMEDIATELY as I saw the following text: "Unlike python, there is no 'global' keyword. Any variable name starting with a capital letter is global."

      Do 'global' keyword or lowercase letters turn you on? Either case, dude, you are weird!

    5. Re:Not 'instrustrial strength' by UtucXul · · Score: 1

      That may not be bragging and unwillingness to try something new. That may just be someone who had an adverse reaction to Fortran and now dislikes whitespace sensitive language (a position I completely understand).

    6. Re:Not 'instrustrial strength' by Eugene+O'Neil · · Score: 1

      "It's never cool to brag about an unwillingness to learn something new."

      Do you really think there is something "new" about whitespace dependancy? I don't want to learn new ways to make very, very old mistakes.

    7. Re:Not 'instrustrial strength' by froody · · Score: 1

      Why not? What is the sign of an industrial strength language?

      I kind of like the idea of being able to tell the scope of a variable just by looking at it, instead of having to scan up to see if it happens to be global. I think everybody agrees that it's good to adhere to a certain variable naming scheme etc. Having the language enforce some part of it just makes code that much more consistent.

      Tim

    8. Re:Not 'instrustrial strength' by sonpal · · Score: 1
      This just incorporates a convention that most scripting language writers use, as part of the language. What's wrong with that?

      Python has done this before, by using indents to mark blocks. In terms of the "vision" or "philosophy" of Python, this is good fit.

      Obviously, you would not want this for java, because Java chooses to give you flexibility (value judgement here) in whitespace and casing but gives you the burden (value judgement here) of curly braces.

      I might add that scripting / interpreted languages cannot be considered to not be industrial strength because of funky syntax. Open source scripting languages like Python, Perl and TCL enable RAD with their scripted / interpreted nature while at the same time provide industrial-strength security and reliability because of their open-source-ness.

    9. Re:Not 'instrustrial strength' by Viol8 · · Score: 1

      Whitespace sensitive languages are retarded. Imagine trying to find where you've missed out a TAB in a 100,000 line program that compiles anyway! Gah!

    10. Re:Not 'instrustrial strength' by pchasco · · Score: 1

      I agree

      One of the things I enjoy most about python is the syntax and it's explicity. "self.property" tells you exactly what object you are modifying. ".property" tells you nothing. The explanation point thing seems unnecessary; If you need to tell somebody about what a method does, do it in the doc string. That's why they're there.

      The removal of classes isn't an improvement in my opinion.

    11. Re:Not 'instrustrial strength' by Tinidril · · Score: 1

      I don't think the gradparent was expressing an unwillingness to learn somthing new. I think that the unwillingness was to use a tool with such a huge flaw. Diferentiations in invisible characters should never be a critical part of any programing language.

      I understand why the author chose to do it, but the approach is just plain wrong. If a programmer were to insert spaces instead of a tab, it could create a bug that would be invisible to the eye, and very hard to find.

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    12. Re:Not 'instrustrial strength' by cbiffle · · Score: 3, Insightful

      This is something they inherited from Smalltalk.

      Honestly, I don't see the problem. Virtually all languages have some sort of global namespace -- the class and package hierarchy in Java, imported functions or global variables in C, etc. Most programmers seem to adopt nomenclature to identify the scope of a variable. I see a lot of _underbar for member variables, ALL_CAPS for constants, UpperCaseNames for classes in Java and C++, etc.

      What this does is (1) enforce such a standard, and (2) make it instantly apparent what the scope of an identifier is.

      Contrast with Java (which is industrial strength -- I'm currently on break from writing transaction processing systems in it). Class names are global in Java within the scope of your package imports. Sun recommends you CapitalizeYourClasses and doNotCapitalizeLocalsOrMethods. However, that doesn't keep the occasional VB/C# programmer from falling into your lap and doing everything wrong, which can make the code awfully hard to read.

      I'm not generally a fan of bondage-domination languages, but this is a case where I make an exception. (I'm also a fan of the scoping characters used in Ruby, for example.)

    13. Re:Not 'instrustrial strength' by katz · · Score: 1

      You're making wild assumptions here which do not generally hold in real life:

      1) that the Python interpreter or compiler won't tell you where your inconsistent indentation lies (it does).

      2) that you'll be writing a 100k line program in one file. Major projects tend to split their source across multiple smaller files (which makes for less hunting for bugs).

      3) that the problem of a stray character (say, '*' or '=' instead of '==') doesn't occur in other languages (it does, C is notorious for it, and that's why Python disallows assignments in comparison statements).

      Have you actually written a program in Python?

    14. Re:Not 'instrustrial strength' by Anonymous Coward · · Score: 0

      Have you actually written a program in Python?

      Of course not. Nobody who bitches about whitespace has.

      Everyone who has actually tried Python for some time loves every cent of it. Well, except Ruby zealots.

    15. Re:Not 'instrustrial strength' by jim3e8 · · Score: 1

      Sun recommends you CapitalizeYourClasses and doNotCapitalizeLocalsOrMethods.

      Also, make sure you UseSuchVerboseNamesThatYouNeedAutoCompleteToAvoidG ettingRSIException.

    16. Re:Not 'instrustrial strength' by I!heartU · · Score: 1

      You can use \ as well.

    17. Re:Not 'instrustrial strength' by Anonymous Coward · · Score: 0

      You would write a 100,000 line program without any kind of unit testing? Place the blame where it belongs dude.

    18. Re:Not 'instrustrial strength' by enjo13 · · Score: 1

      The Python case is an example of a good decision. They traded free-form code formatting and replaced it with something that (in my opinion) greatly improves the overall readibility of the language.

      This is an example of trading a few keystrokes ('global') and exchaning it with something that is INCREDIBLY error prone. After all, it's a very easy typo to make.. someVariable vs SomeVariable , and yet the meaning is drastically different.

      --
      Turn s60 photos into awesome videos with mScrapbook for all S60 3rd edition phones!
    19. Re:Not 'instrustrial strength' by Anonymous Coward · · Score: 0

      While I don't think it's a valid criticism to make based on style (Python, which this is modeled on, also enforces a number of stylistic conventions--aka indentation--that other languages let you use more free form), one reason I agree with the poster that this is a bad idea is that this idea internationalizes poorly. Not all languages even have capital letters.

    20. Re:Not 'instrustrial strength' by IpalindromeI · · Score: 1
      I refuse to even consider ANY language that is whitespace sensitive

      I guess you don't do much programming then. Maybe in APL; although I've never used it, the examples I've seen seem to be able to do without whitespace. Any other language needs whitespace somewhere. Ever try to declare a variable in C without whitespace?
      intsomeinteger;
      How'd that work out for you?
      --

      --
      Promoting critical thinking since 1994.
    21. Re:Not 'instrustrial strength' by Crispy+Critters · · Score: 1
      "Unlike python, there is no 'global' keyword. Any variable name starting with a capital letter is global."

      Wow. Are variable names that start with the letters "i" through "n" automatically integers, too?

    22. Re:Not 'instrustrial strength' by Peaker · · Score: 1

      It could not create a problem, as it raises a SyntaxError to mix the use of tabs and spaces.

      I refuse to believe that those who think indentation-based syntax is a huge flaw don't indent anyways, in which case they're wasting their time explaining to the compiler where their indentation starts and ends with curly braces. That waste of time is the flaw, although far from a huge one.

    23. Re:Not 'instrustrial strength' by HiThere · · Score: 1

      I've used Python, and it's one of the better languages. But I still don't like the white-space indentation rule.

      Still, if one is going to use white space as a syntactic feature, tabs are better than spaces. Considerably.

      That said, my preference is for Ruby...but Python still has better libraries, and Python has Pyrex! VM languages need to have ways to link to compiled languages that are both easy and efficient, and linking to C is the most basic form. (If you can do that, you can link to anything.)

      For basic language design I prefer Ruby, but I'd sure be willing to give Protheon a try. Unfortunately, libraries are quite important. If you can't reach databases and GUI toolkits, you are pretty much out of reach for most purposes. This is a problem that all new languages currently face.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    24. Re:Not 'instrustrial strength' by 2short · · Score: 1

      OK then, I've got this cool new language. In this language, you don't have to worry about what the scope indicators are, because every line of code is numbered. Prime numbers indicate a new scope, and multiples of exactly 3 primes end a scope.

      Naturally, you're not going to reject my language based just on this right? You can't wait to give it a try I'm sure.

      Now you might say I intentionally made up something new and weird to make it even worse than whitespace-sensitivity. But I'd say it's the other way around. Whitespace-sensitivity is an old mistake. I already know it sucks, so I will gladly reject out of hand any language that makes it. Not because whitespace-sensitivity is so bad (though actually, it is), but because if the designers started right off with such an obvious mistake, they probably made a whole bunch of new, innovative mistakes too.

      I see the Prothon folks also went for assigning meaning to case (first letter caps is a global), so apparently whitespace wasn't even the end of their old mistakes.

    25. Re:Not 'instrustrial strength' by Tinidril · · Score: 1

      Thats not entirely true. If a line starts with a space, that will generate an error. But the language description explicitly says that spaces are allowed after the first tab. If a human can't see the difference, neither should the compiler.

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    26. Re:Not 'instrustrial strength' by Peaker · · Score: 1

      If you use spaces after tabs (mix tabs/spaces), Python will tell you this and raise an error. Then you can easily convert this to all-tabs or all-spaces.

      I don't really see the problem here.

    27. Re:Not 'instrustrial strength' by Anonymous Coward · · Score: 0

      Are you sure? The Python 2.3.3 manual simply says leading tabs are expanded to spaces mod 8. If your editor disagrees with Python about the size of a tab, you could easily be misled about whether two lines are indented the same in files many people have worked on.

    28. Re:Not 'instrustrial strength' by Peaker · · Score: 1

      Read about the "-t" option (and "-t -t" option) to the interpreter.

    29. Re:Not 'instrustrial strength' by Tinidril · · Score: 1

      As true as that may be, the discussion was on prothon, not python.

      In python you can't use spaces to make text line up in a sub-expression. This limitation was put in to prevent the problem we are talking about. However, prothon did away with the limitation, and thus the problem re-surfaced.

      I still think that invisible chars should have no meaning in software design, but I concede that Python handles it better than Prothon would.

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    30. Re:Not 'instrustrial strength' by Anonymous Coward · · Score: 0

      Cool. Wish they'd document the command line options somewhere under http://www.python.org/doc/current/.

    31. Re:Not 'instrustrial strength' by Elwood+P+Dowd · · Score: 1
      I refuse to believe that those who think indentation-based syntax is a huge flaw don't indent anyways, in which case they're wasting their time explaining to the compiler where their indentation starts and ends with curly braces. That waste of time is the flaw, although far from a huge one.


      Well, you've just assumed something about my development methodology that is incorrect. I do not indent my code. My IDE does, based on my keywords and curly braces. Make me take over whitespace formatting of my code, and I'll cry all the way home.

      I like that I don't have to know what kind of ascii my text editor is making when I hit the tab key. Thank you.

      Unless you can dream up a real benefit to meaningful whitespace, I'll quit being a whiny little bitch about the issue.
      --

      There are no trails. There are no trees out here.
    32. Re:Not 'instrustrial strength' by Peaker · · Score: 1

      The real benefit is that the code does what it seems to do whereas curly-braced code may not:

      for(i=0; i100; ++i) {
      if(blah)
      do_something;
      do_something_else;
      }

      You're making the assumption that with meaningful whitespace you have to "format" the whitespace in your code, which is not true. In a decent editor, both methods take the same amount of keypresses (slightly less with whitespace formatting, actually) to do the same job, but with less syntax noise on the whitespace formatting side.

      if a:[enter indents here]
      a = 1
      b = 2
      [backspace unindents here]

      That's ":" and "backspace".

      if(a) {[enter indents here]
      }[unindents here]

      With Python, you do the same with less typing, and end up with less curly noise.

    33. Re:Not 'instrustrial strength' by Elwood+P+Dowd · · Score: 1
      "In a decent editor" means different things to different people. By using meaningful whitespace, you are constraining people's choice of editors. But whatever. Not a huge deal.

      I debate that there are less keypresses involved in whitespace formatting. Keep in mind that with curly braces, proper indentation can be determined programmatically. If something goes horribly wrong with the whitespace in my document (which often happens to me, for example when cutting and pasting code), I can simply tell my editor to correct the indentation. This takes one keystroke. I never have to enter indents or unindents. Never. Not once. You could remove my tab key, and I would continue to generate readable code. And my typing habits wouldn't need to change. If I paste code, and for some reason it looks like this:
      for(i=0; i100; ++i) {
      if(blah)
      do_something;
      do_something_else;
      }
      I blink and my editor gives me:
      for(i=0; i100; ++i)
      {
      if(blah)
      do_something;
      do_something_else;
      }
      And starting brace location is up to me and my editor too, before you gripe about that.

      There's the same number of keystrokes when inputting code for the first time:
      if(a)
      {[note lack of indents here]
      do something;
      }[note lack of unindents here]
      All I type are visible characters, spaces between keywords and variable names, and carriage returns. If someone wanted, they could make their editor put in the carriage returns. And I'm free to use an editor that does all kinds of messed up shit with my whitespace. Or not. It's up to me. Thank you.

      P.S. Curlies aren't noise.
      --

      There are no trails. There are no trees out here.
    34. Re:Not 'instrustrial strength' by Peaker · · Score: 1

      Since you have to indent in whatever language/editor you use, you're limited to using a "decent editor" anyways.

      The fact whitespace is insignificant to the compiler does not mean it is not significant - as absolutely all worthy programmers indent these days. So no, significant whitespace does not limit your choice of an editor.

      Typing curly braces, or typing spaces/backspaces is very similar in the amount of keypresses, but again - less noise results when only whitespace is required.

      The "whitespace gets messed up" claim is just silly. If you use an editor that messes up random parts of your code, stop using it.

      When copying and pasting code (Huh? I hope you mean cut and paste code, as copy/paste of code suggests *very* poor programming) you really do have to "re-indent" it (whether indentation is significant to the compiler or just to fellow human readers). If your editor supports "auto-indent" that reindents it when you use curly braces, then it also supports indenting or unindenting your code as required - so that is a null claim as well.

      Use significant whitespace for less noise, less typing and no mismatch between the human and the compiler reader.

  34. Self, Python, and Java by jfengel · · Score: 5, Interesting

    Yeah, it's a lot like Self, mixed with Python syntax. Self had a lot of interesting ideas. It never really got out of the starting blocks, but some of its most important ideas in dynamic compilation went on to be included in the Java hotspot compiler.

    Personally, I prefer a bit more bondage-and-discipline in my languages. That's because I like having the compiler tell me what I'm doing wrong as much as possible. It's a side effect of the environments in which I tend to work, with multiple people working on the same code. Strong typing is an important contract in such an environment. But it has a lot of downsides, as every perl and python programmer knows.

    Oh, and dude, if you're going to submit your own damn web site to Slashdot, try getting a sturdier web server first.

    1. Re:Self, Python, and Java by Anonymous Coward · · Score: 0

      Python is strongly typed.
      Java is strongly typed (mostly).
      Perl is weakly typed.
      C is weakly typed.
      Python is dynamically typed.
      Perl is dynamically typed.
      Java is statically typed (mostly).
      C is statically typed.

      Comprende?

    2. Re:Self, Python, and Java by jfengel · · Score: 1

      I stand corrected. I amend: I prefer strong static typing.

  35. No semicolon to end statements? by xv4n · · Score: 0, Flamebait

    What!? no semicolon to end statements? That's so BASIC.

    1. Re:No semicolon to end statements? by Rick+and+Roll · · Score: 1

      You are a complete fucking idiot. Fortran is the same way, and has been around longer, I believe.

  36. Prototyping languages? Ugh , no thanks. by Viol8 · · Score: 1, Insightful

    I don't know Self but I do know Javascript and I find the prototyping OO method somewhat kludgy. Ok , maybe thats a facet of javascript and not the paradigm but give me classes anyday.
    Sure , maybe they're a bit more long winded than prototyping but there a DAMN site easier to understand and follow when you're debugging.

    1. Re:Prototyping languages? Ugh , no thanks. by PantsWearer · · Score: 1
      In the past, I've done prototyping OO in both NewtonScript and JavaScript and in both cases I found it to be difficult to use on anything but small applications.

      NewtonScript actually had a pseudo-multiple inheritance where you would "inherit" both from your ancestor instances and the UI view you were currently working in. Thus, if you references a variable in your current instance, it would first search the current instance, followed by the prototype ancestors, followed by the view ancestors. (It might have been view first then prototype, my memory fails me.) I will admit that this was very useful for simple GUIs as you could share a variety of variables at different levels of the application from both a type of widget level (the prototype ancestors) and a location of widget level (all widgets in a certain container).

      JavaScript is a weaker version of all of this. Not only does it only support prototype inheritance, but it does not update ancestor variables when they are change, but makes a local copy. In some ways, this does emulate class-like behavior, as you cannot just randomly change your shared "class"-level variables, but it also makes it much harder to change them if you do need to make something global for a data type.

      In any case, prototype style OO eliminates the distinction between class and instance, making any change to any instance up the line propagate downwards. This isn't so bad when you are in a single threaded, single user, event driven environment, which basically describes the major use of JavaScript and the sole use of NewtonScript, but for any larger system, things get very unwieldy.

      --
      Be glad life is unfair, otherwise we'd deserve all this.
    2. Re:Prototyping languages? Ugh , no thanks. by hak1du · · Score: 1

      I agree that prototype-based object systems are not obviously better than class-based systems. However, JavaScript is not a good datapoint: JavaScript has so many design problems that you really can't tell anything about prototype-based systems from it.

  37. Re:Uh by Anonymous Coward · · Score: 0

    Wise words, wise words!

    One of my favorite languages is still Emerald. An ultra-clean oo-orienten language for distributed programming. Nothing comes close to it in simplicity and correctness.

  38. So, then.... by hasdikarlsam · · Score: 3, Funny

    What does Prothon do that Lisp doesn't?

    Come to think of it, what does *anything* do that Lisp doesn't, except have larger market penetration?

    1. Re:So, then.... by Anonymous Coward · · Score: 0
      Come to think of it, what does *anything* do that Lisp doesn't

      Not suck?

    2. Re:So, then.... by RLW · · Score: 1

      Uh, Lisp may have functional completeness or some such and may even be well suited to certain tasks. Limited suitability that is. I have suffered at the parenthesis of Lisp both from AI development and because some sick bastard thought it would be fun to torture users by making Lisp the scripting language for AutoCAD (e-macs too; a different bastard) wretched stuff.
      Where was I? Oh, nobody cares about Lisp. It is impossible to debug. I have written many small routines in Lisp only to have to scrap them because when it came time to debug the programs I couldn't follow my own logic. It was easier to write a new one from scratch. And I do code maintenance for a living and my team and my boss think I do a really good job of it too. Lisp is a trap door. Open the door and you'll fall in. It takes way too long to write meaningful code in Lisp. The best thing one can do with it is just say 'NO'.

      Friends don't let friends Listhp.

    3. Re:So, then.... by be-fan · · Score: 1

      Well, Haskell and Clean do lazy-evaluation. Cecil also has some very interesting ideas on class hierarchies in an dynamically typed language. And I'm not entirely sure Common Lisp has anything like Dylan's limited collections.

      That said, I agree with you on the general sentiment :)

      --
      A deep unwavering belief is a sure sign you're missing something...
    4. Re:So, then.... by be-fan · · Score: 1

      Lisp code is hard to debug? What's *easier* to debug than Lisp code? An exception throws you up to the top-level, and you can look at what data structures are doing what. You can write code incrementally, testing bits and pieces of it as you go. Hell, you can edit code while you're running it! gdb is completely ancient in comparison.

      --
      A deep unwavering belief is a sure sign you're missing something...
    5. Re:So, then.... by vidarh · · Score: 1

      See, to us mere mortals that might have helped if the data structures/code was actually readable to us. It doesn't help me to have all that information available when it's in a format that would make me want to go postal.

    6. Re:So, then.... by be-fan · · Score: 1

      Oh c'mon. The freshman CS class at our school (required for all majors except management) is taught in Scheme. People seem to have no problem picking up the syntax. Give it a good two-week try, and you'll like it. Its sure as hell a nicer syntax than C++

      If you *really* can't get over the syntax, try Dylan. Its a Lisp-y language with a more traditional syntax. The infix syntax means that macros aren't as powerful, but the rest of the language has most of the power of Common Lisp.

      --
      A deep unwavering belief is a sure sign you're missing something...
    7. Re:So, then.... by Tiny+Elvis · · Score: 1

      So in summary what you are saying is "Dang man I done saw some Lisp one time, and then I wrote in it and I says to myself what are all these parenthesis in there for, and then I went back to fix some code what I wrote and danged if I just couldn't figger out what I wrote, I had to delete it and start again.. thank god I have BASIC so all my lines have numbers and I don't get lost.. oh and my boss told me I was a good programmer too, so don't just think I'm dumb"

    8. Re:So, then.... by voodoo1man · · Score: 1
      "e-macs too; a different bastard"
      You know, I really love it when people flame about Emacs (what's e-macs?) Lisp, because Emacs didn't start out based on Lisp. The original Emacs was based on TECO, which was another text editor with a built-in command language (it looked something like "l z-."g -l @o/CONT/ '" - kind of reminds you of Perl, doesn't it?). But then this brilliant programmer named Bernard Greenberg decided to write an Emacs in Lisp. Now, this was unheard of at the time (the time being late 70s). After all, Lisp was slow, had lots of funny parenthesis, and there really weren't any large interactive programs besides Macsyma written in it. Even funnier was that he was writing it for Multics - there were no other Lisp programs running on it, so it would be the first major Lisp application and interactive screen editor for Multics. After about a year's worth of work, he got it done. And guess what? It was a tremendous success. The users loved it, and pretty soon all the Multics installations were running it. Multics Emacs was convenient, fast, and very handy. So handy, in fact, that secretaries learned to write extensions for it. That's right, secretaries learned to program Lisp. Keep in mind this wasn't the fancy kind of Lisp that you get with GNU Emacs - this was really down and dirty Maclisp - no fancy debugging support or the nice data structures. Now, ask yourself this, if the secretaries could learn to program in Lisp, why can't you? Maybe it's time to switch to a different profession.
      Oh, nobody cares about Lisp.
      You seem to care enough to spend your time arguing about it.
      I have written many small routines in Lisp only to have to scrap them because when it came time to debug the programs I couldn't follow my own logic.
      Looks like you have trouble following your own logic when writing English too.

      PS - did you know that you can script AutoCAD in Visual Basic? It's been available now for several years.

      PPS - Bernard Greenberg wrote a very beautiful paper on Multics Emacs that was published in the Proceedings of the 1980 Lisp Conference. A much larger, mostly technical paper is available on-line, but it doesn't have the same usage stories. RMS recounts the secretaries story in a speech given at ILC 2002. It seems that Multics Emacs had a large impression on the development of GNU Emacs. From this (and another document that he authored) I think that Bernard Greenberg deserves a lot of credit for originating the modern Lisp programming style.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    9. Re:So, then.... by hak1du · · Score: 1

      What does Prothon do that Lisp doesn't?

      The object systems commonly used with Lisp were not prototype based.

      Come to think of it, what does *anything* do that Lisp doesn't, except have larger market penetration?

      If, by "Lisp", you mean versions of Lisp that have actually been standardized, CommonLisp and Scheme, there are plenty of things Lisp doesn't do. For example, static type checking, type inference, well-defined reflection (Lisp never had that, only implementation-specific hacks), well-defined fault isolation (again, Lisp never had that, only implementation-defined behaviors), support for immutable data structures, automatic lazy evaluation, efficient I/O, unsafe constructs, value classes, and plenty more.

      And while Lisp advocates like to claim that the commercial death of Lisp was due to some conspiracy against parentheses, the fact is that, despite some brilliant aspects, CommonLisp and Scheme were and are seriously deficient and impractical languages. Java and C# are not as nice or as flexible as Lisp, but they get a lot of the other things right.

    10. Re:So, then.... by RLW · · Score: 1

      I used it for a couple of college classes. I used lisp regularly to write macros as well in the AutoCAD lab were I worked for 3 years. I was very familiar with lisp you little toad. I've been writing code as a full time job since 1986. In that time I've used lots of computer languages like FORTRAN, COBOL, RPGIII, C, C++, Java, Pascal and several flavors of BASIC. All this while working for a bank, an insurance company, travel reservation company and now a wafer fab parts manufacturer. And yes I am very good at debugging code. My point is the syntax for LISP is not very friendly and there other was to get the same thing done. Lisp provides two major abstractions, One objects are strings with keyed attributes which may be employed to simulate any sort of structured object. Two, these objects are inserted into lists which may be manipulated in very abstract terms. C++ can provide everything LISP provides, all you have to do is write a list.h that defines a basic object class and a collection class to manipulate the objects with. The up side will be the syntax doesn't get in the way!
      How long have you been writing code full time ?

    11. Re:So, then.... by RLW · · Score: 1

      It has been some time since I last wrote anything in LISP. So I have no idea what the modern updates may have brought. However, LISP is obviously not well suited to general programming tasks. Otherwise it would be more widely used. Out side of the AutoCAD, e-mac and the AI lab I have never seen it used anywhere else or even heard tale of it being used for anything else. I'm sure there are some who really like it and use it to solve problems. My problem with LISP is the syntax and the limited ways to get to list members. Last I say the only way to get to the 3rd element was a couple of cdr's and a car. What the hell is that? Maybe one can get to this element in a more elegant way now but I have since moved on.

      What I don't get is that LISP heads don't accept that LISP sucks. Period. It's fine if you guys want to use something so obtuse and outdated and generally unhelpful. But don't tell me or anyone else it doesn't suck. Because then you're just lying.

  39. Re:Just what I need: by SmackCrackandPot · · Score: 3, Funny

    Until all the development of new programming languages stops, I'm sticking to punch cards.

  40. Please post some Prothon code by Anonymous Coward · · Score: 0

    'cause we don't know what you're talking about.

  41. I see - "this/self" is replaced with "." by Anonymous Coward · · Score: 3, Funny

    Absolutely revolutionary!

  42. is the webserver built with prothon? by alexborges · · Score: 1

    I mean... it aint scaling worth skwat.

    --
    NO SIG
  43. Object oriented, now prototypes by A55M0NKEY · · Score: 2, Interesting
    All these buzzwords merely refer to ways of factoring code to make it easy to read/understand so that it can be maintained. It seems that someone creates a programming language to support one of these paradigms(vomits) and then, when they finally get irritated with how the helpful language features seem to restrict them from implementing their idea, they come up with another idea and a language with helpful support for it.

    And every time they come up with a new way to factor code it is pointed out that Scheme already supports that methodology without any language changes.

    Sure it may be possible to create a language that supports *A* paradigm in an easier-to-learn/easier-to-read way than Scheme, but so far there is none that supports every paradigm and every paradigm that is yet to be thought of like Scheme. People need to give up their lame static typing and just use Scheme. Imagine the time saved not having to learn 900 different languages for 900 different styles of programming when you could just learn Scheme.

    --

    Eat at Joe's.

    1. Re:Object oriented, now prototypes by vidarh · · Score: 1

      I categorically REFUSE to use a language that looks like somebody barfed up a dinner sized portion of parenthesises all over the screen, no matter how many paradigms's it supports in an "easier-to-learn/easier-to-read" way... I get a headache just from looking at scheme and lisp code, and I suspect I'm not the only one.

    2. Re:Object oriented, now prototypes by GnuVince · · Score: 2, Funny
      I categorically REFUSE to use a language that looks like somebody bared up a dinner sized portion of curly brackets all over the screen. (C)

      I categorically REFUSE to use a language that looks like somebody bared up a dinner sized portion of type declarations all over the screen. (C)

      I categorically REFUSE to use a language that looks like somebody bared up a dinner sized portion of weird operators. (Perl)

  44. almost... by xlurker · · Score: 1
    prothon and neuthron are both in the corethon, what you're setting neuthron up against is electhron

    still neuthron has it's points

    • sounds new
    • no charge, meaning free!
    • only slightly heavier then prothon
    • contains prothon and electhron => neuthron is backwards compatible
    funny. funny. thank you, thank you. i'll be here all night. tip your wait staff.
    --
    ______________________________________________
    sigamajig...
  45. Industrial strength trial size by Jerf · · Score: 3, Insightful
    From the website:
    Prothon is also an industrial-strength alternative to Python and Self...
    followed by the phrase just four paragraphs later
    As of 3/04 Prothon exists as a pre-alpha interpreter with minimum capabilites, just enough to try out the language.
    I believe the correct phrase would be Prothon is intended to be an industrial-strength alternative to Python.

    (Yes, I know others have said things similar to this, I just think this is more clear; I read all the comments before the site came up and this juxtaposition still struck me.)
  46. Just what the Worlds Needs by Ozor · · Score: 0

    Now well have another port of Tetris.

  47. It gives me a great idea though! by zero+time+ghost · · Score: 1


    FORthon -- it combines the fun and practicality of Python with the idiosyncrasies of FORTRAN 77.

    Integers must begin with I,J,K,L,M,N.

    I'm officially declaring pre-alpha as of this post.

    1. Re:It gives me a great idea though! by hubie · · Score: 2, Interesting
      FORTRAN does not require integers to begin with I-N. That is the variable type the compiler assumes if the variable is not explicitly defined.

      You can easily get around it with "IMPLICIT NONE," though that might be a DEC extension. I worked so long on a VAX that I can't tell you what is a DEC extension anymore without looking it up.

  48. If it's nae Lisp, it's Crrrrrrap by fuzzy12345 · · Score: 4, Insightful
    Sorry kids, I've had my epiphany.

    Is it dynamic (can I define functions at runtime)? Is it compiled? Can I easily write code that manipulates code? Are functions first class objects? Can I extend the language seamlessly?

    Some new languages are interesting, but most are built by people who have used and understood far too few of the current ones.

    --

    Everybody's a libertarian 'till their neighbour's becomes a crack house.
    1. Re:If it's nae Lisp, it's Crrrrrrap by be-fan · · Score: 1

      Well, if its Python, its like Lisp in a snake's skin (pun intended). A shadow of Lisp, to be sure, but similar in many ways.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:If it's nae Lisp, it's Crrrrrrap by Anonymous Coward · · Score: 0

      why use LISP when you can have all of the things you are talking about in Python? Python has a lot more modern libraries, it is cross-platform, and its performance is just getting better and better every day. I used LISP back in the dark ages. Lighten up! Code is meant to be read by humans, and only incidentally for the computer to parse.

    3. Re:If it's nae Lisp, it's Crrrrrrap by be-fan · · Score: 2, Informative

      I used LISP back in the dark ages. Lighten up! Code is meant to be read by humans, and only incidentally for the computer to parse.

      Actually, the quote is:

      "Programs must be written for people to read, and only incidentally for machines to execute."
      - H. Abelson and G. Sussman (in "The Structure and Interpretation of Computer Programs)


      For those not familiar with "The Structure and Interpretation of Computer Programs" it is one of the most famous introductory texts to computer science. All the code examples, of course, are written in Scheme...

      PS: The full text is available here.

      --
      A deep unwavering belief is a sure sign you're missing something...
    4. Re:If it's nae Lisp, it's Crrrrrrap by fuzzy12345 · · Score: 1
      THIS is the book that reintroduced me to Lisp (I had dabbled with a toy implementation as a kid on my 8 bit micro). I kept hearing about SICP on Slashdot. When I found a copy in a used bookstore, I was amazed. Page one assumes no computer knowledge. By chapter 4 you're building an interpreter, and in chapter 5 (the last chapter) you're building a compiler.

      You spend your programming career telling yourself that programming is akin to mathematics. Then you read this book and realize that all these years you've been doing arithmetic, and Lisp does mathematics.

      Now tell me again why this new scripting language is interpreted?

      --

      Everybody's a libertarian 'till their neighbour's becomes a crack house.
    5. Re:If it's nae Lisp, it's Crrrrrrap by be-fan · · Score: 1

      The reason this new language is interpreted is probably because it has semantics similar to Python. Writing a good optimizing compiler for that is hard. You'd need a lot of the techniques introduced by Lisp compilers (type-inference, etc) to get a good implementation. In Python, everything is an object, and thus conceptually everything requires a dynamic dispatch.

      --
      A deep unwavering belief is a sure sign you're missing something...
    6. Re:If it's nae Lisp, it's Crrrrrrap by Anonymous Coward · · Score: 0

      I think the only thing you forgot to add was:

      BURN

      Apologies to "That 70's Show"

    7. Re:If it's nae Lisp, it's Crrrrrrap by Sri+Lumpa · · Score: 1


      "Writing a good optimizing compiler for that [Python's semantics] is hard" ...
      "In Python, everything is an object, and thus conceptually everything requires a dynamic dispatch."

      Maybe the Python compiler writers should try to see how the different Common Lisp implementations implement CLOS (Common Lisp Object System) given that most CL implementations can be compiled and that the semantic of CLOS are way more complicated than those of Python (google for CLOS, kiczales and the art of the MOP == Meta Object Protocol).

      It probably will give them some ideas given that the CL compiler writers are aiming at solving a much harder problem with CLOS.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
    8. Re:If it's nae Lisp, it's Crrrrrrap by be-fan · · Score: 1

      I'm familiar with optimizing compilers for Lisp, but I still maintain its hard to write one :) It doesn't help that the best freely-available CLOS (CMUCL's, based on PCL) isn't exactly fast itself.

      --
      A deep unwavering belief is a sure sign you're missing something...
    9. Re:If it's nae Lisp, it's Crrrrrrap by Anonymous Coward · · Score: 0

      LISP is horrible. Recursion is the tool of the memorysucking devil.

    10. Re:If it's nae Lisp, it's Crrrrrrap by smallpaul · · Score: 1

      Is it dynamic (can I define functions at runtime)? Yes.

      Is it compiled? That's a property of the implementation, not the language

      Can I easily write code that manipulates code? Probably.

      Are functions first class objects? Yes.

      Can I extend the language seamlessly? Yes.

      Your post was totally vacuous. I can't believe it got modded up!

  49. But... will it compile this by Anonymous Coward · · Score: 0

    for (;P("\n"),R-;P("|"))for(e=3DC;e-;P("_"+(*u++/8)%2) )P("|"+(*u/4)%2);

  50. Here's where I stopped reading: by Ars-Fartsica · · Score: 1
    From the description:Any space in an indent will cause an error.

    Goodbye Prothon.

    1. Re:Here's where I stopped reading: by vidarh · · Score: 1

      That is where I got interested, and started laughing... But then I'm a Python hater to start with...

  51. Because SQL works by parvenu74 · · Score: 2, Insightful

    In terms of getting data into and out of a database, how is sql in any way inadequate? The ONLY thing I can think of off the top of my head that I would love to see in SQL that is not currently there is the ability to use regular expressions in a WHERE clause...

    1. Re:Because SQL works by AndyElf · · Score: 3, Informative

      You can use regexp's if you use Postgres.

      --

      --AP
    2. Re:Because SQL works by Anonymous Coward · · Score: 0

      So does Oracle 10G.

    3. Re:Because SQL works by parvenu74 · · Score: 1

      I'll admit I don't know Postgres, but if there is regular expression support there it's something *added on* to the database in the same way that Microsoft and Oracle add gobs of useful stuff to T-Sql and PL/Sql. It would be nice if the SQL standard itself accounted for regexp's since that would be SO handy in the most basic of sql commands: the SELECT.

    4. Re:Because SQL works by Qzukk · · Score: 4, Insightful
      how is sql in any way inadequate?

      Ok, lets say you have an invoice system that maintains "customer"s, "bill"s, and "payment"s in seperate tables. The relationships are as follows: One customer to many bills and many payments. A seperate table "paytobill" (with an amount field) is used to link bills and payments as some customers may make a single payment covering several bills, or several payments to cover a single bill (like a payment plan).

      Now, give me a report showing every customer, and the most recent bill that each customer owes money on (if they have any), and how much they owe. Using strictly these tables (ie no fields that are updated by a trigger) it is incredibly hairy. Your choices are pretty much to execute a query on "paytobill" inside a loop from "customer left outer join bill", or to do something really hairy like this (postgres syntax) (we'll assume that bill.id is ascending:
      select c.name, bq.billdate, bq.cost-coalesce(pq.amount,0) as unpaid from customer c left outer join (select b.customerid, b.billdate, b.cost from bill b where b.id=(select max(bm.id) from bill bm where bm.customerid=b.customerid and b.paid='f') ) bq on bq.customerid=c.id left outer join (select b.customerid,SUM(pb.amount) as amount from paytobill pb join bill b on pb.billid=b.id where b.id=(select max(bm.id) from bill bm where bm.customerid=b.customerid and b.paid='f') group by b.customerid) pq on pq.customerid=c.id
      Not pretty, is it? Now, look at how that could be done with less language and more readability by adding a single keyword and slightly redefining the syntax:
      select c.name, b.billdate, b.owes-coalesce(sum(p.amount),0) as unpaid from (customer c LIMITED left outer join (bill b LIMITED left outer join paytobill p on p.billid=b.id GROUP BY b.id, b.billdate, b.owes) on c.id=b.customerid ORDER BY b.billdate DESC LIMIT 1)
      Here, its clear that we're joining "bill" and "paytobill" and collapsing that table immediately to generate sum(p.amount). Then, we order this collapsed table on date, and left outer join against "customer", BUT we only take one row from the collapsed table for each customer (if it speeds the join, we could even ditch those unused rows now to further shrink the table). Drawbacks include the use of () to clarify what grouping and limit we mean. Even though the LIMITED keyword could mean that the next GROUP BY/LIMIT keyword belongs to the join, what if both were used, without a WHERE clause to indicate where the joins ended and the main query began?

      The query planner would have to be able to identify the request for SUM(p.amount) as being related to the GROUPed limited join. The planner would then create the intermediary table and calculate the aggregate values on that table using the given group by. Then the query planner would order the intermediary table and join it with the customer table, selecting from zero to the limit number of right-hand rows for each left-hand-row The syntax above makes it fairly clear what the query planner should be doing.

      The command in SQL would involve a nested loop [select max(...)...] (two, if the planner wasn't smart enough to recognize that the two copies of it are identical, which most won't be since they are in seperate branches of a left outer join) (it's possible that a brilliant query planner might be able to make the jump and create an intermediary table of <bill.customerid,MAX(bill.id)> for reference in both branches of the query). In addition, unless you have a brilliant query planner, you'll end up working with potentially very large intermediate tables.
      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    5. Re:Because SQL works by Anonymous Coward · · Score: 0
      To see the SQL in action, in postgres create a database and do:
      create sequence cust_seq;
      create table customer ( id numeric primary key default nextval('cust_seq'), name varchar);
      create sequence bill_seq;
      create table bill (id numeric primary key default nextval('bill_seq'), customerid numeric references customer(id), billdate date, owes numeric, paid boolean default 'f');
      create sequence pay_seq;
      create table payment (id numeric primary key default nextval('pay_seq'), customerid numeric references customer(id), paydate date, total numeric);
      create table paytobill (paymentid numeric references payment(id), billid numeric references bill(id), amount numeric);
      insert into customer (name) values ('Joe');
      insert into customer (name) values ('Bob');
      insert into customer (name) values ('Jim');
      insert into bill (customerid, billdate, owes, paid) values (1,'2004-01-01',40.00,'f');
      insert into bill (customerid, billdate, owes, paid) values (1,'2004-02-01',50.00,'f');
      insert into bill (customerid, billdate, owes, paid) values (2,'2004-01-01',10.00,'t');
      insert into bill (customerid, billdate, owes, paid) values (2,'2004-02-01',15.00,'t');
      insert into bill (customerid, billdate, owes, paid) values (3,'2004-01-01',90.00,'t');
      insert into bill (customerid, billdate, owes, paid) values (3,'2004-02-01',50.00,'f');
      insert into payment (customerid, paydate, total) values (1,'2004-02-05',30);
      insert into payment (customerid, paydate, total) values (2,'2004-02-01',25);
      insert into payment (customerid, paydate, total) values (3,'2004-01-01',45);
      insert into payment (customerid, paydate, total) values (3,'2004-01-15',45);
      insert into payment (customerid, paydate, total) values (3,'2004-02-01',25);
      insert into paytobill (paymentid, billid, amount) values (1,1,30);
      insert into paytobill (paymentid, billid, amount) values (2,3,10);
      insert into paytobill (paymentid, billid, amount) values (2,4,15);
      insert into paytobill (paymentid, billid, amount) values (3,5,45);
      insert into paytobill (paymentid, billid, amount) values (4,5,45);
      insert into paytobill (paymentid, billid, amount) values (5,6,25);
      vacuum analyze;
      explain select c.name, bq.billdate, bq.cost-coalesce(pq.amount,0) from customer c left outer join (select b.customerid, b.billdate, b.cost from bill b where b.id=(select max(bm.id) from bill bm where bm.customerid=b.customerid and b.paid='f') ) bq on bq.customerid=c.id left outer join (select b.customerid,SUM(pb.amount) as amount from paytobill pb join bill b on pb.billid=b.id where b.id=(select max(bm.id) from bill bm where bm.customerid=b.customerid and b.paid='f') group by b.customerid) pq on pq.customerid=c.id;
    6. Re:Because SQL works by leandrod · · Score: 1, Informative
      > how is sql in any way inadequate

      Not as powerful and simple as a relational language would be.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    7. Re:Because SQL works by headhigh · · Score: 3, Insightful

      Bad DB design != bad query language If you want a piece of information from your DB, you should store it in your DB (BOOL isBillPayed) instead of trying to put BUSINESS LOGIC in your SQL.

    8. Re:Because SQL works by lucianx · · Score: 2, Informative

      It's added as a set of functions and operators, rather than existing in a separate language like pl/SQL. Consequently, you can use it just fine in the SELECT within PostgreSQL. E.g., to match all users with first_name being some variant of "John", you could do:

      SELECT name FROM users WHERE first_name ~ '^Joh?(n|nathan)$';

      The regexes have been even more supercharged as of 7.4 I believe. See here for more on it: PostgreSQL Pattern Matching

      --
      John C. Worsley - Artist, Musician, Coder
      Portfolio
    9. Re:Because SQL works by hey! · · Score: 4, Insightful

      Well, for one thing your indenting sucks which makes any piece of software hard to read.

      For another thing, your design is unsound from an accounting standpoint. A sound design requires that payments are explicitly applied to bills in our record keeping system whether it is electronic or paper. It's the old debits and credits thing. Your accounting records should not use some kind of magical algorithm to figure out which payment record goes which which bill and then use a separate maguic table to override that logic. Every change in an acount/bill/payment status should be explicitly spelled out in records in a transaction table. These records are either filled out at the explicit directions of a human or by created by an algorithm -- it doesn't matter. The change in the bill's balance needs to be be explicitly recorded.

      Given this design, the payment table in your query is totally superfluous. Everything we need to know is in the paytobill table. What you are asking for is not that hard (for an expert):

      select customer.custId,
      bill.billId,
      billAmt - coalesce(sum(payToBill.applyAmt),0)
      from customer left outer join
      bill on bill.custId = customer.custid left outer join
      paytobill on paytobill.billId = bill.billId
      where
      bill.billdate =
      (select max billdate from bill
      where bill.custId = customer.custId)
      group by customer.custId, bill.billId

      Which is much less nasty than your SQL. Granted, SQL programmers don't always have the ability to work with sound schema designs; on the other hand, it's always possible to create designs that are hard to use.

      I'm not saying SQL couldn't be improved. It also needs the ability to compare anonymous tuples with tuples returned by a subquery -- only allowing scalars with the "=" operator is a huge limitation to the working SQL programmer.

      Also, the standard needs to be a lot more stringent, and there should be tough conformance tests. The Microsoft SQL Server, for example is a disgrace -- it doesn't allow alias references in expressions for one thing, and has truly horrible bugs in prepared query variable binding.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    10. Re:Because SQL works by Qzukk · · Score: 1
      from customer left outer join
      bill on bill.custId = customer.custid left outer join
      paytobill on paytobill.billId = bill.billId
      A double left outer join doesn't work in every case though. My example wasn't good enough to show this particular case, but what if you need to left outer join three tables A, B, and C, where the only index is A.id. Depending on the nature of the tables, you can end up making it impossible to use aggregate functions on this query correctly. If you join A-B first, and B has two rows for every A, your intermediate table contains two copies of every A. Joining (A-B) to C then ends up doubling the number of C rows used, since they are joined to the doubled A row. Sure, you could use two seperate queries (A-B and A-C) but since I first came across this particular problem on a host that charged per-transaction, I was rather miffed that I was instantly doubling my charges.

      (sorry about the not-indented code)
      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    11. Re:Because SQL works by sander · · Score: 1

      So stop your silly bitching on slashdot and go make one?

    12. Re:Because SQL works by leandrod · · Score: 1
      > stop your silly bitching on slashdot and go make one?

      I am not a hacker. Unfortunately, hackers don't understand data. Because users don't bitch enough, hackers don't know what's needed.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    13. Re:Because SQL works by sander · · Score: 1

      If you are not able to sufficently handle programming - be it SQL programming or it mixed with some scripting or just embedded SQL then I really don't see where your claim to understanding data comes from?

      If you can handle SQL - from whatever higher level lang - then you can do a proof of concept of such a language and get people interested. If you cannot actually handle databases at that level, then frankly your claims of understanding data or having any plausible notion as to whetever hackers understood it or not is frankly entirely ridiculous. Becuase there is no way at all for you to understand any but teh most superficial issues that go into database and database system design.

    14. Re:Because SQL works by leandrod · · Score: 1
      > If you are not able to sufficently handle programming - be it SQL programming

      Never said that. Said I'm not a hacker, or in other words, I am not a systems programmer.

      > If you can handle SQL - from whatever higher level lang - then you can do a proof of concept of such a language and get people interested

      There are already at least 6 such languages, not only conceptual but operational: Codd's own Alpha, the original Ingres QUEL, Alphora Dataphor D4, Date and Darwen's Tutorial D, Opus and Duro. So it would useless for me to create yet another.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
  52. YAFL by nurb432 · · Score: 1

    Why do we need yet another language.. If you are going to base the new one off an old one, just extend the old one instead.

    Choice is good, until you cant make a choice due to the over abundance of options..

    --
    ---- Booth was a patriot ----
  53. Another language? by UnknowingFool · · Score: 1

    WTF? It was difficult enough keeping all the voices in my head straight. Now they can speak AND program in yet another language. Argh!

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  54. Instead of forking Python... by Anonymous Coward · · Score: 0

    Why didn't they just contribute to the project? This seems like a waste of time and if they think Python could benefit from it, they should have just worked on Python, IMO.

  55. Syntax by ChicagoDave · · Score: 3, Flamebait

    Any language that uses whitespace or backslashes for line continuation is madness. This 2004 people. Write a damn compiler that can do the thinking, don't make me screw around with formatting to get my program working. Moronic. Stupid.

    --
    http://chicagodave.wordpress.com
    1. Re:Syntax by maxwell+demon · · Score: 1, Funny
      Write a damn compiler that can do the thinking

      While thinking compilers would be nice, I'd really like my compiler to include the famous DWIM technology.

      Note that this would simplify programming a lot. For example, to write a new word processor, you'd just compile the following file:
      A word processor that's better than anything which already exists.
      The nice thing is, you'd get an automatic improvement of the program on every compile!
      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:Syntax by Anonymous Coward · · Score: 0
      If people like you would format your code sensibly, there wouldn't be a problem. Stop being selfish, you need to think about the poor maintenance programmer who comes in to fix your bug and discovers that the formatting gets in the way. Then he runs pretty on your code to make it legible, fixes the bug, and checks it in. The diff is huge because you used 3 spaces for indents, didn't bother to indent half your loops, and so on. Hopefully you can see where this is going. If not, I suggest you switch to management.

      Consistent formatting is a GOOD thing. Enforcing it is even better.

      (that said, the backslash/line continuation stuff is a bit archaic)

    3. Re:Syntax by KrispyKringle · · Score: 1
      I doubt the issue here was the difficulty of parsing line continuations. There are plenty of parser generators that make this a piece of case (i.e. lex and jlex). The point is that if whitespace is significant, which it is in this case, it becomes fairly difficult to make code readable when you have line continuations that may or may not contain apparently-significant whitespace. In other words, to make this easy, you'd have to make the syntax harder.

      Anyway, if this is an issue for you, you're using the wrong editor.

    4. Re:Syntax by tim_mathews · · Score: 2, Funny
      A word processor that's better than anything which already exists.

      The nice thing is, you'd get an automatic improvement of the program on every compile!

      It wouldn't compile, you can't do better than vi.

      *ducks*

    5. Re:Syntax by Anonymous Coward · · Score: 0

      Stupidest... comment... ever...

      The "blocking by indention" is a moronic development.

      Just try cut and pasting some code for a "quick test". You'll be reformatting for ages when all you wanted to do was test something out then delete the code.

    6. Re:Syntax by smallpaul · · Score: 3, Insightful

      Any language that uses whitespace or backslashes for line continuation is madness. This 2004 people. Write a damn compiler that can do the thinking, don't make me screw around with formatting to get my program working. Moronic. Stupid.

      This is as logical as saying: "Any language that uses curly braces for block delimiters or semicolons for statement delimiters is madness. This is 2004 people. Write a damn compiler that can do the thinking. Don't make me screw around with punctuation to get my program working.

      The whitespace and backslashes are not in addition to something else that unambiguously describes the structure. They are instead of the stuff that other languages use (curly braces and semicolons).

    7. Re:Syntax by cgreuter · · Score: 1

      The whitespace and backslashes are not in addition to something else that unambiguously describes the structure. They are instead of the stuff that other languages use (curly braces and semicolons).

      Fair enough. We shouldn't automatically dismiss Python's significant whitespace. Instead, we should discuss it on its own merits.

      So here are two things that suck about Python's significant whitespace:

      1. Many text-manipulation tools don't respect whitespace well enough. They replace tabs with spaces or vice versa or they alter the indentation. A co-worker of mine once told me about how he had to spend several hours fixing a Python program that had gotten loaded into Notepad and saved again. Had it been C, he'd have only needed to run it through 'indent'. Yeah, I know, Notepad sucks, but still! This is just an accident waiting to happen.
      2. Text editors can't auto-indent Python code correctly. When I edit C code, emacs simply counts the number of "{" and "}" characters and indents correctly whenever I hit the tab key. It can't do that with Python code because there's no unambiguous way for it to figure out what is correct at this line. The best it can do is guess based on the previous line, which means I periodically have to correct for it. Which is a pain.

      That being said, the intent of this feature--making it so that all programs have a consistent format--is a good one. I just don't think that the benefits outweigh the drawbacks.

      I also don't think that it's enough of a problem to justify not using Python when it's the right tool for the job.

      (Hmmm. What if a language forbade sequences of whitespace? Then, you would do the indenting and unindenting in the editor and every program would have Your Favourite Indentation Style.)

    8. Re:Syntax by nosferatu-man · · Score: 1

      Ok, I just cut and pasted some Haskell. No problems. How about Python? No problems. Funny, that.

      But then, I use Emacs on a Macintosh, not vi on X11, so what do I know.

      'jfb

      --
      To spur "enterprise Linux," Big Bang, the distributed two-phase commit.
    9. Re:Syntax by endersdouble · · Score: 1

      No, I disagree. IMHO, braces are considerably better than indents as block delimiters. Why? 2 reasons. 1. Ease of use. How often have you had problems getting tabs/indents/spaces to EXACTLY line up correctly? It can be...annoying. Whitespace can be unpredictable, in my experience. If I slap a bracket before and after a piece of code, not much can mess that up. 2. Readability. Whitespace control is one of the best ways to keep your code readable. Once again, just slap braces in the right place, and format to your heart's content, and you'll be fine. If you have to use whitespace as blocks.... well...you can't.

    10. Re:Syntax by sonpal · · Score: 1
      Well, we have to screw around with curly braces anyway. If you're going to be burdened with the convention of indenting, you might as well drop the curly braces and use the indentation itself to mark a block. Besides, if you're using using a half-way decent editor, indenting and unindenting blocks has got to be waaay easier then looking for the curly braces.

      To paraphrase Larry Wall, a good language makes easy things easy, and difficult things not impossible. If the language by it's very nature doesn't need you wrap lines around in general, then supporting backslashes is a reasonable decision. Besides, if you use a backslash, it's a good hint that you're making the code harder to follow, and perhaps you should consider rewriting the code. After all, even the Linux CodingStyle document says that if you're wrapping off the right side of the screen, you need to refactor your code.

    11. Re:Syntax by William+Tanksley · · Score: 1

      Both of your complaints are about your editor/text manipulator, not about Python. The first one is actually reasonable, since you DO have to go to a bit more effort to make your tools respect the whitespace; but the second reason I find odd, because you state it as a general rule, but I haven't used an editor in a LONG time that doesn't handle Python indentation correctly.

      Even editors that don't recognise Python syntax can indent correctly most of the time, so long as you have indentation continuation (i.e. whenever you start a new line you get the same indentation as the line you'd just been on). The two exceptions are when you're starting a block (in which case detecting the : at the end of the line gives an unambiguous sign) or ending a block (in which case you have to backspace once, hardly a special challenge).

      -Billy

    12. Re:Syntax by Anonymous Coward · · Score: 0

      derrrr, ah, ya, uh, derrrr

      yeah, it worked for your one test case... yee-haw

      remind me to hire you!

      dumbass

    13. Re:Syntax by smallpaul · · Score: 1

      Is this Chris from UWaterloo?

    14. Re:Syntax by smallpaul · · Score: 1

      I know for a fact that Notepad is Python-friendly. I don't dispute that somewhere out there there is an editor that munges Python code but I would be surprised if it actually bills itself as a programmer's editor. Any programmer's editor should be smart enough to know that there is a difference between tabs and spaces (unless it has been misconfigured to translate one into the other).

      The only tools I use that I have a problem with are office productivity tools: Outlook and PowerPoint in particular. But obviously the problem there isn't that my Python file is getting corrupted as much as the person reading can't see the code correctly.

    15. Re:Syntax by cgreuter · · Score: 1

      Both of your complaints are about your editor/text manipulator, not about Python.

      I have to disagree with you here. With most programming languages, indentation is documentation, the sort that can be automatically generated from the rest of the source code. In Python, it's part of the syntax. That's a pretty significant language design decision.

      The two exceptions are when you're starting a block (in which case detecting the : at the end of the line gives an unambiguous sign) or ending a block (in which case you have to backspace once, hardly a special challenge).

      XEmacs has no trouble detecting the start of a block (as far as I can see). The only ambiguity is at the end of a block, which is the thing I was complaining about. When I do C programming in XEmacs, hitting TAB will immediately correctly indent the current line. If it doesn't, it's because I've screwed up somewhere.

      XEmacs Python mode is almost as good, but I still have to manually change the indentation at the end of a block. This is a pain. It's not, as you point out, a huge pain, but it bugs me a bit. It also means I need to do more than hit TAB a bunch of times when I'm reorganizing my code to, say, move a block of text into a loop.

      But really, I'm just nit-picking here. If I wanted to complain about Python, there are other things I could whinge about.

    16. Re:Syntax by cgreuter · · Score: 1

      I know for a fact that Notepad is Python-friendly.

      Hi Paul.

      It's quite likely that I heard it wrong, or my co-worker heard it wrong or that this is a problem with some ancient, moldy version of Notepad that got fixed last century, so I bow to your expertise. Still, I think my point is valid. Lots of tools don't respect whitespace, and that's a serious problem if Python code gets run through one of them.

    17. Re:Syntax by smallpaul · · Score: 1

      Name a programmer's tool that doesn't respect whitespace.

      In my experience the only kinds of tools that cause problems are office tools like PowerPoint and Outlook. If you care strongly about running code through those, then you're right, you may have problems.

    18. Re:Syntax by smallpaul · · Score: 1

      XEmacs has no trouble detecting the start of a block (as far as I can see). The only ambiguity is at the end of a block, which is the thing I was complaining about. When I do C programming in XEmacs, hitting TAB will immediately correctly indent the current line. If it doesn't, it's because I've screwed up somewhere.

      There is something weird about this discussion. How does XEmacs know when the block is done? Does it read your mind? I would guess that unless you've written and AI in ELisp that it knows because you typed a curly brace. So you hit a key and get the right indent. In Python mode, you hit a different key and you get the right indent.

      I will buy the argument that when you cut and paste Python code into another scope you need to be a little more careful to get the indentation right.

    19. Re:Syntax by cgreuter · · Score: 1

      How does XEmacs know when the block is done?

      When I type the "}" character. Ah, but that's exactly as many keystrokes as I need to type to end a Python block, so I see your point. Of course, I could configure XEmacs to insert a closing bracket on its own line whenever I type "{", at which point you'd bring up that I'd still have to move the cursor past the closing brace. To that, I'd argue that sure, that's true but curser movement is easier.

      But then, things would start to get silly.

  56. There is also Slate. by marcello_dl · · Score: 3, Interesting


    From Slate website:
    Slate is a prototype-based object-oriented programming language based on Self, CLOS, and Smalltalk. Slate syntax is intended to be as familiar as possible to a Smalltalker...

    It also features optional type declaration. The compiler is currently based on Common Lisp.

    --
    ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
  57. doesn't compile... by multi+io · · Score: 1
    In file included from interp.h:61,
    from memory_mgr.c:57:
    parser.h:91: field `code_data' has incomplete type
    In file included from memory_mgr.c:57:
    interp.h:89: field `stack' has incomplete type
    make[1]: *** [memory_mgr.o] Error 1
    The offending line looks like this:

    code_t code_data[];

    Is that ANSI C? I would've written it like "code_t *code_data"...

    gcc 3.3.

    1. Re:doesn't compile... by Viol8 · · Score: 2, Insightful

      Yeah , thats legal. The problem is with the code_t definition , not the [].

    2. Re:doesn't compile... by drxenos · · Score: 1

      No, it's not. You can't have an array without a size value, unless it have an initializer list.

      --


      Anonymous Cowards suck.
    3. Re:doesn't compile... by multi+io · · Score: 1
      You can't have an array without a size value, unless it have an initializer list.

      Thought so...

      OK, I've corrected the two lines, and compiled succesfully, but then...

      $ prothon
      Prothon 0.0 Interactive Console, Build 115, Mar 26 2004 (Ctrl-D to exit)
      >>> 42
      Segmentation fault
      $

      :-)

  58. Re:I have also invented a new language by maxwell+demon · · Score: 1

    Well, that has no chance against my new language:
    Neuthrino!

    --
    The Tao of math: The numbers you can count are not the real numbers.
  59. Primetime? by Chromodromic · · Score: 1

    Maybe never. Been hard at work on any Self projects lately? Been using any Self-written software?

    Self is a concept language, as far as I can determine, and the prototype concept has made its way into Prothon.

    This prototyping feature must be the chief differentiator between Prothon and "Amateurthon", a language based on Python, but designed mainly just for fun, not for serious usage ...

    --
    Chr0m0Dr0m!C
    1. Re:Primetime? by Jecel+Assumpcao+Jr · · Score: 1

      Been hard at work on any Self projects lately?

      Yes, thank you for asking.

      Been using any Self-written software?

      Mostly things I have written myself.

      Self is a concept language, as far as I can determine, and the prototype concept has made its way into Prothon.

      And NewtonScript, Kevo, JavaScript, Lua, Io and many others.

      Please note that while Sun froze the development of Self in 1995 to focus on Java, it was restarted in 2000 and now runs on Macs and Linux PC as well as Sun machines.

    2. Re:Primetime? by Chromodromic · · Score: 1
      Been hard at work on any Self projects lately?

      Yes, thank you for asking.

      Oh. You're the guy.

      --
      Chr0m0Dr0m!C
  60. B and D by jefu · · Score: 1
    While I agree that this is a, well, close-to-bonkers design decision, the comment that it is "classic bondage-and-discipline" is amusing. Python is about as far from a b-and-d language as any I've encountered. Perhaps it is time to dust off that Pascal manual and remember what b-and-d is really all about.

    Lacking that, I'm sure that there are enough slashdot readers with ropes and whips and chains around...

  61. Is their skin yellow? by The+Ape+With+No+Name · · Score: 2, Funny

    Personally, I am a nice apricot color, but in the summer I am a more walnut with rose overtones.

    --
    Comparing it to Windows will be a moot point, since El Dorado is going to have a 40% larger code base than XP.
  62. Okay, count me confused by Anonymous Coward · · Score: 2, Interesting

    ...because Python ALREADY has a proto-style object model in its underlying semantics. What's new that Prothon is adding.

    A proto model doesn't distinguish between classes and instances. Everything is an object. Inheritance is done by an object pointing to another object as its "prototype". Basically that means "if you can't find what you're looking for here, go look there". Proto model advantages: much cleaner than class models, much more dynamic, and MUCH more space compact. The most famous two proto languages are Javascript and NewtonScript. NewtonScript in particular is an elegant language that compiles to *very* small memory footprints. The disadvantage: since you have to wander up the proto chain to find what you're looking for, proto languages are slow. The other disadvantage: no strong typing.

    Python's bizarre. The underlying model is a proto model. But on top of it, Python hacked a class-based model with pseudo-"instances" (not really, just leaves in the proto tree). As a result, Python doesn't have the clean model design of a proto model, and it doesn't have the speed or typing of a class model. Python's model is quite literally the worst of both worlds.

    I dunno who designed Python's model (okay, I know who :) but it sure wasn't a language theorist, that's for sure! Yuck.

  63. I dunno, by His+name+cannot+be+s · · Score: 1

    From the code that I've seen, I'd rather drink turpentine and piss on a brush fire.

    Yeesh.

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  64. Here is a tip for the creators of this language. by dwalsh · · Score: 3, Insightful
    Prothon Description

    This document assumes a working knowledge of Python.


    Those of us who are unfamiliar with these {dynamic | scripting | kiddie | hack| toy} languages but curious about the classless way of working are not really helped by this document.

    If you go to Suns Java site, they don't say "If you are not familiar with C++/Smalltalk, you might as well fuck off."
    Similarly Microsofts site for C# doesn't say "Go learn Java, and then find out about GOTO, and you might have a prayer of understanding this."

    A good intro with no dependencies will help build momentum for your project.
    --
    ${YEAR+1} is going to be the year of Linux on the desktop!
  65. Cool. But where do I start? by shrike99 · · Score: 0

    Off topic a bit, I know - But where can I learn to program? Which language is good to begin with? (a year of BASIC in High school, early '80's is all I have ever done!!!)

    --
    "Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life." Terry Pratchet
    1. Re:Cool. But where do I start? by Quill_28 · · Score: 1

      Why do you want to learn programming?

      Job, hobby, for fun, general knowledge, etc...

  66. Re:Just what I need: by maxwell+demon · · Score: 0, Redundant

    Well, I guess you'll do that till the end of your life.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  67. Regexps in WHERE clause == full table scan by Anonymous Coward · · Score: 0

    But it would be handy, nonetheless.

    1. Re:Regexps in WHERE clause == full table scan by parvenu74 · · Score: 1

      Would require a full table scan, yes, but you are doing all of that work already -- and most likely on the same server in many cases -- by selecting the whole table (or most of the table based on other constraints) into a result set and looping through those results and regex'ing out what you *really* want to find. In the interest of minimizing coding, it would be better to put the REGEX engine into the sql engine.

  68. Who cares? by Space_Soldier · · Score: 0

    Take a look at the Goople Directory of programming languages, or at Wikipedia's list. There are so many of them. There are also more languages that are missing from those lists. The truth is that C/C++/C#/Java/VB/Perl/PHP are the most used. The biggest number has C++. It has been like this for years. People like the freedom of the C based languages. You can write the ugliest code in them, like most people do, and the most beautiful code, if you take the time to format it. The only thing useful from a new language is something that you can bring to a newer version of a used programming language. Without a backing of a huge corporation or a huge number of people, no new language would be used. If Anders Hejlsberg would have create C# as his pet project, it wouldn't have gone anyware. Since MS is advertising the language, it has success. It is the same for the rest of them.

    1. Re:Who cares? by Tune · · Score: 2

      >The truth is that C/C++/C#/Java/VB/Perl/PHP are the most used.[...]>It has been like this for years.

      Is that in itselve a good reason not to care about new stuff at the horizon? 'Guess not, but Without a backing of a huge corporation or a huge number of people, no new language would be used. OK. So which companies initially backed Perl, C++, PHP? None. And there were never a huge number of people waiting to volunteer on building a huge code base for these things (and not for others).

      They became popular due to huge numbers of individuals that got over their childish "Who cares?" and judged after taking a good look. You should too. Then tell us about why this thing suck or is just not more of an improvement over existing stuff as is C# over Java.

      Then again, better, smaller, faster, is no match for cheaper, more accessible, and well-marketed

  69. The good and the bad by XNormal · · Score: 4, Insightful

    The good parts are the implementation: multiple interpreters (no globals), stackless, gc running in separate thread and generally a clean implementation from scratch.

    The bad part is from a language design point of view it's a hodge-podge of small yet significant changes from Python, almost none of them, IMHO, an improvement over Python. Those that may be considered a slight improvement are hardly worth breaking compatibility for.

    Significant case? Another type of comment? for i in 7 ? a differnt keyword to define generators? Return self by default? removal of class statements for javascript-like object orientation? WTF?

    The Python implementation could definitely use an overhaul. The language itself has a few minor warts but strikes a fantastically well-balanced sweet spot that will be difficult to beat. I just can't see the real justification for these changes other than "because I can".

    --
    Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
    1. Re:The good and the bad by Anonymous Coward · · Score: 0

      The Python implementation could definitely use an overhaul.

      What areas do you think need an overhaul? The C implementation?

  70. Marketing Soup by RLW · · Score: 1

    Just add synergy and paradigm bake at 350 F for 45 minutes. Let stand at room temp for 15 minutes and then serve.
    For a little extra kick I like to add just a pinch of rapid
    Feeds 6-8. Enjoy, See you next protyped language.

  71. SQL is like COBOL????! WTF?? by Viol8 · · Score: 3, Troll

    Errr , have you ever use EITHER language?? SQL is a declarative set driven language and works in a COMPLETELY
    different way to COBOL which is procedural. I think you need to go back and re-take compsci 101!

  72. learn java dumbasses by Anonymous Coward · · Score: 0

    jeezus. i thought you turds were intelligent!

  73. Re:Just what I need: by jon3k · · Score: 1

    At least visual basic supported this mythical "with" statement that apparently python programmers still only dream about :)

    *ducks*

    yes, yes -6, troll, I know, I know. It was worth it! =P

  74. CASE INSENSITIVITY by Anonymous Coward · · Score: 0
    I'm sure I'll get flooded with replies saying "but I do think of C and c as different!"...
    MY TTY CAN'T EVEN DO LOWER-CASE LETTERS, YOU CASE-INSENSITIVE CLOD!

    (now I have to ruin the joke to get past the lame-ass filter)

    --
    SVM, ERGO MONSTRO

  75. Great, *another* programming language... by Abcd1234 · · Score: 1

    Funny, I noticed this show up on Freshmeat just yesterday, and I said to one of my co-workers: "You know, programming languages are slowly becoming a lot like IRC and FTP servers.... everyone has to write their own". Just on Freshmeat we have:

    X, Nasal, Io, Emu, gbeta, Nickel, Iguana, Squirrel, XOTcl, Onyx, ICI, FPL, arfg, OpenJava, Felix, Small, Unicorn, Hush, ...

    Well, you get the picture. Of course, the obvious question now is, why on *earth* is this a story on the front page of Slashdot?

  76. PINPOS by Almond+Tree · · Score: 0

    Prothon is not Python or Self! Ah UNIX ... it not only works, it's humorous.

    --

    bau bau chicka chicka mau mau

  77. Nice language, more of the same by master_p · · Score: 1

    It has nice improvements over python, it is generally a nice language, but what else is new ? nothing. It is just another imperative programming language, in which state and logic errors are left to the programmer.

    I am waiting for someone to come up with a completely new concept, like functional programming.

  78. Javascript with Make's tab rules? by Anonymous Coward · · Score: 1, Insightful

    This is a joke right? Prothon like a bad marriage of Javascript's broken object model with make's broken 'you can only use tabs' rule. Python has it right - whitespace should be whitespace, and explicitly defined objects are good. Prothon is a needless step backwards, and a pretty foolish one.

  79. Re:YAL (INNTL)... by DrSkwid · · Score: 2, Insightful

    ...Yet Another Language I Need Not To Learn...

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  80. MOD PARENT TROLL AND FLAMEBAIT by Anonymous Coward · · Score: 0

    mod parent troll and flamebait

  81. Re:SQL is like COBOL????! WTF?? by Short+Circuit · · Score: 1

    Well, CO101 where I work teaches you how to use the advanced features of Microsoft Office.

    CO105 teaches you how to use the basic features of Windows.

    Then CO110 teaches you how to turn a computer on.

    The curriculum here is so screwed up.

  82. Meaningful whitespace==evil by dingbatdr · · Score: 1

    Arg! Another language in which whitespace is meaningful (this language uses it for scoping, as python does). It's evil in python, it's *really* evil in make, and it's evil here. Maybe my mind has been too warped by C++. I *like* classes. I *like* semicolons and curly braces.

    --
    The truth is an offense, but not a sin.------R. N. Marley
    1. Re:Meaningful whitespace==evil by DrVomact · · Score: 1
      I couldn't agree more. I actually kind of enjoyed the rigid discipline imposed on me by Python when I wrote my first program in that language. I figured it kind of made up for my not attending Catholic school when I was a kid. However, my first Python program suddenly became my last Python program when my text editor inadvertently ate all the indents. Now, if this had been Perl, I could have figured out what was what by looking for the curly braces...but since it was Python, all I had was one long file of flush-left statements. To top it off, this mishap occurred just after a flurry of rewriting, so it was a tossup whether I went back to the last backup or tried to reconstruct what I had. Oh, the suffering.

      Another reason for the evilness of meaningful white space is that it flies in the face of well-established text processing conventions. With the exception of word spaces, white space is almost always disregarded in XML and HTML--it's simply removed when the document is parsed. I think we should write programs that can be treated and processed as documents--the program is a type of data. That doesn't mean programs have to be written in XML, but it does mean that their structure should be discernable by delimiters other than spaces or whatever your system uses as tabs.

      --
      Great men are almost always bad men--Lord Acton's Corollary
  83. CLS by bonch · · Score: 1

    The .NET CLS provides a common specification for any language compiler to compile to the intermediate code for .NET. So you could very well have a Prothon .NET, as well as any other $language_you_like.NET.

    1. Re:CLS by DukeyToo · · Score: 1
      The .NET CLS provides a common specification for any language compiler to compile to the intermediate code for .NET. So you could very well have a Prothon .NET, as well as any other $language_you_like.NET.

      Perhaps in theory, but in practice the .NET CLS takes a particular view of the world, and if your language does not have the same world-view, then you will struggle to create $language_you_like.NET.

      Take the people at ActiveState, for example. I recall that they made a good attempt at porting Python to .NET, but in the end gave it up as a bad idea, citing performance due to the conflicting natures of Python and .NET.
      --
      Most writers regard truth as their most valuable possession, and therefore are most economical in its use - Mark Twain
  84. Theoretical Underpinings by Anonymous Coward · · Score: 2, Insightful

    You don't seem to understand exactely what SQL is and your comparison to COBOL is not apt.

    First of all, SQL is a declaritive language not at all similar to an imperitive language such as COBOL. SQL is based on a formal query language called Relational Calculus, itself is a subset of predicate logic. The point here is that SQL is based on definded mathematical properties that are then underpinings of relational databases.

    SQL is also not just a language for issuing queries, it is also used to define database schema. In this vein its theorectical underpinings allow for the application of normalization theory (or decomposition theory if you prefer) to allow schema to be analysed for redundancies (which can have huge performance impacts).

    Check out a book on Database and Transaction theory if you want a better grasp of what goes on under the hood of RDBMSs.

    As for NewSQL, I have never seen something so braindamaged (OK, I have. But it's been atleast a week). It basically throws away a significant portion of the power and elegance of SQL to create a query language that looks at best to be a hacked up version of the JDBC API. But even then they are still 'brainstorming' syntax; the project is nothing better than a half-formed thought. Not to mention the serious flaws in the arguments they put forward in their reasons for 'creating' a new database query language which are not even worth wasting the time to refute.

  85. Tabs by Tablizer · · Score: 3, Insightful

    One thing that annoys me about Python-like languages that this new language seems to keep is the reliance on space-count indentation. If you switch editors or share a lot of code, then spaces mixed with tabs can cause a lot of confusion because there is no standard interpretation for how many spaces a tab is.

    I agree that it makes the code smaller, but at the risk of code sharing problems.

    1. Re:Tabs by zenzen667 · · Score: 1

      There is a standard - 8 spaces. It is what everything defaults to, with good reason.

      That said, why use tabs at all? It is just as easy to tell your editor to insert spaces instead of tabs, as it is to set your tabstop to something non standard (and annoy everyone else trying to read your code who doesn't agree with your preferred shift width).

      I am very surprised someone liked Python enough to base a language on it, but insists on using tabs for the whitespace. That seems the worst of both worlds.

  86. Since this is pre-alpha... by Anonymous Coward · · Score: 0

    ...would you call it Pre-Protoprothon?

  87. Re:Here is a tip for the creators of this language by Tarwn · · Score: 2, Insightful

    Just in case no one else noticed this, figured I would point it out. The parent points out that thy are unfamiliar with the two languages and also evaluates them as {their list here} languages.

    2 points for ignorance!

    --
    Whee signature.
  88. Smalltalk by fbonnet · · Score: 2, Informative

    Smalltalk uses and enforces this convention, and Smalltalk is an industrial strength language. This convention is really effective, makes sense, is consistent and intuitive. You should improve your culture before bashing gratuitously.

    BTW right now we're all using a software that embeds a prototype-based object oriented language: JavaScript. If you want to grab the concept I suggest you give it a try (note that I'm talking about the language, which is fine, not about the library or the implementations, which mostly suck). That makes JavaScript, a prototype-based language, the most widely deployed scripting language in the world.

    Everybody nowadays seem to think that classes are mandatory in a OO language. Nothing can be farther from the truth.

  89. Re:Pre Alpha Release? OT by bowronch · · Score: 1

    Lane, would you mind if I took out Beth?

    Your sig line cracked me up when I remembered where I knew it from...

    sorry, I just to say that...

    --
    My Stuff: pspChess and foobar2000 plugins
  90. Re:Uh by Anonymous Coward · · Score: 0
    ... that doesn't mean the unpopular ones don't have academic value.

    It doesn't mean the popular ones aren't crap, either!
  91. I like the way they... by Anonymous Coward · · Score: 0
    give you a great reason to choose python over prothon right off the bat.

    "Only tabs are allowed in indents" prothon differences

    Fair enough, thanks, bye.

  92. A plea to all up-and-coming language designers by alispguru · · Score: 4, Informative
    Before you go off and try to code up the Next Big Thing, please do all of us a favor and learn a little bit about Lisp.

    Don't learn about it from your officemate, or your college instructor, especially if they say they haven't used it in over ten years. You wouldn't believe the opinions of someone who learned C from K&R without upgrading their knowledge, would you?

    Instead, start from places like the ALU web site or Cliki or Paul Graham's Lisp FAQ.

    If you do this right, you will learn that computer languages:

    are not inherently fast or slow - implementations are fast or slow, not languages

    can be both dynamic and have good performance

    can be cross-platform without swallowing POSIX whole

    can have multiple inheritance without damaging your brain

    can be object-oriented without being object-obsessed

    If you like, you can quit as soon as you understand how static scoping and closures work - at least that way you will avoid the primary mistake in pretty much every recent scripting language.

    There is a small risk you will become a SmugLispWeenie by doing this, so be forwarned.

    --

    To a Lisp hacker, XML is S-expressions in drag.
    1. Re:A plea to all up-and-coming language designers by Rick+and+Roll · · Score: 1

      Or better yet, learn Ocaml. Up with the best of lisp compilers in terms of speed. Has all the stuff to teach about functional programming, but still allows for iterative programming. Makes clear distinction between mutable data and immutable data.

    2. Re:A plea to all up-and-coming language designers by tepples · · Score: 1

      computer languages: are not inherently fast or slow - implementations are fast or slow, not languages

      However, computer languages have inherent properties that make it easy or hard for human beings to construct an implementation that emits fast code. Does Common Lisp lend itself easily to kernel, systems, or real-time programming on mass-market computer architectures? I know that the developers of a popular PS2 game have disclosed that the game's business logic is written in Lisp, but would one want to write a 3D engine or a cellphone game in Lisp?

    3. Re:A plea to all up-and-coming language designers by alispguru · · Score: 1

      Does Common Lisp lend itself easily to kernel, systems, or real-time programming on mass-market computer architectures?

      Not easily. But, writing programs in those areas is hard in any language. C makes it easy to tell if your code will be fast or slow, since its primitives map pretty directly to normal machine operations. Since its primitives are so low-level, it's also much more verbose and error-prone.

      With Common Lisp, the primitives are higher-level, and are safe/slow by default, but you can add declarations as needed to speed things up. In combination with a good profiler, this allows developers to put optimization effort only where it's really needed. The philosophy is definitely "First make it work, then make it fast."
      --

      To a Lisp hacker, XML is S-expressions in drag.
    4. Re:A plea to all up-and-coming language designers by k_head · · Score: 1

      Every week or so I run into a new language, the first thing I do is look at some spample code on their web site and see if it makes sense to me. I try to imagine spending 8 hours a day writing code that looks like that.

      I have looked at lisp with the same sort of admittedly shallow perspective and decided that I could not see myself writing lisp all day.

      Having said that I also recognize that the smarted people I know have all used lisp and have liked it quite a bit even though none of them use it now for anything.

      My question to you is this. Is there a dialect of lisp that is syntacticly cleaner (yes I mean without all those parens).

      --
      The best way to support the US war effort is to continue buying American products.
    5. Re:A plea to all up-and-coming language designers by Anonymous Coward · · Score: 0

      Actually, the sites you are listing are just misinformation written by Lisp trolls. Read Peter Norvig's comparison of Lisp and Python instea for a real balanced opinion. (Norvig is the director of search quality at Google, and they use Python)

    6. Re:A plea to all up-and-coming language designers by Anonymous Coward · · Score: 0

      Actually, ocaml is as fast as C, because both are statically typed. Lisp programs aren't even in the same league (see the Great Computer Language Shootout results - google for it, the author did not like to be linked directly from slashdot 2 years ago).

    7. Re:A plea to all up-and-coming language designers by Anonymous Coward · · Score: 0

      My question to you is this. Is there a dialect of lisp that is syntacticly cleaner (yes I mean without all those parens)
      Yes, it's called Python. You don't have macros, but you don't miss them either - macros are used to make Lisp code prettier (but they still have parentheses all over it). Python code is already pretty

    8. Re:A plea to all up-and-coming language designers by alispguru · · Score: 1

      My question to you is this. Is there a dialect of lisp that is syntacticly cleaner (yes I mean without all those parens).

      You probably want to look at Dylan. It was designed by Lisp hackers, and you can think of it as Java, but not dumbed down - it's got decent multiple inheritance and non-crippled closures.

      For several reasons, Dylan never really took off - the Lisp people saw no reason to change, and the non-Lisp people didn't really understand how much better it was than Java/C++. It deserves a lot more exposure than it gets, in my opinion.
      --

      To a Lisp hacker, XML is S-expressions in drag.
    9. Re:A plea to all up-and-coming language designers by iggymanz · · Score: 2, Insightful

      I've been paid to code LISP in the past, and it's a great language & one way to do things, but I wouldn't want all languages to do things the LISP way. In the past 15 years I've found more fun in coding in other languages and am coding Ruby now for my own projects. There's other languages involving less typing than LISP to get a particular job done. Why should someone pollute their mind with one mindset before inventing something new?

    10. Re:A plea to all up-and-coming language designers by k_head · · Score: 1

      I have used python (who hasn't by now). I like it OK. For me Ruby is more fun although I can't probably point to one thing and say "this is why".

      I just don't see python as some deep and meaningful language like list seems to be. People who like python don't speak of it in the same way as lisp programmers though.

      --
      The best way to support the US war effort is to continue buying American products.
    11. Re:A plea to all up-and-coming language designers by voodoo1man · · Score: 1
      Does Common Lisp lend itself easily to kernel, systems, or real-time programming on mass-market computer architectures?
      (Operating System) Kernels? Sure (there's been more than a few projects over the years). Systems? It's a programming language, after all. Oh, you mean highly complex, interactive models of real-world processes? I don't know too many people who are not using Lisp doing that sucessfuly (no, seriously, there really haven't been too many systems like those described in the link period, and most of those were aborted or had failed miserably). Is music performance real-time enough? If not, maybe you'll find robotics fits the bill. When did the Lisp Machines start making a comeback? All those applications run on regular PCs (with the exception of the robots of course).
      I know that the developers of a popular PS2 game have disclosed that the game's business logic is written in Lisp
      Naughty Dog have developed all of their PS1 and PS2 games (mostly) in Lisp; I didn't know this was a secret. But, a video game's business logic? Man, you need to stop sniffing the Sharpies with the guys from the marketing department.
      but would one want to write a 3D engine or a cellphone game in Lisp?
      There are a few projects doing 3d games in Lisp (but so far I haven't seen anything in terms of purdy screenshots). The CAD and animation packages in Lisp have shown that it's certainly possible to get good 3d performance (Izware's Mirai has the fastest IK/FK solver for skeleton constraints I have ever seen anywhere - the closest competitor in terms of features, Sega's Animanium, is about four to five times slower (in terms of minimum system requirements for interactively solving a ~two-dozen bone human skeleton - Mirai can do this on a 200Mhz PPro with 192M of RAM; Animanium needs at least an 800Mhz PIII with 256M of RAM). I don't know of any Lisp implementations that support cell phones, so I guess you're out of luck until the cell phone companies start offering Lisp (you're pretty much limited to their supported platforms if you want to develop cell phone games).

      PS - in a recent dick-measuring benchmark (the "Coyote Gulch" floating-point ephemeris calculator), CMU Common Lisp and Steel Bank Common Lisp produced code 5% faster than GCC on a Pentium IV. The participants claim it was "an hour-or-so's work".

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    12. Re:A plea to all up-and-coming language designers by tepples · · Score: 1

      But, a video game's business logic? Man, you need to stop sniffing the Sharpies with the guys from the marketing department.

      Business logic is the part of a game program that implements what are commonly called the rules of the game. An example: if bullet hits jap, jap takes x damage; if jap has taken y damage, jap enters death animation based on where he has taken the most damage. It can in theory be separated from the "engine" that handles input, Newtonian physics, collision detection, and output. Business logic typically uses fewer Big Loops and needs less optimization than the engine.

  93. Great... by Tadghe · · Score: 1

    The power of Obj C and the speed of Python...

    I'll pass....

    --
    Bugs Bunny was right.
  94. interpreted by k-zed · · Score: 1

    another interpreted language... i think i had quite enough of this scripting and bytecode stuff
    why don't they develop a compiler capable of generating native code? (thus getting faster code and smaller memory consumption?)

    --
    we discovered a new way to think.
  95. Programming Theory & simple languages... by parvenu74 · · Score: 1

    Yes, but I suppose I am looking at this from a slightly different perspective as well. Much of my early programming was in VB/VBScript/ASP programmer, I really appreciated being able to *quickly* learn the syntax or a very simple language (not bothering with case sensitivity is only the first of many ease-of-use elements of the language). Without doubt C/C++ gives you more raw power, and if my scripting requirements needed the goodness of power and speed that C gives me, it's only a COM component away from being included in the project.

    The theoretical question is: Can there be a language that is both extremely easy to learn and use, yet strongly encourages the writing of proper code instead of the convoluted crap that most newbies create, or is this asking to have my cake and eat it too?

  96. Re:SQL is like COBOL????! WTF?? by LarryRiedel · · Score: 1

    I think SQL is like COBOL because they both have syntax which seems to make a lame attempt to have statements look somehow like natural language. "MULTIPLY Num1 BY Num2 GIVING Result", "SELECT column1, column2 FROM table WHERE column1 IS LIKE '%pattern%' ORDER BY column1".

    Larry

  97. purchase? by GunFodder · · Score: 1

    No way! Where can I sign up for an annual subscription?

  98. They have a word for it by Anonymous Coward · · Score: 0

    and it's 'YAYAJ' (Yet Another Yet-Another Joke)

  99. Yet another interpreted language? by austus · · Score: 1, Interesting

    I was excited until I realized it was yet another interpreted programming language. If I could only have a machine code compiled programming language like c/c++ with Python's clean syntax. Now that would rock.

    Anyways, the guy is recreating the wheel. One can live quite nicely without using the "brain aching" elements of Python without sacrificing too much.

  100. Re:Pre Alpha Release? OT by Anonymous Coward · · Score: 0

    your sig... seems you left a part out.

  101. Re:SQL is like COBOL????! WTF?? by Mad+Marlin · · Score: 1
    Well, CO101 where I work teaches you how to use the advanced features of Microsoft Office. CO105 teaches you how to use the basic features of Windows. Then CO110 teaches you how to turn a computer on. The curriculum here is so screwed up.

    I'm not sure what "CO" is, but it sure sounds like what they call computer information systems (CIS) around here. That is most definitely not computer science.

  102. Idiotic from the get-go by Earlybird · · Score: 1
    From description:
    • Indentation is Tab-Only
      Like Python, Prothon uses indentation to control the block structure of the program instead of block/end or {}. However, Prothon only allows tabs for indentation. Any space in an indent will cause an error. This allows each programmer to set the editor to show the tab width to whatever he pleases and the Python problems of mixed spaces and tabs cannot happen in Prothon. It also allows for minimum typing.
    Nobody seems to have told these guys that tabs are evil.

    Python's whitespace-based indentation may be controversial, but it works. Tab characters have all sorts of evilness associated with them. If they had been implemented correctly and consistently across all UIs and transports, it would have been fine. But they're not.

  103. "Industrial Strength" == real threads? by Anonymous Coward · · Score: 0

    My guess is that they mean that you can write real, multithreaded servers with it because it uses OS threads.

    I've spend months trying to write some large servers in Python, and on Win32 I've decided it isn't going to be worth it... OS threads would have saved the day for me.

    I'm going to ignore all of the "use multiple processes" replies, but I will refer those interested into the Minux/Linux, monolithic kernel etc. debates. Sometimes threads make it easy to design more reliable systems because a message receiver can access state shared with the sender.

  104. Lisp? Just give me a turing machine... by BiggsTheCat · · Score: 2, Funny

    Lisp? Are you joking? Why would I use anything so needlessly complex?! You know, all any programmer really needs is a Turing machine.

    What does any language have above Lisp? Easier to read, easier to understand, faster to code in. Lisp is a language for masochists who don't believe in variables. There! I've said it! /ducks a giant flying lambda

    --

    Time is an illusion. Lunchtime doubly so. --Ford Prefect

    1. Re:Lisp? Just give me a turing machine... by Sri+Lumpa · · Score: 1


      "Lisp is a language for masochists who don't believe in variables."

      Ok, it looks like you are either joking or trolling but for those wo do not know let me ask you this:

      what part of (set! a 'fuck-you) is not variable to you?

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
    2. Re:Lisp? Just give me a turing machine... by BiggsTheCat · · Score: 1

      Yes, I was just joking. I wasn't trying to troll maliciously, though I guess it's hard to tell these days. :-)

      I guess my comments were more directed about functional languages in general. i.e. wouldn't set! not be tolerated in a purely functional program? Lisp is not purely functional (afaik). The ! means 'side-effect' does it not? Are those considered bad?

      --

      Time is an illusion. Lunchtime doubly so. --Ford Prefect

    3. Re:Lisp? Just give me a turing machine... by Sri+Lumpa · · Score: 1

      short answers: set! (setq for common lisp) would not be tolerated in a purely functional language like Haskell.

      The ! is a convention meaning the function alters one (or more) previously allocated location.

      For example the display function side-effects to the screen but doesn't alter anything else so it is not tagged with it.

      This is a convention, and a Scheme one at that, not a Common Lisp one, so you could choose not to obey it but it would be considered bad to do so (obeying it makes your code more readable).

      Side-effect/mutations are not considered as inherently bad (otherwise the language wouldn't have them and would be purely functional) but if you use them extensively it's like using C without pointers and a weird syntax so you wouldn't do it (except when you learn to think functionally or if you have a good reason to) because you would get all the disadvantages of Lisp (weird syntax) without any compelling advantages over C (functional style, macros...) given that you don't use them.

      Long answer: the original answer was way longer and covered more ground but the lameness filter kicked in with too many junk characters and I just couldn't bypass it before getting fed up with it so if you are interested to read it e-mail me at: rousseauj1SPAM@yahoo.com (remove the SPAM of course) to send it to you.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
  105. Takes too long and they were lazy by BiggsTheCat · · Score: 2, Informative

    Getting new syntax into Python is tough. You have to write a PEP and submit it to the newsgroup where it will get picked on, critiqued, slandered, and trashed. Then, if it survives, months later it may get voted on, and given Guido van Rossum's official stamp of approval. And Guido is very hard to please! Given the nature of the changes in Prothon, it would have taken years to agree on anything. In most cases, this is a good thing because it keeps the language stable as opposed to changing every month.

    Forking your own branch means you can do what you want. And I have a feeling Prothon's features wouldn't have made it into Python. IMHO.

    --

    Time is an illusion. Lunchtime doubly so. --Ford Prefect

  106. Eeek! Misspelt keyword? by BillsPetMonkey · · Score: 1

    From the Prothon implementation page:

    The first character of the path always tells whether the starting point is local, global, or self. .box.attributes.size.width # self

    obj.parent.owner.privelage # local

    String.lower-case-letters # global

    The period being used for self is actually an implementation of the "with" keyword, which will be described next.


    Ummm, it might seem like a small point, but that's not how you spell privilege.

    That's not an keyword, is it??

    --
    "It's not your information. It's information about you" - John Ford, Vice President, Equifax
  107. I smell April Fools.... by Anonymous Coward · · Score: 0

    Uhm... does anyone else smell an April Fools joke? After all it close to that time of the year.

  108. Re:SQL is like COBOL????! WTF?? by Short+Circuit · · Score: 1

    Well, here's a list of the classes whose codes I'm familiar with:

    CO101 Introduction to Computer Applications
    CO105 Introduction to Windows Operating System
    CO110 Introduction to Computers
    CO116 Introduction to Computer Programming
    CO124 Programming in Visual Basic
    CO127 Programming in C++
    CO129 Programming in C#
    CO132 Introduction to UNIX
    CO142 UNIX Shell Scripting
    CO232 UNIX System Administration
    CO265 Computer Repair

  109. need IDE more by spectrokid · · Score: 3, Insightful

    I do a lot in VB and that is not because I like the language, but because it has such a good IDE (read intellisense). If I had to program VB in Notepad /Emacs/ whatever, I would slow down by at least 50%, probably 75. You can never convince me that this new language will deliver a better productivity gain then designing a Python IDE which knows all your classes and does auto-complete.

    --

    10 ?"Hello World" life was simple then

    1. Re:need IDE more by gabbarbhai · · Score: 1

      er. I do a bunch in Java/C++ with Emacs, and an IDE usually slows me down. Conclusion: Use a real language, not VB unless your daily bread depends on it. :-) But you have a good point here. For GUI/Interface type programming, an IDE is more important. For scripting type work, it's more important to have a readable, modular language as others have pointed out here.

    2. Re:need IDE more by cbciv · · Score: 1

      I do a lot in VB and that is not because I like the language, but because it has such a good IDE (read intellisense) Thanks. I needed a good laugh.

  110. Re:Just what I need: by sunilrkarkera · · Score: 1

    The 'with' statement in VB creates a lot of issues with scope in the VB language. The language designers had to introduce new language features to support this. Anders Hejlsberg says that he did not want to do that and thus 'with' is not part of the C# language. The discussion with Anders can be found at: http://msdn.microsoft.com/vcsharp/homepageheadline s/hejlsberg/default.aspx

  111. Re:Pre Alpha Release? OT by 3terrabyte · · Score: 1

    I think that's the point.

    --

    Why are there only 19 people folding@home for slashdot?

  112. Other Database Languages: QBE, Datalog, PL/SQL by cquark · · Score: 1

    While SQL is hugely dominant, other database languages exist. SQL is primarily based on relational algebra, while QBE (Query-by-example) is a graphical language, where queries actually look like tables, and Datalog is a Prolog-like language which is partially based in relational calculus. MS Access supports GQBE, a version of QBE, but I'm not sure if anyone uses Datalog any longer. There are also procedural database languages, like Oracle's PL/SQL and Postgres' similar PL/pgSQL.

  113. Do we need by Master+Switch · · Score: 1

    Yet another language. So many times it seems, we spend our time re-inventing the wheel. I'm sure this language has its merits and its pitfalls, just like every other language. The question isn't, is it good enough. The question is, isn't everything else , even with all its warts, good enough already. Aren't there new, more interesting problems to solve with computers. Don't we already have enough hammers, wrenches and screwdrivers so to speak.

    --
    -Master Switch, one more element in the machine
  114. There's another name for Prothon: Python by Lulu+of+the+Lotus-Ea · · Score: 4, Informative

    We already have perfectly good prototype-based programming in Python. Do a search for "metaclass programming in python" for links to my articles on this topic. You can do -everything- with Python metaclasses (which isn't to say you -should-).

    But actually, prototype programming is even simpler:

    new = old.__class__(init, args, here)

    Just what 'old' is is determined at runtime. And if you like, you can poke around at 'obj.__bases__' to futz with inheritence.

    Not having read my _Charming Python_ articles isn't really a sufficient reason to create a new programming language.

  115. Hmm. by lucianx · · Score: 1

    Doesn't this query produce the same results? Or am I missing something?

    SELECT DISTINCT ON (c.name) c.name, b.billdate, b.cost - coalesce(sum(pb.amount),0)
    FROM customer c
    LEFT JOIN bill b ON (c.id = b.customerid AND NOT b.paid)
    LEFT JOIN paytobill pb ON (b.id = pb.billid)
    GROUP BY c.name, b.billdate, b.cost
    ORDER BY c.name, b.billdate DESC;

    --
    John C. Worsley - Artist, Musician, Coder
    Portfolio
    1. Re:Hmm. by Qzukk · · Score: 1

      Ha. learn something new every day. I had no idea of that.

      Sorry for wasting everyone's time with that example.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
  116. GOOD! by Anonymous Coward · · Score: 0

    Ah, good, another language for you open source zealots to fawn over. More factionalization, division, and fragmentation is good. Slice yourselves thin, it makes it easier to stomp your pathetic useless asses into the ground.

  117. Nothing to see here.... by brundlefly · · Score: 2, Insightful

    Having examined this language in some detail, I'm a little disappointed by its design.

    1. It makes overly heavy use of punctuation. I'm of the opinion that languages need to be more human-readable, not less. Put another way, the speed and power of coding in any language is not gated by the number of characters it takes to type out a statement; it's gated by the time it takes to find and detect bugs and flaws. Words > punctuation for readability.

    2. Many of the design decisions are obviously influenced by one person's peeves with existing languages. The world already has one Larry Wall, and as wonderful as he is, we don't really more Larrys.

    3. Elegance is a hard thing to measure, much less quantify. Still, aside from simply being a unique language, it doesn't really offer any new elegance to the concept of what a language should do.

    It's an impressive hack, to be sure. I'd be proud to be able to show off a body of code like this, for its demonstration of sheer technical strength. But I find its artistic merits somewhat lacking for my own tastes.

  118. Ahhhh, Lisp -- and its true believers! by melquiades · · Score: 4, Insightful
    Yes, you too can become a fanatical Lisp user! Just trawl for any online discussion of any programming langauge that is not Lisp, then post using the following handy form:

    Derogatory or condescending salutation. Quasi-religious statement of love for Lisp.

    Laundry list of several nifty Lisp features. (It doesn't really matter which ones.)

    Implication or outright statement that every feature in programming language in question has already been implemented in Lisp. Subsequent dismissal of language in question.

    Remember, in writing your post, it is essential that you adhere to the following guidelines:
    • Never show any respect for a non-Lisp language.
    • Never admit the usefulness of new experiments, or of personal exploration.
    • Never contribute concrete, constructive suggestions to the designers or users of any other language.
    • Never, never think outside the Lisp box.


    (Disclaimer: I like Lisp. Actually, I love Lisp. It really, truly is incredibly awesome. It's just Lisp users that drive me crazy.)

    <ducks REALLY low>
    1. Re:Ahhhh, Lisp -- and its true believers! by Anonymous Coward · · Score: 0

      "Implication or outright statement that every feature in programming language in question has already been implemented in Lisp."

      No, it's more that most every feature has either already been implemented in Lisp or only needs a bit of syntactic sugar to be implemented (via a few macros).

      Disclaimer: you probably know more Lisp than me.

  119. Re:Shhhh... [Definitely mistaken] by tyrione · · Score: 1

    Objective-C :: You know that totally static based language.

  120. marketing/spin contradiction by sacrilicious · · Score: 3, Funny
    Prothon is a new industrial-strength [...] language... Check out the first public pre-alpha release

    This might be the first time I've seen a product described simultaneously as "industrial strength" and "pre-alpha".

    --
    - First they ignore you, then they laugh at you, then ???, then profit.
    1. Re:marketing/spin contradiction by Punboy · · Score: 0

      True... this is probably the first time its been outright said.

      But certainly not the first time a pre-alpha has been called "industrial-strength"... Think ALL Microshaft products, MacOS 10.0, most versions of AOL, etc etc etc...

      --
      If you like what I've said here, and want to read more, go to http://www.krillrblog.com
  121. Re:oops... by eegad · · Score: 1

    offtopic? umm hi this was a joke. we slashdotted them almost immediately.

  122. Re:Here we go....again by LWATCDR · · Score: 1

    right now OOP is the "best" solution for a lot of problems. GUIs are a lot easier to deal with using OO . When I was learning programming structured programing was the latest thing. All the schools where teaching people Pascal as there first language unless they would backwords and taught c. I also rember people saying that it was too slow to write code that way and that they would have to pry the GOTO statment from there cold dead hands. BTW GOTOs could be found in Fortan and c not just basic. I see OO as a logical progresion from structured programing.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  123. Re:SQL is like COBOL????! WTF?? by Anonymous Coward · · Score: 0

    Those sound like the computer classes at a tech school or community college. They're useful for some people, but don't confuse them with a computer science curriculum (which you'd find in a university setting).

  124. ...it sucks! by RLW · · Score: 1

    It's not exceptions. What if there is a logic problem? Some cdr( car( cdr ( car ))) cdr ) or what not is in the wrong place. Getting at the third or fourth item in a list is not intuitive or easily deciphered. Of all the languages I have programmed in Lisp is the least readable. Well, ok I have programmed in machine code on old Apple II's. On second thought a hex listing of instructions was easier to read than wading through a sea ('s and )'s. Ick. Who ever invented Lisp should be hauled in front a programming crimes tribunal for crimes against geekdom.

    1. Re:...it sucks! by be-fan · · Score: 1

      Okay, how much Lisp do you know? I ask because:

      1) For the first 10 elements, you can just use "first," "second," "third," and so on.

      2) You can also use the function (nthcdr) to get any of the other elements.

      3) Since lists are also collections, you can use (elt) as well.

      The parens don't bother people who have used Lisp for a decent amount of time. They find Lisp readable because they use good editors, which use syntax highlighting, parens matching, and auto-indentation to make code readable.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:...it sucks! by be-fan · · Score: 1

      Blargh. The function isn't (nthcdr) its (nthcar). (nthcdr) gets the cdr rather than the car.

      --
      A deep unwavering belief is a sure sign you're missing something...
    3. Re:...it sucks! by RLW · · Score: 1

      What's wrong with object[index] ?
      That works best!

    4. Re:...it sucks! by be-fan · · Score: 1

      What's wrong with (elt object index)?

      And object[index] is a bit of a hack. What do you do when you've got a hash-table, and want to allow iterative access to keys and values seperately. You end up doing a function like:

      object.key(index) or object.value(index)

      That means a different syntax for accessing elements vs keys or values. With prefix syntax, you get a nice, uniform:

      (key object index) or (value object index)

      --
      A deep unwavering belief is a sure sign you're missing something...
    5. Re:...it sucks! by RLW · · Score: 1

      No, you use an object that has more than one value with a collection class.
      Array[index].value or, gasp!.. Array[index].key! Yeah!
      One may have all sorts of collection classes and object to put in them and what not.

    6. Re:...it sucks! by be-fan · · Score: 1

      Um, in a hash-table, [] is usually already taken for the lookup function. So you can't use index, which should be an integer for iterative access.

      --
      A deep unwavering belief is a sure sign you're missing something...
  125. Eric3 (was: need IDE more) by Anonymous Coward · · Score: 0

    Eric3 is a very full featured Python IDE written in Python (using QT).
    Alternatively, you could try SciTE

  126. ...it still sucks and it will continue to suck! by RLW · · Score: 1

    Don't make me cooder your car now. What's up with that anyway?
    Who the hell decided the first element would be car and the colleciton of elements minus the first would be cdr?
    That's intuitive. I'll take a box of that.

    1. Re:...it still sucks and it will continue to suck! by be-fan · · Score: 1

      'car' and 'cdr' are historic terms. Kinda like the 'creat' system call in UNIX, or A lot of people like them because of the nostolgic value, and the fact that they are short and can be typed with the fingers of one hand. You can always use 'first' and 'rest' if you want.

      However, note that cons cells aren't always part of a list, they can (and often are) used as pairs of values. At that point, 'first' and 'rest' don't make a great deal of sense. Because of the generality of the cons cell, 'car' and 'cdr' makes as much sense as any other names.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:...it still sucks and it will continue to suck! by RLW · · Score: 1

      Ok, i'll by that. Where do the historic terms cdr and car come from and what do they mean in that context ?

    3. Re:...it still sucks and it will continue to suck! by Sri+Lumpa · · Score: 1


      From the Foldoc entry on cdr:

      Historical note: The instruction format of the IBM 7090 that hosted the original LISP implementation featured two 15 bit fields called the "address" and "decrement" parts. The term "cdr" was originally "Contents of Decrement part of Register". Similarly, "car" stood for "Contents of Address part of Register".

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
    4. Re:...it still sucks and it will continue to suck! by be-fan · · Score: 1

      The first Lisp implementation, on the IBM 704, had special looping instructions with two 15-bit operands, "address" and "decrement." The machine had special instructions that would load 15 bits from a 36-bit word into the machine's index registers. Since a cons cell was represented by a single word with 2 15-bit pointer fields, the operations ended up being called "contents of address register" and "contents of decrement register." They thought of "first" and "rest" a short while later, but nobody wanted to switch.

      --
      A deep unwavering belief is a sure sign you're missing something...
  127. The tab problem by jtheory · · Score: 1
    I think I'd agree with the grandparent poster about the tabs... the idea of changing function based on different *whitespace* characters just makes me jumpy.

    Here's the bit from the language description:

    Like Python, Prothon uses indentation to control the block structure of the program instead of block/end or {}. However, Prothon only allows tabs for indentation. Any space in an indent will cause an error. This allows each programmer to set the editor to show the tab width to whatever he pleases and the Python problems of mixed spaces and tabs cannot happen in Prothon. It also allows for minimum typing.

    then...

    [...]any tab indent of more than one level deeper than the previous indent level will cause the line to be considered a continuation of the previous line, which is a new feature to Prothon. The automatic continuation of lines in comma separated lists found in Python is not allowed in Prothon because of parsing differences, but usually the auto-continuation from indents alleviates the need for this.

    Note that you can put spaces after tabs when in an auto-continuation. This allows you to line up the continued line for appearance.


    Ouch. I've never used Python so I can't speak for that... but it would bug me to look at code and have no idea whether it would compile or not. In Prothon, one line could include some tabs for block definition, then an extra tab for line continuation, then some spaces for formatting. Now suppose the coder screwed it up.

    Or suppose they edited the code in an editor that automatically converts tabs to spaces or visa-versa. Poof!! All your code is screwed, but you can't tell until you compile, and you're going to have a hell of a time fixing it, line by line if you had no backup.

    There are a few indentation gotchas in Java, i.e., the braces aren't required for a single statement, so if a second statement is indented, a newbie might think it was in the block... but they catch your eye when you've been coding more than a few months.

    A tabbing error could NEVER catch your eye, because it's just whitespace.

    Eh, my 1 cent. I'm going to look into the prototype vs. classes thing more -- that's interesting.
    --
    There are only 10 types of people: those who understand decimal, those who don't, and, uh, 8 other types I forget.
  128. The 90s Called... by meehawl · · Score: 2, Funny

    Prothon is a new industrial-strength, interpreted, prototype-based, object-oriented language

    They want their new economy bullshit buzzword generator back.

    --

    Da Blog
  129. Precisely 'Industrial Strength'! by Vagary · · Score: 1

    By "industrial strength", we mean suitable for large applications, right? What could be more suitable for apps written by multiple people or one person over a long span of time, than enforced style? I take it to be self-evident that "industrial strength" apps should be well documented, a task that is most likely to occur the more the language is self-documenting. There's a reason Hungarian notation was popularised at Microsoft: when you have a whole bunch of bad programmers working on huge amounts of code, any visual hints you can insert into that code are great.

    Think of Prothon as the anti-Perl: it aims to make it as easy as possible to identify blocks, global variables, functions with side-effects, etc. How can that be a bad thing unless you can't let go of the conventions you learned or invented in some other language?

    Besides, Haskell has syntax-significant whitespace and capitalisation, and it was designed by people smarter than both of us.

  130. not so! by xlurker · · Score: 1

    yeah, neuthrino is ubiquitous
    ... but it's a pain in the a** to measure (unit tests) and nobody really notices it

    --
    ______________________________________________
    sigamajig...
  131. Autocomplete? by Rozzin · · Score: 1

    You mean like Emacs does?

    --
    -rozzin.
  132. One Word Says It All by Anonymous Coward · · Score: 0

    interpreted

  133. Compactness? by voodoo1man · · Score: 1
    Can you please explain your claim that a prototype-based object model is "MUCH more space compact"? It seems to me that each such object would be at least twice the size of an equivalent class-based object (assuming message-passing*). Here is a breakdown of what I think each object would need in the prototype system: a pointer to it's parent(s), a table for slots, and a table for any new/shadowed methods. All a class-based object is is a pointer to it's class and a vector for slots.

    Another of your points I must contend is that prototype-based object systems can't have strong typing. They certainly can - there'd just be a lot more types. If you mean static typing, that's true, but I wouldn't consider the lack thereof a disadvantage.

    * - If you use a multi-method approach, you can get rid of the message table, but I have no idea how you would get good performance out of message dispatch (it's hard enough to do in class-based object systems).

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.

    1. Re:Compactness? by Anonymous Coward · · Score: 0

      Prototype-based object systems tend to store overridden methods in the prototype's slot table but not inherited methods, relying on parent search to find them. I can't imagine how you'd dispatch multimethods based on prototype.

    2. Re:Compactness? by voodoo1man · · Score: 1
      I can't imagine how you'd dispatch multimethods based on prototype.
      How about a parent search? All you would have to determine is whether the current object is the object or a child of the object on which the method is specialized.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  134. Correction! by voodoo1man · · Score: 1
    Laundry list of several nifty Lisp features. (It doesn't really matter which ones.)

    Boy, you haven't been keeping up with the trolls, have you? Nowadays, it's essential that you mention macros. A lot of languages (Python included) claim to have features like "lambda functions," "lexical closures," etc. that "fanatical Lisp user[s]" once used to tout. A lot of these languages (Python included) don't really implement them, but unfortunately the Lisp fanatics are too busy posting inflammatory messages to learn that, so they have to resort to thinking up crazy new excuses why their programming language can beat up yours.

    Implication or outright statement that every feature in programming language in question has already been implemented in Lisp [twenty or thirty years ago].

    Lisp weenies tend to love to point out how far behind the times you are. Never mind that most of them aren't even that old.

    What? Do I hear someone accusing me of being a Slashdot Lisp troll? Nonsense! Now, if you'll excuse me, I have to get back to pointing out why your programming language sucks...

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.

  135. check out Lua: prototype-based, mature, popular by hak1du · · Score: 3, Interesting

    If you want a nice, clean, prototype-based OO scripting language, check out Lua. Its implementation is mature, it is widely used (a favorite among game developers), and it compiles into compact executables. It also has one of the fastest scripting language interpreters around (short of a JIT). And there are excellent tools for binding C and C++ code to it.

  136. Re:How can they... known problems by Anonymous Coward · · Score: 0
    The site's own list of known problems includes:
    • String objects use C-style null termination, so strings cannot hold binary data.
    • There are many memory leaks, so restart Prothon often.
    • += style assignments do not implement in-place modification. The structure is there, List just hasn't implemented __iadd__ function.
    • "x is not y" doesn't parse correctly. Cannot get "is" precedence higher than "not". Need a bison expert's help.
    In other words, the guy is already selling his product before he's ironed out the basics. These are all *really* easy tasks that I've solved in my pet language with only 2 months of development.

    Why do I get the feeling this guy's trying to get dual-credit for a compiler course in CS and a hype course in marketing.

  137. Prototyped Python by JoeNotCharles · · Score: 2, Interesting

    Just a couple of days ago I found out about a cool metaclass hack to turn Python (the regular Python with the regular interpreter) into a metaclass based language. I posted about it on my Advogato journal. I mention this because I think it's pretty cool, and because I think people should see the alternative before thinking Phython is the only way to do this. That's not to say the new language isn't also a good choice.

  138. five words by Knights+who+say+'INT · · Score: 1

    Haskell

    Haskell

    Haskell

    Haskell

    and of course, let's not forget about !

  139. Hibernate by Julian+Morrison · · Score: 1

    Okay so it's a mapping overtop SQL, but it's really really nice.

  140. Unless it's Smalltalk... by Anonymous Coward · · Score: 0

    I use Smalltalk for a living...

    Is it dynamic (can I define functions at runtime)?

    Yeah...

    Is it compiled?

    Yeah, dynamically compiled...

    Can I easily write code that manipulates code?

    Yeah, I have access to a kick-ass meta object system, which is itself all first-class objects...

    Are functions first class objects?

    Yes, CompiledMethods are first class, as are Blocks (a.k.a. Lambda expressions in the Lisp world)

    Can I extend the language seamlessly?

    Yes, I can extend anything on the fly, and define new control structures effortlessly.

    Some new languages are interesting, but most are built by people who have used and understood far too few of the current ones.

    Indeed!

    1. Re:Unless it's Smalltalk... by Anonymous Coward · · Score: 0

      Sorry, Lisp trolls, sounds to me like Smalltalk + Linux got you beat. Bjarne wanted to make C++ more like Smalltalk, but he couldn't because of the backwards compatibility with C requirement.

    2. Re:Unless it's Smalltalk... by rplacd · · Score: 1
      Sorry, Lisp trolls, sounds to me like Smalltalk + Linux got you beat.
      How so? Lisp can do all the things listed in the parent article.
    3. Re:Unless it's Smalltalk... by voodoo1man · · Score: 1
      Bjarne wanted [emphasis retained] to make C++ more like Smalltalk, but he couldn't because of the backwards compatibility with C requirement.
      Are you some kind of sick Bjarne Stroustrup apologist? The people who did Objective C managed to implement way more Smalltalk features than C++, while having way better C compatibility than C++. "Backwards compatibility" is not a viable scapegoat for the design holes of C++.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  141. MOD PARENT UP (Ahhhh, Lisp -- and its true) by Anonymous Coward · · Score: 0

    Very, very true!

  142. PARENT is OVERRATED (YANISL: Just What We Needed) by Anonymous Coward · · Score: 0

    You only need to program in Python for a few hours to understand that the syntax it uses is truly a Good Thing (TM). I've programmed in C++ for many years, but never have I seen code with the textual clarity of Python.

  143. Re:Uh by Anonymous Coward · · Score: 0
    Of course we need more programming languages

    As long as they are not Lisp!

  144. Please learn how to use links. by Anonymous Coward · · Score: 0
    Please learn how to use links.
    Ok, there is one additional database access language I know of: <a href="http://newsql.sf.net">NewSQL</a>.
    yields:
    Ok, there is one additional database access language I know of: NewSQL.
  145. Re: Prothon vs Python by some+guy+I+know · · Score: 1
    every one of the other differences was actually a *worse* way to do it
    I liked several differences, and disliked others:
    • The ".member" notation.
      This syntactic sugar could easily be added to Python.
      A missing symbol before the dot in a method would mean the first parameter (conventionally, "self").
      This would result in less clutter within methods.
    • Labeled loops for break/continue.
      These would be nice (although, generally, if your nested loops are complicated enough that you need this, you should try to simplify your logic).
      The same effect can be accomplished with try/except, but, again, this would be less "cluttery".
    • Indent with tabs only.
      I don't like this one.
      I indent Python with spaces only (":se expandtab" in vim), so I think that it should be the other way 'round.
    • Mark-sweep garbage collection.
      Both reference-counting and mark-sweep have their place, depending on the application.
      It would be nice to be able to choose which one to use for a particular purpose.
      Python has recently added weak references, which, properly used, will reduce orphaned cyclic lists, etc., but I think that one shouldn't have to do that sort of housekeeping in a high-level language.
    • I don't like how either Python or Prothon handle the integer division thing ("/" vs "//").
    I think that the Prothon project has some good ideas and some bad ideas, but it might be more productive to try to get some of these things into the Python language itself, rather than creating an almost identical new language.
    --
    Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana
  146. Prototype-based programming can be done in Python by Ed+Avis · · Score: 2, Informative

    It is already possible to do prototype-based programming in Python. Also in Perl. But the syntax may be a little awkward.

    --
    -- Ed Avis ed@membled.com
  147. Moderators... by p3d0 · · Score: 1

    Someone please undo the Troll moderation on the parent post. It is patently unfair.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  148. Re:Here is a tip for the creators of this language by Repugnant_Shit · · Score: 1

    It's a pre-alpha software, so there's no tutorials or documentation written yet. So saying that you need a background in Prothon's parent language isn't such an unreasonable requirement.

  149. Re:SQL is like COBOL????! WTF?? by random_static · · Score: 1
    yeah, but this works much better in SQL than in Cobol. probably because SQL is declarative; Cobol tries to use the same broken look-like-english concept to describe procedures, and that just goes straight to hell in a handbasket.

    besides, SQL doesn't have the needs for abstraction that Turing-complete programming languages do; that lets it completely avoid several other ways in which Cobol screws the pooch. most of scoping, for example. or anything to help you do procedural abstraction. and nobody can claim SQL's grammar is anywhere nearly as badly FUBAR as Cobol's, not while sober they can't. and...

    (i'm taking a mandatory Cobol class this semester; does it show?)

  150. Re:Here is a tip for the creators of this language by smallpaul · · Score: 1

    Dude: there are two guys creating a whole new language. They have no community yet. They have no technical writers yet. Their target audience is the subset of people who already like another language. Cut them some slack. They aren't exactly trying to compete with Java and C# (yet).

    You are so far out of the target demographic that the fact that you are offended is irrelevant.

  151. C++ efficiency problems by Anonymous Coward · · Score: 0
    • Aliasing allows any store to a pointer or reference to affect a load from any other pointer or reference to any related type, so the compiler can't keep intermediate values in registers. This is largely why Fortran is faster than C++ even now.
    • The compiler can't optimize away const method calls and member loads because botches like mutable and const_cast<> allow them to produce different values or cause side effects.
    • A class' virtual method overrides are ignored while its constructor is running, so run-time method dispatch usually can't be optimized away, and the RTTI for every base class has to be altered by each derived class in succession.

    These quirks are rarely used (many developers don't even understand them) but all object code has to pay for them unless the compiler can prove they don't apply.

    1. Re:C++ efficiency problems by Anonymous Coward · · Score: 0

      Color me impressed, you came up with some actual rare and obscure stuff.

      First One: I'll not argue against Fortran on speed. I'm more comfortable arguing with those who think C is faster than C++. Eithers advantage over Fortran is likely to be in maintainability. Still, I'd think a decent compiler would resolve aliases in some early pass and make this point moot; or maybe I don't understand what you mean.

      Second one: const_cast and mutable are, as noted, rarely used, so in most cases it's easy for the compiler to prove they don't apply (because they are not used). When they are used, it ought to be for good reason, which is to say, worth the overhead. In quite a few years of C++ coding, I've never used const_cast, and I've used mutable only in connection with caching.

      Third one: If you've got very many levels of inheritence with inlineable (i.e. trivial) constructors at each level, you've probably blown it already, IMO.

      Basically, I disagree that "all object code has to pay for them". You only have to pay for these quirks if you use them. I love C++ because if there are 5 ways to do something, it lets you use whichever one you want. Some of them might, by their nature, involve a performance penalty, but be clearer, more maintainable, whatever. But if there is an nasty, ugly, fast way, that's probably an otpion too.

      I don't like "Prothon" from what I've heard because it seems clear that if there are 5 ways to do something, 1 will have been chosen for me.

  152. I thought I was the only one! by voodoo1man · · Score: 1

    I do the same thing, except I try to imagine reading page after page of that code written by someone other than me (the examples they give are usually less than a dozen lines long, so it actually requires some imagination). Except, of course, I compare that to Common Lisp :). Most of the time, I come to the same conclusion. I deal with quite a bit of open source/public domain/free software CL code, and it always seems to be very well written (good use of macros makes the language look declarative enough that I can read it out as English without too much thought).

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.