3 ms·
> 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
by 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.