Posted: Mar 15, 2012 8:46 pm
by VazScep
mizvekov wrote:Yeah that came out badly. What I meant was, in more broad terms, what kind of mistake was made so that it would start losing popularity. My own experience in the matter seem to be that they are not making it look interesting to CS students, as it happened to me, but that could be very biased. But the fact is, none of my peers became interested even slightly in LISP.
But why is that? Bad PR? is LISP specially hard to teach to the inexperienced?
I have no idea. There are many reasons that I could see factoring into the rise and fall of programming languages, but it all looks like a chaotic system to me, a bit like trying to explain the rise and fall of viral videos. I've got a couple of anecdotes of my own though.

I was completely inspired by my university's brilliant presentation of the even more obscure language Smalltalk, which used the most impressive learning environment I've seen yet, called LearningWorks. Since I graduated, they ditched Smalltalk and migrated the course over to Java, thereby killing development of the LearningWorks environment. They cited industry pressure as the reason for the migration. Employers want Java developers. Students want to be employed. People want to learn the language everyone else is using. Popularity breeds popularity.

My brother, as head of IT at his school, is in charge of preparing the A-level (for ages 16-18) in computer science. He's not a programmer, so he asked me which language he should learn and teach. I told him to use Python. Now I think that Python is a shit programming language, but I also know that Google are heavily invested in it, that universities are becoming more invested in it, and that there is a huge wealth of educational resources and libraries available for it. I'm making an active contribution to the popularity of a language that I myself despise.

But generally, I think I'd feel more confident explaining the subprime mortgage crisis than I would explaining the popularity or lack of popularity of a given programming language. All I will suggest is that if I did try to explain this stuff, I'd hardly ever talk about merit.

VazScep wrote:Yeah, those would be nice, but how for example 3) fit with compiler implementations of Haskell? Besides there being no standardization for many of the needed things, it seems it would tie the hands of the optimizer even more.
I gather that all of those except number 3 could be done without a new Haskell standard.
3 wouldn't need to be standardised. It would just be about providing a reflection API. Ultimately, I'm just talking about having a lot more of this. I'd imagine having a library where all loaded modules come with metadata that I can query, so I can query what the module exports, what the types of its toplevel values are, which file it was compiled from, line numbers, and metadata about modules it references.

I'm not sure how this plays with optimisation, but Java and the .NET languages have a lot of this stuff, as does Poly/ML. It might be that GHC is much more aggressive and there are subtle issues here, but I can't see them. The metadata should be separable from the data itself.