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

23 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. Willful Ignorance by Anonymous Coward · · Score: 3, Insightful
    Diggins makes absurd statements like:
    • "As a programmer for over 20 years, I have never been concerned with what a 'type system' is."
    • "Every programming language I am familiar with has the same basic concept: values and expressions may or may not have a type."
    • "The concept of "term" is irrelevant to the implementation, design and use of programming languages."

    See Lambda The Ultimate.

    I'm not sure how Heron is going to emerge from the mess of C++ish languages that includes Java (and variants like HyperJ and AspectJ), C#, the also new (but much more active) Scala, the well-grounded Nice, and the nearly complete Aldor.

    And there's no way I'm downloading and installing Kylix just to try it out.
    1. 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.

    2. 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
    3. 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.

  3. Re:I think I'm not the only one by DesScorp · · Score: 2, Funny

    You're not the only one...at least we know what the C stands for in C/C++...that would be the Crack programming language I suppose...

    --
    Life is hard, and the world is cruel
  4. Re:I think I'm not the only one by shadow303 · · Score: 3, Funny

    I personally read it as the Herring Programming Language. I guess I have been hearing too much about Python and Parrot lately.

    --
    I've got a mind like a steel trap - it's got an animal's foot stuck in it.
  5. To Quote Steve Jobs... by smug_lisp_weenie · · Score: 5, Insightful

    (in reference to the Next Cube)

    "In order for people to adopt a new computing platform you can't give them something that is 30% better- You really have to give them something that is 200% better and that is what we failed to see at Next."

    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) and some persons may benefit from such a tool. But I fail to see how a language with some minor improvements in contract and aspect-oriented programming support is really offering more than 10-20% improvement in terms of design over vanilla C++ - Not that anyone says it has to, but to truly make waves in the programming world I think a larger advance would really be necessary...

    Also, I am skeptical of the practicality of new languages that don't support garbage collection- Garbage collection is just such a huge win in terms of productivity in many programmers' eyes, not to mention its ability to prevent viruses/exploits from buffer overflows. I coudn't imagine adopting a new language that doesn't at least have this one critical feature, even if you carry a tiny performance overhead because of it...

    Still, it's always nice to see people working on new ideas in language design!

    --Conrad Barski

    1. 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....
  6. first things... by XO · · Score: 2, Funny

    When I saw this, I read it as "Heroin"... then I thought...

    "Heroin. It combines the power of assembly language, with the ease of use of assembly language."

    (an old quote, usually applied to "C")

    --
    "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
  7. 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.

  8. Re:Another statically typed language? by cdiggins · · Score: 2, Insightful
    The problem with dynamic languages, like Python, is that they can't be easily compiled to native code and optimized.

    I think that the particulars of C++ are the real problem, with all of the backwards compatibility issues, and incremental addition of new features without apropriate removal or updating of deprecated functionality.

    --
    Christopher Diggins
  9. As a C++ programmer... by Tim · · Score: 4, Insightful

    Let me just say that the last thing you want is to emulate is the style of C++!

    Perhaps next you'll tell me it has the speed of Python and the type-safety of perl....

    --
    Let's try not to let fact interfere with our speculation here, OK?
  10. Re:Another statically typed language? by selsine · · Score: 2, Interesting

    Personally I like to code using statically typed languages MUCH (emphasis mine) more then when using dynamically typed languages.

    For whatever reason I find statically typed easier to work with, so much so that I am always surprised when people say how much they love dynamically types languages.

    Differences of opinions, whatever.

  11. Gosh. by Kickasso · · Score: 4, Insightful
    Who, in this day an age, deliberately designs a non-hygienic macro system? Don't they teach Scheme in CS101 courses?

    Note: call it a macro system, or call it a type safe generic metaprogramming facility, or whatever. I don't care, it's still not hygienic. The relevant wording is here.

    Gentle Slashdotter, if you are ever to design a programming language, please make sure its scope rules (whether run-time or compile-time) are sane. Thank you.

  12. 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 Tom7 · · Score: 2, Interesting

      They arise from logic, which is the basis of functional programming (some might also say category theory, but they arise there, too. ;)) They are very simple and useful for regular everyday programs, and it's odd that they don't exist ALL in mainstream languages.

      Product comes from the logical proposition "A and B". It consists of a value of type A, and a value of type B together, ie, a pair. Languages often call the elements of product types "tuples," and usually they are generalized to length-n tuples. This is really convenient when you just want a function to return two or more values.

      Sums are more conspicuously missing from popular languages, even though they are a direct dualization of products. They come from the proposition "A or B", so a value of type "A + B" is *either* a value of type A, *or* a value of type B. This is very useful as well. To construct a value of sum type, you say whether you have an A or B:

      if x has type A

      Left x has type A + (anything)
      Right x has type (anything) + A

      and if y has type A + B

      then

      case y of
      Left l => ... e1 ...
      | Right r => ... e2 ...

      Within e1, we know that l has type A, and within e2, we know that r has type B (although only one branch will be run). This is superior to "if (y.tag == T_LEFT)" because there we don't automatically learn anything about the type of the body of y (supposing it is a C union, or something). Well, C and C++ and Java don't have very good type systems...

      Of course you can do these things with classes in an OO language, but in general having to use a heavyweight item to do a simple thing is just a pain. (Especially sums -- it seems the standard way to do this is by a series of 'instanceof' tests followed by casts, ugh.)

  13. Benefits over D? by Per+Wigren · · Score: 4, Interesting

    Heron seems to be aiming at the same market as the D programming language, but IMHO Heron is too much C++-like with all its ugliness.

    D is a lot more like Java/C#, but compiled to native code and is low-level enough for it to be used for things like where only C and C++ are feasable now (low-level libraries, toolkits, even kernel drivers).. And besides, there is already a (beta) D Frontend for GCC.

    With all the positive attention that D has had recently I find it unlikely that Heron will be chosen over D by anyone, but only time will tell... And the competition is good for both languages. :)

    --
    My other account has a 3-digit UID.
  14. Tim O'Reilly by OldAndSlow · · Score: 4, Funny

    will have no trouble deciding what animal to put on the cover of this book.

  15. Static typing is great!! by Tom7 · · Score: 2, Insightful

    I think you're way off base. Static typing helps you catch a large fraction of bugs (these fraction of these bugs being proportional to the quality of your type system) before you ever run your program, which is a very real win. Testing is particularly bad at catching problems in unanticipated inputs or situations, so I don't believe testing can replace static typing as a bug-finding mechanism. (Although testing is of course still important, since it provides another avenue to find bugs.) Tracking down the cause of a type error is always easier than tracking down the cause of a runtime error.

    Static typing doesn't come at a huge cost in language complexity. C++ is complex and broken, yes, but there are many much simpler languages (like SML, O'Caml, Haskell) that are statically typed and very elegant. Being a user of SML, I can attest to the fact that its static typing helps catch loads of bugs early--to the point where if your program compiles, it is probably right (indeed, many of the undergraduates at our school, even if they hate typed functional programming, believe this by the end of their first semester with it--I have TA'd these classes and watched programmers learn many times!)

    The future (and indeed, where most language design research is done today) is in more powerful type systems that let us express our ideas even more cleanly, reducing run-time bugs even more.

    (Again, C++ and Java are definitely not exemplars of this ideal.)

  16. Re:Thoughts by Carewolf · · Score: 2, Insightful

    Lisp is a functional programming language you can bend (usually in the Scheme form though).

    C++ is the only major inherently multiparadigm language. For instance try to make Lisp a hardware-close explicit memory managed language. Any new multiparadigm language is going to borrow a lot from C++, because it is the king.

  17. wikipedia article was almost deleted by bcrowell · · Score: 4, Interesting

    The wikipedia article on heron was almost deleted. Many wikipedians apparently felt that the language (which only had one user) was not important enough to be "encyclopedic." The vote ended up being against deletion. There's a discussion of it on the article's talk page.

    1. Re:wikipedia article was almost deleted by fuzzy12345 · · Score: 4, Funny
      Yeah, bit Christopher Diggins is "best known for developing the Heron programming language." [cdiggins.com]

      If Wiki deleted the article, and we were left with Chris pointing only to Heron and the language pointing only to him, the garbage collector would discard them both!

      --

      Everybody's a libertarian 'till their neighbour's becomes a crack house.