

Ask HN: Python or Ruby or What?? - tomharari

Hey all - I&#x27;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&#x27;m naturally curious and like building&#x2F;learning things. I think I&#x27;m stuck in a paradox of choice - too many options and free courses online nowadays that I&#x27;m not moving forward in any one direction.<p>I&#x27;m very fortunate to have a badass tech cofounder working with me on a project and he codes in Python. He&#x27;s also incredibly smart and can pick up any language if he needed to. Should I just focus on Python since that&#x27;s his language of choice?<p>TeamTreehouse has a good RoR course. Udacity has a strong, but hard, Computer Science course using Python. I&#x27;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?<p>Would love your feedback.
======
dragonwriter
> 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...

~~~
tomharari
Wow. Thank you. Seriously, great response - very much appreciated.

------
memracom
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](http://ipython.org/notebook.html)
and [http://www.gevent.org/](http://www.gevent.org/) and
[http://plone.org/documentation/#developer_doc](http://plone.org/documentation/#developer_doc)

~~~
dragonwriter
> 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.

------
MrBra
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/](http://groovy.codehaus.org/) [2]
[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

~~~
vorg
> 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.

~~~
MrBra
Do you like the language?

~~~
vorg
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...](http://www.infoworld.com/t/application-
development/c-pulls-away-java-among-top-programming-languages-230603)

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

------
tjr
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.

~~~
tomharari
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.

------
rholdy
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.

~~~
tomharari
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.

