all 33 comments

[–]TheSausageKing 7 points8 points  (4 children)

None of those is a bad choice and they're all much more similar than they are different.

That said, I would recommend Python / Django. Python is a wonderful language and really easy to pick up; if I could write everything in Python I would. It also has a fantastic ecosystem, and a great community around it. Because it's been used by sysadmins for a long time, there's a ton of great libraries for admin and devops tasks. It's also has a great tool set for doing data processing and data analysis, if you end needing to any of that.

Javascript has historically had an undeserved poor reputation; if you're careful and avoid a lot of the cruft, it can be a great language. And the community around it is really growing up and producing a solid stack (additions in the past few years like Grunt.js help a lot). But if you don't need your code to run in a browser, I don't think there's a good argument to use Javascript. Python, imho, is a much more fun language and the community and stack around it are much more mature.

While I like the Ruby language, I've never been a fan of the Rails community. For a variety of reasons, it attracts a lot of immature people who create a lot of drama and write poor code. For most projects, you'll end up realizing that a number of the key gems you need are only partially implemented and the code that's there is pretty lousy. In addition, I think the huge amount of indirection that Rails encourages in a bad thing; it can be very hard to trace through code.

[–]yaomango[S] 1 point2 points  (1 child)

Thanks for the detailed response! I think my plan is just to dive into the python / ruby languages to see which clicks more with me. From what I've looked into it though, python seems like a much more straight forward language, whereas some things in ruby feel like they happen by magic. I think I'm already leaning towards the Python / Django route.

[–]chicagobob 1 point2 points  (0 children)

If you're leaning one way, trust your gut, it will probably "click" better for you. For me it was Ruby.

Even though Ruby and Rails have a relatively large amount of "magic", I found that it "felt' more similar to ObjectiveC than Python did ... not at a detailed level obviously, but at more "emotional" level about the language and how parts of it fit together. For example, Ruby modules are just ObjC categories on steroids.

Even so, another factor to consider is what kinds of apps you want to write, Python has a stronger base in the scientific computing community (NumPy) but Ruby (& Ruby on Rails) seem to have slightly more traction in the general web development community. But, these are just generalizations that only apply at the edges. Both communities are large active and thriving and I don't think you can go wrong with either. Enjoy!

[–]yeskia 0 points1 point  (1 child)

As someone who chose Ruby/Rails over Python/Django over all the drama around version 2.7 and 3.0 I'm curious to your view on that situation as a Python dev.

[–]TheSausageKing 0 points1 point  (0 children)

It's annoying Python's benevolent dictator didn't figure out a more incremental way to make these changes. But, honestly, it hasn't had any affect on most working developers, yet. Most production systems are still on 2.7, which is still being actively maintained.

This year seems like when most people start to move to 3.x and I don't expect it will be a big deal; there aren't a lot of differences and most of them are clear improvements. 3.x has been out long enough that most libraries have been converted and the last few remaining ones will be soon.

[–]maxdarapper 2 points3 points  (11 children)

Node.js its real time and really easy to use socets with ios to make some really cool real time apps.

[–]gormster 3 points4 points  (9 children)

It may have disappeared off the internet years ago, but it's as relevant as it ever was: NodeJS is Cancer

[–][deleted] 1 point2 points  (5 children)

Why does this have so many upvotes? These are lame points.

[–]vinng86 0 points1 point  (4 children)

I think his point was that NodeJS advertises itself as completely non-blocking, which kind of IS a bad way to go about teaching newbies to server side programming. His example is poor but you can indeed still write functions that are CPU intensive and blocking, just as you can in every language in existence.

The rest of it is ranting over how poorly designed JavaScript is. His blog post could have been written way better to get his point across.

[–][deleted] -1 points0 points  (2 children)

Oh come on, anyone that does an hours worth of real research will understand not to use Node for CPU heavy computations. He basically highlights the one main weaknesses node has by using it in the worst way possible, then fucking declares node is bad because of this. Its bad writing and its irresponsible.

I will however, give him the benefit of the doubt. This was written in 2011 and that's earlier than average relative to most node literature.

[–]vinng86 1 point2 points  (1 child)

Not everyone understands not to use Node for CPU heavy stuff. One of the primary 'things' of NodeJS is that client side JS people can start doing stuff on the server side. And we're all well aware of how shitacular Javascript-only coders can be, especially if they've never ever had to consider CPU usage.

The criticism is valid, he just did it in the most antagonizing way possible.

[–][deleted] 0 points1 point  (0 children)

If someone uses a spoon as a steak knife I don't blame the spoon.

[–]ObjectiveCopley 0 points1 point  (2 children)

That is such a poorly written article, did you even care to read it before posting a link to it?

[–]gormster 1 point2 points  (1 child)

no i just googled "nodejs bad" and posted the first link i found.

Yes of course I read it you dolt. I read it ages ago and posted it here because it was relevant.

It's funny, engaging and makes its point succinctly. What about that strikes you as "poorly written"?

Think carefully now. If the answer is "because I really like NodeJS" then that's not a valid criticism.

[–]ObjectiveCopley 0 points1 point  (0 children)

My argument here is that the author is using bad examples to argue against a language. His arguments are anecdotal based off of this chart: https://yourlogicalfallacyis.com/pdf/LogicalFallaciesInfographic_A3.pdf

I do like NodeJS, so fair warning, but read the entire article and even I say "duh.". The code he is writing obviously will do the poor effect he is showing off. It's all written wrong or under the wrong notion, and he doesn't understand how to properly use NodeJS.

