Viability of Unpopular Programming Languages (2018)
johndcook.com
johndcook.com
Of course if a language does not have a niche nor popular support then it's going to struggle more.
Some real businesses use Haskell too.
Other than that, you have a point.
"Yes they're used successfully in some companies, but they're not truly commercially viable".
If you have someone who has the resources and time to experiment, then sure everything that is literally viable may be viable.
In general, it's probably somewhere in between. I wouldn't take one or two companies or even solely proprietary companies as a good example though. For the average person it probably matters most if a language has a rich and alive open ecosystem.
"if all the existing volunteer mainteners for this language went down in a single airplane accident, would businesses who depend on this language step up and fund its maintenance and could they support that organically from the margins of their business?"
When the answer is yes you have a language that is going to live forever independent of whether it's a fad this year or not etc. Which is partly why I think some seriously out-of-fashion languages keep going surprisingly strongly. Meanwhile some pretty awesome languages just wither on the vine.
Ada is used widely in safety critical software outside the US
GenodeOS project, started to rewrite security critical modules from C++ into Ada/SPARK.
Air Traffic Management and Rail Signalling systems are probably the two biggest fields outside of Defense/Aerospace where Ada has commercial success.
A big barrier to entry was previously the high cost of the toolchain for commercial applications (that's somewhat changed). Which meant it was only economically feasible for large companies in very safety-critical contexts.
The trick with any Lisp is to "get it". Once you do there is no comparison between Lisps and any non-Lisp language.
Let's compare it in some useful way. If I was assembly developer for my entire life, "getting" C++ would be comparable to getting Lisp for any JS/Python/Ruby developer.
From my point of view JS/Python/Ruby is just a reiteration, variation on roughly similar, impaired subset of features that I can roll off in Lisp on my leisure. By definition, any language feature can be written in Lisp (well... more in Common Lisp than in Clojure which is hindered by its integration with Java environment) which is something that is really hard to grasp until you start rolling off your own language for any problem you try to solve (and one reason Lisp programmers are so much hated by other programmers).
Having said that, and going back to the original point, Clojure struggles and will continue to struggle because it doesn't have any strong hold in any domain, in contrast to JS/Python/Ruby. Each of these have big ecosystems of libraries, documentation, big market share in various domains and big job markets. So yeah, worse its better.
> Not strong in any domain and doesn't have any fundamental benefits over other dynamic programming languages like JS/Python/Ruby.
Don't get me wrong, but this can be said only by someone who never used it seriously or simply didn't get it. Reminds me on Scheme/Racket complains from students who took classes only for GPA or simply got in wrong university.
You can really tell when you're using an unviable language; big parts of it are broken, often in subtle ways that you can only find out about after heavy use, and the maintainer doesn't give a shit about your problems, even if your problems should be in the niche the language addresses. There are many open source languages which fit this description; some of which rank in the top-100 or even top-50 in this ranking system. By contrast, something like Awk with a relatively low rank may score poorly but will be viable as long as there are text files.
I suspect I know which, but not sure. Also would like to know more about your critiques.
https://en.wikipedia.org/wiki/James_Clark_(programmer)
https://www.drdobbs.com/a-triumph-of-simplicity-james-clark-...
http://xml.coverpages.org/ni2002-02-14-c.html
https://news.ycombinator.com/item?id=14154049
DonHopkins on Apr 20, 2017 | parent | favorite | on: What programming languages are used late at night?
I got some insight into what's great about Haskell by reading James Clark's "An algorithm for RELAX NG validation":
http://www.thaiopensource.com/download/old/relaxng/20020531/...
>This document describes an algorithm for validating an XML document against a RELAX NG schema. This algorithm is based on the idea of what's called a derivative (sometimes called a residual). It is not the only possible algorithm for RELAX NG validation. This document does not describe any algorithms for transforming a RELAX NG schema into simplified form, nor for determining whether a RELAX NG schema is correct.
>We use Haskell to describe the algorithm. Do not worry if you don't know Haskell; we use only a tiny subset which should be easily understandable.
Text.XML.HXT.RelaxNG.Validation
http://hackage.haskell.org/package/hxt-relaxng-9.1.5.5/docs/...
>Validation of a XML document with respect to a valid Relax NG schema in simple form. Copied and modified from "An algorithm for RELAX NG validation" by James Clark.
Clark Updates Jing - A RELAX NG Validator in Java.
http://xml.coverpages.org/ni2002-02-14-c.html
>James Clark has announced a new version of Jing with significant changes and revised documentation. Jing version '2002-02-13' implements the final RELAX NG 1.0 Specification and also implements parts of RELAX NG DTD Compatibility, specifically checking of ID/IDREF/IDREFS. James has "almost completely rewritten the validator using an improved algorithm. In the old algorithm, the state of the validation was represented by a stack of sets of patterns; in the new algorithm, the state is represented by a single pattern... The new release includes a documented API for Jing; in fact there are two APIs, a native API and JARV. James has rewritten the description of derivative-based validation to correspond to what's been implemented and to incorporate feedback received on the previous version from Murata-san and Kawaguchi-san... The Jing implementation is available for download as a JAR file and as a Win32 executable for use with the Microsoft Java VM.
Basically they only look at number of search engine hits for "<language> programming". That's surprisingly meager. I think a better index of programming language popularity would use more signals: job listings, open source activity, stackoverflow questions, surveys of programmers and companies, etc.
Also it would be good to specify what's meant by "popularity". I'd be mostly interested in each language's share of paid programmer time, so the signals above should be weighted to get the best approximation to that truth.
Thing is I'm actually interested in the complete opposite of what you say you're interested in.
Couldn't care less about paid programmer time and the job market.
What do people use when they aren't getting paid by someone else to program? What do they write about? What would they like/want to use? Who's got the greatest grass-roots/continuing community not focused around apps, corporations and business sponsorship?
So in particular I'd say Perl is pervasive, but not a hiring differential. At least that's my experience looking at jobs.
It's amusing from a trivia point of view but I don't think such a ranking should figure in any serious decision on what language to use.
And the PYPL index (updated monthly, uses data from Google Trends, which counts search queries): http://pypl.github.io/PYPL.html
I regard both of these more accurate indicators of popularity than the TIOBE index. (As for PYPL vs. TIOBE, I find that search queries reflect popularity more accurately than search results)
[1] https://juliacomputing.com/blog/2019/09/16/tiobe-blog.html
The TIOBE index is pretty much meaningless for any language below the #5 spot, under which the percentages are so infinitesimal that the ordering is completely useless.
For example, a jump from 63 to 29 means the market share for Lisp went from to 0.12% to 0.37%, and I suspect the error margin is several times that delta.
Its main point of other reasons to to choose a language than popularity is well taken but I do not thinking making using of the TIOBE index as it does argues this well.
Now TIOBE says:
> Some time ago Mantvydas Lopeta suggested to rename Perl 6 to its official name Raku. This has been done. Raku is now at position #115 of the TIOBE index.
- Is it a first class citizen for the given platform? (What C# is to Windows, or Objective-C/Swift to macOS, or C to UNIX, or JS to the browser) Really can't go wrong with this one
- Does it have a commercial vendor? (VFX Forth, SwiftForth, LispWorks, Allegro CL, MATLAB...)
- Does it have a standard? (Probably less relevant these days but still a big plus to me)
Things like libraries and all that I can do without. They're mostly terrible / too generic anyway.
Note that some languages I use such as Go, Rust and OCaml don't really check any of the above, unless you nitpick. But it's not like I'm writing software with those for the long run (I'm old enough in the industry to think in terms of decades, and I've been burned by hype trains before).
Also, Rust is not in the top 20? Get out of here, TIOBE index!
This is ranking of popularity only, not any measure of quality. Obviously PHP and SQL are more popular than Rust.
It was pushed quite strongly around the time when HHVM was striving for high compatibility with PHP (they've since dropped that goal).
Also me: First programming job.
I'm surprised to see RPG is still a thing, not surprised its ranking is so low.