Hacker News new | ask | show | jobs
Ask HN: Python or Ruby or What??
1 points by tomharari 4609 days ago
Hey all - I've always wanted to increase my knowledge in programming, not to be programmer, but to know how to better interact with programmers, and also because I'm naturally curious and like building/learning things. I think I'm stuck in a paradox of choice - too many options and free courses online nowadays that I'm not moving forward in any one direction.

I'm very fortunate to have a badass tech cofounder working with me on a project and he codes in Python. He's also incredibly smart and can pick up any language if he needed to. Should I just focus on Python since that's his language of choice?

TeamTreehouse has a good RoR course. Udacity has a strong, but hard, Computer Science course using Python. I've completed the Javascript track on Codecademy already. What direction should I go? Does it matter? Do I need to just stop making excuses and pick one language? Or can I try to attack 2 language simultaneously?

Would love your feedback.

5 comments

> I'm very fortunate to have a badass tech cofounder working with me on a project and he codes in Python. He's also incredibly smart and can pick up any language if he needed to. Should I just focus on Python since that's his language of choice?

If he's going to mentor you, then that's probably a good place to start.

> TeamTreehouse has a good RoR course.

Despite the fact that I like Ruby, I don't think Rails is a great place to start to learn programming. But that's more of a subjective feeling, not something I can explain in concrete terms.

> Udacity has a strong, but hard, Computer Science course using Python.

That's probably a good choice, especially if you want to do it right now and want scheduling flexibility. MITx's 6.00.1x on EdX is also a good choice, but it has a more fixed schedule (and its a couple weeks into the current session, and I don't know when the next one will be.) There's a number of other strong -- often Python-based -- courses available via EdX and Coursera.

> Do I need to just stop making excuses and pick one language? Or can I try to attack 2 language simultaneously?

There is a perspective to be gained on programming that comes from learning more than one language (particularly if they aren't closely related languages), but its probably best to focus on one first and then branch out to more if you find a deeper interest.

Probably...

Wow. Thank you. Seriously, great response - very much appreciated.
Ruby is a dangerous language. It is so dominated by Rails that you will likely end up warping your mind into thinking that the ActiveRecord pattern is the best way to manage data and that every problem can be solved with a web app.

I would suggest learning Python instead because there is more diversity in the Python community (or should I say communities?). Compare the communities around http://ipython.org/notebook.html and http://www.gevent.org/ and http://plone.org/documentation/#developer_doc

> Ruby is a dangerous language. It is so dominated by Rails that you will likely end up warping your mind into thinking that the ActiveRecord pattern is the best way to manage data and that every problem can be solved with a web app.

That hasn't been my experience, and I don't think its generally true as long as you don't learn Ruby through Rails.

What about Groovy?[1]

From the website:

- is an agile and dynamic language for the Java Virtual Machine

- builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk

- makes modern programming features available to Java developers with almost-zero learning curve

- provides the ability to statically type check and statically compile your code for robustness and performance

- supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain

- makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL

- increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications

- simplifies testing by supporting unit testing and mocking out-of-the-box

- seamlessly integrates with all existing Java classes and libraries

- compiles straight to Java bytecode so you can use it anywhere you can use Java

It has also recently entered the top 20 on Tiobe Index and it's the only one amongst other well-known JVM languages ( Scala (#36), JavaFX Script (#41) and Clojure (#76)) [2]

[1] http://groovy.codehaus.org/ [2] http://www.tiobe.com/index.php/content/paperinfo/tpci/index....

> What about Groovy?[1] > From the website:

Most of this is marketing talk without any specific examples or comparisons. The project manager for Codehaus Groovy is a non-technical SpringSource employee who frequently makes bold statements about Groovy without giving any evidence.

> - builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk

Groovy is really just a clone of Ruby but with Java-like syntax. It's business purpose was solely to be an appendage to Grails, so Grails could take some market-share away from Rails. "Ruby on Rails", "Groovy on Grails", get it?

Grails itself started as a thin wrapper around other software products from various companies (e.g. Spring from SpringSource, Hibernate from JBoss) so Grails dictator Graeme Rocher could use it to muscle in on the training and consultancy markets for those products. He then started a company, G2One Inc, and quickly shopped it around among the various companies whose products he bundled, successfully fooling SpringSource into buying it 12 mths afterwards.

Always look thru the marketing talk to the business purpose of something when deciding whether to adopt. You'll get burnt otherwise.

> It has also recently entered the top 20 on Tiobe Index and it's the only one amongst other well-known JVM languages ( Scala (#36), JavaFX Script (#41) and Clojure (#76)) [2]

6 months ago Groovy wasn't even in their Top 50. I doubt Groovy suddenly became popular in a mere 6 months. Groovy's sudden high ranking says more about how dubious Tiobe's algorithms are than about Groovy's uptake by developers.

In fact, Tiobe have been frequently changing their algorithms over the last 6 months so maybe there's been some interference. 3 years ago (Dec 2010) Groovy Tech Lead Jochen Theodorou volunteered his services to Tiobe to polish their algorithms. Groovy then shot up from below 50 to number 25. In April 2011, however, Groovy dropped from 25 to number 65 in a single month when Tiobe added more search engines. Hope Groovy's not similarly embarrassed again because of the short-sightedness of it's non-technical promoters.

Do you like the language?
Looks like Groovy has been embarrassed again:

> Groovy, which turned up in the 18th spot last month, slid back down to a number 32 ranking. "After a long discussion with one of the Tiobe index readers, it turned out that the data that is produced by one of the Chinese sites that we track is interpreted incorrectly by our algorithms. So this was a bug," Janssen said. "After we had fixed this bug, Groovy lost much of its ratings." The ratings slip takes Groovy from a 0.658 percent rating last month to 0.393 percent this month.

...according to http://www.infoworld.com/t/application-development/c-pulls-a...

I suspect someone was just priming up Groovy in the rankings for a month only to help win a consulting contract for Pivotal.

I would suggest, for what you describe, it really doesn't matter that much. If you'd like help deciding from a random stranger on the internet, I'd say go with Python. Your friend knows it, and it anecdotally appears to me that Python is used as a first language in school coursework more than Ruby is.
Thanks for the reply. I've felt the same, just curious what others would say, especially if anyone here was in my shoes in the past. Appreciate the feedback though.
I think a better question to ask is: "Do I know somebody who is proficient in this language that can help me learn when I get stuck?" A real life friend that will explain things to you when you need help is going to be infinitely more useful that an online tutorial.

Go with Python.

Yeah good point. I'm fortunate to know people from both Ruby and Python who would help. And each one has their own bias as to which one to learn. But you make a great point, a real life friend you can pester with questions is very helpful.