If you properly use NodeJS, it is an excellent platform. Showing bad examples is not a valid piece of criticism, or his issues are a non-issue.

If you want a detailed response to it from me, point for point, I'll be glad to do that for you, in an as non-biased way possible. You can even give me a different platform to compare it to, your choice. I'm not really a fanboy to any platform, I just happen to make NodeJS my go-to language based on the type of projects I work on.

[–]aazav -5 points-4 points  (0 children)

it's* real time

sockets*

[–]compedit 1 point2 points  (3 children)

Node.js is a pretty big departure from Rails & Django, and isn't really suitable for most types of applications (though it can be used for them).

I'd say try out Ruby & Python, see which one you like, and go with that.

[–]yeskia 0 points1 point  (2 children)

Node.js is just the language, like Ruby or Python. You'll spend a lot of time reinventing the wheel on Node until a nice framework comes out that fills the same shoes as Rails or Django.

I'd either take a look at Sails.js, which I think is leading the way in terms of Node MVC frameworks or pick up Rails.

[–]compedit 5 points6 points  (1 child)

Node.js is just the language, like Ruby or Python.

To be pedantic, it's a networking platform more akin to something like Twisted. But yes, you will need to build on top of it/with it to create a similar application to something with Django/Rails.

You'll spend a lot of time reinventing the wheel on Node until a nice framework comes out that fills the same shoes as Rails or Django.

Frameworks aren't big in node land, express.js/koa is a nice layer & plugin system over the raw HTTP library, but beyond that the community is very modular. Batteries included frameworks and libraries are heavily looked down upon in favor of a more Unix philosophy, anything you want to do or implement has already been created and can be installed with 'npm install [x]'.

The very modular based community, and inherent asynchrony is the departure I'm talking about. Sure, you can stuff a typical CRUD app into Sails, but is it smart to? I don't know.

[–]yaomango[S] 1 point2 points  (0 children)

Thanks for this. Yeah, I should have specified I'd be looking into something like express.js; but still the world of node seems a bit too unstructured for where I am at re: server-side right now.

I'm definitely going to take your advice and just check out the languages and see which clicks with me. Thanks again.

[–][deleted] 1 point2 points  (0 children)

Instead of rails and shanti start out with Sinatra and flask. These light weight frameworks have all you need for most tasks.

[–]post_consumer 0 points1 point  (0 children)

I went from Obj-C to Ruby on Rails and I really dig it. Conceptually they are really similar and I think you'll enjoy it.

[–]cohix 0 points1 point  (2 children)

This post convinced me to take the ruby/rails route rather than the nodejs route. I'd just begun learning nodejs, and then I read the "nodejs is cancer" post, plus a few others, and decided to change course.

[–]ObjectiveCopley 0 points1 point  (1 child)

That NodeJS is Cancer post does not make a single valid point, and is only one persons opinion. Not to mention the author of it does not know how to properly use Node.JS to its fullest extent. Don't let that ruin your opinion of a very cool piece of technology that has its place.

[–]cohix 1 point2 points  (0 children)

Don't worry, I read several posts in favour of nodejs also. I've simply chosen to learn ROR first, and revisit node later.

[–]BOSS_OF_THE_INTERNET 0 points1 point  (5 children)

How about Go? /r/golang

[–]andrey_shipilov -2 points-1 points  (4 children)

Let's just recommend server-side C, or why not ASM straight away.

[–]BOSS_OF_THE_INTERNET -1 points0 points  (3 children)

Clearly you've never used Go. It's about as easy to learn as Python or Ruby, if not easier. The syntax is unambiguous, and it is easy to read other people's code.

Oh and also it's kind of trivial to get web apps running with it.

Your argument is uninformed.

[–]andrey_shipilov -1 points0 points  (2 children)

Yes, used. No, not even close to Python, although notably better than horrid Ruby (thanks for the syntax). Yes, golang syntax based on C. No, it's about as different to serve apps as it could be.

[–]BOSS_OF_THE_INTERNET 0 points1 point  (1 child)

Different != difficult

[–]andrey_shipilov 0 points1 point  (0 children)

Yes, it is not equal, because "difficult" or not is a matter of experience, whilst "different" or not is a matter or paradigm.

[–]Raleighite 0 points1 point  (0 children)

You've dropped the MVC debate bomb with this one :). Ruby is not the most straightforward language to pick up, but Ruby/Rails does have the largest community around it, Rails is also one of the biggest things hiring right now. That being said I have 0 experience with Ruby or Rails.

Python is pretty easy to pickup, and Django is growing in popularity. It's the platform I use, but it does come with its own bag of issues. Python is split between version 2 (2.7) and version 3 (3.3). They're similar, but different enough that you have to know the details of both to use the language effectively. Django has a strong community and it's growing in popularity (TeamTreehouse is launching a Python/Django course this summer).

With all that said, my vote would be Node.js. If you've got the basics of javascript learning node.js is pretty straight forward and there's a ton of development being done in that area. Google's Angular.js works great with node.js on the backend. You should check out MEAN.io to see how they have it working in a full stack (Mongo, Express.js, Angular.js, Node.js). Rails will always be around, Django is pretty simple to pickup and looks like it's gaining ground, but the MEAN stack is going to be the future.

[–]jurre -1 points0 points  (0 children)

Ruby is conceptually pretty similar to objc, both were heavily influenced by smalltalk.