Ask HN: Will JavaScript take over the world of programming?
I'm Nawaz and I work with CloudBoost.io We have SDK's for JS, Android, iOS and more. We see more than 82% of our API consumption is with the JS SDK, 11% on Android and 6.8% on iOS and less than 0.2% on REST.
JS can now be used on the server (with Node), on mobile (with ReactNative / Ionic / etc), on the embedded (with CylonJS). Do you think there will be one language in the future which will make lives of dev's a lot easier?
26 comments
[ 3.4 ms ] story [ 20.0 ms ] threadThere will never be one language, and honestly, learning languages is never really the bottleneck anyways (rather learning the domain and applicable libraries are). A single language to rule them all might boost industry productivity by .1 or .2%, maybe, but I doubt it.
And you forgot on your list that JS makes your SmartTV, STB, Xbox, PS, Wii, and many more platforms work. An example, Netflix for all those platforms is made with JS. You've also got react native and Cordova for mobile.
The future is either JS or very specific systems languages (C/C++/Rust).
Some days, I like to imagine a world where browsers had Python embedded as their scripting language.
That's an absolute fantasy that JavaScript will be the one language that will be used as a single option in the future.
Not even taking into account that often languages and frameworks are chosen on the basis of the problem you are solving (and you just happen to work in the field where JS is more popular/viable choice) - it is extremely poorly designed language (and probably only PHP is worse at this) and I always question the sanity of the people that choose to use it on server-side (but there are good reasons to use it there - they are just rare).
JavaScript is plagued with problems like: - No static typing support by default - Before ES6 the class support was a mess - No Standard Library! - NPM and the whole dependency system is hell
There is a reason why people keep writing languages like Dart, Elm, CoffeeScript, and TypeScript.
TypeScript and Dart deserve some special attention - the problems with JS were (and still are) so big and annoying that big companies like Google and Microsoft spend thousands of man-hours developing things like Static-typing support, Standard Libraries, and, most importantly, tooling.
And we haven't yet scratched the "real enterprise systems" where transactionally support is a must. JavaScript has yet to go through so much shit to develop frameworks like JMS, Hibernate, and Spring that enable you to do all the fancy transactional stuff just with annotations. However, I do not see anybody developing something like JavaScriptSpring because JS fundamentals are broken and nobody will build big software in such a language because it is just not feasible.
I guess that's enough for now - it's already too ranty.
Meanwhile...next to nobody uses Clojurescript.
Give me ONE great example. Angular/2/4 is crappy and can't stand against React, much less Reagent/Om (cljs).
Did you already use typescript? Because that is a really shit tech. Thanks god I don't have to use Enterprise bullshitness to sell software.
Anyway, have you heard of VSCode at all? That's written in TypeScript. So is Ionic 2 and Ionic Native. Those along with Angular 2/4 are all complete platforms written in TypeScript...
So, what have you got besides Reagent/Om? Because those aren't even half as large, popular or even alive as the ones I've mentioned (and React isn't built with Clojure either).
The only thing I'm going saying is that it is reaching the 4.0 version with the stability and concisiness of a 0.3 alpha.
I see no problem in this way of arguing, do you? You have to back up your strong words in favor of something that I, as a user, have a lot of bad things to say about.
Anyhow, I use Ionic 2 (which is built on Angular 2) with TypeScript build mobile apps and they are absolutely fantastic to work with. What exactly are you going to ask me about this that is going to change your opinion? You've obviously made up your mind. So, what's the point of talking to you? You're not going to argue, you are just going to keep giving out your opinion which, so far, seems highly caustic and ill-informed.
Sorry that next to nobody is using your favorite language. It's not my problem. TypeScript and Angular definitely have a future and no amount of whining is going to stop it.
My opinion doesn't really matter though. I use what is popular so that I have plenty of help getting my work done. The only opinion that I've given you of Clojurescript so far is that I don't think it's as popular. Other than that, nobody has told me what is so great about it in this thread or anywhere. So I really don't think that you have any basis to say that my mind is made up about how great that is. You're not selling it at all and you didn't even answer my question about it.
If you wanna a good example: https://github.com/mozilla/mentat
Anyway, I think I pointed out how wrong you are on just about every other point you made in this thread. Anybody who reads this will certainly see that. So, my work is done here :)
Enjoy that last word if you want!
> Clojurescript, for example, makes most of the anti-JS arguments silly, although a lot of people think they look smart bashing JS
Cljs has types (spec), great concurrency and is a very concise language, created by a very smart architect, Rich Rickey.
But ok, you won, man!
Web assembly may level the playing fields for other languages eventually but it will probably be too late, so javascript will continue to be the native imperative browser language and, in as much as developers care about "one imperative language everywhere" it will be the most obvious option.
My effort (intercooler.js) is to use HTML as the main client side language: it's native and declarative, and lets you take advantage of REST/HATEOAS naturally in a way javascript SPA frameworks don't. By minimizing client side javascript, and since you are always going to be dealing with HTML anyway on the web, you can pick whatever backend technology you like (I like rails) without adding in a new language to the cognitive load of your app.