Slashdot Mirror


Introducing The Heron Programming Language

Christopher Diggins writes "The Heron programming language, is a new general-purpose multi-paradigm programming language in the style of C++ which is starting to make waves. The popular Polish software development magazine Software 2.0 is featuring an article on Heron, in its first English version of the magazine slated to appear in February 2005. A preview of the Heron article is available."

11 of 142 comments (clear)

  1. Language link by Matchstick · · Score: 4, Informative

    Of course, the first thing I search for in the article is a link that describe the language itself. What a thing to leave out!

  2. more from cdiggins by Anonymous Coward · · Score: 1, Informative
    Courtesy of Lambda the Ultimate.

    The author of this language seems a bit clueless.

  3. Re:Willful Ignorance by Jerf · · Score: 2, Informative

    You're looking for Python and Ruby. Both are so easy to learn that the correct answer to which one is "both"; try the tutorials for both and you'll probably know pretty quickly. The thing to look for is which philosophy suits you better.

    The only thing out of that list you might think is missing is "generic programming", but in general that's because both languages support it so naturally that it isn't even a seperate paradigm. I know Python has libraries for people who insist on the trappings of generic languages, or who really, really need completely seperate functions for the various combinations of args, but I don't know much about them because while I've looked at such things, I've never encountered a situation where the "correct" answer wasn't a slighty more careful API, YMMV.

    Unless you're doing intensive numerical calculations that can not be expressed in terms of the various libraries for numerical calculation, or are really focused on embedded programming, both are plenty fast for normal programming.

    (I don't know about Ruby but there is a lot of progress towards optimizing Python being made, although I don't know if we'll ever quite get to compilation to pure native code. See PyPy, for instance, which has recently been funded so it ought to stick around and produce something. I expect that within another couple of years, through one avenue or another, the speed penalties of Python will be gone for all practical purposes.)

    Granted, neither of these may currently perfect... but holy cow, are they better than C++. Unbelievably better, for the vast majority of uses.

  4. Re:Willful Ignorance by cdiggins · · Score: 2, Informative

    Heron2C compiles to C++, where did I give the impression it compiles to Java? Heron attempts to satisfy all of those goals you list. Check it out at http://www.heron-language.com/

    --
    Christopher Diggins
  5. Disclaimer by Geoffreyerffoeg · · Score: 4, Informative

    Note that Christopher Diggins is both the author of the language and the article submitter. This may affect your perception on whether a new C++like language is really newsworthy.

  6. No Thank You by Tom7 · · Score: 2, Informative

    The world does not need more C-alike languages, especially if they don't even add in higher order functions and sum/product types. What are they thinking?!

    1. Re:No Thank You by Anonymous Coward · · Score: 1, Informative

      A sum type is a type that can be either one thing or another -- a bool is either True or False, a integer is either positive or negative.

      Product types have a value from each composing type -- a point has an x and a y coordinate.

      As an example, a list can be viewed as a sum of products - it is either empty or (a first item and another list).

  7. Re:Another statically typed language? by Anonymous Coward · · Score: 1, Informative
    Static typing extract a huge cost in language complexity (templates, anyone?). Many of the patterns in the GOF book are only there to let you get the job done when the type checking system is trying to stop you.

    When the primitive type system of a primitive statically typed language like C++ or Java is getting in the way, perhaps.

    A modern statically-typed language like ML does not have complexities like templates.

    For example, suppose you want to create a list of integers. Let's look at the hated C++:
    #include <list>
    using namespace std;
    list<int> foo;
    foo.push_back (1);
    foo.push_back (2);
    foo.push_back (3);
    foo.push_back (4);
    I agree with you: that is ugly and clunky.

    Let's look at that in Python:
    foo = [1, 2, 3, 4]
    I agree with you: that is much simpler and much more elegant.

    Now let's look at it in OCaml, a modern statically-typed language:
    let foo = [1; 2; 3; 4]
    Can you explain to me how this is more complex than the Python example?
  8. Re:Willful Ignorance by Anonymous Coward · · Score: 2, Informative

    first class functions in a static language? This is like having mallable steel trusses? What is this trying to do again? If you want first class functions, you'll want a define-on-the-fly language as well.

    You, sir, are either trolling or criminally ignorant.

    Here is a statically typed, natively compiled language that provides fully first-class functions.

    Here is another.

    There are many others; those are just the most widely used.

  9. Re:To Quote Steve Jobs... by p3d0 · · Score: 3, Informative
    I commend the designer of the Heron language for trying to simplify some of the complexity of C/C++ (Just like the D language and Eiffel tried)
    Actually, Eiffel predates the first edition of The C++ Programming Language, and was much more influenced by Ada and even Smalltalk than by C++.
    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  10. Re:Willful Ignorance by Anonymous Coward · · Score: 1, Informative
    Speaking of wilful ignorance...


    The only thing out of that list you might think is missing is "generic programming", but in general that's because both languages support it so naturally that it isn't even a seperate paradigm.


    They are both dynamically typed, so they provide no support whatsoever, they just stay out of your way while you support yourself. They don't actively get in your way like C++ and friends, but nor do they know to poke their noses back in when you've introduced a bug like a modern statically-typed language would.


    I guess it's only fair that I try to answer the question, since I've ruled your answer out. Hmmmm. I'm not sure anything fits all of those criteria - there is only the tiniest niche for languages that have the safety features useful for complex programs and the desired low level features - but I'll stick my neck out and suggest Cyclone. The only real caveat I can see is that ad hoc polymorphism is only supported in the bare form of existential types (ETs are effectively the assembly language of OO) but that's still vastly better than C and infinitely safer than C++. To be honest, I'd recommend you just write everything you can in Haskell and then invoke little snippets of C or Cyclone when you need the low level access - fortunately there's a lot of common ground in learning the Cyclone and Haskell type systems.