Summary
Given a solid OO education and C++ background but having missed some of the traditional CS language theory, what is a minimum required reading list, especially when designing a non-traditional language?
Advertisement
I'm designing CEDSimply to be readable and useful for a lot of non-programmers and people not necessarily wanting to work in English.
This has taken me into some interesting places, playing with Forth and Lisp but I'm now trying to round out my missing education. I do not want to spend the next couple of years doing nothing but reading but I also think there is some core stuff I should have covered to have any credibility in language design and, more importantly, to avoid wasting time reinventing concepts.
I'd second the Van Roy and Haridi book Concepts, Techniques and Models of Computer Programming. Yes, it's big and expensive, but it's worth it. In fact, many people have suggested it as a successor to Abelson and Sussman. Definitely give it a chance.
"Types and Programming Languages", by Benjamin Pierce.
The most important thing to remember is that the book is valuable even if you aren't able to follow all the theory (I ended up skipping all the longish proofs).
It was nice to find an organized and modular way of looking at the large cloud of programming language features that was aware of. It'll definitely help you navigate through the tangled web of inaccurate information available on the web (Wikipedia, blog postings, etc.).
The thread sparked by the LX developer's request for language ideas http://slashdot.org/developers/01/04/27/1846258.shtml has a telling quote Anyone writing a language today who isn't familiar with Scheme, Haskell, and ML may as well throw in the towel right now. which aligns with the advice I've already received except it throws ML into the mix.
(The http://www.mozart-oz.org/ Mozart system of the highly-recommended Concepts, Techniques, and Models of Computer Programming does not seem to be related to the LX language associated http://mozart-dev.sourceforge.net/ as far as I can tell. Maybe it's just a coincidental geek choice of project names? )
I've already read about ML's influence on Stroustrup in The Design and Evolution of C++, providing ideas such as parameterized types and exception handling by catching objects.
Should I consider more study of ML, after Scheme, OZ and Haskell?
> <p>I'm designing CEDSimply to be readable and useful for a > lot of non-programmers and people not necessarily wanting > to work in English.</p>
Is there room for one more programming language? there are 100s out there, all 90% similar. I've been reading CS material for years, I have read quite a lot of books and played with many languages, but I have to admit I couldn't come up with a new idea that will increase productivity and decrease cost. Maybe it is just me, but every new language out there seems to be a very tiny evolution of the previous languages without significant benefits compared to the previous version.
> Is there room for one more programming language?
I hope not - I really hope that the research phase of CEDSimply design allows me to put up an article explaining why language X is the answer.
However, there are several issues that as far as I can tell, current programming languages don't solve. Maybe the solution is just a front-end to one of them (possibly Python). These are issues affecting professional programmers but are even more important to non-professionals.
1) flexibility of language, including the ability to use iconic representations (glyphic languages), all the way through to redefining the core reserved words, and being able to exchange such multi-lingual code with someone else using a different language.
2) dealing with rich and sloppy data such as complex XML-based interchange of industrial and scientific data, see http://www.seegrid.csiro.au/
3) being a good fragment language, where meaningful bits of code can be embedded in a wider context
Much of the useful and fun programming of the future is going to be about fragments in user space - I want to enable that.
I have dabbled in various Smalltalks over the years but it was never something I could make a living from in Perth.
I have done one substantial Cocoa project, necessitating the use of Objective-C but that doesn't mean I think it is something that should be inflicted on others, particularly the non-professional programmers at whom I'm aiming CEDSimply.
I am not convinced as to the usability of Squeak. Interesting and powerful, yes.
Smalltalk suffers from the same aesthetic problems as Lisp and Forth. You can become a habituated reader but there's a certain initial ugliness to get over.
It is certainly way over on the Python side away from the C++ end when it comes to end-user readability :-)
Thanks to the contributors to this list and an urgent need for some (virtual) retail therapy, I now have a reading list sitting there waiting for me to make time but already impressing me with just a few quick skims.
yes, I bought :
Concepts, Techniques and Models of Computer Programming