9 ms·
>Languages do not becomes successful due to their intrinsic qualities. Languages because successful when they are coupled to a successful platform. That doesn'
by smokey_circles 5y ago
>Languages do not becomes successful due to their intrinsic qualities. Languages because successful when they are coupled to a successful platform.
That doesn't seem right. There are plenty of languages that are born from platforms, but I'm skeptical that its anywhere near the majority. Some platformless examples from the top of my head
- Java
- Rust
- Python
- C++
- Go
- Lua
In my opinion: C is not popular because of Unix. Unix is popular because it's written in C. The same is arguably true of Kubernetes. Neither docker nor k8s drove mainstream adoption of Go. Go did that with it's own properties, the same is true of Rust and C etc.
> Functional programming is less popular because no major successful platform has adopted a functional language as the preferred language.
The question here though is why?
The author argues because FP is unwieldy for the general software case (which I assume is enterprise CRUD apps). And I have to agree: State management is a huge part of CRUD apps.
------
EDIT: I am not presuming K8s is popular because of Go. The argument here is the success of the platform and choice of language are related, not directly consequential. K8s could have been written in rust and would probably be as popular because of its feature set
- virgilp 5y agoFor Java, JVM was the "platform". I still remember learning Java in university - what left an impression on me was that my first ever university homework where I used Java (i.e. non-trivial project) ran perfectly on first successful compilation [+]. GC is huge help, especially if you don't use smart pointers (which were far less prevalent at the time). [+] to clarify, I was a somewhat experienced programmer, this was one of the final year projects, for distributed systems or parallel computing I believe. A simple system without doubt, but still, a system not a "hello world". Something that I wouldn't have expected to work on first try, had it been written in C.
- tialaramex 5y agoYes. I like this in Java, and in Rust, and it's annoying for me in languages like Python where you mostly don't have this. I want the compiler to tell me my program is nonsense, so then I can fix it, rather than wait until the program has done most of its work and then, oh, did you notice this needs to be an integer but you provided a string? Sorry, program crash, fix the bug and run the whole thing again. But of course although it's the default in Java, and not provided out of the box in Python, I also wrote some web framework stuff that adds these runtime errors to Java (by using Reflection to make decisions at runtime instead) and I've seen Python code with more type safety that would tell you earlier that there's a problem. So it's ultimately not only a matter of programming language although that does definitely set the tone.
- native_samples 5y agoI think platform in this argument is meant to mean something users obtain and install apps (or websites) into. The JVM is not a platform really, it's a runtime. For a while the JRE was sort of a platform because users downloaded it separately, but that hasn't been true for a long time and yet Java is still popular.
- goto11 5y agoIt is almost forgotten now, but the platform which carried Java to critical mass was the browser. Java successfully pivoted to server-side, but initially it was considered a client-side language. C++ was the preferred application development language on Windows. Python is popular because of the numeric and ML ecosystem.
- coldtea 5y ago>It is almost forgotten now, but the platform which carried Java to critical mass was the browser I think that's backwards. I was there. Aside from a few e.g. banking and government applets one was forced to use and a couple of exceptions, applets never got anywhere and died fast. Enterprise Java became what Java is all about very very soon. Java landed in 1996. Servlets/Tomcat landed in 1998. By 2000 there was plenty of enterprise Java development - in fact that was the year MS created its own Java copy, in the form of C#/.NET after having tried to extend their version of Java for the Windows platform.
- Izkata 5y agoBack when Flash was called Shockwave, it was competing with Java applets for browser games. It did lose, but it was out there.
- NoSorryCannot 5y agoMinor nit, Shockwave wasn't the same as Flash. All three plus ActiveX overlapped in their time on the market, which is hair-raising to think about.
- Izkata 5y agoWas Shockwave a platform for Flash then, or something? I don't know any technical details here, but from a user perspective Shockwave did turn into Flash. The Flash file extension "swf" even stands for "ShockWave Flash".
- roenxi 5y agoJava & Go are sponsored by megacorps; their success or otherwise has little to do with the language's strength in isolation. They are more examples in favour of successful platforms being leveraged to promote a language.
- pharmakom 5y ago> And I have to agree: State management is a huge part of CRUD apps. I see this point come up often, but it doesn’t really line up with my own experiences. I find the explicit state control in functional languages makes it much easier to write enterprise CRUD.
- goto11 5y agoCRUD is about state, but typically the mutable state is in the database, not the application layer.
- dragonsh 5y agoJust a minor nitpick Rust still has miles to go before it catches with Python or Go or Java, so not yet in the same league. Most of the rust crates today depends on C, so it’s not going to replace C in next 2 decades, but will still depend on C. Hopefully it will start replacing C going forward but in that space Rust is competing with Zig and Nim.
- krageon 5y ago> Zig and Nim Two languages almost nobody uses. It doesn't seem likely it's actually competing with them in that case.
- another_story 5y agoYou hardly hear about Zig or Nim. Are they actually being used in production?
- cb321 5y agoI do not know about Zig, but Nim is used in production at multiple companies - biotech, cryptocurrencies, finance, had an attempted commercial video game app, etc., etc. See here [1] for example. [1] https://github.com/nim-lang/Nim/wiki/Organizations-using-Nim https://github.com/nim-lang/Nim/wiki/Organizations-using-Nim
- Zababa 5y agoRust isn't competing with Zig and Nim just like C isn't competing with Rust.
- rmbyrro 5y agoJava and the JVM had considerable marketing investiment to become a popular choice among the enterprise segment. Python was taught in many universities for its flat learning curve, then started to be used in academic research. Even without an unrelated platform, like JS and the browser, they had something to catapult their adoption.
- masklinn 5y ago> Python was taught in many universities for its flat learning curve, then started to be used in academic research. Python was used in academia long before it was used for teaching. “Courting” scientists was done from extremely early on in the language history (matrix-sig was founded in 1995) and the “extended” indexing added at their request (auto-tupling and slicing predate PEPs as those were introduced for and by Python 2).
- krageon 5y ago> Go did that with it's own properties Go got popular because it was a Google thing and everyone fanboyed hard over that.
- iainmerrick 5y agoWhat happened to Dart, then?
- joe_fishfish 5y agoIt targeted the front-end, which lots of programmers don't give a shit about.
- pjmlp 5y agoIt got betrayed by Google itself when the Chrome team dropped support for DartVM support. Then AdWords team which had just gone through GWT => Dart rewrite, kind of rescued the project from closing down, after the key designers left. Finally Flutter team kind of gave a new life to Dart, which made Dart only relevant in the context of Flutter.
- somejan 5y agoWhile Google's support was definitely a factor, Go also had some important language features going for it. Most importantly it is targeting a relatively empty niche in the programming language landscape, i.e. that of high performance, close to the metal languages with little performance overhead, while still being easy to write. "Easy to write" for 80% comes down to being memory-safe, unlike C/C++. If you're in that niche, you have few alternatives. The other options for mainstream memory-safe languages are interpreted scripting languages and Java-style jitted languages. Go easily beats both in resource consumption without being much harder to program in. Rust isn't really comparable because while it is memory-safe its memory management system still forces the programmer to think about the memory and resource usage, thus being slower to program in.
- benibela 5y agoI have always used Pascal for that But no one else does
- ajuc 5y agoJava was the only way to write applets and code for feature-phones early on. Nobody thought of writing application servers in java in early 90s, java was supposed to be the way to write code for internet of things. C++ was the easiest way to write kinda-OO code and use C libraries. Then it became de-facto standard for gamedev and desktop app programming. In Linux world it's still the case that if you want to write a desktop app you should write it in C/C++. Use any other language and you will struggle against the dependency management and package managers forever. Python is the only clear example of succeeding without a platform out of these languages, and the fact that after decades still Python is less popular than PHP shows that historic accidents and having a good platform is more important than any quality of the language. On the other hand Perl is dead so maybe it's not as bad :)
- brongondwana 5y agoFor all that, you can still get an awful lot done in a dead language!
- amitport 5y agoThe (excellent) libraries are python's platform I would have avoided python if I could... But I can't avoid numpy/scipy etc etc
- analog31 5y agoFor a lot of users, Python is its own platform. As a so called "scientific" programmer, when I'm programming, I'm very much "inside" Python. I don't need to know or care very much about the details of the platform that it's running on. I start up my IDE or Jupyter and the rest of the system melts away. This may be because Python lends itself to bring used in integrated environments such as Jupyter.
- Kinrany 5y agoWas Python's package management unusually good compared to other languages at the time?
- bonzini 5y ago
- pjmlp 5y agoUNIX became popular because it was free beer with source tapes. Had UNIX been written in PL/I, Mesa or BLISS, those languages would be "C" today.
- Stratoscope 5y agoOh, how I miss BLISS. It was the first language I learned that got rid of the silly distinction between statements and expressions. What a revelation! Everything was an expression. Everything returned a value. I guess a bit like Ruby, but 40 years ago. https://en.wikipedia.org/wiki/BLISS https://en.wikipedia.org/wiki/BLISS https://www2.cs.arizona.edu/classes/cs520/spring06/bliss.pdf https://www2.cs.arizona.edu/classes/cs520/spring06/bliss.pdf
- fancy_hammer 5y agoElixir possibly has some of this flavour. If and switch are both expressions and return values. I dig it.
- kaba0 5y agoI think it is that way in almost every FP language (eg. Scala, Haskell, Kotlin, etc)
- CRConrad 5y ago> Everything returned a value. I guess a bit like Ruby Like C, isn't it? Assignments return values! Still feels weird AF to those of us who started on BASIC and Pascal.
- twistedpair 5y agoThe Spark data processing platform was/is popular, and is written in Scala, a.k.a. FP.