Tuesday, March 22, 2016

[hwljkfsg] No good programming language

Provocative hypothesis: there are no good computer programming languages, nor will there ever be.

A programming language includes not only its syntax but also its libraries.  Any good programming language must have a rich collection of libraries, which already limits the candidates to a handful.

Any programming language will have bad design decisions made in the course of its development.  Human nature, many cooks, problems discovered over time and use.  We consider two cases.

There may be strong forces that prevent the bad design from being fixed: wanting compatibility with old code, ability to read old code, not wanting to inconvenience old programmers.  There may be mutual dependencies of bad features and a lack of ability to coordinate both improvements happening together, for example, two libraries maintained by different authors.

On the other hand, if those forces are weak, and the language can fix its problems quickly, then the language will be too fluid to attract a large community of programmers.  Old programmers will leave when the languages changes out from under them; new programmers will be frustrated unable to run or leverage old code, and are unable to read and understand old code.

In the future, code translation tools may mitigate some of the problems.  Translate between versions of a language.  Translate an old language's library into a new language.  Translate code using an old version of a library to a new version: this will be tricky if the library's API or underlying execution model has changed.

There does not seem to be much of an engineering approch toward designing new programming languages.  Avoid the mistakes of the past.  It's still considered more of an art.

No comments :