I'm interested in understanding the ingredients that are important in
designing a language that will be successful. I found some discussions
in the above webpage. Some points are interesting to me. But it was
written in 2001 and may not be covers anything that are important.
I'm wondering if there are more detailed and recent references and
research on language design (not on compiler implementation issues).
Hey there,
This is something that's quite close to heart at the moment, I've been
designing my language for about 10 months wo thats nearly a yea of my
life! And I Can Say I Need More People :).
Its a lot harder than i expected it could be, one thing i would say to
help people is DO YOUR RESEARCH. It's what really helps me anyways,
playing with other languages as much as you can, and finding what you
like and _why_. But the crucial part is to keep making your own
programs in your language over and over again, lots of silly things
even if it is to add some numbers or something. This is what a group
of people would really help me anyways: in like scrutinizing the
syntax and semantics of whats needed to perform the computation at
hand.
In fact i belive in designing the language as a group so much at the
moment i am actualy going to start up a mainling list soon, and try
and get as many people i can to post and say what they think would be
'cool' or 'useful' to have had from a language or api in a language to
accomplish X. To see if i can find some interesting ideas and hey
maybe some people might join me in my project.
But your question was on finding text's etc on language design, this is
quite hard to find really. Looking other peoples language specifications
helps sometimes like the Go Programming Language's has a nice language
specification section on their site: http://golang.org/doc/go_spec.html.
As well as Python has some and Perl i am sure has it too.
But for a proper text, the dragon book has some bits and pieces
referring to it, but its mainly talking about semantic analysis. Though
really that's what language design is in many, many ways since you
really have to think why do we need syntax X,Y,Z you know.
Or even better this book has a decent section on language theory which
is actually very good reference when designing grammars:
http://www.amazon.co.uk/Introduction-Theory-Computation-Michael-Sipser/dp/0619217642
Its quite nice if you haven't done much formal method type stuff in
computer science its nice and easy to get into.
Hope this helps!
--Phil
Looking at the mainstream computer languages widely used today, I
would imagine one of the most important reasons they are "successful"
is that they more than casually resemble a predecessor language like
C. Again, talking mainstream languages, I would even argue that since
the 55 years Fortran has been around, we have made very little
progress in computer language design - the notable milestones would be
structured programming (if - then - else) and object orientation.
Although the GO language's goroutines are a nice idea and addition,
once again, the rest of the language looks, unsurprisingly and perhaps
by design, a lot like C. I think we have a serious computer language
crisis - the languages themselves which command a good deal and
growing amount of mind share, i.e. Java and C#, are keeping us in a
computing stone age.
The market shows its inertia by choosing the familiar.
I would suggest the book "Blink" by Malcolm Gladwell for an insight
into how some humans might accept or reject an idea. This was a very
successful book a few years ago and should be still very easy to find.
There are two types of references you might consider;
(i) Textbooks on programming language design/comparison
(ii) literature on Domain Specific Language design.
An example of each is below.
Programming Language Pragmatics (3rd edition 2009) (http://
www.cs.rochester.edu/~scott/pragmatics/) is a textbook that discusses
language design and implementation.
Some of the work on Domain Specific Language Design may also be of
interest to you;
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.735
is a recent survey.