Remix.run Logo
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

Zak an hour ago | parent | next [-]

I don't think C++ succeeded because it was object-oriented. I think C++ was object-oriented because classes were an abstraction that could layer on top of C with fairly low overhead, giving it more expressive power without much mandatory cost to size or speed.

In other words, object-orientation was the means, not the end.

IsTom 42 minutes ago | parent | next [-]

Back then OOP was all the hype and inheritance was cool.

Zak 32 minutes ago | parent [-]

C++ predated the OOP hype cycle and triggered, or at least accelerated it.

mojuba an hour ago | parent | prev [-]

Agreed and that's probably the second major killer feature of C++.

shagie an hour ago | parent | prev [-]

> python succeeded because it wasn't Perl's TMTOWTDI, everyone expected ruby to overtake python, but .. for some reason that never happened

Ruby allows (and to some extent encourages) unreasonable code.

It's not bad code (and in some cases extremely elegant), but it's code you can't reason about.

Being able to open any class (or object) and add new methods to it makes tracking how execution works extremely difficult.

The language allows for very undisciplined things to work - its great for the "scripting" and rapid prototyping - but unless you're going to throw it away the next day of having to maintain that code it starts weighing on the future speed of working.

Undisciplined code can be handled by making sure everyone on the team is disciplined in its use and documenting how things work... but that rarely reflects reality.

And so, you move to a language that enforces more discipline in how one uses it and is more reasonable in its execution.

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.

bobajeff 39 minutes ago | parent [-]

Yeah, this is a more honest assessment than the others I've read here.

Of course them being ISO(like) standards with competing implementations/tools was also important for C, C++ and Java as the cost to use and learn them was higher in the days before free open source languages, free tutorials and help forums became so wide spread.

But yeah official platform support and big company backing are a big part of why these languages have stuck around compared to others.

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.

Jtsummers an hour ago | parent [-]

Javascript didn't need a plugin, unlike Java, and could directly alter the page contents. One of the first heavy uses was Google Maps, interactive JS-based applications took off at that point. Then with an army of web developers (meaning in browser), Node took off when it handed them a way to work on the backend in the same language.

The iPhone came out after JS heavy pages came into existence, and might have accelerated the end of Flash and Java applets but the trend was already there.

oblio a minute ago | parent [-]

Gmail was the original AJAX woah! JavaScript application.

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.