4 ms·
Absolutely! A common example I like to use is Java. It might be hard to imagine now, but there was a time where Java (and then C#) were pitched as a replaceme
by oddity 5y ago
Absolutely! A common example I like to use is Java. It might be hard to imagine now, but there was a time where Java (and then C#) were pitched as a replacements to C++ (even the name "C#" supposedly derived from "C++++"). There was no reason to write native code any more, many people said. And, they were kind of right. Many people were writing applications in C++ because they thought they had to, even though they weren't writing C++ in the style needed to make proper use of it. A lot of old C++ code bases today look like much more verbose Java applets. This peeling, when it happens, is usually good for everyone since languages (and tools) evolve to better fit the domains in which they are most used and happens so gradually that few notice. The inverse also happens, but with more conflict: you can see this today in Python (and other dynamic languages) adopting typing features aimed at assisting tooling for large code bases, well beyond the traditional learning or glue scripting mentality for which they were designed. This often results fierce debates around language features (like static typing vs dynamic typing) that are really proxy battles for the usage intent of the language.
Unfortunately, I think the "replacing X language" mentality happens because it's the easiest point to start with. The field of programming and computers is so vast now that most (all?) people have a very narrow view and it's easy to assume it's universal. I've lost track of all the "things all programmers should read/know/do" articles.
- Zababa 5y ago> Unfortunately, I think the "replacing X language" mentality happens because it's the easiest point to start with. The field of programming and computers is so vast now that most (all?) people have a very narrow view and assume it's universal. I've lost track of all the "things all programmers should read/know/do" articles. I think another effect is that if you really like a language, promoting it is one of the best thing you can do to work with it. When you see the recent (2010 and later) new languages, they all have a story of addressing a particular pain point. Typescript is Javascript at scale, Kotlin is old Java on android, Go is web services, Rust is performance and safety. This is solid marketing, and is part of how these languages end up dominating their domains. On the other hand, a language that's "X but slighly better everywhere" won't really attract people, since there is already code and jobs in that language. Currently in the Great War Of Replacing C And C++, there are lots of fighters. Some people promote Rust, some others Go, some others D, some others Zig, some others to just keep writing C and C++. Part of the battle is writing code, libraries. Part of the battle is making the language and tooling itself better. And part of the battle is making articles, comments, talking to people and promote your language.
- pjmlp 5y agoThe best way to win battles in the context of systems programming languages is to have a platform ship with the language, libraries alone won't do it. This is how C put other of business other system languages, much better than it. When you get UNIX and have already paid for a compiler, hardly any department will allow to buy additional compilers. And C++, people tend to forget it was also born on the same place as UNIX and C, thus it was quickly adopted by all OSes that were UNIX clones in some fashion, and then by C compiler vendors on other platforms. And on cases like Java, Go, TypeScript or Kotlin, you need a godfather company to push it no matter what.
- Zababa 5y agoFor the part about platforms, hasn't that ship already sailed? From what I understand the industry had settled on C, C++, Windows and UNIX. Some people are trying to replace some of these with different solutions, but that's about it. I think a new platform would have the same challenges as a new system programming language, but would be even harder to convert people to.
- pjmlp 5y agoNot at all. Want to develop for Apple platform? Depending on which level of the stack, the painless option will be C++, Objective-C or Swift. On Android it will be a mix of Java (slowly being left behind on purpose), Kotlin or C++. On Windows, .NET (and in some cases C# or C++/CLI only due to the way MSIL gets exposed) and C++. You can also keep using C if your view of Windows is like Windows XP APIs. On Fuchsia, it is all about Flutter, C++, Go and Rust. On ARM Mbed and Arduino, C++. On microEJ, Java and C. On Meadow, .NET.Core. Azure Sphere, C. CUDA, C++, Fortran, Python JIT and PTX aware backends. There are plenty of other platforms I could keep on listing. Naturally you can try to fit something else, but then it is on you and others to build the ecosystem, work around support issues and lack of IDE tooling.
- Zababa 5y agoI see, I had a really limited vision and understanding of what you meant by "platform". That makes a lot of sense. Thanks.
- hawski 5y agoMany C++ code bases, especially older ones, I have seen were really trying to be their own Java. This caused them to join disadvantages of C++ with disadvantages of Java. I don't believe the result was faster than JVM and start up time hardly mattered and still was not fast enough.
- jcelerier 5y agoI dont't think the slowest c++ app I ever used was slower than the fastest java app I ever used
- pjmlp 5y agoEven when it wins the benchmark games, it isn't relevant for many businesses. There is a budget to be fulfilled for project delivery acceptance, going beyond that is wasted money.