Introducing The Heron Programming Language 142
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."
Language link (Score:5, Informative)
more from cdiggins (Score:1, Informative)
The author of this language seems a bit clueless.
I think I'm not the only one (Score:2)
Re:I think I'm not the only one (Score:3, Funny)
Re:I think I'm not the only one (Score:4, Funny)
Willful Ignorance (Score:3, Insightful)
See Lambda The Ultimate [lambda-the-ultimate.org].
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 [scala.epfl.ch], the well-grounded Nice [sourceforge.net], and the nearly complete Aldor [aldor.org].
And there's no way I'm downloading and installing Kylix just to try it out.
Re:Willful Ignorance (Score:1, Troll)
Specifically, I'm looking for a language that is:
* expressive - moreso than C#
* multiple paradigm - supporting features like closures and first class functions
* supports generic programming - this is too useful to leave out. I don't mean crippl
Re:Willful Ignorance (Score:3, Informative)
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 la
Re:Willful Ignorance (Score:1, Informative)
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 s
Re:Willful Ignorance (Score:2, Informative)
First class functions (Score:1)
Re:Willful Ignorance (Score:2, Informative)
You, sir, are either trolling or criminally ignorant.
Here [inria.fr] is a statically typed, natively compiled language that provides fully first-class functions.
Here [haskell.org] is another.
There are many others; those are just the most widely used.
Re:Willful Ignorance (Score:1)
Sorry, i'll have to pass (Score:2, Insightful)
new general-purpose multi-paradigm
is going to lead me to believe that it was developed by an Executive, a consultant, or, worst of all, a corporate motivational speaker!
No thanks..
Re:Sorry, i'll have to pass (Score:2)
What's the problem? General-purpose isn't a buzzword, and multi-paradigm is a common way to describe languages that aren't restricted to just one style of programming, such as imperative programming, object-oriented programming, functional programming... just because paradigm is a fancy-pancy word does not mean
Re:Sorry, i'll have to pass (Score:2)
"General purpose" -> it's meant to be used for general applications. Unlike a special-purpose language like Postscript, PHP, etc.
"Multi-paradigm" -> It supports multiple styles of programming (eg: object oriented, meta programming, aspect-oriented programming, procedural, etc). As opposed to "single-paradigm" languages like Java, that stress a single programming style.
I bet you just saw the word "paradigm" and jumped on it...
Thoughts (Score:1, Redundant)
"in the style of C++" - Ouch.
Seriously, multi-paradigm is good. Or rather, single paradigm is bad. No paradigm is ideal for every case, so a language that enforces one paradigm (e.g. Java) will be ill-suited to many situations.
What does "in the style of C++" mean, though? Does it mean Heron is another language with a standard too large to fit in a programmer's head, and a hellish syntax that is difficult to parse for both humans and machines?
Re:Thoughts (Score:3, Insightful)
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.
Re:Thoughts (Score:1)
In some Common Lisp implementations, you can explicitly manage your own memory if you feel like dealing with the pain; just wrap everything in (without-gcing
Re:Thoughts (Score:2)
Have you ever used Lisp? And do you understand what 'multi-paradigm' means?
C++ was designed as an object oriented extension to C. It does imperative programming well, and object oriented programming fairly well.
Lisp was initially designed as a functional langauge, but modern lisps bear little resemblence to the first lisp beyond superficial appearance. Modern lisps fully support functional programming, imperative programming, object oriented programming, and to some extent, declarative pro
Re:Thoughts (Score:1)
You have obviously never programmed kernels..
And while you can implement any semantics in Lisp, the syntax always stays the same; that of a _very_ primitive functional language ((((hi hi hi)))). C++ has the sometimes hated ability to put new sematics to old operators, and thereby completely change the paradigm of the language.
Re:Thoughts (Score:2)
Re:Thoughts (Score:1)
Python is a proper multi-paradigm language. Do OO if you want, do functional if you want, do imperative if you want. Lisp is less multi-paradigm than c++, at least there you have the choice of OO or imperative.
Re:Thoughts (Score:1)
Actually, it's kind of weak as a functional language, with most implementations lacking proper tail recursion elimination or any syntax for composition or currying. polymorphism is absent outside CLOS, which isn't quite functional oriented either (a method that's still generic isn't first-class, you have to pass the method belonging to something. usually one gets around that with symbols). It's possible to g
Re:Thoughts (Score:1)
(method object object object object
Where of course, some of the objects can be of unspecified class, so that the actual implementation of the method need not depend on specifying every possible combination. And, unlike some OO languages, every built-in type has a corresponding class to dispatch on.
Re:Thoughts (Score:2)
With lisp, you can do functional, imperative, OO (since before C++ was a glimmer in Stoustrop's eye), and there are extensions for declarative programming and probably any other paradigm you could think of.
Re:Thoughts (Score:2)
To program in lisp, you have to do functional programming. Yes, you can wrap something else in it, but if you really want to you can wrap any way of programming in any other - lisp people have some line that any program complex enough will include a lisp interpreter.
As far as having an agenda, I'm not being paid or anything. I enjoy python programming
Re:Thoughts (Score:2)
Most functional programming languages make you jump through special hoops to do I/O to avoid side-effects.
Lisp has many of the aspects of functional programming fully and properly supported, such as
- functions as first-class objects (can be assigned, passed, and returned, just like objects of other types)
- apply/funcall/map... to allow function application under program control
- closures allowing functions to be
Re:Thoughts (Score:2)
Re:Thoughts (Score:1)
Consider, for instance, the section on iteration [lisp.org].
Re:Thoughts (Score:2)
while (less-than x 5)
do (princ (incf x)))
--> prints "12345"
This illustrates a few things about lisp, related to points you've made:
1) It is not functional. Less functional than C, in fact, because C forces you to define at least a "main" function, whereas this is a valid program by itself. Also, it uses side-effects - incf increments its argument. That's a no-no for strict functional languages
2) Loop is in the lisp standard, but it's not lisp. It's an embedded language for it
Re:Thoughts (Score:2)
While it may not be "pure functional" it's functional enough that you have to be able to do functional programming to use it. I will agree that implementing sublanguages in lisp is easier than
Re:Thoughts (Score:1)
No you don't. What makes you think this? You could write a virtually line for line translation of a C program if you wanted to. Lisp has loops, assignment and block structure, so it supports traditional imperative programming perfectly well.
I will agree that implementing sublanguages in lisp is easier than in most languages - but you're still forced to program basically function
Re:Thoughts (Score:1)
Re:Thoughts (Score:1)
What's the problem? identity doesn't have a type, nor does it need one, since you haven't used it yet. If you use it (though I can't imagine why), it will have a type.
Are you trying to say the problem with C++ is that you don't understand templates?
Re:Thoughts (Score:2)
That's not so exciting for someone who programs in C/C++/Java, because only one program needs to parse your program, namely, the compiler. (OK, also your IDE to do syntax highlighting and name completion.)
But in Lisp, almost everyone writes programs that depend on parsing and rewriting Lisp programs. Informally, we call these program-writing programs "Lisp macros," but that always gives outsiders the wr
To Quote Steve Jobs... (Score:5, Insightful)
"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
Re:To Quote Steve Jobs... (Score:3, Informative)
Re:To Quote Steve Jobs... (Score:2)
Disagree for the 200% better part, currently there is no functionnality which can gives a 200% improvement in language design.
But having a language which integrates many small improvements inside something coherent (unlike C++ which is clearly a mess) would still be valuable IMHO. Some claims that Java/C# are the answer, I'm not so sure, D or Nice seems more interesting..
hmmm... (Score:1)
Just a thought..
Cheers!
Re:To Quote Steve Jobs... (Score:2)
I don't quite agree with that. The following are relatively recent additions to the programming world -- at least outside of academia -- that yield productivity benefits way better than that in their respective areas of strength:
Re:To Quote Steve Jobs... (Score:1)
Re:To Quote Steve Jobs... (Score:2)
<Obligatory> Garbage collection prevents certain classes of memory leak. It has nothing to do with buffer overflows. </Obligatory>
Re:To Quote Steve Jobs... (Score:2)
with buffer overflows.
Your comment is correct from a nitpicking point of view. As a language design choice, garbage collection and range checking are virtually always implemented (or not implemented) together. Having no range checking can easily bring down the entire garbage collection system by corrupting its structures. Range checking by itself doesn't help much if the pointer you are range-checking is a stale reference to d
Another statically typed language? (Score:2, Interesting)
Yet another statically typed language?
A statically typed language provides a little bit of value: The compiler does a small bit of the testing you should be doing anyhow. In return, 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.
This language may appeal to those who don't like C++ but think that the particulars of the language is the proble
Re:Another statically typed language? (Score:2, Insightful)
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.
Re:Another statically typed language? (Score:1)
Re:Another statically typed language? (Score:2)
Re:Another statically typed language? (Score:1)
Re:Another statically typed language? (Score:1, Interesting)
Ok, so all the highly- [franz.com] optimizing [lispworks.com] Common [corman.net] Lisp [sf.net] compilers [cons.org] are fakes? [digitool.com]
Or maybe you have no idea what you're talking about? I'm guessing the latter.
Re:Another statically typed language? (Score:1)
Re:Another statically typed language? (Score:2)
Re:Another statically typed language? (Score:2)
Using an appropriate language for the job (statically typed or dynamically typed) is much more appropriate, instead of advocating a one size fits all approach.
Re:Another statically typed language? (Score:2)
Re:Another statically typed language? (Score:2)
Re:Another statically typed language? (Score:2)
Hm, interesting. I don't know about you, but spending my time coding around typing issues, which can be better handled automatically using duck typing [c2.com], is exactly my idea of "huge cost".
Re:Another statically typed language? (Score:2, Interesting)
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.
Static typing is great!! (Score:3, Insightful)
Re:Static typing is great!! (Score:2)
Type inference is great, and I think that it should be part of every language, but O'Caml's type system has some nasty corners.
Re:Static typing is great!! (Score:2)
If it bothers you that you need to specify the sort orde
Re:Static typing is great!! (Score:2)
Setting the sort order explicitly doesn't bother me at all; what bothers me is needing to use parameterized modules, which looks like bloating your
Re:Static typing is great!! (Score:2)
One reason to use parameter modules is to leverage the module system to create different types for your binary trees. For instance, if you had a union function (type 'a tree * 'a tree -> 'a tree), you might want to prevent the union of two trees that had different sorting functions (even if they worked on the same basic types; ie case-sensitive and case-insensitive sorts of strings). This is a win f
Re:Static typing is great!! (Score:2)
Re:Another statically typed language? (Score:1, Informative)
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++:
Re:Another statically typed language? (Score:2)
But
int foo[4] = {1,2,3,4};
doesn't seem any more complex than your other examples. Of course, that's an array, not a linked list. I don't know Python or OCaml, so I'll assume your examples indeed produce a linked list, not an array. Out of curiosity, how do these languages specify an array? Or any of the other half dozen or so variants C++ can specify?
Re:Another statically typed language? (Score:1)
I'm not trying to be argumentative, I just really don't understand: How can you specify (for example) that you want (in C++ terms) a list vs. a vector without a type specification? The two are different; if I want one and not the other, it seems to me I'd need to specfify.
I'd agr
first things... (Score:3, Funny)
"Heroin. It combines the power of assembly language, with the ease of use of assembly language."
(an old quote, usually applied to "C")
Disclaimer (Score:5, Informative)
As a C++ programmer... (Score:5, Insightful)
Perhaps next you'll tell me it has the speed of Python and the type-safety of perl....
Re:As a C++ programmer... (Score:2)
Re:As a C++ programmer... (Score:1)
Re:As a C++ programmer... (Score:2)
The speed of Python is the one to be afraid of. Java at least lets you use C for things which you need to.
Wow, am I insightfull
Re:As a C++ programmer... (Score:2)
Re:As a C++ programmer... (Score:2)
Basically a lot of java.lang is written in C. The same for java.io, java.net and java.awt (the abstract windowing toolkit) and java.nio.
Swing, OTOH is pure Java but based on 3 AWT classes.
I think people should try a modern java appliation
You still fail into the 1995 historical "Java is slow" trap.
angel'o'sphere
Re:As a C++ programmer... (Score:2)
Basically a lot of java.lang is written in C. The same for java.io, java.net and java.awt (the abstract windowing toolkit) and java.nio.
Hmm, it's just the impression I've got from the beos people and the fact it's so slow. My impression was that the java approach was to wrap the basic OS api for, say, tcp sockets and then implement any other java libraries (e.g. http server) in java on top of this, wheras python wraps the os tcp sockets and http server libraries separatel
Re:As a C++ programmer... (Score:2)
My fastest was a 250 MHz Pentium
Today I mainly use Java apps
However your system is low on memory (IMHO). And the perception of the perceptee is allways the truth in the eye of the perceptee, anyway. So if you feel a noticeable delay, there likely is one. And while I dont feel any, there
Re:As a C++ programmer... (Score:2)
Re:As a C++ programmer... (Score:2)
Gosh. (Score:5, Insightful)
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 [heron-language.com].
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.
Re:Gosh. (Score:2)
No.
Not at the school I went to, anyway.
Re:Gosh. (Score:2)
Re:Gosh. (Score:1)
After learning how powerful and amazingly useful a hygienic macro system really is, it frustrates me to no end when I see new languages being created without some equivalent facility.
Hopefully someday the average programmer will realize what he's missing.
Re:Gosh. (Score:1)
No Thank You (Score:3, Informative)
Re:No Thank You (Score:1)
Re:No Thank You (Score:1, Informative)
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).
Re:No Thank You (Score:3, Interesting)
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. Th
Benefits over D? (Score:5, Interesting)
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 [earthlink.net].
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.
Tim O'Reilly (Score:4, Funny)
wikipedia article was almost deleted (Score:5, Interesting)
Re:wikipedia article was almost deleted (Score:5, Funny)
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!
Re:wikipedia article was almost deleted (Score:1)
Not if the GC is a ref-counter. In that case he's a memory leak.
Re:wikipedia article was almost deleted (Score:2)
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!
Not as long as one or both are still on your stack.
Re:wikipedia article was almost deleted (Score:2)
Remember, in his world there's no garbage collection.
ZzZzZzZz..... (Score:1)
How is this language not Eiffel with C++ syntax??
bad typesetting! (Score:1)
In English you are NOT allowed to stick a hyphen wherever you want to in a word! When you want to split a word between the end of one line and the beginning of the next, you must only do it between syllables! Any worthwhile English dictionary shows where the syllables split in the words.
If you print the article as it is typeset in the preview, not only will it be hard to read, but you're gonna look pretty mediocre.
monty python (Score:1)
Re:C++ has a style? (Score:1)
Re:OT, feel free to mod down ;P (Score:1)
Happens to me all the time...
Also... sometimes FireFox fails to render the
Anyone else with this rendering glyph in FF?
Re:OT, feel free to mod down ;P (Score:1)