Comment by wheels

15 years ago

Another thing that's changed is who is creating the dominant programming languages.

In the programming-language-as-a-spec days, people versed in programming language design created the dominant programming languages. In the programming-language-as-an-open-source-project world, languages tend to be created by people that are relatively clueless about language design at the start (this holds for at least Perl, Python and Ruby). I don't know what the root of such is, but there seems to be some negative correlation between the design integrity of a given language and its popularity (for web hackers at least – Java and C# adhere to the old model).

In contrast, Lisp seems to be fairly popular among folks that are programming languages enthusiasts. So for whatever reason, there's a gap between the folks that are creating new popular languages, and the sort of people that tend to be Lisp fans.

The other bit is that, well, Lisp looks funny. This is something like someone looking at a language that uses Greek or Cyrillic or Arabic alphabets and assuming that they're by default harder languages because they use different characters. In fact, a reasonably clever person can learn a new alphabet in a day. It's a totally artificial barrier for someone who's serious about learning the language since the investment to learn the new alphabet is dwarfed by the work of actually learning the language, but it tends to make it scarier if upon casual inspection. I suspect Lisp pushes some people away via a similar artificial barrier.

My understanding is that prior to creating Perl, Larry Wall had studied (natural language) linguistics, with an aim towards perhaps designing a writing system for some natural language.

I believe he's explicitly rejected the ideas (common in the Lisp world) that extreme conciseness and conceptual orthogonality should be the ultimate goals of programming language design.

Calling him "relatively clueless about language design" seems a little odd.

I think the inverse correlation you've found is easily explained. There are folks who design languages from the perspective of academia and there are folks who design languages from the perspective of practicality, and there is not much overlap in those communities. Perl and PHP are imminently practical languages, but they never would have been put forth by academia, because they are not pure, they aren't interesting in a research sense.

  • It's difficult to say that with complete conviction. Racket, for example, aims to be very practical. However, most of the research in PL isn't necessarily on entire new language systems as a whole, but maybe a specific feature or category.

    Disclaimer: I guess by association I'm affiliated with this group[1].

    [1] http://www.racket-lang.org/people.html

Matz was a researcher working on compilers and programming languages when he created Ruby, so it doesn't seem obvious to me that he was "relatively clueless about language design" at the start.

  • He was definitely clueless about the implementation of Ruby. MRI started as a half-assed Scheme implementation, which is easy to see when you read the MRI source code. Scheme has lexical scoping, while Ruby has...python/perl-style scoping.

    Scheme has first class anonymous functions, while Ruby has blocks, which are a hack around MRI's slow function calls.

    • while Ruby has blocks, which are a hack around MRI's slow function calls

      Is this really the reason? I thought Ruby has blocks because Smalltalk has blocks.

      1 reply →

>In the programming-language-as-a-spec days, people versed in programming language design created the dominant programming languages.

Nope.

The creators of C were witness or party to some earlier languages, but they weren't well versed by any means.

Prior to Python, Guido had worked on ABC - he was an experienced language designer by that point.