JavaScript Is Eating The World (dev.to)
An anonymous reader shares a report: In case you haven't heard the news, JavaScript and NodeJS are single handedly eating the world of software. NodeJS is an Open Source server-side JavaScript environment based on the V8 JS rendering engine found in Google Chrome. Once only thought of as a "hipster" framework, NodeJS is fastly becoming one of the most commonly used languages in building web applications and is beginning to find its way into the Enterprise. Netflix, Microsoft, PayPal, Uber, and IBM have adopted the popular "hipster" server-side JavaScript engine for use inside high traffic, high profile production projects. Java still powers the backend of Netflix, but all the stuff that the user sees comes from Node. In addition to Node, Netflix is also using ReactJS in their stack. PayPal too is moving away from Java and onto JavaScript and NodeJS for use in their web application platform. Uber has built its massive driver / rider matching system on Node.js Distributed Web Architecture. IBM has also embraced NodeJS as well. Even Microsoft has embraced NodeJS, offering direct integrations into their Azure Platform, releasing a wealth of tutorials targeted at Node and they have even announced plans to fork the project and build their own version of Node powered by their Edge Javascript engine instead of Chrome's V8.
JavaScript has greatly improved the internet. Unlike true hipster languages like Rust, it has stood the test of time and is widely supported. Security has greatly improved over the years. We should consider replacing much of the C code in existence with JavaScript to improve security and reliability.
Ruby was in the same position not that long ago, I wonder how many now legacy ruby apps people regret writing.
When Webassembly gets access to the dom, the Javascript craze will begin its decline.
There are some aspects of Node that are really nice though, mainly the ease of use of the CLI. If that were combined with a better security system and less feature churn, it would be great.
"First they came for the slanderers and i said nothing."
The Node Package Manager (NPM) is probably why Node.js is being used with every new JavaScript framework out there.
Don't worry, AI will eat Javascript. nd hopefully, M'Smash too.
Software Is Eating the World, But AI Is Going To Eat Software, Nvidia CEO Says
Java is like corruption. It is evil, it should be eradicated, but it won't be. Because the people that could make it disappear are the ones benefiting from it.
Agreed. I've noticed a drastic increase in JS use across the web since Windows 10 was released. The problem with JS 10 years ago used to be that the browsers would interpret things differently breaking stuff almost on a monthly basis. The incentive back then to use primarily JS was low due to being high maintenance. Now the roles are reversed. PHP is starting to get out competed by JS frameworks and web sockets. JS can do more and faster in most cases. I remember hoping the world would eventually get to this point with JS 10 years ago. Seems we have arrived.
What a horrible thought, really. This is Microsoft saying Yup, we would prefer to try and fail to kill any innovation in the web, as per usual. It will be for nothing. Again, again, again.
NO SIG
They really wanted to emphasize that this is a "hipster" language...it reads as if hipster walked into the door on the 7.5th floor, into itself.
It's easier and cheaper to staff with relatively junior .js people than pay for so-called "back end" or "full stack" programmers who know C++/Java/whatever.
In a previous life it was very important that management could hire .js people, as the new budget required they get rid of anyone expensive. Like the chief architect (;-))
davecb@spamcop.net
It is noteable that some major services are using these JS platforms. Could be for several reasons including a glut of code campers who will work for cheap.
But the bulk of software being stamped out these days is not intended to be durable. As such, the tools being used to build it are not necessarily the "future" of anything.
Its a great framework. Development is fast. Deployments are even faster. Testing is easy... Sure, Javascript is far from the fastest language, but in our context we delivered many more tools and services than we would have in Java, Php or .NET.
Its not perfect of course, but for us the benefits far outweighs the disadvantages. Long live NodeJS.
Decode your health
...there's probably still more electric toothbrushes than webservers. And those don't run Javscript but tiny Assembler programs.
If you use a programming language simply because it's popular, there is a big chance you are using one that's unsuitable to solve your problem.
I worked with Javascript in the 90s... if you had come in a time machine and showed me this article from 2017, I'd say if you were bat shit crazy. If you gave me next week's lottery numbers and I won the jackpot I'd say "Well I believe you're from the future... but you're still pulling my leg about this Javascript thing, right?"
Live today, because you never know what tomorrow brings
he could output any style or form readable in the oldest webbrowsers and new.
htmlpost was customary intetaction.
and his extendability and portability was a shell call away.
This is a good point. Ruby, and especially Ruby on Rails, did fall out of favor quite quickly. I think that many people and organizations regret falling for the hype. Ruby and Ruby on Rails both gained a pretty bad reputation for being slow and bloated, and software written using them was often found to be difficult to maintain. Dynamically typed scripting languages might work well for quickly throwing together a prototype, but they often aren't so good for writing large software systems that must be maintained for many years or even decades.
It is also important to note that some prominent members of the Ruby and/or Ruby on Rails communities jumped ship to Rust when it started to become obvious that the Ruby and Ruby on Rails hype was wearing very thin, and the Rust hype was just starting to build.
For example, look at the Rust Core Team. We see Yehuda Katz listed, who is apparently a former member of the Ruby on Rails Core Team. We also see Steve Klabnik listed. He apparently wrote a book about Ruby on Rails with Katz. Alex Crichton appears to maintain some Ruby gems.
So over 30% of Rust's Core Team was involved with Ruby at some point. It might even be more than that. This has made me very suspicious and weary of Rust. I personally have had bad experiences with Ruby and Ruby on Rails, and I fear that I might be subjected to the same hype-driven nonsense if I get anywhere near Rust, due to the same people being involved with both.
Ah, JavaScript. The Visual Basic of our time.
Using a language that everyone can program in just means you will have to deal with a lot of code written by people who don't completely understand how a 'while' cycle works.
Creator of JavaScript is a homophobe, who opposed gay marriage. It is immoral to use it.
Similarly, because the US Constituion and the Pythagoras' Theorem were thought up by slave-owners, it is immoral (and should be illegal!) to use them too!
In Soviet Washington the swamp drains you.
Web browsers and web based software like electron hoard memory like crazy. A gigabyte of RAM was once reserved for supercomputers, now even the cheapest netbooks have one. We need to force app developers like Mozilla (who rather design silly logos than work on RAM consumption) to document every byte of their usage. We will soon how much is wasted due to fad technologies like javascript and blockchains.
When WebAssembly gets the DOM: We're fucked.
You thought malware was bad before?
> based on the V8 JS rendering engine found in Google Chrome What's a "JS rendering engine". You don't "render" JavaScript.
Python, with it's massive and robust package library, has a lot to offer on both the client and server side.
Doing systems integration work, my recent experience with web applications has mostly supported this point. javaScript, wrapped in FrameworkOfTheMonth, is slowly replacing client-side applications for better or worse. If we're not allowed to have rich client applications anymore, JavaScript is pretty much the only tool to make a browser act like a rich client -- but it's a good example of shoehorning a technology in just to save complexity. I'm not saying we should go back to Java applets or Flash or ActiveX, but JS is really being extended way beyond what it was ever meant to do.
I think its rise comes from a few factors -- massive amounts of cheap CPU and memory being available on clients, and a billion web frameworks to make using it easy for beginners. This latest dotcom bubble has spawned a bunch of "coder bootcamps" that teach basic front-end web development in a JS framework. It really is easy to throw something together that functions. However, you can definitely tell when either the framework and/or the programmer isn't doing something efficiently...just look at client side UIs that totally freeze up when a database call is taking longer than it should, or websites that slow quad-core systems with 16 GB of RAM to a crawl while they load 11,304,283 snippets of code from different hosted libraries.
IMO it's not the language itself, it's the life time and complexity of applications: there is a a little value in developing a well designed and thought through application when its life time will be weeks and its doesn't do anything but parse a trivial request and fetch something simple from the storage.
Stitching together something that "just works" using the (almost) same set of tools as the UI is much easier.
The trend towards simplified stateless cloud-based backends is to blame.
Javascript is truly an awful language for developing an application of any real scale. If you depend on any of the third party modules, you better be ready to take over maintenance in future. Coupled with the awful design of major components like React, I really do wonder who is actually making the decisions to burden themselves with this nightmare. At least with web assembly, we will be able to use a sensible language that is not tainted by javascript semantics. I think when web assembly becomes more popular, javascript will sink pretty quickly. I just can't imagine why anyone would worth with such an unprofessional, and truly regressive toolchain and libraries.
I remember interviewing for jobs in the early 2000s and when given the choice of language to use, I'd often pick JavaScript, and the companies would be like "LOL WTF JavaScript?"
Fuckers!
Why do people keep equating enterprise web stuff with "the world of software" sigh. It's not. After coding JS for a long long time I am happy to be back doing C again. Long live C!
I can't remember where I read this, but I agree 100%:
JavaScript is in every web browser, and the web browser is the way that most people interact with computers these days. Because of this, the industry has devoted, and will continue to devote, massive amounts of resources at optimizing JavaScript implementations. No other language, not even C/C++, is going to get that level of industry-wide effort.
It doesn't matter that JavaScript is a flawed language. It doesn't matter that some of it's features almost guarantee inefficient execution. The effort will be made to make it work.
Fastly? Since when is Trump writing summaries for Slashdot?
I'm primarily an embedded/kernel developer, and I've been using C for decades. Normally I'm pretty strongly in favor of using C. But I readily admit that you can throw together a project in NodeJS very quickly. There isn't much revolutionary about NodeJS, other than it is packaged nicely and is easy to use. When the primary purpose of writing software is to solve problems, getting something going in short order has value.
I grew up on BASIC, but JavaScript is so ubiquitous and is not terribly hard to learn that I would recommend it as a first language over anything else. (Ideally you should learn multiple languages as you advance, as they each have their own advantages and quirks)
PS - I have a fondness for FORTH that may never go away, even if I will likely never again get to use it in a professional project. R.I.P. OpenFirmware
“Common sense is not so common.” — Voltaire
Algol syntax is cumbersome and limited. Where as Logo is based on LISP and has some very powerful built-in datatypes.
Comment removed based on user account deletion
Exactly right. It is the most bandwidth intensive way possible to do anything. If browsers had supported something more lightweight, say a compiled language instead of a cruddy interpreter, then perhaps we'd have something, but as it is, NO, I don't want to download 6 GB of javacript to my phone to see your cat video.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
While I hate Javascript as much as the next guy and I love the title, this article is full of errors, misconceptions and spelling mistakes. Not worth your time.
I maybe in the minority with the young hipsters, but this summarizes my thoughts on Node.js from the same guy who did nosql webscales video where he pointed out non SQL databases don't have data protection or integrity.
Basically the video states node.js has the complexities of assembler with the syntax of javascript. You have to write your own freaking threads with callback after callback loop. Why?? It makes no sense in 2017 where NGINX has async threading models built in. Javascript is bad language too and while node.js looks cool for simple things if you already know Javascript it gets sucky very very quickly when you need something complex.
So why build your own multitasking when you can use built in threads?
http://saveie6.com/
How much did Joyent pay for this advertisement?
FTFY. Javascript and NodeJS are terrible platforms. I write Javascript code quite regularly and hate quite a bit of it. jQuery, which seems to have fallen into disfavor with da hipsters, takes off some of the edge but browser vendors will never agree on anything. Vanilla JS is like running around having sex with everything that has a hole only to discover that you basically rewrote an inferior jQuery (but, hey, at least you didn't use jQuery, amiright?). The latest fad terminology is "feature detection" which just means "We suck at writing sane software so you and your users get to suffer. Also, we'll inexplicably break this feature in about 6 months so you'll have to work around it." Let's call the entire mess what it is: Broken software. My philosophy is to NOT use broken software unless I absolutely have to because maintaining sanity is a good idea. What a novel idea!
NodeJS is crap. It's a massive, bloated memory hog that is insecure, you can't do anything in it that you can already do in other languages, and it only becomes useful once you drag in enough libraries (aka packages) to power an entire OS. Put 5 NodeJS instances on a single virtual and the host OS will be begging you to have mercy. Also, just because Node is "cross-platform" doesn't mean that applications written in it are actually cross-platform (Hint: They aren't).
Grunt (Node) and SASS (Ruby) are the worst. Ignoring the fact that those tools run slower than molasses on a 6th generation i7, whoever came up with the idea to "compile" Javascript and CSS should be shot. Anyone making the decision to use those two technologies should also similarly be shot. Whoever runs the npm website should be shot, set on fire, and then nuked from orbit just to be sure. And, of course, never permitted to write software ever again.
Also, just because a company like Google uses something doesn't mean it is GOOD. After all, Google gave us Android. Unfortunately, to write Android apps requires writing Java. Java was pretty much on its deathbed until Google did that because Oracle was doing a fantastic job of killing it off after they bought out Sun Microsystems. That was the only good thing to ever happen to Java. Java abuses Exceptions in so many ways you pretty much have to wrap your entire Android application in a giant try-catch so it won't crash. Java lacks several critical object-oriented features from other languages that violates DRY in painful ways. Java is one of the worst languages out there to pick for the underpinnings of an entire OS. Maybe using the JVM allowed Google to get to market quickly, but now we are stuck with a terrible ecosystem just under the hood. And that's just one example of using something internally and it being a terrible long-term decision.
NODEJS IS NOT EATING SHYT.
stop pushing these lame agendas. nodejs is dead. move on.
+5 analogy for "one language for entire stack" argument! Kudos & LOL.
While I do have many qualms about JavaScript (JS), a bigger problem is that different kinds of languages better fit different needs. JS is okay as a light-weight glue language, but should NOT be used to write lower-level API's and services that need a compiled/strong-typed (CST) language for performance and the safety of type-checking.
Low-level components/layers that higher levels such as app-specific logic rely on should generally be CST. If you think of applications as an onion with OS, compiler/interpreter and databases being the core, middle-ware libraries the middle layers, and application business logic the outer layers, then the closer to the core you are, the more "anal" the language you need for speed and reliability, thus CST. JS is best for the outer layers where too bureaucratic of a language slows progress, especially in-house apps for non-key tasks that wont kill anybody if they break. I doubt there will ever be a one-size-fits-all language.
(Although, others and I have kicked around the idea of a language that can be strong and weak typed based on configuration switches that can be applied to the entire application or a specific module, and specific parameters can be still be verified as requested. It's almost comparable to using the type "object" in C# by default if weak mode is on, but without the need to actually state "object". Another approach is "soft compilation", but that would take a long time to explain. Also, I realize there are existing interpreted strong-typed languages, but for various reasons that combo has not been successful.)
Table-ized A.I.
Hardly new. Around 1998 I was using Netscape Enterprise Server with Server Side Javascript. It integrated easily with Oracle (and probably other RDBMS). Certainly the JS engine was a bit fragile and could bring the whole server down, but it was also 20 years ago.
for when you have no talent but want to be a silicon valley "bro".
No quicker way to lose respect that say you are a competent "javascript" coder
But you do you.
Kill it with fire
I'll stick with static typing...C# .NET Core, Java Spring.Boot, etc...if I had to do something front-end, I'd use TypeScript, but no way in hell that javascript shit we're forced to use on the front end is going on my backend.
> eating the world of software
For anyone under 20 maybe.
JavaScript and NodeJS are single handedly eating the world
<Inigo Montoya />
I've been using node for about a year. What's it good at? Glue. It's awesome at being glue. It's mind-numbingly easy to put something together that can handle 40k messages a minute on one thread.
The libraries are well-designed, are documented, have good error handling, and make sense. Most of the packages seem to be written by experienced developers who don't have retarded APIs or naming conventions. They're very task-oriented and don't have a lot of extra crap in them.
As an example, you can build an SNMP poller in about a day or two that could replace HPOV/NetView. That's pretty good. And you could do it using one xeon core.
It appears a lot of Slashdot users oppose script-in-the-browser to such an extent that they would prefer "a return trip to the server" to automatic execution of unvetted proprietary third-party code. And as for "a validation error message at a conveniant time", they consider the inconvenience of waiting for form submission to be worth the increased security arising from less third-party code on their machines.
too bad..
Wasn't JavaScript this buggy hack that you can't use to run anything real (bad PNRG) and that was originally designed to make scrolling text before the devil replaced it with the marquee tag?
Maybe things have changed, but the last time I did work with JS, it still felt like a supersized tool that adults shouldn't be using. Did I miss some fundamental changes to the language, or has the other half of the world gone crazy?
Assorted stuff I do sometimes: Lemuria.org
Windows desktops, Windows fondleslabs, MacOS, iOS, Android, Chromebooks, full GNU/Linux... the web is the only thing that even has a prayer of being deployed to all of these, across five CPU architectures (i386, amd64, armv7/32, armv8/64, MIPS Android phones).
That or a native application written with Qt and compiled for Win32, UWP, macOS, iOS, Android, NaCl, and GNU/Linux respectively, leaving out only Chromebooks. Even if you were developing a web application, you would need to buy the full set of hardware anyway in order to test it on all platforms, including the many quirks of the Mac and iOS versions of Safari.
everyone uses javascript because they have no other choice for the job (code running in the browser)
The job is not "code running in the browser". The job is "code running on client computers". This can be done without JavaScript by producing a native app and building it for each of Windows, macOS, GNU/Linux, iOS, and Android.
... in hipsterese? Given the writing, is it possible to take this article seriously?
While amusing, that video is pretty out of date.
Today you can choose the level of data integrity and data protection that you want. If you don't understand why you would want to do that then you can come back in a few years.
(No, I didn't forget to write my comment. It's in the headline above.)
Christian R. Conrad
mail me at iki.fi ; same user ID as here
Even Microsoft has embraced NodeJS, offering direct integrations into their Azure Platform, releasing a wealth of tutorials targeted at Node and they have even announced plans to fork the project and build their own version of Node powered by their Edge Javascript engine
*Face contorted in a horrified grimace* Run! Run, you fools! RUNNN!!!!!!
"Re: Ruby", Yadda yadda.
Christian R. Conrad
mail me at iki.fi ; same user ID as here
Not necessarily; maybe only between men. We don't know what Brendan gets up to with the missus.
Christian R. Conrad
mail me at iki.fi ; same user ID as here
...is also a WW2 reference, namely to the country that actually beat the Nazis: the Rodina.
Christian R. Conrad
mail me at iki.fi ; same user ID as here
MVC was "invented" for client/server systems, if I'm not mistaking, or at least used heavily for client/server before moving to web. Thus, its association with web-ness is weak at best.
Table-ized A.I.
The browser has become a rich/fat-client, it just sucks at it because it wasn't originally designed for it, and hacked up over time to fake it.
For "productivity" applications (brochure-ware excluded), desktop UI idioms are still preferred. But we have to bend over backward to get HTML-browser/DOM to act like a (non-fucked-up) desktop, with lots of blood, sweat, tears. It's ugly compared to desktop/CRUD development in say Delphi, Powerbuilder, etc.
What's needed is a new GUI-friendly standard that works decently over HTTP/HTTPS. We should take the best lessons from Java applets, Flash, X-Windows etc., discard the worse parts, and try to get a real GUI standard for once.
Some suggestions:
* Do most of the positioning calculations on the server side to avoid complex "flow" calculations on the client (which end up varying too much per browser brand/version). Perhaps put the "flow engine" on the server and have the client merely render "dumb" vectors as coordinates (pixels or panel percents). The client sends its screen size preferences to the server rather than let the client-side do the "fit" calcs on the browser (client).
* Allow font sizing with a maximum containment box such that fonts are rendered smaller if necessary (at least on the X axis) in order to guarantee a fit in a designated containment box. Overlapping element errors are common in CSS/JS-centric frameworks, largely because testers don't test in a wide enough variety of clients/versions/OS-DPI settings.
* Don't make the client an OS or OS-like thing. This is largely Java's mistake: they bit off more than they could chew. Focus on GUI's and KISS. Most the app activity should be on the server.
* Allow flexible "skinning" to keep up with style Joneses. You have to keep up with the look styles to not get ignored, unfortunately. (I have some ideas for graphic (image) background skinning that are flexible but relatively simple that allow changing the visual styles without breaking the complexity bank.)
* Allow optional client-side scripting, but try not to over-do reliance on it. If a UI pattern(s) emerges, then build that pattern into the standard.
Table-ized A.I.