Nidoprince wrote:Now, I am at a loss. I began reading Why's Poignant Guide to Ruby and found it to be an amazing book.
It is. Don't be misled by the lightheaded approach (comic strips and all), the author is a true Ruby wizard with quite a few excellent additions to the Ruby world under his belt (apart from that tutorial book).
Yet Lisp also draws me for reasons I can not comprehend.
Lisp is very cool -- wait until you learn about higher-order procedures and macros: that's when the real fun starts (although you can have a lot of that with Ruby as well). I can only repeat my above advice to download and watch the video lectures that I've linked.
In addition Python's use of white space has a certain appeal to me and it seems to be the most practical.
Yes, that is very practical, and I'm sad that Ruby doesn't do it that way. On the other hand, Python does not provide "lexical scoping", which does make certain things really very awkward. Maybe you have noticed that one has to put "self" into the parameter list of every method, which has to do with the lack of lexical scoping. It's probably the reason why I haven't touched Python yet, it's a very ugly aspect of that language.
Is it possible to learn 3 languages at one? Even 2? Or will this just cause you to get all the syntax mixed up? I can see how it might mess you up but perhaps learning multiple languages from the beginning would reduce constraining my thinking to a single language? What say ye, wise sages of the internet?
It's important that you learn some important
concepts, and you can do that with any of the mentioned languages. The syntax differences are not the problem, it's the fact that the various languages usually ask for different styles of programming (e.g. functional vs. imperative, or object-oriented vs. procedural), and it takes time to get into the respective mind-sets.
Oh, and a major part of learning any language is
getting to know the libraries and tools! Learning all the APIs, and IDEs and whatnot to actually being able to effectively
work takes a lot longer than digging the syntax and underlying concepts of a given language. I'm a Java programmer for years now and I still don't know a lot of the sizeable standard library... same goes for Ruby and so on.
Having said that, I can only encourage you to look at all of them (languages) and decide for yourself what you like best. Even if you don't end up using, say, Haskell or Lisp, it will make you a
much better programmer in the end to know how these languages work. Keep in mind that in order to be able to pick the right tool for the job at hand, you have to know what's available.
It's simply not enough to learn Java and stop right there. Sure, pretty much all problems can solved in Java, and it's easy to get a Java job, but for a lot of tasks it's simply the wrong tool (and the same is true for all other languages).
At the end of the day, you should also take a look at C programming, and get some practice with pointer arithmetic and doing your own memory management. This will give you a much better understanding what's actually going on inside your machine (while the higher-level languages abstract away a lot of this, which is usually very good for productivity, you will sometime need the judgement of what "really" happens at a lower level, and a good way to learn that is to do some C programming).