Hacker News new | past | comments | ask | show | jobs | submit login

> It's almost as if unpopularity is the root cause.

It kind of is. What determines which things people are excited to learn? What determines which things people will feel safe doing? What determines which things get you in, and which get you sidelined?

Creating knowledge that can be used in practice in a non-enclave environment, and creating common knowledge, overlap a lot. “Make this maintainable” = “Make this something people can adequately be assumed to know how to maintain” = “Don't do anything weird”—thus the focus on keeping code idiomatic. So it's not really about absolute power; it's about relative power. If you can establish a cultural boundary, and then set up a pipeline of enough people dealing with a higher-power language, it seems possible to make that work, but that's a social undertaking that easily falls apart to things like “people will call you elitist for separating yourself and doing anything that might imply the others are inferior” (this visibly happens to Lispers) and “your code gains more from talking to other code easily than it does from being powerful in itself, so you need a lot of knowledge surface area, where people who use your environment are widely distributed in what else they know”. Notably, though, enclaves of Lisp and OCaml do exist in industry where there's some amount of big projects that have a limited surface area and they can make use of the higher power. I've heard similarly for Haskell. And academia seems to practically be a supercluster for higher-power language use.

I get the impression that one of the big ways Java and C#¹ are gradually steering the big ships into higher-power water is by having backing organizations who can introduce a new “fancy” feature, document it extensively, watch how the great masses of programmers in that language actually use it, push for them to learn it, and then wait before adding the next feature, so that the delta between highest and lowest power feels more socially safe; no one is ever far enough from the crowd to become a problem, but the rallying banner can still move it gradually. The slowness is widely detested among programmers who want to jump to the higher power level now and know that there isn't necessarily a technical reason not to, but it's a feature for social cohesion. It also provides a convenient binding for transmitting this information for teamwork purposes: “we're using Java 8” implies a whole set of things about expectations in a way that “we're using Common Lisp” by itself doesn't.

¹ Apparently I can't write the sharp sign here.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact