Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Perfect.

To me it looks like a few new languages are introduced every week and I just cannot understand why. I can understand that a programmer who reaches a certain level wants to build his own language, but do they really think that the world is waiting for yet another programming language? It is just not getting easier with a new language.

This article is a must read for everyone who considers writing a new language. If all the arguments do not apply for your language, then the world is probably really waiting for your new language. :)



I believe that it is good for any programmer to at some point in their development create a simple language and write an interpreter for it. First, you learn parsing, then you learn what actually makes a language tick. Then you learn what goes into the design process, when you realize you've designed yourself into a corner. Then you start reading up on language design, stumble across sites like Lambda-the-Ultimate.org, and find out that there is a lot more than imperative / OO programming. Then you start getting into the Lisp literature, and reach a zen-like state. Then you snap back to reality, and become a slightly better programmer, who is a bit more humble.


Yes, but there is a difference between writing a lisp interpreter, and expecting that the world will use your lisp interpreter for actual projects. :)

I would also recommend writing a game to any developer. This includes graphics, UI, performance optimization, maybe graph algorithms and more, but like with languages, the result will in most cases not be able to compete with professional games that are already out there.


First, you learn parsing, then you learn what actually makes a language tick. Then you learn what goes into the design process, when you realize you've designed yourself into a corner. Then you start reading up on language design, stumble across sites like Lambda-the-Ultimate.org, and find out that there is a lot more than imperative / OO programming. Then you start getting into the Lisp literature, and reach a zen-like state. Then you snap back to reality, and become a slightly better programmer, who is a bit more humble.

Or (more likely, in my experience) you throw together a parser and then expand into a rudimentary interpreter/compiler and continue along your merry way having essentially reinvented some language you already knew with a few superficial differences.


Repeat several times to become a much better programmer, but possibly lose the humbleness.


Final step: Co-exist as one with John Carmack and all other ascended souls.


> I can understand that a programmer who reaches a certain level wants to build his own language, but do they really think that the world is waiting for yet another programming language?

Lots of people build model trains. They aren't trying to compete with Amtrak.


I myself am waiting for a new programming language. The right languages can definitely make the world easier. Denying that would be equal to declaring one of the existing languages is optimal/perfect.


I don't expect that there ever will be a perfect or optimal programming language. There is also no perfect natural language.

I would rather say, that the language is just a vehicle and especially beginners identify themselves too much with their preferred language, while more advanced programmer think more in terms of concepts.

You can solve most of the problems with any of the existing languages. Every language has its strengths and weaknesses, but I would say this pretty much balances out, the more different problems you try to solve with a language.


> I don't expect that there ever will be a perfect or optimal programming language.

I agree for the present, because of (among other things) the degree to which modern programming languages contain explicit references to particular hardware limitations and problems. The fact that resources are drawn from stack, heap and mechanical storage device, and the existence of rules for choosing which is appropriate, only tells us how primitive modern languages are.

Mathematics might stand as a counterexample (of a universal language) if it were easier to use for programming -- but that problem is being addressed, and computer languages become more like mathematics as time passes.


I disagree that mathematics is a universal language. Yes, "everyone" understands that 1 + 1 = 2 (most of the time, anyway), but that's not all there is to mathematics. There are vast numbers of different branches of mathematics, often compatible but also often incompatible (in both notation and semantics). There is a fairly common core of mathematical syntax, but beyond that different branches will use their own syntax. Perhaps that's like Lisps: the same fundamental meta-syntax but significantly different and often incompatible semantics and syntax on top of that.


I wasn't arguing that mathematics is a universal language, only that it approaches the ideal more closely than the present generation of computer programming languages.

> There is a fairly common core of mathematical syntax, but beyond that different branches will use their own syntax.

The fact that mathematics has many divisions isn't a counterargument unless mathematicians use different notations to refer to the same things. Apart from notoriously overused Greek letters, notations are unique and independent.

Spoken languages have many distinct vocabularies to serve the needs of specialists, but this doesn't undermine the usefulness of the language as a general tool. Same with mathematics.


I think the world is waiting for a new programming language. It is about that time historically and we are going into a situation where cores have replace GHz. Its not clear what the model will be. I think a lot of the new languages are models for how the language designer is thinking (or not) about these new realities. At the same time, the hop from PC to Post-PC like the hop from Mini to PC, brings new constraints (dammit, where'd all my memory go) and a new environment to the programming (what do you mean the computer moves while my program is running).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: