Remix.run Logo
systems an hour ago

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.