Slashdot Mirror


Designing And Building A New Pragmatic Language

ctrimble writes "A bunch of folks on the pragprog Yahoo! Group have banded together to design and implement a 'pragmatic' programming language. Ostensibly, the language is informed by the principles in Hunt and Thomas's well-received book, The Pragmatic Programmer: From Journeyman to Master but the purpose of the language is to help ease some of the pain of development and bridge the impedance mismatch between the academic aspects of a programming language and the discipline of software engineering. The design is still very much in flux. If you're a programmer, this might be a language you'll be using in a few years (or earlier). This is your chance to get in on the ground floor. What kind of features do you want the language to have? What are your PL pain points? Where could this language do better than existing languages?"

10 of 192 comments (clear)

  1. Re:After thinking about it... by slackergod · · Score: 3, Informative

    There's pyrex, a variant of python for writing lowlevel c-code w/o going into C.

    And there's also pysco, a specializing compiler, which generates machine code for python, and gets dramatic speed ups.

  2. Re:Already done by Anonymous Coward · · Score: 2, Informative

    A pragmatic language should have mature class libraries
    Ruby does have mature class libraries. And the end is only if you use begin, you can use {} if you prefer.

  3. Re:Strong emphasis from a GUI standpoint. by pbox · · Score: 4, Informative

    You should try wxWindows + Python.

    Pyhton: pointerless, automtic garbage coll, vary FAST if using psycho.

    wxWindows: portable, yet platform optimized. Very good tools for design.

    --
    Code poet, espresso fiend, starter upper.
  4. Re:After thinking about it... by pnatural · · Score: 2, Informative

    And don't forget PyPy, of which the author of psyco is also a member. If any of these three projects will bear the fruit of a python-machine code compiler, it's PyPy.

  5. Maybe Oz by Szplug · · Score: 3, Informative
    though Oz is a bit wilder than most mainstream languages.

    Get the book free while you can; it's gotten high praise, a real treat for getting a wide view of different styles of computer programming. It compares favorably with SICS.

    --
    Someday we'll all be negroes
  6. Re:What about a graphical language by Josh+Booth · · Score: 2, Informative

    ...notation is an accidental issue -- that you can't gain, say, an order of magnitude improvement by chaning notation alone.

    Sort of like how things are added to C like dynamically typed object oriented programming (GObject), namespaces (by prefixing functions with a namespace), generic lists, hash tables, UTF-8 string manipulation, etc (GLib), arbitrary precision math (GMP). They are added not by syntax, which may make things somewhat simpler, but not significantly so.

    typedef struct {
    int bar;
    } Foo

    Foo *foo_new(void);
    Foo *foo_copy(Foo *);
    void foo_delete(Foo *);

    void foo_set_bar(Foo *, int bar);
    int foo_get_bar(Foo *);
    That's not too much different from C++:
    class Foo {

    public:
    Foo();
    Foo(const Foo &);
    ~Foo();

    void setBar(int);
    int getBar();

    private:
    int bar;
    };
  7. Re:Already done by Hawkins · · Score: 3, Informative

    It should be noted that some of this Perlesque is deliberate, and that much of it is simply syntax sugar on top of objects. The regexps, for example, are actually Regexp objects, and as such can be extended or inherited just as any other object would. matz decided to include the /regexp/ construct to aid those who were used to it. As for the $_, $&, and its cousins, if you don't like the look of those you can include the English mixin in the standard library that allows you to say things like $LAST_READ_LINE and $MATCH.

    I have to agree on the variable prefixes. @instance and @@class variables are hard on the eyes, but other than that you don't have to append anything to the beginning of a variable. lowerCase variables are local, Uppercase are constants or classes. If you're using globals in an OO language, may Dog have mercy on your soul.

    And as for the libraries, check out raa.ruby-lang.org. Many there, more being developed all the time.

    _dave

  8. Re:... and for God's sake get it right this time! by jmb-d · · Score: 2, Informative
    what does 'import java.*.event' mean?

    According to the compiler, it means a syntax error:

    foo.java:1: ';' expected
    import java.*.event;
    ^
    1 error

    --
    In walking, just walk. In sitting, just sit. Above all, don't wobble.
    -- Yun-Men
  9. Re:Could be hard... by cyberlync · · Score: 2, Informative

    I am one of the people deeply involved in this project and so far there are two people directly involved with the design. There is a third handling administration and a few others working on documention. The community comments and provides suggestions. Thats hardly a big commitee.

    On top of this the project is progressing rapidly. It may not ever take off, but it has been fun doing it and thats worth while to me.

    --
    I'm a programmer, I don't have to spell correctly; I just have to spell consistently
  10. Re:Haskell or Lisp by Anonymous Coward · · Score: 1, Informative

    if you think Haskell's syntax is unclear or Common Lisp's underlying model isn't flexible, you're clearly insane.

    I would like to see the function name moved to the left of the parenthesis instead of inside. It improves readability IMO and better fits with what people are used to.