Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Prothon - A New Prototype-based Language 630

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."
This discussion has been archived. No new comments can be posted.

Prothon - A New Prototype-based Language

Comments Filter:
  • Pre Alpha Release? (Score:4, Insightful)

    by Thanatopsis ( 29786 ) <despain.brian@ g m a il.com> on Friday March 26, 2004 @11:57AM (#8680060) Homepage
    A pre alpha release really isn't newsworthy. Is this some one's pet project? I wasn't aware Python was broken.
    • by seaswahoo ( 765528 ) on Friday March 26, 2004 @11:58AM (#8680080)
      Well, it would be newsworthy if it were a pre-alpha release of Duke Nukem Forever.
    • by Frymaster ( 171343 ) on Friday March 26, 2004 @11:59AM (#8680093) Homepage Journal
      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.

    • by Anonymous Coward on Friday March 26, 2004 @12:04PM (#8680166)
      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?
      • by jrexilius ( 520067 ) on Friday March 26, 2004 @12:14PM (#8680284) Homepage
        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..
      • If it ain't broke ...
      • you're forgetting OOSQL (which is basically completely different) and all the various DBMS-particular languages like Oracle's PL/SQL
      • 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.

      • by Viol8 ( 599362 ) on Friday March 26, 2004 @01:11PM (#8680912) Homepage
        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!
      • by slamb ( 119285 ) * on Friday March 26, 2004 @05:14PM (#8684132) Homepage
        There are sooo many general programming languages but only one database access languages: SQL?

        There are more than that. Here's one: Xplain [berenddeboer.net]. 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.)
    • by FortKnox ( 169099 ) on Friday March 26, 2004 @12:16PM (#8680310) Homepage Journal
      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.
  • by Eunuchswear ( 210685 ) on Friday March 26, 2004 @11:58AM (#8680064) Journal
    Sounds like a korean car.
  • How can they... (Score:5, Insightful)

    by ThrasherTT ( 87841 ) <thrasher@deathmat[ ]net ['ch.' in gap]> on Friday March 26, 2004 @11:58AM (#8680068) Homepage Journal
    call it "Industrial-Strength" if it's "pre-alpha?"

  • by Khelder ( 34398 ) on Friday March 26, 2004 @11:58AM (#8680072)
    Yet Another New and Improved Scripting Language! Just what we needed!

    Oops, did I say that out loud?
  • by DarkFencer ( 260473 ) on Friday March 26, 2004 @11:59AM (#8680087)
    Maybe they should write a new webserver in Prothon... to survive the slashdotting...
  • Here we go.... (Score:4, Interesting)

    by Anonymous Coward on Friday March 26, 2004 @12:01PM (#8680110)
    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 [linuxsurveys.com]
    • Re:Here we go.... (Score:5, Interesting)

      by orangenormal ( 728999 ) on Friday March 26, 2004 @12:17PM (#8680317)
      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.
    • Re:Here we go.... (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 [mit.edu] for the classic paper on the prototype based approach.

  • by arose ( 644256 ) on Friday March 26, 2004 @12:01PM (#8680115)
    Call me when Producthon is ready.
  • by lfourrier ( 209630 ) on Friday March 26, 2004 @12:02PM (#8680124)
    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.

  • by Sloppy ( 14984 ) * on Friday March 26, 2004 @12:02PM (#8680126) Homepage Journal
    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.

  • p fixation? (Score:5, Funny)

    by Anonymous Coward on Friday March 26, 2004 @12:03PM (#8680138)
    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?
    • by SamSim ( 630795 ) on Friday March 26, 2004 @12:36PM (#8680516) Homepage Journal
      The truth is that the vast majority of programmers need to use the bathroom *really* badly. Hence the p fixation.
    • Re:p fixation? (Score:3, Interesting)

      by tverbeek ( 457094 )
      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 o


    • 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.
  • Shhhh... (Score:4, Funny)

    by spacefight ( 577141 ) on Friday March 26, 2004 @12:03PM (#8680145)
    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...
    • Re:Shhhh... (Score:5, Funny)

      by fredrikj ( 629833 ) on Friday March 26, 2004 @12:16PM (#8680312) Homepage
      An even better piece of buzzwords, though fabricated, from the TUNES FAQ [tunes.org]:

      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.
  • Bondage (Score:5, Interesting)

    by spellraiser ( 764337 ) on Friday March 26, 2004 @12:04PM (#8680150) Journal

    This is taken from the Prothon Description [prothon.org]

    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 ??

    • Re:Bondage (Score:5, Informative)

      by Just Some Guy ( 3352 ) <kirk+slashdot@strauser.com> on Friday March 26, 2004 @12:10PM (#8680228) Homepage Journal
      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>.
      • Re:Bondage (Score:4, Insightful)

        by Ender Ryan ( 79406 ) <TOKYO minus city> on Friday March 26, 2004 @12:30PM (#8680454) Journal
        Yeah, that's why indentation as block structure is a ridiculous idea in the first place!

        <ducks>

        • Re:Bondage (Score:3, Informative)

          by costas ( 38724 )
          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,
  • Karma Whoring (Score:3, Informative)

    by froody ( 115836 ) on Friday March 26, 2004 @12:04PM (#8680152) Homepage
    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
  • by Anonymous Coward on Friday March 26, 2004 @12:05PM (#8680173)
    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
  • .NET? (Score:3, Funny)

    by CharAznable ( 702598 ) on Friday March 26, 2004 @12:09PM (#8680215)
    So, when can we expect Prothon.NET?

    Me, I can't wait for Intercal.NET and Brainfuck.NET
  • even better (Score:5, Interesting)

    by swagr ( 244747 ) on Friday March 26, 2004 @12:11PM (#8680246) Homepage
  • by Sloppy ( 14984 ) * on Friday March 26, 2004 @12:12PM (#8680255) Homepage Journal
    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()
  • by Chromodromic ( 668389 ) on Friday March 26, 2004 @12:16PM (#8680304)
    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 [sun.com] 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.

  • by Chmarr ( 18662 ) on Friday March 26, 2004 @12:16PM (#8680305)
    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.
    • by cbiffle ( 211614 ) on Friday March 26, 2004 @01:17PM (#8680977)
      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.)
  • by jfengel ( 409917 ) on Friday March 26, 2004 @12:16PM (#8680313) Homepage Journal
    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.
  • by hasdikarlsam ( 414514 ) on Friday March 26, 2004 @12:25PM (#8680396)
    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?
  • by Jerf ( 17166 ) on Friday March 26, 2004 @12:32PM (#8680479) Journal
    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.)
  • by fuzzy12345 ( 745891 ) on Friday March 26, 2004 @12:36PM (#8680511)
    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.

    • by melquiades ( 314628 ) on Friday March 26, 2004 @04:32PM (#8683553) Homepage
      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>
  • Syntax (Score:3, Flamebait)

    by ChicagoDave ( 644806 ) on Friday March 26, 2004 @12:40PM (#8680563) Homepage
    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.
    • Re:Syntax (Score:4, Insightful)

      by smallpaul ( 65919 ) <paul @ p r e s c o d . net> on Friday March 26, 2004 @02:30PM (#8681889)

      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).

  • There is also Slate. (Score:3, Interesting)

    by marcello_dl ( 667940 ) on Friday March 26, 2004 @12:44PM (#8680609) Homepage Journal

    From Slate [tunes.org] 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.
  • by dwalsh ( 87765 ) on Friday March 26, 2004 @12:52PM (#8680714)
    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.
  • by XNormal ( 8617 ) on Friday March 26, 2004 @12:59PM (#8680786) Homepage
    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".
  • Tabs (Score:3, Insightful)

    by Tablizer ( 95088 ) on Friday March 26, 2004 @01:48PM (#8681346) Journal
    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.
  • by alispguru ( 72689 ) <bob,bane&me,com> on Friday March 26, 2004 @02:12PM (#8681638) Journal
    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 [thefreedictionary.com] without upgrading their knowledge, would you?

    Instead, start from places like the ALU web site [lisp.org] or Cliki [cliki.net] or Paul Graham's Lisp FAQ [paulgraham.com].

    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 [c2.com] by doing this, so be forwarned.

  • need IDE more (Score:4, Insightful)

    by spectrokid ( 660550 ) on Friday March 26, 2004 @03:19PM (#8682505) Homepage
    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.
  • by Lulu of the Lotus-Ea ( 3441 ) <mertz@gnosis.cx> on Friday March 26, 2004 @04:03PM (#8683130) Homepage
    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.
  • by brundlefly ( 189430 ) on Friday March 26, 2004 @04:23PM (#8683403)
    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.
  • by sacrilicious ( 316896 ) <qbgfynfu.opt@recursor.net> on Friday March 26, 2004 @04:48PM (#8683786) Homepage
    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".

  • by hak1du ( 761835 ) on Friday March 26, 2004 @09:23PM (#8686196) Journal
    If you want a nice, clean, prototype-based OO scripting language, check out Lua [lua.org]. 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.

Math is like love -- a simple idea but it can get complicated. -- R. Drabek

Working...