Live data from Hacker News

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

news.ycombinator.com

21–30 of 55 posts

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

#21
> Why would I want to learn

First off, because learning is good for you! Even if you dislike a language, there's probably something to learn from it if it's widely used.

There's a lot of great developments in the JS world and Node has really pushed the envelope in terms of asynchronous IO and making it easy to use web sockets and such. That said - most apps you'll make don't need some of the more unique features of Node and personally, I find it's easier to make web apps in high level languages like Python.

That said, it comes down to personal preference. It's the ol' optimization vs. discovery problem - you can't figure out what the best tool is for you without exploring new things.

I wouldn't worry about JS/Node replacing server side code, to be honest. Python and other languages are slowly going in the same direction (see Python 3's asyncio module). Learning a new framework or language is never a waste of time.

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

#22
Because the only way to learn the answer to that question, is to learn why people are using the other languages, which in turn, likely means researching them and learning them for yourself.

To answer your question more on point, the first thing you'll find is other languages add much, much more safety into their language than js-node can. Indeed, that's what makes js-node as much fun as it is. But if you're a new business owner, and you have to choose between building your server backend on java/c#/etc technology, which can be rigorously checked for stability, and js, chances are high you're going to go with the languages that have such automatic checking features.

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

#23
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.

You should really check out http://emberjs.com It applies the Rails way of thinking to JavaScript and is maturing fast. As a Rails developer I love working with Ember!

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

#24
Ten years ago (or less) if you had proposed building ANYTHING beyond basic form field validatation logic in JavaScript you would have been laughed out of the room. JS/Node is popular now but it's a fad. Things that seem exciting are really just reinvented wheels when you look closely. That said it's not a bad idea to learn it. Just don't think it will be something you're using heavily in 5-10 years. Same is true of any other language in the space though.

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

#26
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 piggyback on JS's features, and it loses much of its appeal.

From a computer science/hobby programming perspective, JS is a 'Jack of all trades, master of none'. If you only know JS, you might get really good at churning out code, debugging language-specific nuances, sculpting libraries to your whim, etc. but I would argue that you won't be really good at the big-picture stuff.

Without the perspective of multiple paradigms, you might not see the wood for the trees. Your thinking will be a fuzzy mixture of important ideas lost in a sea of JS implementation details; you won't have the clarity that comes from thinking about a problem from multiple perspectives.

It can be difficult to learn a different technology; especially if it's not by your own choice. The key is that, once you've got past the initial "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
With all that said, if you're trying to learn new things, there's not much 'bang for your buck' going from JS/Node to Python/Django, Ruby/Rails, PHP/Symfony, or even whatever Perl's up to these days, since those languages are all very similar; of course you'll find a few nifty frameworks/approaches which are popular in each, but if you look around on GitHub you'll usually find slightly-crappier reimplementations in most of those other languages.

If you want to get some real "Aha!" moments, try something out of your comfort zone like Erlang, Haskell, C, FORTH, Prolog, Maude, Scheme, etc. (admitedly JS is like a cheap knock-off of Scheme, but those missing pieces like call-cc, tail-recursion and macros can drastically change the mindset of its users).

If you want to get stuff done, stick to what you know ;)

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

#27

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.

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

#28
None of the existing answers seem particularly convincing to me. Here's how I have chosen: pick the framework that is most popular with the people you want to work with, projects you want to work on, or companies you want to work at.

If you're building simple websites for clients (publishers, small business owners, etc.), PHP is probably still the best choice, and usually Wordpress. It runs with no config on standard web hosting platforms and you mustn't underestimate the power of the Wordpress plugin ecosystem + the fact that most people are comfortable with Wordpress.

If you're building more advanced websites (not web-apps) for clients, Django is a great choice, in large part because it has an excellent drop-in admin panel, but also there's a ton of third party apps available.

Ruby is also a good choice for this, having an even more solid ecosystem.

That said, Ruby is trending down, Python is trending up. Also, hipsters are now learning node.js and nearly everyone who went to engineering school knows Python. Hipster savants are learning Go, Clojure, Haskell, and Scala (in order). Who do you want to work with?

node was built with event-driven apps in mind. In other words, it's for web apps. It would be unwise to build a traditional website with node unless you have a particular reason to.

Same with Go, Clojure, Haskell, and Scala.

If you want to work at a cool startup, you won't do yourself a disservice learning node. If you want to work at a cool startup doing more hardcore stuff (think Firebase or Cloudfront), you wouldn't do yourself a disservice learning Go or Clojure.

If you want an all-around framework and to broaden your skills, go with Ruby or Python. If you're more of a hipster (aesthetics, web-only) then choose Ruby. If you're more of an engineer (academic, data science), choose Python.

Another perspective on Ruby: Rails skills will be in demand for maintaining old code-bases for awhile into the future, even if it's declining in relative popularity.

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

#29
post #3

you should learn perl and catalyst, because they're awesome :)

catalyst over mojolicious? Looking into both, and mojolicious seems to be winning at this point.

depends on what you want to do. catalyst has a proven history of big teams working on big projects and not getting in each others way. as well as one man teams working on small projects.

it's mature, well supported and powerful. there's a bit of a learning curve when you first start, but that's the way with everything. although it might be made worse by it's opinionated approach to the way you have to lay your project out, but not long into it you'll be thankful for that, as it helps keep everything clean and clear

mojo is more flexible about how the project is layed out, has async and websockets and stuff, but i've not used it, so i don't know the ins and outs so i can't comment

that said, you should try them both, see which one suites your needs best.

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

#30

None of the existing answers seem particularly convincing to me. Here's how I have chosen: pick the framework that is most popular with the people you want to work with, projects you want to work on, or companies you want to work at. If you're building simple websites for clients (publishers, small business owners, etc.), PHP is probably still the best choice, and usually Wordpress. It runs with no config on standard…

> That said, Ruby is trending down, Python is trending up

http://trends.builtwith.com/framework/Ruby-on-Rails vs http://trends.builtwith.com/framework/Python

Or am I interpreting this wrongly?

shrug

Post reply on HN