There’s one simple answer to such claims, whether they are made by Smalltalk, Erlang, Haskell, or whatever.
The answer is: where are the accomplishments?
Show me the Kafkas, the Cassandras, the Hadoops, the Kuberneteses, the nginxes, the jettys, the (a myriad of other projects)s.
After literally tens of years of claiming/boasting that they are the best, and that other languages suck, I’ve yet to see any of these claims turn into anything but empty posturing.
that's like arguing that English is a better language than say Welsh, simply because more great literature has been written in it because it's more popular. But by all accounts Welsh is a great language that happens to be spoken by fewer people.
There's actually a ton of business software written in Smalltalk. I think 2/3 of the world's shipping industry is controlled via Smalltalk for example. It isn't super low level like C, so I wouldn't use it for something that needs to be blazing fast. I believe Smalltalk pioneered the JIT technology that Java uses (hotspot...if I recall correctly). It isn't a silver bullet, but seems like a neat language.
It's on this page in the shipping section [1]. I remember it had something to do with live object databases too, back when Avi Bryant of DabbleDB [2] was heavily pushing the Ruby world towards Smalltalk in the 2007-2010 timeframe with Maglev [3].
In terms of object-orientation, then Java, like C++, was not inspired by Smalltalk. Certainly aspects of Smalltalk's execution environment including VM, and supporting language libraries have been influential.
According to James Gosling, Java's object model is entirely based on Simula (http://bit.ly/2xc1XTA) and the concepts it introduced:- objects, classes, inheritance and virtual functions. Smalltalk's main differentiation in terms of object-orientation:- "messaging between objects, all the way down", is not reflected in major modern languages, other than perhaps Ruby.
It's argued that Erlang can be viewed as OO in Smalltalk's terms if you model your system entirely around processes: you have a process black box, and you communicate using messages with it.
A big red flag for lacking real accomplishments is when the only 'real world' examples proffered are (1) run of the mill web apps (which can be thrown together using just about every programming environment on the planet); and/or (2) 'enterprise apps' (a good working definition of which is: 'apps which are only ever launched by order of the boss').
Yes there's some truth to that. But what I meant to express (perhaps not very clearly) is how mediocre the showcases usually seem to be. Maybe this is OK if claim is that the lionised language/platform in question is highly productive for mediocre web & enterprise apps. Indeed that may be a decent sell for managers, but perhaps less inspiring for technologists?
For the Erlang case in your list: every time you pick up a phone and you get a dial tone or your cell phone connection goes through you will have interacted with Erlang code at least several times.
The financial world has a ton of Haskell.
Smalltalk has its successes but most of them are in the past.
Can you cite something you consider comparable to AXD301 in another language? The fact that AXD301 is still going is an accomplishment, is it not?
With respect to Smalltalk: there's a long history of superior technologies losing the market to inferior technologies. The fact that it got displaced by Java is not really much of a criticism.
> Can you cite something you consider comparable to AXD301 in another language?
Why though? A one-time wonder that gets displayed as the project for 20 years hardly constitutes a proof.
> losing the market to inferior technologies. The fact that it got displaced by Java is not really much of a criticism.
I keep hearing about these inferior technologies. However, the only ones talking about "inferior technologies" are these marginalised languages that are so full of themselves: Smalltalk, Erlang, Haskell...
It comes down to a very simple thing: these languages are supposed to be superior to basically anything else. And yet... There's hardly anything made/built in these projects that can show the world that these claims are true. Except maybe some closed-source business cases. Having been on the inside of one of such a case, I now take these stories with a grain of salt the size of Jupiter.
Even if I can't, the success of AXD301 has never been replicated, has it? So it's rather a one-off wonder than something indicative of the platform's strength.
For the past 20 years Erlang has been advertising itself as the language to create distributed and scalable services, microservices etc. In 2018 if you really want to build something like that, you are much better off grabbing off-the shelf Java components because there are literally zero tools available in Erlang, and you will have to implement every single thing from scratch yourself.
While Erlang was busy boasting how great it is for distributed/parallel computing, and how other languages suck, other languages and platforms (primarily Java/JVM) caught up with it, and then surpassed. While Erlang stood in one place never moving forward.
There are plenty of distributed computing systems using Erlang, you are not going to be hearing much about them because it is not sexy stuff or open source.
Message switches (Twitter for instance), queuing systems (RabbitMQ) and so on all use Erlang under the hood.
Erlang and Java compare as apples to oranges.
The reason why Erlang to your perception has not moved forward is primarily because it was very good to begin with and because changes are typically incremental rather than revolutionary.
I ran a Russian Erlang community site for years, I know pretty much everything there is to know about what's happening in Erlang space. I also worked with Erlang professionally.
Despite Erlang's and Erlang community's claims to how good the language is, it is not that good.
While Erlang (and it's community) where telling everyone how far ahead in the future it is, other languages and platforms (especially JVM) have caught up to it, and moved way past it.
It's nearly impossible to implement anything on par with Hadoop, Kafka, Kubernetes, <countless other distributed frameworks/tools/libraries etc.> in Erlang because for every little thing you can think of you need to build it from scratch. Even Erlang's claim "build massively scalable distributed apps" is a sham: out of the box it cannot handle more that ~80-10-ish nodes[1]. In today's world Java (and Go, increasingly) trumps Erlang in nearly every aspect and claim Erlang might have.
There are so few and far in between systems that use Erlang under the hood that it leads me to believe they are mostly flukes and isolated tales of success than proofs/representations of the language's strength.
Our website runs on 75 nodes, with geolocated microservices, distributed database access, log aggregation, metrics, parallel deploys, etc. etc. etc. It's a huge overkill, and we're gonna scale it down :) But it was just so easy to do it. All in Python, Java, and PHP (!).
In all of Erlang's ecosystem you couldn't find a collection of tools that let you do 10% of that. And you would have to start with writing your own distribution layer on top of Erlang to handle those 75 nodes in three geographical regions.
If you have been using Erlang professionally and you have been running a Russian Erlang forum I wonder why you keep mixing up Erlang ´the language´ and OTP, BEAM and the ecosystem. They are not the same thing, and Erlang the language does not make any of the claims you are ascribing to it. Nor does the Erlang community, which is not nearly as visible as most of the other online language communities because it is just people getting their work done instead of hanging out in fora and trying to hijack the discussion about how everybody should switch to Erlang tomorrow because it is ´the next big thing´. Rather the opposite.
Anyway, it looks as if you have made up your mind and no matter what examples I put forward you have your reasons for ignoring them so thank you for the exchange.
> Erlang the language does not make any of the claims you are ascribing to it
Let's head on to erlang.org, shall we?
"Build massively scalable soft real-time systems... Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability... OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems."
The answer is: where are the accomplishments?
Show me the Kafkas, the Cassandras, the Hadoops, the Kuberneteses, the nginxes, the jettys, the (a myriad of other projects)s.
After literally tens of years of claiming/boasting that they are the best, and that other languages suck, I’ve yet to see any of these claims turn into anything but empty posturing.