Settings

Theme

Ask HN: What web languages and frameworks would you recommend learning today?

6 points by someguy1233 11 years ago · 12 comments · 1 min read


I've been wanting to try out some new server-side web frameworks to expand my knowledge (Currently use the Laravel PHP Framework, and ExpressJS), but I've been struggling to find any consistent information about how relevant each framework/language is going to be right now, and in the future.

There is currently a lot of material on the internet saying how "Node.JS is dying use this", "Rails is dying use this", "Django is dying use this" etc.

1) Is there any truth behind these claims?

2) What languages/frameworks do you recommend (for the web) in 2015?

3) Have you ever switched to a different framework/language and never looked back? (why?) (For new projects, or migrating existing ones)

trevordev 11 years ago

1) I don't think any of those tools are dying, people are just sharing that other tools will work better in certain situations and each tool has it's place. I'm a fan of nodejs but I have found the dynamic typing and poor performance of JavaScript can hinder my recommendation when building a large, performance critical app.

2) The languages/frameworks I would recommend depends on what you want to build. The large amount of JavaScript libraries and its ability to work in the browser make me highly favour javascript and I have found that typescript provides a nice layer on top to provide sane typing and code auto completion for many of my needs. However, Typescript tools and the language still feel underdeveloped. I would use node to handle web requests and offload "heavier" work to c/rust/go if needed

3) I used to use c/c++ for a lot of my personal project but I have found tasks like managing memory can add unneeded complexity to the majority of my tasks. C still has it's place when certain requirements must be met.

  • vorg 11 years ago

    > use node to handle web requests and offload "heavier" work to c/rust/go if needed

    Go's "net.http" package is fairly good for web requests.

    • trevordev 11 years ago

      agreed but I prefer to use the same language for front and back end to reduce the context switch cost when working on both ends.

iDemonix 11 years ago

Not the answer you are looking for, but I've heard so much about Laravel that I've finally started to dive in. I do wish there were more L5 tutorials around, however.

Coming from a background where I did more or less everything myself from scratch, learning the ways of a framework isn't the easiest thing I've done in a while.

Back on to your topic, what you need to remember is that proponents of a new piece of software will always criticise its rivals. You also need to remember that a lot of people will just learn a single technology, never try the others, but declare the one they are using is the best. I see it a lot at work, people will say X language is far superior to Y language, and if they need to argue why they'll Google until they find something that agrees with what they're saying. This comic sums it up: http://i.imgur.com/ROS7lGT.jpg

  • someguy1233OP 11 years ago

    Laravel is best learned from the documentation. Laravel 5 changed a lot, but most things from Laravel 4 still apply; I'd recommend looking at Dayle Rees' Code Bright along with the official docs http://daylerees.com/codebright

    You're right about the criticism though, it's hard to find any quality comparison on the internet, that's why I've posted here, in hopes of finding a lesser biased comparison, especially from those who've changed their go-to framework (e.g. from Laravel to Rails, from Express to Django etc.)

  • burger_moon 11 years ago

    Did you watch all the intro to L5 videos [1] on laracasts? I also recently started using laravel and found those videos to be a huge help. Also the community on there and laravel.io/forums is really helpful.

    [1] https://laracasts.com/series/laravel-5-fundamentals

scalesolved 11 years ago

1) If I had to switch from current stack (Java/Play Framework/Spring) I'd look at one of those, they all seem super healthy and a lot of remote work uses one of the 3 (I'm a fan of working remotely).

2) Whichever language you enjoy working with and be productive in (I've heard good things about Laravel), don't always think the grass is greener. I'd say try out the Play Framework https://playframework.com/ You can code in either Scala or Java and it'd make a change from dynamic languages for you.

3) I switched from Java to Ruby and back again and found the sweet spot of both, I think I've improved more since I stopped worrying if I was missing out and just concentrated on being productive at work and solving problems I enjoy outside of work.

  • someguy1233OP 11 years ago

    Last time I looked at Play, I took one look at Akka/Reactive Programming and knew there was no chance of me touching that.

    I might look at it again, this time staying far away from Akka. What's the performance like? Considering it's Java I would assume pretty good, but I'm not sure how bulky Play is

    • scalesolved 11 years ago

      I don't touch any of the Akka stack, I certainly make use of the non blocking parts of the framework where I can. At my current company half our services are in Java on Play and the other half in PHP, the Java boxes run on half the number of servers and lower spec'd than PHP with about a 50% decrease in latency too.

brickcap 11 years ago

I feel that any one who is using nginx would benefit if he learnt a bit of openresty (http://openresty.org/)

liamcardenas 11 years ago

There comes a point in a developer's career where the framework/language doesn't really matter. Node, PHP, Rails, Django, etc all have their strengths and weaknesses.

If you are wondering which framework/language to use for a given project, the above questions won't really help you. Instead consider the following:

1. How much community support does the framework have? For example, a novice NodeJS developer is probably better off using Express than, say, Koa-- which is much less widely used and documented (unless that developer likes struggling through problems). Tackling less supported frameworks can be very educational but is also risky. If you are building a startup based on something that is unstable and/or unsupported, you may accumulate some serious technical debt that could hurt you later.

2. Try out all your options and decide: which one's easier/more fun (for you)? If you are trying to build a product, why bog yourself down with a framework that you find more difficult to use, just because some other developers say that it is "not as good"? Many people love ruby and python-- I'm personally not a fan of either. Does that make rails, django, or flask bad frameworks? Not at all! I just personally don't like them. At the end of the day, you are trying to make software that /does something/. I highly recommend simply picking the easiest/"funnest" route. You might even consider using parse to skip backend development altogether (it just makes you more efficient as a developer).

3. Are you collaborating with others? If you don't have a strong opinion on which framework to use, why not let those who do pick their favorite for you?

4. Are there any special libraries/tools that you would like to use? Not all ecosystems are created equal. Most languages have frameworks that allow you to easily make HTTP endpoints and packages to help you access databases-- which is all you need for a basic web application. However, sometimes languages will have niche libraries that make them especially ideal for a given use-case. NodeJS and Ruby have very rich ecosystems, however, there have been times where I have been forced to use python or java for this very reason. It depends completely on what you are building.

I typically advise people who are just beginning to learn NodeJS, so that, as a web developer, they get more comfortable with JavaScript (I see you already use express, so this may not apply to you). If you are just asking this question for the thrill of trying a new framework, and not from the perspective of using it to build anything in particular, why not try Rust Iron? I've been meaning to check that out, although I'm not sure if it is production ready yet.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection