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
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
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
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
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.
I thought that was the whole point of agile - that there is no 2.0, there's only 1.0 plus duct tape. Because if you're genuinely aiming for an MVP, the end-goal is just more durable duct tape?
If the requirement is 'throwaway platform' then the manager-deity-on-high didn't properly think through what they really wanted.
> based on the V8 JS rendering engine found in Google Chrome What's a "JS rendering engine". You don't "render" JavaScript.
You do know that Java was mentioned twice in the summary, right?
Trying to use Java for front-end development is absurd.
Why do you think it would be any different than javascript....
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.
Webassembly is better than Javascript in terms of security, because the definition is more precise, simpler and clearer. It's easier to correctly sandbox Webassembly than Javascript. It wouldn't be surprising if someday, in order to improve security, the browser just compiled all Javascript to Webassembly because of security reasons.
"First they came for the slanderers and i said nothing."
Have they settled on the syntax for print statements yet? I heard Python had some nice features, but the reference books all say "This was done in a different way in version 2.0," and version pain is a real thing.
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
I lived through the 1990s, and I don't remember anyone saying that applets were better than Javascript in terms of security.
What makes you think Javascript is so secure? It's not.
"First they came for the slanderers and i said nothing."
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.
You were never an Algol programmer, either that or you never used Logo. The syntax of Logo seems simple until you try to use it for something a bit complicated. The syntax of Algol *is* simple. OTOH it doesn't have many standard libraries, which make it so limited it's basically useless except for instruction. (It could have, but the designers intentionally stripped out basic features without moving them into standard libraries. Whoops! [They moved them into libraries, but didn't standardize them. So you got all sorts of dialect differences almost immediately.])
FWIW, I rather liked BC-Algol, but debugging was horrible. But when compared to Fortran it was lamentably lacking in libraries.
I think we've pushed this "anyone can grow up to be president" thing too far.
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/
You're being silly. That print statement thing was easy to be compatible between versions. (The 3.x versions make print a standard function, so you need to remember the parenthesis, but you can use them in 2.x.)
If you want to complain about something that really changed significantly, talk about string representation. That causes some real problems.
I think we've pushed this "anyone can grow up to be president" thing too far.
I lived through the 1990s, and I don't remember anyone saying much of anything about security.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
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.
Now THAT is an accurate statement. It was however something we always took serious as it was an FDA and later HIPAA requirement for medical devices. But alas, reading about some the the vulnerabilities in today's devices, I think they have been asleep at the wheel. Plus, who in their right mind would want to change someone else's heart rate remotely other than for nefarious reasons.
+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.
Unless you use Vaadin(GWT), assuming you meant a web frontend.
Or you have a heavy weight client and use Swing/JavaFX.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Actually it's a refactoring and a cost reduction. A piece of software running in a sea of cheap memory has 10,000 more places and ways it can fail.
Food. At least in the US, is also cheap and abundant. Doesn't mean that you need to eat 5600 calories a day and try a different candy covered breakfast cereal every morning.
I also started off in the days of FORTRAN and punched cards. Actually, the first computers I programmed used vacuum tubes and were programmed in assembler. I didn't encounter FORTRAN for a number of years.
Up until 2000 or 2005 I agree, I saw immense progress on many fronts. But I have to say that what I've seen for the past decade or so (except for cell phones) looks about as structured, directed, and organized as the Trump presidency..
"PROGRESS" implies a destination. Where on Earth are you folks going? You do have a destination, and hopefully a road map, right? Care to share any information on where this train is going and when it might get there?
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
Close enough I guess. Sometimes you really want print to be a function rather than a language element so you can, for example, print using a list comprehension. To do that in Python 2, you actually have to define a function (e.g. "def prnt(x): print x", then print using a call to prnt("I wish I'd never heard of Javascript"). But you're right. It's not a big deal.
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
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.
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.
Trying to use Java for front-end development is absurd.
In your opinion, in which language should Minecraft have been written?
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.
Lua
Wow, a live one. Was Algol seriously ever implemented for real?
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
Hello, Ross!
Christian R. Conrad
mail me at iki.fi ; same user ID as here
(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.