JavaScript Has Already Won
This post has received a tremendous amount of outcry against my claiming a “victor” in the war between programming languages. While I admit, my title may have been intended to spark controversy and may be “click-baity”, I do still want to emphasize that this post is not about how JS is the “best” language.
It is simply about the sheer territory it has covered and the ways in which it has allowed the once-simple front-end dev to do so much more. It’s a versatility I have truly grown to love in my career and one I feel obligated to encourage.
And so…
In the world of programming, there was a war waged long ago. Since the advent of the computer, scientists have been searching for the perfect programming language. One after the other, a new language was created to accommodate some purpose. And with that new language came a new era of technology, a bolstering community, a million libraries and open-source contributions, and — inevitably — a new limitation. Since the ancient days of assembly programming to the Java Applets and Flash Abominations (and I was a Flash developer at one point…) that dominated the web for so long, we have seen languages come and go for no reason more than that their usefulness had worn out.
The world moved in a different direction…
And that once shiny, new language was now old-hat, with developers dwindling and a new kid on the block starting to make some noise.
Now, JavaScript has been around for — literally — decades. So, you might be wondering, “Where is he going with this?” Well, this post isn’t really about “JavaScript.” Nor is it about the many languages that have risen and fallen before it. Nor is it about how JavaScript is “new and shiny.”
This post is about Node.
And we really need to start distinguishing that. Because Node is something else. It is not just a language. It is an ecosystem.
And that is what this post is about.
Well, not entirely. I’m not going to go into detail on the million and a half reasons the ecosystem is the most innovative facilitator of open-source collaboration the world has ever seen. No, that’s a topic for another day. For now, I’m just going illustrate how Node has already won the age-old war for the perfect language by traversing five key territories of modern-era programming:
The Web
React, Angular, Vue
React, Angular, & Vue are easily the most important front-end frameworks in existence today. Collectively, Facebook, Google, and the FOSS community have developed mind-blowingly efficient tools for developing interactive user-interfaces.
As a result, practically everything you do on the web today is served up by a highly-interactive, aesthetically pleasing, and easy-to-use interface. And these frameworks have been made possible entirely because of the Node ecosystem, which you already knew.
You see, there is no question that JavaScript has dominated front-end web development for an eternity, but React, Angular, & Vue have taken it to another level.
This is the age of the UI.
The age where front-end developers no longer shy away from building complex, single-page web applications and full-fledged suites of software. Where I was once a web developer, I am now a software developer.
And like that… Node won the web.
Mobile
React Native
Not only is this section going to illuminate the mobile successes of Node, but it is also going to make another crucial point:
Node is cross-platform.
And not just in the, “Oh, cool it works on my phone!” kind of way. Not even in the, “Whoa, my phone, tablet, laptop, and TV can all use YouTube!” kind of way.
Node is cross-platform in the most important way possible. It is truly cross-platform for developers. The people that actually build that “oh, cool” and “whoa” stuff mentioned above frackin’ LOVE this.
React Native is just one example of a framework developed in the Node ecosystem that bridges the gap between front-end development and mobile app development in a way that no other frameworks have before.
The biggest strain on developing for mobile has always been the pull of the web. However, with React Native and the Node ecosystem, a developer can build literally one application that is compatible with the web, iOS, & Android. No other language offers this kind of versatility.
And like that… Node won mobile.
Desktop
Electron
Of course, not everything happens on the web. Desktop applications are also crucially important to the way we operate in today’s technologically-dependent world.
But why should we treat the desktop any different when the web is now capable of serving up fully-functional applications?
It was just a matter of time, really, before JavaScript caught up to the performance needs of the desktop.
And so, Electron was born.
Sure, there are still more efficient languages to use when programming for desktop, but for a majority of the applications we use today, JavaScript is more than adequate.
Thanks to Cheng Zhao & Github, a framework was created that is changing the face of desktop computing. Not only has Electron added desktop application development to the web developer’s already growing repertoire, but it has done so in a way that is wholly cross-OS compatible.
While Windows is still the most pervasive OS today, Mac has been on a steady rise for 15 years, and more and more developers are switching to Linux every day (as I just did). In addition, little toys like the Raspberry Pi are causing Linux to pop up in more than just a few previously Windows-or-Mac-only households. I think you can see why cross-OS development is such a huge advantage… and this is just the start.
Now we’ve got the web, mobile, and desktop fully covered by the Node ecosystem. One skill-set that is capable of building the same UI in all of these places.
And like that… Node won desktop.
Back-end
ExpressJS
I don’t want to get into an exposé here about the countless packages available on NPM (Node Package Manager) that facilitate back-end development, so instead, I’m only going to mention ExpressJS, and this is to make one simple, but profound point:
Node was built for the back-end.
And JavaScript in the Node ecosystem has become such a versatile tool that it has been used to literally develop its own server application. Now, this may not seem like the most impressive feat, but let’s consider that up until the creation of Node, JavaScript was pretty much browser-only. It didn’t need to perform complex server-side operations like database fetching, image transforms, or compression. But now it could…
And — as with several examples above — this dramatic simplification of code sharing and reuse has had some remarkable side-effects.
One such side-effect is server-side rendering.
Did you catch that?
server-side
rendering
What do those two things have in common?
Well traditionally, nothing. These two responsibilities have always been relegated to their “front-end” (JavaScript) or “back-end” (PHP, Java, Python, Ruby, etc, etc etc) handlers. Often maintained by two completely separate teams.
Very different people, back-end & front-end developers…
But no longer!
Thanks to Node, we are now able to assemble complex user-interfaces on the server-side before a user’s browser ever needs to render a thing. This is why the web is so snappy nowadays. Because Node has erased the boundary between back-end and front-end.
And like that… Node won back-end.
Gaming
Unity 3D
I saved this one for last because it’s not really a “Node” thing, but a JavaScript thing and I wanted to close on a slightly broader note:
The successes of JavaScript are not a result of it being superior to other languages. Its successes are a direct result of how accommodating it has been to virtually every community.
JavaScript developers are not purists.
We like our language the way it is(n’t); versionally-fragmented, transpiler-dependent, cross-platform, bleeding-edge, ever-evolving, and going where no language has gone before.
Like game development!
When Unity 3D first introduced their JavaScript-based “UnityScript” as a means of game development, I saw then, that JavaScript was going to do some really cool things. This was one of it’s first major forays into non-web development, and it was a clear sign of things to come.
It was a clear sign that JavaScript could do more than just open fly-out menus and tweak font sizes on a page. It could do more than let you like this post and heart that picture. It could handle immersive, cross-platform gaming experiences. And those same developers that were once restricted to Chrome, Firefox, & Internet Exploder were suddenly game developers.
And while Unity did recently announce they’ll be dropping UnityScript support, I’m still going to say:
And like that… JavaScript won gaming.
OK, maybe not. But it’s not the 12th round, yet, is it?
Veni, Vidi, Vici
I don’t know when the conquests will cease, but Node is on a rampage. It is toppling one development conundrum after another and paving the way for a world of software development where one language rules them all. I do feel I need to reiterate before trolls, though — in case it was overlooked:
JavaScript is NOT the best language for every job.
The strength of JavaScript comes from its versatility. It comes from the open-armed community that has embraced this classless little, polymorphic scripting language and turned it into the most powerful development ecosystem available today.
Disagree? I’d love to hear about it in the comments.
Otherwise, please be sure to click the heart below and show your support for the world’s most innovative language!
My name is Jonny Asmar and I want to sincerely thank you for taking the time to read my post!
I started writing code in Notepad over 15 years ago and never stopped. While I mostly work in React/Redux & Node, I have a passion for technology that goes far beyond UI development — this has been my effort to share that passion with you.
You can learn more about me at JonnyAsmar.com, see some of my code on GitHub, or reach out to me at jonnyasmar@me.com.
Thinking of the days:2003—2004,when I thought Java Script is not useful except client validation.Thanks to Face Book!
On the contrary, Go is a quickly-rising star in large-scale deployment infrastructure (see Docker, Kubernetes, Istio). I would not declare victory for Node just yet. I’ve also seen it struggle to gain adoption for large-scale teams (at least 100) where statically-typed languages tend to dominate; Go is making waves there much more quickly than Node.
This is a commonly-recurring theme in the tech world. When I started university in 2003 the dramatically clear winner of the day was Java; when I graduated 4 years later languages like Python and Ruby were gobbling away at the market share as startups embraced them for their “agility”. 10 years before that C++ was the undisputed winner.
Node (at least with JS) has been pretty hot stuff for web/mobile over the last 5 years or so, but you’re already seeing competitors like TypeScript coming up. You’ll probably see more as the problems with Node become more apparent or as the industry shifts.
Definitely no denying of Javascript’s popularity though. Base our data (We process over 1 Billion APIs per week), NodeJS is the top platform for building restful APIs now.
https://www.moesif.com/blog/engineering/api-analytics/Popular-Languages-For-Building-RESTful-APIs-Based-On-Our-Usage-Data/