4 ms·
The languages are similar enough that it does not really matter. Just pick any, but make sure you balance it out by also knowing a low level language or a funct
by maxklein 18y ago
The languages are similar enough that it does not really matter. Just pick any, but make sure you balance it out by also knowing a low level language or a functional language.
Remember this: Every language you learn is a big investment in time and energy, and I don't think many people can be really proficient in more than 2 or 3 languages. Some can, but not most.
So, choose wisely, because you will likely be using that language for a long time to come. I personally prefer python because it's more widespread and right now, you have more available to you when you know it than with ruby.
- subwindow 18y agoI couldn't disagree more. Even if you spend a month learning Ruby and never use it again, it will still irrevocably change the way you approach writing code.
- maxklein 18y agoYou mean that ruby has a greater learning effect than python on a C++ programmer?
- rbanffy 18y agoIf we are talking a month of involvement, you may as well learn both. I would also throw Lisp in. And Forth. And Haskell. And Smalltalk... But then, we are not talking about a month anymore...
- aconbere 18y agoI definitely did not have this effect on me. Usually when I hear comments like this it's from Java programmers. But coming from a background of already knowing several expressive dynamic languages (Python, Perl) and having a strong functional background in Lisp. I didn't really find Ruby that mind blowing. Very cool? YES! worth learning? Absolutely! "changing the way I write code irrevocably? Not a chance!
- davidw 18y agoYeah, if you already know Python, Ruby just isn't that big a leap. You've got to jump further to find something that will be useful/mind altering.
- silentbicycle 18y agoI've found OCaml to be quite complementary to Python: It's excellent for functional programming and has one of the most sophisticated compile-time error checking systems I've ever used (two things relatively weak in Python). Both are very pragmatic and portable languages, as well. The OCaml community is tiny and rather quiet compared to Python's, though.
- subwindow 18y agoI didn't say that it would change the way you write code, I said it would change the way you approach writing code. I'm fairly confident that it did. Once you've really learned it, Ruby creates paths in your brain that you will try to follow forever, even if you're not coding in Ruby anymore. If it didn't, then you never gave Ruby a real chance.
- aconbere 18y agoIt's cool that it changed the way you approach writing code, but it's more than a little presumptuous to go and apply that experience beyond yourself. I'm sorry if I didn't see much in ruby that I hadn't already seen, it's not as though ruby is pushing through a new paradigm. Certainly the "ah-ha" moment for ruby was much less intense than my ah-ha moment of Lisp, Python, SmallTalk and Erlang. And it's definitely more straight forward to me than Haskell, Prolog, OCAML or Forth. That's just the reality of it.
- scott_s 18y agoI think the point your missing is aconbere already traversed those paths in his brain with other languages. Ruby, as far as I know, hasn't introduced any new programming language concepts.
- tptacek 18y agoI'll join the peanut gallery and suggest that if "irrevocably changing the way you approach writing code" is the goal, you spend a month with Lisp or C before you do Ruby.
- subwindow 18y agoI agree that Lisp would have as much of an impact, if not more. I never said it was mutually exclusive with anything else in this benefit.
- tokipin 18y agomaybe i'm an incredible genius or something, but give me a week or two and i'm writing code at an advanced level in any language. it's pretty easy. it more or less involves making an actual project in that language, which cold turky sink or swimly requires that you know the language at least decently i think it's mostly mentality. if you think languages are hard to learn, then they will probably seem that way because you will allow yourself too much time to play around with mere details, whereas if you recognize there isn't much to them, you can accomplish a lot in no time at all
- icey 18y agoObviously you've never met Haskell. And if you hit the reply button and say that you have, then I demand to see code samples.
- tokipin 18y agonay, not Haskell. F# though (using it right now on a small app that i plan on selling, hopefully it makes me enough money to support my starbucks addiction.) actually i've been meaning to play around with Haskell because it has a lot of succinct thingies with currying and whatnot, and i plan on making an experimental language or two eventually. generally though, strongly typed languages are painful for me. that is, painful to use, not painful to learn :) one paradigm i've yet to try out is the "goal-oriented" languages a la Prolog. i'll get to them my point isn't about me though, despite how great i am. i just think that thinking about languages as if they were huge monoliths isn't the best way of thinking about them, because it will hurt your ability to try out new languages and perspectives. they are things that you should revel in, not keep away from because they seem daunting
- maxklein 18y agoI think it is more likely that you do not recognize your own flaws. It takes a real genius to be able to learn the little things about C++ in a week or two. A language is not just the syntax of the language itself, it's also the code style, the convention, the best practise, the language specific stuff, the API of the libraries available, the best way of doing things with libraries. If you use python to write simple number crunching console applications, then switch to ruby, that is an easy switch. But if you're writing a Web application using Python and Django and you switch to writing DirectSound using C++, and you tell me you can do this in a week, then you are a genius. The syntax of languages are trivial, but that's like saying you can discover the colors used in a painting. That's the easy part. The difficult part is knowing how it works. Let me list a few examples of technologies that I think differ strongly from each other that make it difficult to switch - MFC with C++ - Django with Python - DirectShow with C++ - VHDL - ASM - Javascript with JQuery - CSS with HTML - Helix Framework with C++ - Quicktime API with C++ - OpenGL with .NET - LISP Have you ever had to switch between things on that level? Or are you talking more of a python to ruby switch?