Programming Language

I only want to make the point that Programming Languages can and should be thought of as Development Tools just like your editor and your debugger, and that programmers ought give thought to whether or not a feature should be in a language, rather than just thinking of the languages they work in as immutable Constants Of The Universe that can never change. Thoughts?

Harold Abelson and Gerald Sussman, in Structure And Interpretation Of Computer Programs, and Paul Graham, in On Lisp, both strongly make the point that far from thinking of the language as immutable, you should think of all programming as language design. After designing the correct language, the solution to the original problem is usually clear, concise, and correct. Graham argues (convincingly) that Lisp is an ideal vehicle for designing such "embedded" languages.

This is in fact the way application development in Forth works. You start with the Forth language and then extend and modify the Forth language until the language is, essentially, your application. Those interactive languages (such as Lisp, Forth, Smalltalk, etc.) that let you create new defining words, control structures, and so on encourage this style of development, where the application domain being solved drives how the language is mutated. In contrast, programmers using non-extensible languages like C/C++ and such *are* using immutable languages. Development for them means translation of the application domain into the syntax of the language used. -- John Passaniti

What about an extra page, also linked from Forth Language :Forth Language As Development Tool .

You should also think that a Programming Language is always a Virtual Machine, in the sense that it defines a Computing Model.

A good overview over Programming Languages and concepts is

Another useful source is the Lambda The Ultimate weblog.

Progopedia - encyclopedia of programming languages:

Programming Language Design

See original on