That's not my recollection. And I disagree with the fashion thesis too. :)
So I used Tcl, perl, and python in the early 90's. Tcl owned embedding and Tk. Perl owned sysadmin and CPAN. And was fast. Python owned OO and "nice professionalism". Perl and python had hashes. Tcl got hashes. Tcl and perl picked up OO. Perl and python mooched Tk. But Tcl remained furry and batteries not included. Perl remained buggy and weird and unprofessional. And python remained without good code sharing. Turns out people wanted "nice" more than embeddability or CPAN. All three communities knew what their strengths and weaknesses were. And were variously able to deal with the weaknesses, or not.
Today some of main Python libraries are in C, specially the ones that need speed, like numpy, pandas and all the Data Science eco-system.
Desktop user interfaces became less important with the Web.
Python also got a good regexp engine. Its legibility, batteries included and interactive shell beat them all.
Ironically SWIG originated on Tcl, IIRC
I don't think it's the same use case. Tcl is really good as a CLI language, like Python.
NodeJS is not very good when it comes to test stuff in the CLI quickly due to its async API. Even when there are synchronous versions, most libraries are async so wrapping everything in promises is a bit of a pain.
IMHO Tcl really lost to Python, not JS. Python is an excellent way to test ideas quickly on the CLI.
I do a lot of web-scrapping and data transformations and to be able just to open a CLI, call a lib and test things out in 5 minutes for a PoC is just RAD.
Not saying you should change languages though, especially if you're happy with your existing toolset! But if you feel up to it, you might be surprised upon giving it a try.
I've written a few one-off scrappers without any complaints. It also works well for simple cross-platform scripts.
I don't recall the developer experience when installing python on windows, so maybe it's just as good. With node you only have to download and install the official release, and everything is good to go. Even when some package has native code, it generally "just works".
Python was a killer of both... it wasn't as hostile and freaky as Tcl and arcane as Perl.
- lua appeared 2 years before
- python 5 years before
- perl 7 years
Instead we have this monstrosity with no namespace, terrible error handling, pitiful stdlib, limited expressiveness, atrocious data structure and type handling, so full of traps and gotchas we had to write a book about the part of the languages not to use.
Also, given that DSSSL was an early contender against CSS (and a great deal more powerful), we could have basically had Scheme there too. https://blog.cloudflare.com/the-languages-which-almost-becam...
Lastly, because S-expressions can represent everything that is representable in SGML/XML/(X)HTML, but more succinctly, we could have basically had Scheme instead of HTML.
Imagine if, instead of JS/HTML/CSS, we had... Scheme. I'm pretty sure that the alter universes where this happened also all have peace, warp drives, and working cold fusion.
The worst crime Sun ever committed will turn out to be influencing the birth of JS.
I suggest (along with David Moon (Lisp Machine)) that a key disadvantage of sexp with respect to *ML, is that there's no place to hang on "extra stuff". Many lisps allow you to decorate the nodes with properties once the nodes are read, but the properties lack a printed representation. It's a homoiconicity fail. Sort of like not allowing comments in JSON might be, if a common case was then to attach comments to the objects after they're loaded. That very isn't common, so the restrictiveness is worth it. It's not clear that's the case with sexp.
"In 1993, the only real contender was Tcl, which had been explicitly designed to be embedded into applications. However, Tcl had unfamiliar syntax, did not offer good support for data description, and ran only on Unix platforms. We did not consider LISP or Scheme because of their unfriendly syntax. Python was still in its infancy. In the free, do-it-yourself atmosphere that then reigned in Tecgraf, it was quite natural that we should try to develop our own scripting language ... Because many potential users of the language were not professional programmers, the language should avoid cryptic syntax and semantics. The implementation of the new language should be highly portable, because Tecgraf's clients had a very diverse collection of computer platforms. Finally, since we expected that other Tecgraf products would also need to embed a scripting language, the new language should follow the example of SOL and be provided as a library with a C API."
https://news.ycombinator.com/item?id=1905155
Do you actually use JS? What's with the royal "we" that only His Majesty King Crockford (I'm friendly with Doug) can use?
For all that JS may suck, I somehow think anything early 2000s MS would have pushed would have been worse. VBscript, perhaps?
The real problem would have been that they would have had to give other browsers a chance to adopt the new language, possibly even by providing dedicated resources to implement it for them; but Ballmer's MS didn't really "do" cooperation, they were happy to push ActiveX to lock out competitors.
Still, they did have the chance.
https://devchat.tv/js-jabber/124-jsj-the-origin-of-javascrip... (transcript at bottom)
https://brendaneich.com/2012/04/the-infernal-semicolon/#comm...
Netscape management gave "make it look like Java" orders. There was no time, on top of this. Last (more below in another reply) no extant command line interpreter was ready to be put in a browser. Way too many non-portable OS dependencies, unsafe FFI, etc. It was JS or bust (aka VBScript).
So I agree the field has remained disorganized, with it's research and development severely underfunded. There is no language implementation wiki. The field's research is often by years of intermittent incremental papers, and little bus-factor one projects. We're down to like one biggish industrial research lab. And ARPA, sigh. And professional progress, often seems sort of exploration by an army of wandering ants, rather than purposeful pursuit of economic development and human progress.
So with the poorly organized professional knowledge, and the unacceptability of high onboarding costs, yes, there's a lot of random motion. And the scrambling mob carves a flood plain.
But.
Cohort learning is actually a good learning strategy. And given how big the field has gotten, and the criticality of community, it's a plausible local heuristic to "follow the mob - it's path will likely at least be plausible, even though not optimum, and the inevitable obstacles can be collaborative tunneled through, or filled in with bodies". And the profession is not just larger, but vastly better trained than it used to be. There's a massive education process in progress.
And the "driven by fashion" argument gets used a lot. At least sometimes, it's clearly an "argument from failure of imagination". A "I can't imagine what they're thinking, they must all be nuts". Sometimes your expertise in some domain corner is enough to confidently say that. Or the nuttiness is nicely compact - "Google backs it, so I'm sure it will be supported for decades". But it seems most use of the argument is more... ambitious than that.
> Tcl is a powerful language that you can use to create complex systems with simple code, the holy grail.
Tcl/Forth/Smalltalk/Lisp/Self/APL/Oz/... we've had many many languages with glints of grail. We're just still really bad at combining and polishing them.
There's little funding for it. So it's a multi-decade incremental creep. An "if you're still alive to see it" bright side might be, it looks like the transition to "no longer crippling", when it finally happens, might be a "boom - new world" kind of thing.
EDIT: aside: I saw the other day that React native(?) could now be packaged up with it's own little embedded faux file system... and thought, yay, we're catching up with 1990's Tcl! (The Tcl app distribution story was excellent). You just need to have a half century of patience, and it will all work out. Patents only last two decades. And we're only failing, what, 7 billion people? Delay a year, miss a 130 million person cohort. No problem.