views:

150

answers:

3

I'm a Web designer who want to start learning a new language, I'm familiar with C#, Asp.net and C and decided to choose between

  • Python
  • Ruby
  • Objective-C

I need to learn this because of academic reason and I'll use this to implement some small project at university , I'm really free to choose and I have no idea about these.

Here are 2 subjects that I have toimplement in first step

  • Read CPU, H.D.D and some other hardware information and display them
  • Working with XML

I know that these subject are farfrom each other bytheway I want to start just one of these

If any other explanation is needed I can add. Thank you in advance


Update :

Thank you guys

All 'm looking for is a language that I'm not familiar with, to domy university project with it. This will help me to learn a new language while I'm doing boring university projects. I don't underestand that how this question is subjective. I just need to use your experience with these languages and helping me to choose between these.

By now I think Python is my choise

+8  A: 

I think there is no "correct" answer to this question as all of it is pretty subjective. You can give them all a try and decide, which one is most fun for you.

Personally, I'd suggest Python because it is easy to learn, very powerful and will be of use for more than just learning it. Also, to my knowledge, it has the largest user-base of the three mentioned languages, therefore you'll most likely find a bit more help. But that is just my opinion because I love Python (and pretty much hate Objective-C, btw). Any Ruby-fanatic will advise you Ruby. And there might be even some Objective-C-fanatics that might suggest Objective-C as the most beautiful and easy language.

zerm
+1  A: 

This is a highly subjective question, and one which there is no clear answer to. All you'll get are only going to be opinions. Here's mine:

If you're a web designer and want to keep working with the web, Ruby or Python are going to be your best bet. The Rails and Django frameworks are both popular, and knowing either of them will be an asset to you.

If you're interested in mobile development (think iPhone apps), go with Objective-C. The market for building actual websites with this is not nearly as widespread as Ruby or Python, however.

Again, this is subjective, but I'd say that as a newbie, Ruby would be your best choice (assuming you want to build websites). Rails' ecosystem is (in my opinion) a tad more evolved than Django's. As such, deploying your app is nowadays very easy using tools such as Phusion Passenger (aka mod_rails). There's also Heroku and others to make deploying apps a breeze. With Django, it's slightly more difficult to deploy (yet).

Depending on your university, there might be a preference there too. My impression is that Python is slightly better looked-upon than Ruby or Objective-C in the academic world, but I'm basing that on limited experience and exposure.

Any of the three would be a solid choice, however.

vonconrad
+4  A: 

MIT starts all of their fresh-faced best-and-brightest undergrad freshmen off with Python -- and you can join in at home, too:

All three languages can process XML but Ruby has hpricot and python has pyquery:

... both of these libraries are like an order of magnitude simpler than the Obj-C route (whose elegance is indisputable but is contingent on srsly knowing xpath) -- plus, even with garbage collection, there are more boilerplate syntactic details in Obj-C that could make the task of parsing XML in your new language overly daunting.

Why are you parsing XML anyway? Is someone making you do it? XML is really gross. Along with the majority of the civilized computing world I recommend JSON instead.

Reading CPU and hard drive data is easiest in Obj-C, cuz you have ioctl(), cuz Obj-C is a superset of C, so you get everything from C for free. I can't hack in straight-up C, but I love being able to drop back into C syntax/semantics right in the middle of a Cocoa class, for like a hot loop or some library call or other such things.

I don't know how best to read hardware data in Ruby or Python; I would probably fuck it up egregiously on the first try, so I won't comment.

If you really want to test your own preconceived notions you should learn erlang. Erlang is like if you explained Lisp to Johnny Five (the robot from Short Circuit) while you were both out at a very noisy bar getting drunk, and then he went home and tried to reimplement it while hung over the next day (and I mean that in the good way of course).

fish2000
While I agree with your answer, the use of "srsly" and "cuz" in an otherwise serious answer just rubs me the wrong way...
Davy8
When did MIT stop using SICP (http://mitpress.mit.edu/sicp/) as the intro CS text? Still my fave programming book ever.
Bill Gribble
Davy8: I do apologize for my lack of professionalism -- this seemed to me to be a relaxed-discussion sort of question, whose fundamentally subjective line of inquiry is concordant with a sprinkling of colloquialisms.
fish2000
Mr. Gribble: srsly, rite?? SICP never goes out of style, along with numerical recipes and the little lisper (together the three most dog-eared computer books on my shelves).
fish2000
With ctypes module that ships with python, you can easily call all library functions, including system libraries. Therefore, it is pretty easy to do most of the things you can do in C also in Python. Additionally, most (all?) POSIX functions are already available nicely wrapped in python. See e.g. http://stackoverflow.com/questions/759892 to see how to use sysctl from python using ctypes.
zerm
@Zerm, I really appriciate your answer it was helpful for me.
Nasser Hadjloo