| ▲ | mojuba an hour ago | |||||||||||||||||||||||||||||||||||||
Yes to all that but still, my pet theory is that languages rise on one or two "killer features" that move the entire industry forward, and not the overall cuteness or lovability. I can suggest a list of one killer feature per each popular language, i.e. things that these languages were the first to introduce and influence many successors: C: extreme conciseness C++: implicit destructors / RAII Python: removed curly braces Java: extreme portability JavaScript: erm... PHP: embedded in HTML by design Rust: compile-time memory management Swift: structured concurrency (pre-6 was probably just pure cuteness) etc. | ||||||||||||||||||||||||||||||||||||||
| ▲ | systems an hour ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||
C++ succeeded because it was Object Oriented, people didn't start talking about RAII as C++ killer feature until years later python succeeded because it wasn't Perl's TMTOWTDI, everyone expected ruby to overtake python, but .. for some reason that never happened swift succeeded because apple pushed it to replace objective c, that if you consider swift succeeded anyway, i agree with your premise, languages need one key strategic advantage feature to succeed, but you just got it wrong on few of them .. and if i am wrong too, then the premise is weak, if we are not sure what the killer feature is, we then have no idea why the language succeeded | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | GuB-42 an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
C is not "extremely concise". Lisp, and especially APL both predate C and are more concise. To me, the "killer feature" of C is UNIX, we can't really separate them, C won because UNIX won and vice versa. Other than that it is reasonably concise, reasonably portable and reasonably low level. The language itself doesn't have any "killer feature". For Python, I think its killer feature, related to the removal of curly braces is that it is a dynamic language (like Perl) that forces you to write somewhat readable code. You have no choice but to indent correctly, and there is a strong "pythonic" ideal way of coding, the complete opposite of Perl's "more than one way to do it". JavaScript killer feature is obviously its integration in browsers but it is also well designed for this task, with pretty good support for asynchronous programming. Still, I don't think any of these languages were successful for their "killer features", more because of a combinations of many things. In many cases, they weren't even the first. For example, there are several langages that use indentation as syntax that predate Python. ( https://en.wikipedia.org/wiki/Off-side_rule ) | ||||||||||||||||||||||||||||||||||||||
| ▲ | Jtsummers an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
C came with an OS. C++ came with compatibility with C and at the peak or near peak of OO hype. Javascript came with the browser making it probably the most widely available language platform. Swift came with Objective-C compatibility, an OS, and money (iOS app store customers spend more on apps than their Android counterparts). Coming with a platform that is widely available or compatibility with an existing language on a platform was the killer feature for each. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | benrutter an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
I like that theory, if I was going to counter it though, I'd say that I'm not sure those features match what language users talk about. For instance: - C: Users often praise the simplicity of the language - C++: Users often praise (not always praise?) the large feature set for a low level language - Python: Folks talk a lot about "batteries included". Although in all honesty, I think having good interaction with other low-level languages is Python's secret feature. - Java: Really leans in hard to object oriented programming - JavaScript: Haha, you have to use it! Not sure I'm really disagreeing with you though, but I think Java promoted its portability much more than it's ever been used (obviously there are cases like Spark which uses the JVM portability). | ||||||||||||||||||||||||||||||||||||||
| ▲ | armchairhacker an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
I believe JavaScript's was running in the web where Java could not (iPhones) or was considered too heavyweight (no startup). Then it became the true extremely portable language, because developers wanted a single language to write webapps in, and it was easier to get JavaScript running on their server than a new language running on every browser. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | chpatrick an hour ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||
JS despite its (many) faults still allowed a fairly functional style way before that was mainstream. Java and C++ only got lambdas decades later. | ||||||||||||||||||||||||||||||||||||||
| ▲ | cedilla an hour ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||
Except for PHP I don't think that's a very fitting list. C for example, is not really a concise language, not even for its time - APL is much more concise. C is rather verbose. Likewise, Python is not the first language without braces - and it debuted before braces became the industry standard. I guess ISWIM or ABC are the first to have syntactic whitespace. Really, you will always find an earlier example for a "killer feature", at least in an academic context - in the case of your list, usually in the 1960s, in the 1970s at the latest. | ||||||||||||||||||||||||||||||||||||||