Language fads are very tiring.
Language fads are very tiring.
Maybe instead of building square wheels they should work on improving some of the existing round wheels.
Where would we be if Einstein had spent all his time trying to improve Newton's gravity rather than reinventing it?
Where would we be if Einstein had spent all his time
trying to improve Newton's gravity rather than
reinventing it?
Einstein did just set out to improve Newtonian Mechanics. Special Relativity is just Newtonian Mechanics over the Lorentz Transform.General Relativity is the implication of Special Relativity being true, generalized for all observers.
Einstein's approach was very much step 1, just repeated 2-3 times.
Special Relativity didn't necessarily destroy Newton's gravity. To be generalized in GR gravity had to stop being force. It was just a natural implication of a prior step.
The idea you can chase a total alien solution nobody supports and pull complete magic out of thin air is rarely true. Normally it is just a myth created by people who don't actually understand the solution or process that attained it.
"As an older frield I must advise you against [generalizing relativity to incorporate gravity] for in the first place you will not succeed, and even if you succeed, no one will believe you." - Max Planck to Einstein, 2 years before Einstein succeeded. It was a big deal to even attempt to do this, and people tried to talk Einstein out of it.
And why did Planck say no one would believe Einstein? Because Einstein was trying to do something fundamentally different; he was trying to create a new kind of wheel.
"Newton, forgive me." - Albert Einstein -- why ask for forgiveness?
Einstein's role was something quite different from the role that most physicists play. Most physicists add small refinements to existing theories. Einstein upended quite a lot of existing physics and replaced it with something new. Newton saw gravity as action at a distance. Einstein showed that it was something quite different.
I'll repeat this quote
The idea you can chase a total alien solution nobody supports and pull complete magic out of thin air is rarely true. Normally it is just a myth created by people who don't actually understand the solution or process that attained it.
Einstein didn't start out in left field, he didn't set out to invent a new wheel. He just saw some problems in the old one, and suggested an updated wheel that would resolve them. That's the difference. One is being contrarian or experimenting on their own, which is not necessarily wrong and can certainly be useful experience to draw on, but it's just not likely to yield large advancements on its own.
Large advancements occur when someone is current with the cutting edge, accepting of the established truths, and still striving to solve the larger puzzle (which may involve rotating the puzzle pieces that make up parts of the "established truths" -- but you can't get there if you don't have the pieces at your disposal).
Do you suggest that these people set out to make a great terminal emulator, and were eventually driven into the arms of JavaScript as the one true answer to the fundamental problem?
I think it's more likely that they said "Let's try to do this thing that's been done hundreds of times ... IN JAVASCRIPT!!!" And again, there's not anything wrong with that per se. It just doesn't make a good value proposition when you're trying to convince users to use your product.
Best long winded alias for the field of programming to date!
Runs everywhere (client and server), is the language picked up by beginners, and is abused to fit every square peg into a round hole.
I've asked several of these people to explain the attraction (one of whom had a fascination with the even-worse CoffeeScript) and thus far I have not really come across a satisfactory explanation. To me, JavaScript is still the language you only use when you have to because it's the only runtime the browser vendors will embed.
http://quoteinvestigator.com/2013/02/10/where-money-is/
Javascript is a "workable" or "decent" language, and it happens to run where the users are. This is also a large part of why C++ was a success and C before it.
JavaScript is not good. We should be working to get it out of the way, not converting everything in our environments to run on it.
Whether or not that makes it a solid, durable terminal program is another question, though.
If your goal is to provide a consistent look and user experience across platforms and be easily extendable, what do you choose? Feel free to name one.
You asked for one, here's five:
* GTK+
* wxWidgets
* Swing
* SWT
* Tcl/Tk
You then mentioned "easily extendable". I'm not sure if you'll agree Swing/SWT are easily extendable (I'd argue they can be), but wxWidgets and GTK+ have bindings available in many common scripting languages (heck, even PHP!) which are just as easy to extend as JavaScript is.
Again, I'm not arguing any of these are better suited, just responding to your point that there was no alternative.
Of the 5 alternates you provided, can you name me an app that runs on major platforms that people describe as a good user experience? Not just that they work, but that they serve as good example of how to design a user experience. The only one that I can think of that I use on an everyday basis is the JetBrains apps which are built in java, although what UI implementation they're using I'm unsure. Beyond that, all the good cross platform apps that I can think that aren't using something webkit based (slack/atom/discord/etc) use native OS GUI implementations. I'm sure there are others, but it's hard to completely discredit the browser-as-an-app approach.
From what I gathered from the project, it's aim is to go beyond being just another terminal emulator and provide a certain amount of bells and whistles through its interface. Turns out interface bells and whistles is something that HTML+CSS+Javascript has nailed pretty well while remaining cross platform compatible.
However, the major cross-platform toolkits of wxWidgets, Qt, and GTK+ have run long projects to allow for native interface components on the platforms they support. This is usually something that can be configured at compile time.
VLC is wxWidgets and it offers a consistent user experience across platforms. Chromium is GTK+ and it does so as well. I'm not sure what's trendy in the UX snob circles these days so I don't know if they qualify as "amazing UX" or not, but they're two widely-used, major projects that incorporate standard cross-platform desktop toolkits.
Personally, I've always been partial to Qt, though I can't think of something off the top of my head that uses Qt and has widespread usage across platforms (Qt of course powers the entire KDE suite, but that usually doesn't cross over to Mac or Windows users, and Amarok's glory days are long gone). I guess Clementine uses Qt, and it may be widely used. I used it on both Win and Linux and the UX is identical.
Another very common Qt based app is Skype.
Dav Glass did some awesome hack day projects in the early days of Node.js demonstrating how this could work for Yahoo mail. Hit your inbox for the first time in a browser session and it'll send back a full HTML page rather than a bunch of JS files and expect the client to render before anything appears. With this you could have less than one second full render times for a complex single page app. Imagine if Gmail did something like this, you wouldn't need to leave a tab open to avoid the 5-10sec it takes from login till inbox shows. Furthermore, you could build this out further where if the "compose page" JavaScript hadn't loaded yet, you could then roundtrip to the server and get the markup rather than waiting on it to parse and execute on a slower machine.
Not saying everyone should do this obviously, but it is a valid use case for JavaScript on the server if done right IMHO.
That's simply how the programming "field" works. Also in the category of "how it works": People grousing about it. (Seriously, that is the way it works, and do we dare suppose there is a better way?)