22 comments

14

I'm glad someone else gets this. It amazes me how so many programmers believe JavaScript is a path to a grand future filled with rainbows and unicorns handing out free beer and money. JavaScript is a clunky and weak language that has been made from leftover ideas borrowed from other languages and glued together with endless frameworks. It's garbage. Now that I've said that, the JS defenders will be pouring in now to tell me how I'm wrong and why JavaScript is the future. Yeah, whatevs. I've been programming for nearly three decades now and I have worked with the good, the bad and the ugly of many programming languages. I feel sometimes like we're regressing in software engineering because we are enabling this backwards language and it's half-witted companion we call the browser. I had such high hopes for a real web programming language and platform to come around. The Rich Internet Application push of last decade looked like a positive start to that, but out of nowhere we abandoned the idea of using the browser as a launch point for real code to going back to cobbled together HTML/CSS/JS nonsense. And yes, I do know Web Assembly is coming. It'll be here any day now I'm sure. Really. It's time for a revolution in software engineering. It's clear that the future is bleak if we keep betting on JavaScript and the broken web. There will come a day when a lot of programmers realize this and panic sets in. Hopefully we can fix things before that time, but I'm not going to hold my breath.

2

Upvoat and a different perspective. Yes, JS is ugly but so is every language. There will never be a usable pretty language because the algorithms will never be pretty. As a developer since the late 70s and someone who has been in chip design to software to web (you get the difference of the last two), I have tried almost every language and processor architecture. It isn't about our preferences for the tools that fit our algorithms, it is about the tool that can consolidate the platform.

For web development, the goal is GUI and that gets messy. I agree software has taken a major turn but we've seen this before (birth of the GUI with Apple and PCs). A new idea emerges and the tools splinter. You find yourself in patchwork coding in a bunch of crappy languages trying to tie them together. Over time they get consolidated into a set of uniform tools. This isn't a bad thing. It is just happening again. C++ and Java are crappy languages just the value of consolidation outweighed the beauty for the first GUIs. The web is consolidating toward JS.

The splinter is happening in robotics. We use a bunch of disconnected ideas and tools and hardware in patchwork fashion. Eventually, that environment will consolidate too, though it will be some years away. The tool that brings consolidation, regardless of ugliness, will be the future.

Cheers.

0

Well, beauty is in the eye of the beholder. I think Smalltalk is one of the most beautiful programming languages in the world. Others might say the same for Scheme and Haskell. Many algorithms are beautiful, too. At any rate, ugly algorithms can be implemented in beautiful languages; only the implementation may be ugly. I have personally seen beautiful code, so this is not impossible.

The problem with JavaScript is that it has many more "warts" than any other language. Even PHP has cleaned up its act a lot with PHP 7, as has Perl 6. JavaScript is in a class all its own.

ECMA's TC39 committee has done very little to fix JavaScript's most egregious faults, such as weak typing and crazy coercions. You know those long lists of WATs and WTFs you find on the web about JavaScript? TC39 has only addressed a few items on those lists. It has a long, long way to go before JavaScript is usable for serious software engineering.

The front-end web may be consolidating, but it doesn't necessarily mean the future lies in JavaScript. When WebAssembly finally arrives, we will have a rich choice of alternative languages in the web browser. As these languages vie for supremacy, ecosystems will coalesce around them and the reliance on JavaScript's frameworks (regardless of which ones come out on top) will diminish.

In the meantime, we can use transpiled languages such as Amber, Brython, ClojureScript, Dart, Haxe and Scala.js to write our browser applications. In conjunction with jQuery, there is nothing that these languages can't do. Why use a crap language like JavaScript?

0

