Because the way I remember it, technical people hated it with a passion, from its design to its implementation.
In fact, the most popular JS projects have always been to avoid writing ES5, its DOM API, or depending of one of its implementation:
- scriptaculous: we hate even the basic types, so we monkey patch our own code into it.
- jquery: don't use any of the language paradigms and use ones from Lisp and Haskell. Avoid "this". Don't touch the DOM. In fact, don't code, just make a few calls and pass parameters. And we rewrite the whole damn browser API to avoid incompatibilities.
- GWT: write JS from Java.
- underscore and co: let's rewrite typeof, the equality sign and array manipulation methods. And provide an stdib for god sake.
- coffeescript: we like Python and ruby but must do JS.
- React: HTML in JS now please. And magic DOM. Oh, and prototyping is horrible, lets use classes. And we strongly advice immutability, but do what you please...
- webpack and babel: ES6 and 7 are not here yet, but ES5 is so bad we will setup an entire ecosystem dedicated to make believe they are. Also pretend import works like in other languages.
- typescript: ok, we were wrong, ES7 is not enough. Not nearly enough. Please make intellisense works.
Now, in 2020, JS is finally not so horrible to work with. You can use map(), () => and "..." and fake namespaces. Which is amazing to access the crazy cool plateforms that the modern browsers and the web are.
So I guess, in a way, this quote from the AOL guy was true.
https://news.ycombinator.com/item?id=22391509
> I still have people argue with me that the DOM is slow even though all the evidence and browser vendors claim updates to the DOM is simply switching a bit in memory. In other words many web developers have utterly no idea how their platform works.
I guess not much has changed in 25 years. Most developers still fear the language, have no idea how it works, and will do everything in their power to pretend this language is some other language.
> ever tried to make your own UI framework from scratch only using low level GUI calls? z-index, styling with CSS, screen-reader support, etc.
JS oftentimes reminds of Apple: there's the industry standard or some already well stablished way of doing things, and they go like "Well, flip it. We're doing our own way, just because".
$("foo").stuff().bar().res()
jQuery feels like the list monad, if you see chaining as similar to bind and $() not so far from return.And for Lisp, jquery provided error handlers instead of relying on native try/except.
Of course, it's more inspired from it than the real thing, but it's far from any JS paradigm of the time. Remember that JS didn't even have map() and the only place you used your first class functions was to setInterval. Plus the joke is funnier that way :)
They just peeked over at their low level programming neighbours and realized what they did to avoid programming assembly and program C instead was a smart idea.
It's easy to forget, but for years after its introduction JavaScript didn't work well. It was extremely slow, limiting the complexity of what could be built with it. There were problems galore with cross-browser compatibility of what was written. There was no reliable vector graphics or canvas system, so you really couldn't do much graphically. The DOM interface was hard to understand to be charitable. It didn't run outside of the browser, so how dare you call yourself a developer if you were using it?
To the extent that developers knew JavaScript existed at all, it was not considered a programming language.
These things started to change in the early 2000. So deeply ingrained with the disgust for JavaScript, that it took a very long time for the consensus to emerge that you could actually build very complex software on a post-V8 runtime.
After Gmail...things really started to move in the javascript world...people started to put effort into both the runtimes and the libraries.
Updates were often committed live using remote scripting (A precursor to AJAX) and we did a lot of DOM manipulation to update content in-place. At that time, we targeted IE because Netscape's support for DOM manipulation was abysmal.
While I have to give Gmail credit where it's due, I have to give Firefox the real credit for doing the hard work and finally releasing an alternative to IE that kicked JavaScript into high gear. If Gmail had never happened, it would have only been a matter of time before SPAs were going to become a thing. There were more of us doing it before Gmail than most people realize.
https://en.wikipedia.org/wiki/Oddpost
It also felt more like an app than gmail ever has given it had the "standard" 3 panel look of most desktop email apps (same as most of them do today like Thunderbird/Outlook/Apple's Mail)
And before that Outlook had a browser version that acted like a SPA since 1997.
https://en.wikipedia.org/wiki/Outlook_on_the_web
In fact I'm pretty sure that's why Microsoft introduced XMLHttpRequest
I think the v8-runtime changed a lot for Javascript, although it was already normal to use then
Maybe users like native applications because native app programming sucks and it weeds out people who carelessly build things like that.
I don't know what you were doing in 1995 and 1996, but I was building Javascript apps. They were "a thing" for me at least.
And nearly impossible to debug on top of that. Firebug didn't come around until 2005, and AFAIK that was the first interactive debugger for Javascript. In fact, I remember spending a lot of time debugging without even console.log() support - window.alert() was the only weapon you had for the longest time. Not to mention every Javascript implementation's frustrating habit of just throwing up a blank page instead of an error message if anything was wrong...
I wonder how history would have looked like if Scheme had been used instead, as was the original intention.
Or perhaps, Lua.
However, I don't think the limitation was the language. The biggest limitation really were bug ridden browsers. Trying to get something to work across all browsers was incredibly challenging because so many basic features simply didn't work.
Had the syntax been based on scheme, my guess is scheme's reputation would have suffered. I think people have a tendency to blame the thing that they understand the least, so I could see people blaming scheme for the browser's failings.
Also, I went to a university that taught SICP and I'm sorry to say it wasn't popular. Again, when things didn't work, there was a tendency to blame the thing that was least understood.
I could see a Lua-like syntax being approachable, but even that wouldn't have helped. Again, the biggest problem with JavaScript was being tethered to buggy browsers that often failed when you asked them to do simple things.
But I like the idea of angle brackets for content and parentheses for script.
1. Introduce a "chaining" API.
2. Paper over the differences between how browsers implemented the DOM, with events being the big issue.
Note that the DOM is not JavaScript and JavaScript is not the DOM. The DOM is a language-agnostic API for manipulating markup-based documents.
The solution (for CRUD makers) is to make common desktop GUI idioms part of a standard instead of emulate them all. This includes but is not limited to: MDI windowing (as an option), modal panels, drop-down menus, tabs, combo boxes, editable column-expandable data grids, expandable trees, tool bars, and a decent multi-select widget instead of using (just) the Ctrl key. HTML frames were helpful, but have since been deprecated. Somebody found them too useful? Mobile land is too different from desktop land. Forcing a lowest common denominator is bad for business IT productivity.
That's not exactly accurate, you could actually do some server-side things with it and I knew people who did it (late 90s, early 00s) - although I never understood why and the company went bankrupt in the end.
I haven't forgotten, and I will never forget.
JavaScript was hard.
I remember writing complex graphic applications in Director. But I think it took at least 10 years before the same was possible in JavaScript.
Prior to that, it was really just form validation and cool DHTML interactions.
I also wonder why AJAX is not called AJAJ?
Who do you imagine is going to find this advice compelling?
And STILL doesn't, at least for anything non-trivial. New browser brands or version often "break" a lot of libraries and code. It's not really JS's fault: HTML wasn't meant to be emulate real desktops, and shoehorning it to do so has made a giant tangled multi-layer mess.
Browser standards should be split into three focus areas:
1. DOC: Document-oriented for text display and editing. It would be similar to existing browser but with more word-processing-like features. [I removed "read only"]
2. GUI: Mouse-centric stateful GUI markup for data-oriented "productivity" CRUD applications.
3. ART: charts, games, music, and movies.
The one-size-fits-all "standard" mostly failed (job security aside), time to split and focus. Let's admit we f!!! up as an industry.
When has it happened that browsers have broken standardized features? Browsers have gone through large lengths to stay backwards compatible. It's hard for me to think of things that have been broken besides nonstandardized stuff (like plugins, or things that only worked in one browser to begin with like IE).
The promise of the web was cross platform applications that required no installation. Microsoft's fear was that cross platform applications would make the operating system irrelevant and reduce Windows lock-in. Both Sun (with Java) and Netscape wanted Microsoft's worst fears to happen.
This was the era of Embrace-Extend-Extinguish. So Microsoft embraced the web and added a variety of extensions that only worked on Internet Explorer and Windows. The browser wars followed, which Microsoft resoundingly won.
Along the way, Microsoft demonstrated the power of their browser by doing everything that they could to encourage people to write web applications that would only run on Internet Explorer. Which, of course, only ran on Windows. One of the things that they did was write web versions of Microsoft applications using various Microsoft extensions.
One of those applications was Microsoft Outlook. Which needed to poll the server and find out if there was new mail. For that purpose they wrote the first version of the XmlHttpRequest object. This was in 1999 and they thought nothing more of it...until gmail and then Google Maps came out in 2004 and demonstrated what could be done with it.
The next thing you know, everyone is talking AJAX. Mozilla makes the web accessible to the world. And then Google decided to throw serious energy into a better JavaScript runtime (aka V8) because they wanted to be able to write more sophisticated applications.
And the result is that Microsoft's nightmare has now been realized. But none of it could have happened without that fateful decision to supply the missing piece for a ton of applications of having an asynchronous way to go back for more data without loading another web page.
IE ran on Mac but, in a super-fun fashion, wasn't exactly the same IE, IIRC.
There was a period, pre-Camino (Mozilla fork before Firebird/Firefox for Mac got good), pre-Safari, where IE was the single best browser for Macs, yet still wasn't as good as IE on PC...
The old MS/Apple relationship is kind of weird almost like the Gates/Jobs relationship. For you young folks it may be hard to believe but Excel started as a Mac App.
XmlHttpRequest + JSON formalized this type of data transfer.
That made it appropriate for intranet applications, but not the internet.
In 1999 I worked on a contract for Levi's in SF and clearly remember using JavaScript to pull data from a huge hierarchy of product styles and presenting it to the end user as a widget where they could add/remove/move entries around. I remember abusing the cookies API to save the latest client state between page refreshes as it was the only real way to do that at the time. Something like this would have been a total pain in the ass without logic in the browser. In fact, I may have been replacing some sort of Java Applet or ActiveX widget which did something similar in a slower, less flexible way.
So whether it was a huge success outside of corporations or not, I was using it to make a living pretty much from day one.
The majority of webpages did not use it, or it was used very sparingly for things like form validation.
Old versions of IE would have a dialog pop up if there was any kind of error during execution which happened frequently.
I don't know exactly when the tides turned on this attitude. In 2000 the above were not controversial opinions. By 2010 it was gone, and I saw people call it crazy talk, but it probably happened earlier than that. Probably things like gmail in 2004 were a turning point.
document.writeln("Hello world!");
Seems quite a natural thing to do when coming from other languages. But after playing around with it for an afternoon, I came to the conclusion: that's too difficult, I rather spend my time on something else. (If I remember correctly, at that time I was comfortable with Basic and had a little exposure to C++ and Pascal)To me as a regular user, JavaScript was only there to do annoying popups at the start.
Funny how some things never change...
More exciting was things like Java applets or Flash. I did a bunch of stuff with Java applets and was quite impressed in 95-96 when java first came out. I wrote some simple 2d games (falling block puzzle games) which got semi popular. No way to do that in the js world at the time.
Early JavaScript sucked bad. It sucked small planets.
As PG said 2005 about Web 2.0. http://www.paulgraham.com/web20.html
>Basically, what "Ajax" means is "Javascript now works."
PHP is a good example of Worse is Better, because it won over the competition, despite its flaws.
HTML vs xHTML as well. Bash, maybe?
But JS didn't win. It was the only one there.
In actual fact, most people try to avoid JS whenever possible, instead using TS or other languages that compile down to JS.
Saying people love JavaScript because it’s the most popular is like saying people love McDonald’s because it sells the most burgers
[*] since we don’t have Java applets or Flash apps anymore. Writing in other languages still means transpiling to JS in the end
Eh... if this was actually true, the web would look very different. I just can't square "web programmers hate Javascript" with "web programmers are obsessed with SPAs/CSS-in-JS/NodeJS backends/etc..."
> Writing in other languages still means transpiling to JS in the end
I'm assuming you already know about WASM, but if you don't, the future is starting to look relatively optimistic for other languages on the web. Still some problems to solve, but C++/Rust already have pretty promising toolchains working today.
But for me, JavaScript is not about having your dinner made just how you like it. It’s about targeting the lowest common denominator and keeping your code simple because of that.
I think that’s where JavaScript is headed in the limit. We’re at the low point for “just put a file in the browser, it’ll work!” But I guarantee you that style will come back in the next wave. You already see people going that way today. Casting off Babel and using much simpler packaging tools with code that’s natively readable in the most common browsers.
Would you package Rust for the JVM? Maybe. But it would not be fun.
Ok I give up, why is this wrong?
And of course next to JS, you have C#, Asp.Net, Ruby, Python, and Go.
I'd say that given that:
- a lot of people only know JS (like designers)
- JS has a monopoly on the front end and is the only language that can be used on the front and back
- JS has existed for as long as Java (C#, Ruby and Go are way younger)
- there are JS materials everywhere given the web popularity
- the web is the most popular plateform in the world
The fact, as a freelancer going from company to company, I see so little JS on the server compared to other languages tells a lot.
I’m sure it gets a lot of hate just because of its dominance.
I decided I was going to have none of that amateur stuff or reliance on what is now referred to as “browser chrome” (though if the term even existed back then, I surely wasn’t aware of it).
So I looked into this JavaScript thing, and wrote my first ever script embedded into a button:
onclick=“javascript.history.go(-1)”
I was so proud of myself. For about a year users of my school’s website were visibly amazed.
We should not forget Macromedia Flash, it was a very interesting option offering a better programming language but it was not an standard with an open source reference.
Actionscript 2: basically Javascript, when I was writing stuff in AS2 my O'Riley pocket JS guide saw a lot more use than the pocket AS guide.
Actionscript 3: completely ECMAScript4, Macromedia/Adobe was on the standards board for that, but then Mozilla went a different way, I think, it is a giant mess [1]. Also AS3 was a lot more verbose than AS2 which did not endear it to the people with one foot in art and one in programming that was a large part of Flash's user base.
"JavaScript allows Internet applications to easily connect to production databases such as CA-OpenIngres"
"We plan to integrate our automatic document indexing and abstracting technology to leverage the power and functionality of JavaScript. "
"Illustra’s unique extensible Object-Relational architecture makes it an ideal intelligent queryable store for content management applications using Java and JavaScript objects"
"JavaScript is a great way to get cross-platform scriptable access to databases and move the resulting data into Macromedia Shockwave"
"The creation of a general, standard scripting language for Java development will accelerate adoption of this new, exciting technology for delivering dynamic, live content to the consumer."
You could replace "JavaScript" with "Machine Learning" or "Blockchain" in the above quotes, and they would make just as much sense.
Metroworks built dev tooling and IDE's the where big on Mac's back in the day and they where awesome for their time.
Another fun fact is that they had a huge accounting scandal around the dotcom crash involving a 35 day month! They ended up settling for around 300kk USD.
Edit: They settled for 225kk USD. Sanjay got 12 years in prison and an 8kk USD fine.
- (hopefully redundant) client-side validation - some styling (CSS was also brand new) - basic animation (eg: changing the on-hover appearance of stuff) - form "tweaking" (eg: disabling/hiding parts of a form dynamically based on other field values).
It wasn't really for writing apps in, just for adding small enhancements to apps that did their real work server-side.
In all seriousness, everyone was in on Java. Even Microsoft (Everyone was in on Java, even Microsoft (https://en.wikipedia.org/wiki/Visual_J%2B%2B). So most of us saw browser plugins and applets as the future, and some of those plug-ins were very impressive in those days.
JavaScript was seen as a glue language to manipulate components built in better languages. We thought there was going to be a rich component marketplace that was going to be embedded in web pages. We didn't think we'd still be mucking around with HTML and DOM manipulations.
It's not that JavaScript solved that, it's that it's built into the browser such that you can't really skip it. Like the Java and Flash engine, a web browser is also a fat bloated leaky client. However, if you toss the first two, you are then dealing with 1 fat client instead of 3 fat clients. It's easier to keep 1 FC up to date than 3.
According to CEOs and other businessmen making statements for the press hype machine.
https://slashdot.org/story/01/10/23/1816257/apple-releases-i...
Have an upvote.
I was not impressed. On the client side I would use it for very few things and when I tried the server side version I decided that I would rather stick with Perl and CGI. Although I did not like Perl, I could get things done with it. (Oh, I just remember: also Cold Fusion!)
My opinion of Javascript has not improved over the years. I worked with Javascript for a while and in complex enough problems that my name ended up on 2-3 patents and patent applications. I no longer work on the web, but I have occasional need for Javascript and I always hate my time with it.
This will be an unpopular opinion, but frankly I am perplexed by its popularity, because it is neither simple nor elegant.
As Encyclopedia Brittanica (!! who'd have thought) puts it,
JavaScript was developed in 1995 at Netscape Communications Corp. and was conceived of as a companion to Java. It was originally called Mocha and then LiveScript before Netscape received a marketing license from Sun.[0]
And then it became 'a dialect of ECMAScript'...
If you're going to do in browser development, what choice so you have? I can understand server-side JavaScript, mostly to avoid cognitive load from learning two languages.
Otherwise, I think WebAssembly is a lot more promising of a technology.
I mean the quality he did put into it argues for he thought it was really cool, but perhaps he is so much of a craftsman he wouldn't put in less effort on something he considered to be a bad idea (unfortunately not many people have this admirable quality
This article brings me back to a time when every product had a bunch of these "empty suit" quotes about it. The person never said that stuff, it was all written for them. I remember being on a project where marketing fluff was "said" by someone who had no idea what was going on and, besides, the product wasn't doing anything, let alone what he claimed the technology enabled it to do.
Still true, but ironic to hear a huge telco monopoly say it.
What does that language offer that JS can’t match, and what trade offs does it make to get there? I suppose you’d have to write a hypothetical spec for dom APIs, etc that don’t exist in the target language, and then pretend to use it and see what the pain points/unexpected pleasures are.
Most of the memes are faux retro. The fiji water bottle is representative of the vaporwave aesthetic from 2016 or so. The font animation is also super modern, circa early 2010s. It's all fake.
They should have pulled more stuff from Geocities archive. This is not how things were.
My favorite early js story is writing a “life cycle of stars” app in 4 hours in 1997 and getting a full high school semester worth of credit for it :-)
These quotes don't sound right. I was working for an ISP around 1995ish and telling people how to set up Trumpet WinSock and MacTCP and Internet Explorer. Java wasn't even public yet, was it? Someone wanted an interactive web page, so I used Perl and CGI.
"JavaScript is a great way to get cross-platform scriptable access to databases and move the resulting data into Macromedia Shockwave, where it can be rendered, animated and made into live interactive multimedia for the Internet."
Live interactive multimedia? At 3.6KB/s? I remember a T1 (24 simultaneous calls) being a big deal, now my phone seems to have about 40 times the bandwidth.
A lot of familiar stuff came out around that general time, but it didn't spring forth fully formed. Someone was creating what would become eBay at the time too, but that doesn't mean it was a thing yet.
Maybe these are all genuine quotes, but they feel like they are from someone who thinks of 1995, 1998, 2002, etc. as all being "a long time ago".
But your question is equivalent to “what Nation could be the next United States”.
Possible serious answers to your question... which language might be on every device in 10 years... some successor to Solidity might Trojan horse it’s way in. If Facebook built a, like, a “Facebook Platform” or something like that, that could be on every device. Other than that, it’s hard to imagine.
JavaScript came from an era of global platforms. That’s over, now we’re in the era of fractured platforms. I don’t think we’ll see another global platform in a long time. It would need a major new selling point (like Solidity has) that can’t be replicated on existing platforms.
I guess my 2 wild guesses for the long-term future might be either or both 1) a visual/block programming tool (which perhaps might perhaps be more usable in virtual reality type environments) or 2) natural language programming (programming in English and/or other natural languages), which might be more usable in both virtual reality and chat environments.
Go, maybe? Or is it not flawed enough and not criticized enough? Or is it already used too heavily?