Live data from Hacker News

Ask HN: Why learn non-JS languages/framework?

news.ycombinator.com

31–40 of 55 posts

Re: Ask HN: Why learn non-JS languages/framework?

#31
I'm surprised no one mentioned single page web applications -- that's where I see JavaScript's strength at the moment, compared to the other server-side frameworks you named.

JavaScript: While Node.js is awesome, it is definitely not the best choice for everything -- not everyone needs its features (despite the hype). But if you want to build web apps on the client side, you have to either use JavaScript, or compile to JavaScript.

A client side web app however still needs a back end API. The good thing is, if your front end runs (mostly) on the client side, you can pick almost any language / framework for the back end you want (e.g. Python).

> I am a die hard Python lover, but I do not know what do to at this situation.

Now if you don't know Django yet, my suggestion would be to learn both Django (given your Pyhton background) and one of the client side JavaScript frameworks, e.g. Ember.js, Angular.js, React.js or maybe Meteor (depending on your use case). (And if you learned both Ember.js and Django, you probably get an idea of what Ruby on Rails is like …).

Re: Ask HN: Why learn non-JS languages/framework?

#32
Paul Graham has an essay discussing what he calls the "Blub paradox." http://www.paulgraham.com/avg.html. Perhaps the discussion there isn't immediately applicable to your question, but I think some aspects of PG's discussion are abstractable and applicable.

Ultimately, if you don't know what the other options are and their strengths and weaknesses, you will only ever have a hammer. And you won't even know that your only tool is a hammer. And you'll be trying to eat with it and sew with it, thinking that it's your only option.

If your life depends on manipulating bits. You should learn all the ways to manipulating bits. Because you will then know the best way to manipulate a bit in any given situation. Maybe you should be focused more on one than the others, but that doesn't mean you should ignore everything else.

Re: Ask HN: Why learn non-JS languages/framework?

#33
post #8

Is there any framework in the JavaScript world as mature as Rails or Django (or with as many features)? This isn't a rhetorical question; as the author of the Ruby on Rails Tutorial , I'd like to know what (if anything) I should be looking at next.

Meteor is about to hit 1.0. The current go to tutorial for Meteor is https://www.discovermeteor.com/. And a good snapshot of the current learning resources can be found at https://www.yauh.de/best-learning-resources-for-meteorjs/.

I still owe you an email.

Re: Ask HN: Why learn non-JS languages/framework?

#34

This feels like what happens when a web developer fails to realize that the web is not the be-all-and-end-all of software development. Do you want to create fantastic 3D graphics and visual effects? Best learn C++ and OpenGL. Do you want to develop a highly resilient parallel system that can be patched without downtime? Learn Erlang. Do you want to program an embedded system, or anything where you need to be close to…

It's pretty clear from the post that he's talking about web development. And I don't think your 'all eggs in one basket' argument makes much sense. JavaScript will always be the (or, a) scripting language for the browser, and if something new emerges, we will all have plenty of time to prepare. As for backend trends, they evolve slowly. One needn't worry about being caught unprepared for some sudden change.

> JavaScript will always be the (or, a) scripting language for the browser, and if something new emerges, we will all have plenty of time to prepare.

Thing is - what if it already emerged, but you missed that?

Re: Ask HN: Why learn non-JS languages/framework?

#36
post #17

You don't sound even minimally stupid. :) I wouldn't necessarily advocate any of those specific frameworks, but I do think there is life outside of JavaScript. I actually don't think JavaScript (particularly on the server) is a very good language at all. Blasphemy, I know. As someone who has spent time with JS frameworks like Ember, Meteor, and the rest, as well as libraries and component systems like Rendr, React, a…

> "I actually don't think JavaScript (particularly on the server) is a very good language at all. Blasphemy, I know."

That's a relatively common sentiment here, and I agree that JavaScript isn't that great a language. In fact I would argue that it has so many warts, so many problems that if it weren't for its first-mover advantage in the browser space, JavaScript would be dead by now.

Re: Ask HN: Why learn non-JS languages/framework?

#37

Why learn anything other than x86 machine code? ;) Seriously, from a software engineering perspective, the past decade has been a peculiar time: JS used to seem like a joke to many, but it's got past that and is now a serious contender as a platform compared to established ecosystems. However, we're also starting to see other languages include JS as a target platform; once that matures, those other ecosystems can pig…

I dont see why people downvoted you. You had the best all-round advice. especially this part:

"It can't even do X, Y and Z!" stage, you'll realise that:

- It can do X, just in a way you didn't recognise because you didn't fully understand X

- It can do A, B and C that you never even knew existed

- Y is actually an anti-feature, which you didn't realise the problems of before

Re: Ask HN: Why learn non-JS languages/framework?

#38
I'm actually not aware of any advancements being made in JS that haven't already been made on other platforms. For example, the JVM is much more performant than Node, has more libraries, better build tools, better development environments and so on.

I also think that other languages are more flexible and productive. JavaScript is a very crufty language with a lot of gotchas and odd behaviors. Dealing with these wastes developer time and makes large projects harder to maintain.

I'd much rather work with a language like ClojureScript and have the benefit of using the same language on the client and the server, while using a well thought out language.

Writing apps in ClojureScript is far more pleasant than with JavaScript. There are also fantastic libraries available such as Reagent (http://holmsand.github.io/reagent/) and Om (https://github.com/swannodette/om).

Re: Ask HN: Why learn non-JS languages/framework?

#39
post #7

1) Learning different programming languages is one really good way to grow as a programmer. 2) The web is just one of several mediums for delivering content these days. 3) Node.js has a highly suspect concurrency model that might not be suitable for all the various types of programs you could be building.

Why highly suspect ? We know and use cooperative concurrency since decades. Agreed on the "not suitable for all" but no one said that.

Cooperative concurrency is fine and a lot of languages use cooperative concurrency just fine. The issue with Node is that it completely ignored the multicore reality that we live in. Everyone argues that multithreading is so complex, and it is unless you have the right abstractions. But what is guaranteed to always be complex is single-threading with process forking. As soon as you want to communicate between processes, and you will want to communicate between processes, you now have to implement IPC. In come the message queues... that is once you pick which message queue to use.

We've also been using event-driven IO for decades and Node is the only modern run-time to ignore the obvious perils of evented IO. Instead of doing what languages like Go and Erlang did, which is have event loops in the run-time that are completely transparent to the developer, Node pushes the evented IO right into the application developer's face. Are there remedies for writing good evented code? Absolutely. But why should application developers need to be schedulers in the year 2014?

Re: Ask HN: Why learn non-JS languages/framework?

#40
I work 100% in javascript at the moment, but it's only because I happen to like it and find it interesting right now. Not because of any inherent advantage to the frameworks/runtimes.

Do what you enjoy. That will change over time, and so should your tool-chest. As long as you keep learning and stay true to yourself, you'll progress naturally through different languages, frameworks, etc. Try not to box yourself in, there's really no advantage to limiting yourself.

Post reply on HN