|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
||||
|
||||
|
Ruby Or Python
I dont know if this has been posted before... but.. i wanted to know... if it is worth learning ruby or python first? i mean.. i know some pythong... and i actually never tried ruby yet.. but what are the advantages of me learning ruby?
__________________
IE QUOTE | PHP Manual | Google | C/C++ Compiler | Linux Tutorials | General Stuff Game Dev |
|
#2
|
||||
|
||||
|
Fine then.. i will stick with python
![]() |
|
#3
|
||||
|
||||
|
I was waiting for this question to start a flamewar. How boring
![]() Oh well, here I go: in my opinion, Python is far more useful than Ruby because it's got the libraries, it's got the large developer community, in short - it's USEFUL. The only thing Ruby is used for at the moment is Ruby on Rails. HOWEVER - I'm not saying that Ruby is crap - far from it ( although I DO get sick of ROR fanboys ), and learning a new language is always a good thing. For that matter, I think both Ruby and Python are very similar in syntax and in design principles, and aren't terribly different at all. --Simon
__________________
|
|
#4
|
||||
|
||||
|
Quote:
, although the flame war would of been good hehe |
|
#5
|
||||
|
||||
|
disagree. not going to start a flamewar about it but even in the core ruby libraries there's enough to make python jealous.
and there's something about being able to read and process a file in one line that's kinda cool
__________________
~James [Not currently seeking freelance work] Like philosophy or interested in spirituality? Philosophorum. Game Dev Experts Forums Foresight Linux - Because your desktop should be cool! Linux FAQ FedoraFAQ UbuntuGuide |
|
#6
|
||||
|
||||
|
I'm sure you could write an entire operating system in a perl one-liner. This does not mean that it's cool ( well THAT would be, but LOC counts are not a good indicator of readability or power of language ). For that matter, I'm sure I could do the same in python, by using the ; .
So - sell Ruby. What does Ruby do better? -Simon |
|
#7
|
||||
|
||||
|
Quote:
thats what i want to know ![]() |
|
#8
|
||||
|
||||
|
I've been in the same position as you and I decided to learn whichever I found a good book for first. Which ended up being Python. But still, while Python has a lot of good stuff I like Ruby's syntax more, it's cleaner and more readable imho so I ended up gong back and trying to learn Ruby ...
Also I like Ruby's documentation better, even though there's less of it what there is is written in a much clearer fashion leaving for less time wasted trying to figure out how some method works. Python's integration with GTK is in fact what drove me back to Ruby, the way Python structures this GUI code feels just plain awkward to me, the way ruby deals with it felt quite a bit more natural... (I'm not talking about ROR, I've never used that, nor do I really intend to) All of this is my own opinion though. But honestly I'd take a look at both and see which one you like best, they're not that hard to learn if you have a little bit of time ![]() |
|
#9
|
||||
|
||||
|
ruby? i'll sell it
Say you've got to process a file, you'd do it like this in perl (my python sucks, you don't wanna see it) open(INFILE,"</path/to/file"); while (<INFILE>) {print $_;} close INFILE; or something similar. In ruby File("/path/to/file") {|x| puts x} now understand that's a grossly simplified example. But note that it takes care of allocating and deallocating the filehandle for you. Now let's try some string manipulation... We have inline regexps, perl style, lovely, unlike ****ing with the python regexp objects. x =~ /([a-z]+)/ print $1; something like that. Saves a lot of time over the python version Then there's all the lovely methods attached to objects puts "blah".reverse print ("2122".reverse.to_i - 100) see that, i reversed it and then converted it to an integer, all in one statement. quick and easier to follow The classes that come with ruby are more logical and easier to use, and they have a lot of nice functionality, and many shortcuts. An example is the Marshal class. Being a python god you'll know all about saving dictionaries to file, i presume. Well the marshal class saves any object in a marshalled form that you can get easy access to. Imagine sending it over the net and being able to take it apart again nicely Well it's a good examplerequire 'Marshal' marshalledhash = Marshal(myhash) now, we could have passed in a second parameter, filename, which would save us writing this to file, since that's one of the common things you want to do with marshalled objects. Every core class is like this, and other classes try to be like this. An example is ruby-gnome2, which is ridiculously easy to use. Cool, I swear. Ruby also excels when it comes to hashes (dictionaries) and lists (arrays). Try this for size {x=>5,y=>8,z=>9}.each {|x,y| print "#{x} = #{y}"} that #{} business was interpolation, btw, interpolating the variables into the string. other methods on hashes include the standard python kit i suppose, keys, values, etc. what python doesn't allow you to do is construct a simple loop like that with a passed in lamda (the block in brackets is a lambda function, called a block that is activated within the class in a special way). python's lambdas really suck ***, only allowed to be one statement and all... Try this for size myarray.each do |x| x.chop! print x[4] end That was two statements, counting as a block too, and i could have done more. And you'll also notice i used array notation on a string. that gets the character at that position, like you'd use on a python list to get a member. you can also use the python syntax to get a subset of the results x[1...3] x[-3...-1] etc. there are just so many neat things built in, y'know... creating your own functions that accept blocks is easy too def myfunc (x,y) yield #This is what calls the optional lambda block there. end if it suits you, you CAN also pass a lambda directly as an argument if that's what the function expects myfunc(x, lambda {|x| puts x}) but seriously, me talking about it won't do a thing to convince you, you've gotta try it to know. |
|
#10
|
||||
|