views:

497

answers:

10

I was reading about Go, and I can see that it's very good and can be a language used by many developers in some months, but I want to decide a simple thing: Learn Go or improve my Python or Ruby knowledge?

Years developing with Python: 1
Years developing with Ruby: 0.3

+6  A: 

In reality, you should do both; if it's what you want. For me though, out of the two, I'd only look at Python. I have no real interest in languages that are so new.

Noon Silk
Both is a cop out answer. I guess in a fun ideal world we would learn everything - in reality time spent invested learning one language is time directly taken from something else. Why not learn one of the million other languages out there? I guess your answer would be the absurd "Learn them all".Instead of learning different ways to express the same thing, it's better to learn to express new things and work on a big Python project. Telling someone who programs for fun to learn a language that might be forgotten in a decade, at the expense of something else (django, opengl) is bad advice.
FranticPedantic
Frantic: Not really; at home I'm currently working on a program in one language, and learning another language at the same time. I've not made a decision to "not" learn this other language, in place of working on my main project non-stop in off hours. There is downtime, and I use that to learn the other one, instead of doing something else (like playing Diablo 2, hmm maybe I made the wrong decision). You're taking my advice too extremely. It's logical to think things through practically, and realise it doesn't need to be as extreme as the OP suggested.
Noon Silk
+3  A: 

How long have you been working with Python?

If it were me, I'd do my best to maybe get a working knowledge of Go (basic syntax, some familiarity with unique language features), and continue with Python as I normally would.

Eventually you might come up with a small project that Go seems suited for (or you can come up with one now!) and really dive into the language that way.

There's no reason to limit yourself to just one. :)

Sapph
I don't work with Python, I develop in Python for fun and just to home-projects, but I have 1 year developing in Python.
Nathan Campos
I recall from my reading that Go is well suited for parallel programming. That's what I had in mind when I said "project that Go seems suited for". Maybe come up with a small task that'll take advantage of those features and "go" for it!Sorry, couldn't resist.
Sapph
By "working with" Python I meant to include in your free time. That's all I've used Python for. :)
Sapph
+1  A: 

These two languages accomplish different goals. Go is only 20% slower than C. If you want crazy speed and easy parallelism, then learn Go. However, readability was not a design goal. Also, it has no exceptions. It can be used for real-time products though ...

Hamish Grubijan
"readability was not a design goal"Actually it was part of their goals, the syntax of the language is very small and very simple, thus making it quite readable once you get the basics down. You'd need to know the basics in order to understand any language, Go is no different in that regard.
AlexCombas
+1  A: 

IMO you should improve your Python knowledge. Python is a widely adopted language, whereas Go is still at a very, very early stage and there's no reason to believe that it will become successful.

From a purely utilitarian perspective, you will get a lot more value from learning Python.

Don
+1  A: 

It's not easy to answer this without knowing how good your Python is, or what you do, or where you'd use Go. If you're looking for employment, I suspect Python is the way to go. I'd be surprised to find anyone is using Go for major projects at the moment (outside Google).

Note also that Go is by no means finalised. See here for the Go roadmap, and note the potential changes in the future. So you may be trying to hit a moving target currently.

Brian Agnew
+2  A: 

It's up to you. You should probably do both if you can, because that way you will have more tools on your metaphorical programmer's belt.

There are a number of things that I think are worth considering whenever I'm in a similar dilemma.

Is a new language (not just unfamiliar, but actually new, like Go) likely to catch on? (If so, it will become practically NECESSARY to learn it, rather than just a good idea.)

You will need to spend some time to learn the unfamiliar language. Will this time investment result in some sort of positive return? The obvious one here is development time (i.e., can you eventually get more done and get back the time you spent to learn it), but if the language is superior in other ways (runs faster or with less memory, is best for your particular problem domain) those might factor in too.

Will learning the unfamiliar language allow you to solve a relevant/important/urgent problem that cannot be solved with what you already know?

Unfortunately, none of us can tell you how to weigh each of these concerns. You'll need to think about it really carefully and come to the answer on your own.

Platinum Azure
+1  A: 

Python is a available for most operating systems, it's generally accepted as a scriptin language, and it has matured to production quality.

Go is a research language that's only available in beta quality on Linux and OS X. Nowhere else. It's interesting from an intellectual point of view in that you can learn and apply a few concepts (typed channels combined with easy multitasking) that are otherwise difficult to use.

As for Go, you might perhaps take a look at AT&T's "Plan 9" operating system first. It comes with a programming language called "Aleph" with also is C-based, has channels and multitasking. Looks to me like Go is a reimplementation of Aleph on more main-stream operating systems.

Carsten Kuckuk
+5  A: 

If you're just looking to have fun and expand your horizons, then I'd learn Go, since you already know some Python.

If you're looking to improve as a developer, I'd personally recommend working on an actual project (using Python, as it's the language you have the most experience with):

  • This will take your (Python and general) programming skills to a whole new level
  • If you choose an interesting project, for example a semi-popular open source project, you'll even have some concrete result to show for your extra work. This will help your resume, help you meet other people interested in programming, etc.

I personally believe that spending the time you would have spent learning a new language by coding actual things you can use, is usually a net win (unless of course, like I said, you're just doing it for some fun recreation or relaxation).

Edan Maor
+2  A: 

It depends on what your goals and your needs are.

If you're looking to develop your skills for a job, then go with Python or Ruby. You're unlikely to see Go show up in the workplace for quite some time (if ever) unless you're working at Google. (Even then it's questionable.)

If you want to have fun, do what you want. I think the best decider is, pick a project you want to work on and then choose the language that is best suited for that project.

Other things to consider:

  • Each language is suited to certain tasks. Go is compiled into machine code, Python is compiled to byte code, and Ruby is interpreted. Go lends itself to somewhat lower level work. It's also good for concurrent tasks. Higher level tasks might be more suited for Python or Ruby.

  • Go is an experimental language that's likely to experience changes. These changes may be language-breaking. If you learn it now, in 6 months or a year you may have to re-learn some of it because it's changed. That said, it can be fun to be a part of something that's on the bleeding edge. And if it does happen to become "the next big thing," you're in on the ground level.

Evan Shaw
+1  A: 

First of all, it's a very very personal question, and my first recommendation will be , if you think so, try Go for one month or so, learning the basics, and then deciding... Each one has the mind fitted more to some particular languages than another...

I also would recommend keep using both Python and Ruby, if you're interested, you have enough experience to use them comfortably (I think), so the next months you could experience a great boost in your experience using them...

For an strict utilitarian point of view, learning Go extensively could be a risk move, but worthy if begins to being using and you're one of the very few people with some experience when everyone are just beginning to learn the syntax...

Khelben