Because, like politics, people will go with what they know, not what is best, sadly. :(

0

What languages do you find best for different purposes?

3

For the front-end web, just about anything that transpiles to JS is better than JS. For example, Amber (Smalltalk), Brython (Python), ClojureScript (Clojure), Dart, Haxe and Scala.js (Scala). There are many, many choices.

For the server side, the usual choices are Java, C#, PHP, Python and Ruby. Go is becoming very popular here, too. There's no good reason to use Node and JS.

For concurrency, probably either Go or Elixir. They can handle high load.

For the financial industry and numerical processing, C++ and Python. Julia is a language to watch for.

For the games and graphics industry, C++ is the hands-down winner. Don't get sucked in to using UnityScript (a JavaScript look-alike) with Unity; if you must go with Unity, choose C#.

For mobile, your choices are more constrained: Java for Android and Objective-C or Swift for iOS. JavaScript can be used with Cordova or Phonegap, but I would recommend using a transpiled language. My personal favourite is Amber.

For rapid prototyping, Smalltalk is a great choice.

0

JS is far from perfect, true. And while it may encourage bad habits, it doesn't mean it's not completely viable for the future. Filled with magic and unicorns? Of course not. I agree with what you're saying.

Even if the errors with JS are rectified, by say, replacing JS. I still think would be viable for future developers. I mean, Java isn't a beautiful language, but it has a large existing codebase, so there's a need for developers who can work with Java. The future may hold the same opportunity for JS devs. Even if we replace/fix JS, the new opportunities are going to be with jobs needed to maintain old JS.

3

The IT industry must be warned about the danger of using JavaScript.

2

I agree with some parts of the article, especially about current JS frameworks situation, which is a massive pile of mess and delusion, but...

Aside from the little “indie” games you find in app stores and mobiles, no self-respecting game developer is using JavaScript.

I think JS, among other languages, is one of the options in Unity. That does no mean game will be interpreted by V8, of course that would be slow, code will be complied; so, the idea is, you can use JS syntax, if that's something you're more familiar with, without a mayor loss in performance.

Well, since JS is the only language native to web browsers, any web project in any language must have some JS code.

So, that's the indication that there indeed will be and are many jobs available on this field.

Redmonk proves that the web is popular, not that JS is popular.

My dear, these two are intimately tight together. You have kind of a contradiction here. Of course if it wouldn't be for web, JS wouldn't be popular. Duh! But web took off and with it, JS, no matter of its state. We could, in same manner, say HTML and CSS are broken. We could even say Google had no perspective, I mean, who cares about a white page with a single input field on it? But, everything that got stick to web, got immensely popular. JS just fall into this category.

1

It's not a contradiction; rather, it's an anomaly. What other language on Redmonk has this kind of strict dependency, i.e., JS to the web? Not Swift to iOS, since Objective-C is obviously an alternative, as is JS. Not Java to Android, since Java was popular long before Android and JS is also an alternative. Not C# to .NET, since .NET supports many other languages. Not PHP to the web server, since there are many alternatives such as Java, Python, Ruby, etc. JavaScript is a massive anomaly which distorts language statistics and our perception of the IT world.

0

I think JS, among other languages, is one of the options in Unity.

This is not true at all: http://wiki.unity3d.com/index.php?title=UnityScript_versus_JavaScript

UnityScript and JavaScript are two very different languages. They superficially share a similar syntax, but there's a ton of semantical differences.

0

Thanks for sharing this, I was unaware of these differences. I wouldn't say there's a ton of differences. Nothing that an average JS dev couldn't learn in an afternoon. Also...

A lot of people, including some in the Unity corporation, like to call UnityScript by the name "JavaScript."

I guess they just wanted to be clear that UnityScript is syntactically so similar to JS, that a JS developer would not have problems learning it. I guess that's part of their marketing.

This also in a way reminds me of GJS (https://wiki.gnome.org/Projects/GnomeShell/Gjs_StyleGuide). The fact that these project which could go with any language decided to use JS or create something that's syntactically almost identical to JS speaks of it's popularity, and surly means JS is here to stay for quite some time.

0

Based on a cursory Google search, it appears that experienced developers in the Unity community strongly recommend using C#. They hate UnityScript. Apparently, UnityScript is only there for beginners who know no other language than JS. So I stand by my assertion: no self-respecting game developer uses JavaScript (or UnityScript).

But that raises another question: what kind of game developer, or any kind of programmer for that matter, only knows JavaScript??? That strikes me as bizarre. Most everybody I know have experience in multiple languages. And if you know, say, Java or C++ or even Python, it's not a great stretch to learn C#. Why would anybody choose UnityScript?

0

It's a good question why JS (or variation of its syntax) is being offered in Unity and GNOME as an option in the first place. Perhaps indie developers loves it ... perhaps it somehow communicate ease and familiarity. I don't know. In either case, JS is strong, even without these things, and without Node, just by the fact that it's client side technology for the web. Even if we would have suitable replacement right now, available in all newest versions of all mayor browsers, it would still take quite some time for JS to become marginalized. But, this is clearly not the case, quite the opposite - ES6 is coming and there's a lot of hype about it.

1

C/ASM FTW!

1

I'm growing tired of hearing people say how much they hate C because it doesn't directly support and/or incorporate and enforce someone's favorite <insert-bloatware-or-abstraction-of-choice-here>. C has deficiencies, but anyone who's honest with themselves and actually knows what they're talking about knows that all languages have deficiencies, often severe ones, including their own pet language and pet programming model.

4

C (and C++) are great languages. They underpin the entire IT industry. No other language can execute as quickly and give you direct access to hardware and provide a rock-solid foundation of reliability and express the most complex algorithms succinctly and offer a huge ecosystem to make you productive. My only criticism is that C++ is rather complicated; I prefer much simpler languages. I love C, though.

0

No other language can execute as quickly

Forth, fortran, rust.

give you direct access to hardware

Forth, fortran, rust.

provide a rock-solid foundation of reliability

You have got to be kidding me. C is reliable? Forth at least does basic bounds checking, and rust does a lot more. C gives you almost nothing in terms of reliability.

express the most complex algorithms succinctly

What are you even smoking? If I attempted to list the languages that express complex algorithms more succinctly than C I would die of old age.

offer a huge ecosystem to make you productive

Ecosystems occur over time. If people started committing to a better language it would build an ecosystem.

Rust has everything you listed except the ecosystem, and that is coming. Then again, C doesn't have two of the things you listed, so according to your criteria Rust is actually better already.

0

Most enterprises choose C++ over any other language to write their largest mission-critical software. So, no, I'm not kidding about reliability. Nobody chooses Forth, and Rust has not yet been proven in the field to the extent that C++ has. It takes years and years, and millions of lines of enterprise code, to prove a language. Rust has a long, long way to go.

C and C++ have had generations to optimize their compilers. No other language in wide use can generate faster native code, esp. Rust since it's such a new language. Yes, Fortran is also very highly optimized, thanks to its age, but except in scientific circles, hardly anyone uses this language any more. (Disclosure: in the 1980s, I was a bona fide Fortran guru.)

C++ is a wickedly complex language because it has tons of features. Consequently, it can be extremely verbose. Nevertheless, all those features are intended to help the developer write very complex programs. When it's done right, these programs can be relatively compact for the size of the application, which can be enormous. I didn't say C++ was the most elegant language, nor did I say other languages couldn't be more succinct at the same task.

The point is, C++ strikes a unique balance of all those qualities I mentioned. That's why it has withstood the test of time and why it remains the standard for writing large-scale, reliable, high-performance software.

1

If all you want to do is write software for web browsers, then JS may be your ticket, but it’s hardly the path to a rich IT career.

Who thought it is? Javascript fills its niche well. What more could be asked of it?

0

An integer type? Sane equality comparison operators? An event system that isn't horrible? Throwing exceptions in reasonable places instead of failing silently for a while and then throwing the exception?