Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Programming Ruby: The Pragmatic Programmers' Guide

timothy posted about 10 years ago | from the who-could-hang-a-name-on-you dept.

Programming 231

James Edward Gray II writes " Programming Ruby: The Pragmatic Programmers' Guide (Second Edition), known as the Pickaxe II to its fans, is an extremely current view of the Ruby programming language. Revised primarily by Dave Thomas, a founding father of the English Ruby community, Programming Ruby is distilled expertise from a reliable source. In the past, quality English documentation of Ruby has been in short supply, but if any one volume could solve that problem, this is it." Read on for the rest of Gray's review.

If you're not familiar with it, Ruby is a very fun and elegant scripting language that has been described as "more powerful than Perl and more object oriented than Python." I won't start a language war by defending that statement, but I will tell you what makes Ruby very attractive to me: Extremely object oriented, super clean syntax, and a smooth blending of iterators and code blocks for straightforward, concise solutions. If that sounds like a language you would like to know more about, Programming Ruby is the book for you.

At 830 pages, this edition is considerably larger than the first. It represents an expansion on many topics originally covered, in addition to all new coverage on topics like unit testing, RDoc documentation for Ruby source code, and more. Better still, "Duck Typing," a topic central to Ruby philosophy, receives its own enlightening chapter. This volume covers the very latest release of the language, often highlighting new features and even giving tips for things to watch for in future versions.

Programming Ruby is divided into four distinct sections. "Part I - Facets of Ruby" is a tutorial on the Ruby Programming Language. It's very effective, but I probably better give a warning here: This book teaches you how to program in Ruby, not how to program. You likely won't feel comfortable, even in this tutorial section, unless you have some experience with other programming languages. As an example, Ruby is object oriented on a scale with languages like Smalltalk, so you'll need to know object oriented programming. This book makes no attempt to teach such concepts, excepting how they apply to Ruby. As long as you come with the proper background, this section will get you on your feet with Ruby in under 200 pages. It's very well thought out.

"Part II - Ruby in its Setting" is a mixed-bag tour on the many places Ruby sees use. Web programming, command-line hacking, using TK to build GUIs, and Windows programming are just some of the covered topics. Other chapters in here focus on elements unique to Ruby, like the earlier mentioned RDoc or "irb," the interactive Ruby shell. There's even a chapter in here on package management with RubyGems.

When you're ready, "Part III - Ruby Crystallized" will take you deep into the core of Ruby syntax and functionality. This section tells you all the details about how Ruby reads your code, and how it runs. I think few people could soak in all the tidbits in here in one scan. I've read it twice now and learned about as much both times. There's a lot of great Ruby knowledge waiting to be mined out of here.

Finally, "Part IV - Ruby Library Reference" is the best Ruby reference I've yet run across. It covers every class, module, method and constant in core Ruby. The descriptions for these entities tell you exactly what you need to know, the examples, though short, are inspiring, and the comments sneak in subtle hints that are more than useful. Following this, the book gives an overview of all Standard Libraries included with Ruby. This section really opened my eyes to the tools I've been missing out on simply because I didn't know they were there. Be warned: These Standard Library summaries won't teach you every feature available. They just tell you what they're for so you'll know where to look for the information you need. The last great feature in this section is a terrific index. I care about the index and a book that has a bad one will really bother me. Luckily, that couldn't be further from the truth here.

Programming Ruby isn't perfect, of course. Some of the chapters are not as thorough as you wish they could be, simply because of the amount of information that needs to be covered. The chapter on threads is probably the biggest example of this, but remember that entire volumes have been written on threading. Another minor point is that some of the examples are quite contrived. This bothers some people, but I don't feel it's too much trouble for the book's target audience. As I've said, you're expected to know how to program going into this book, just not how to program in Ruby.

Programming Ruby at least touches on most things central to the Ruby Programming Language, and goes into considerable detail more often than not. There's something for all levels here. You can learn Ruby from the tutorial, as I did with the first edition, but you'll keep coming back to the wonderful reference and to go deeper into specific areas of interest. That's a lot of great mileage for one book. I'm willing to bet most Ruby Gurus keep it in arm's reach, because Ruby wouldn't be half as much fun without it.


You can purchase Programming Ruby from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

cancel ×

231 comments

Sorry! There are no comments related to the filter you selected.

Would you like to probe my body? (-1, Troll)

(TK11)Dessimat0r (672416) | about 10 years ago | (#10568411)

-INSANE-PRIEST--INSANE-PRIEST--INSAN
I___________,.-------.,____________I Slashdot
N______,;~'_____________'~;,_______N fucking
S____,;____LINUX FUCKING____;,_____S sucks
A___;___SUCKS, YOU FUCKING____;____A
N__,'____SLASHDOT RETARDS.____',___N Rob Malda
E_,;___GET IT INTO YOUR HEAD___;,__E is a
-_;_;______._____l_____.______;_;__- cocksucker
P_l_;____________l____________;_l__P
R_l__`/~"_____~"_._"~_____"~\'__l__R Slashdot
I_l__~__,-~~~^~,_l_,~^~~~-,__~__l__I fucking
E__l___l________}:{__ (O) _l___l___E sucks
S__l___l_ (o) _/_l_\_______!___l___S
T__.~__(__,.--"_.^._"--.,__)__~.___T Rob Malda
-__l_____---;'_/_l_\_`;---_____l___- is a
-___\__._______V.^.V___((oo))./____- cocksucker
I__O_VI_\________________ll_IV___O_I
N_____I_lT~\___!___!___/~ll_I______N Fucking
S_____I_l`IIII_I_I_I_IIIIll_I__o___S lameness
A_O___I__\,III_I_I_I_III,ll_I______A filters,
N______\___`----------'__ll/____o__N will
E____O___\___._______.___ll________E this
-_________\..___^____../(_l___O____- ever
P_________/_^___^___^_/__ll\_______P fucking
R_O______/`'-l l_l l-';__ll_l___O__R WORK?!
I_______;_`'=l l_l l='__/ll_l______I
E_____O_l___\l l~l l__l/_ll_l______E Your mother
S_______l\___\ l_l l__;__ll_l__O___S was good
T__o____l_\___ll=l l==\__ll_l______T in bed, she
-____o__l_/\_/\l_l l__l`-ll_/______- grunts like
-_______'-l_`;'l_l l__l__ll_____O__- an ape.
I_O_______l__l l_l l__l__ll________I
N____O____l__l+l_l+l__l__ll___O____N Rob Malda
S_________l__"""_"""__l__ll________S is a
A__O______l____o_o____l__ll____O___A cocksucker
N_________l,;,;,;,;,;,l__ll________N
E_____O___`lIlIlIlIlIl`__ll________E
-__________llIlIlIlIll___ll_____O__- By Dessimat0r
P__________`"""""""""`___""________P (c)2003 Trollkore
-INSANE-PRIEST--INSANE-PRIEST--INSAN

The bishop, while living, was a follower of God.
Now dead, his rotting fingers are able to raise
an army of skeletons from the grave.

Trollkore
"I hate you, I hate your country, and I hate your face!"

# Important Stuff: Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) # Important Stuff: Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated # Important Stuff: Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) # Important Stuff: Please try to keep posts on topic. # Try to reply to other people's comments instead of starting new threads. # Read other people's messages before posting your own to avoid simply duplicating what has already been said. # Use a clear subject that describes what your message is about. # Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page)

Re:Would you like to probe my body? (0, Offtopic)

Anonymous Coward | about 10 years ago | (#10569477)

Ah, nothing like a classic troll...

Books, schmooks (0, Offtopic)

Hot Summer Nights (771962) | about 10 years ago | (#10568440)

Real programmers don't read books.

First edition is available online. (5, Informative)

Kenja (541830) | about 10 years ago | (#10568444)

http://www.rubycentral.com/book/

Wendy's (-1, Offtopic)

Anonymous Coward | about 10 years ago | (#10568462)

Who stole my chicken nuggets?

Offtopic? (0)

Anonymous Coward | about 10 years ago | (#10568993)

Dave Thomas? Wendy's? Chicken Nuggets? Come on; it's funny!

Web programming (0, Offtopic)

fembots (753724) | about 10 years ago | (#10568471)

The review mentioned web programming, does one need a specific platform installed or it "just runs"?

What demand is there for RUBY in the workplace? (0)

Anonymous Coward | about 10 years ago | (#10568518)

Is it a desirable function that employers are looking for? Can you make money or is it just like other jobs, non existant and low paying.

Re:What demand is there for RUBY in the workplace? (3, Interesting)

Rich_Kilmer (190162) | about 10 years ago | (#10568668)

We have built an extremely robust distributed testing framework for a Java-based multi-agent system completely implemented in Ruby (see Cougaar [cougaar.org] for more on the project and the ACME testing framework). We were told on starting this project (at DARPA) that it would never work...I really like proving people wrong ;-) My company is using its Ruby expertise as a differentiator in the market and getting very good reception.

Re:What demand is there for RUBY in the workplace? (2, Informative)

CatGrep (707480) | about 10 years ago | (#10569440)

These Guys [robotcoop.com] just hired about 4 Ruby programmers to work with Rails [rubyonrails.org] (a Ruby-based web application framework that uses an MVC model that's generating a lot of interest in Ruby)

I suspect that you'll see more small shops using Rails (and thus Ruby) in the coming months.

Re:What demand is there for RUBY in the workplace? (1, Informative)

Anonymous Coward | about 10 years ago | (#10569492)

There was absolutely no demend for it where I work until an enthusiastic Ruby programmer gave a talk on the language and its libraries. Now it has helped to make people here quite a bit more productive because of both its simplicity and how fun it is. So first, learn it (it's really easy---don't worry), and if you decide it'll help where you work, then create the demand. This won't make you any more money however, but this is about making your job easier and more enjoyable.

-1 submoronic (-1, Flamebait)

Anonymous Coward | about 10 years ago | (#10568564)

Any programming language needs to be installed on the server to use, you unbelievable fucking idiot.

Re:Web programming (4, Informative)

Luk Fugl (586096) | about 10 years ago | (#10568621)

The review mentioned web programming, does one need a specific platform installed or it "just runs"?

I'm not sure what you mean by platform or "just runs". If you mean, do you need a certain OS? No. Do you need Apache in particular? No, though Apache and Ruby work very well together. Do you need any external web server? No. One of the standard libraries that comes with Ruby is WEBrick, which is a standalone webserver. You can get Ruby running web apps using WEBrick on any OS, no other software required.

Along those lines, let me throw in a quick plug for Ruby on Rails [rubyonrails.org] . Rails makes web application using the MVC model very quick and easy. The default setup includes a WEBrick servlet so you can have your application listening for requests minutes after installation, literally.

Visit #ruby-lang and #rubyonrails on freenode for more information about Ruby in general or Rails.

Jacob Fugal

Re:Web programming (1)

fembots (753724) | about 10 years ago | (#10568686)

Ahhh thanks, that's what I need to know. I don't mind to try out new languages, as long as they're easy to set up.

Re:Web programming (1)

cmowire (254489) | about 10 years ago | (#10568873)

It's in the packages/ports trees for most modern unix-ish operating system. It's installable from cygwin. And it's available as a windows binary.

It supports CGI and FastCGI, plus there's an Apache module.

And there's a variety of frameworks that are trying to be Ruby's answer to Zope, but that's not anything required.

Re:Web programming (0)

Anonymous Coward | about 10 years ago | (#10569157)

There are a bunch of interesting web frameworks for ruby one (incomplete) list is at http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ ruby-talk/92222 my personal favorite: Iowa at http://www.enigo.com/projects/iowa/index.html

About the Ruby Gems chapter... (4, Insightful)

tcopeland (32225) | about 10 years ago | (#10568492)

...it was written twice. Chad Fowler wrote it the first time while he was on vacation in Europe. Then he had to rewrite it after his Powerbook was stolen on his trip home. Argh!

More on Ruby Gems here [rubyforge.org] .

Re:About the Ruby Gems chapter... (1)

DAldredge (2353) | about 10 years ago | (#10568604)

And that is why programmers should not be in charge of backups ;->

Re:About the Ruby Gems chapter... (4, Funny)

chadfowler (17679) | about 10 years ago | (#10568653)

In my own defense, I was backing it up...to a USB drive that also got stolen ;)

Re:About the Ruby Gems chapter... (1)

tcopeland (32225) | about 10 years ago | (#10568695)

> backing it up to a USB drive
> that also got stolen

argh ** 2

Re:About the Ruby Gems chapter... (1)

DAldredge (2353) | about 10 years ago | (#10569154)

Fine, come up with a good excuse! Me, I never lose my USB drive...

HEY, where is my Virgin USB drive!!!

Never mind ;->

Re:About the Ruby Gems chapter... (0)

Anonymous Coward | about 10 years ago | (#10569506)

Aap ki maata ko shabd hai.

I understand Hindi, but dont understand your sig. What does it mean?

Re:About the Ruby Gems chapter... (3, Funny)

goldspider (445116) | about 10 years ago | (#10568738)

After reading that, I think Ruby has a long way to go in terms of security.

Re:About the Ruby Gems chapter... (1)

tcopeland (32225) | about 10 years ago | (#10568945)

> After reading that, I think Ruby has a
> long way to go in terms of security.

FWIW, Chad doesn't maintain the Ruby core - he was writing a chapter of the book. So his laptop getting stolen was a major hassle for him, but it didn't endanger the Ruby CVS repository.

Re:About the Ruby Gems chapter... (3, Funny)

johndeeregator (549310) | about 10 years ago | (#10568890)

I hope he learned a lesson about doing work while on vacation. Hell, most of us don't even do work while at work.

Re:About the Ruby Gems chapter... (2, Insightful)

chadfowler (17679) | about 10 years ago | (#10568936)

But, if you're doing Ruby, it's not work ;)

Ruby is great. (4, Insightful)

nullvector (694435) | about 10 years ago | (#10568510)

Ruby is like the glue that holds alot of my programs together.

The first edition of this book came in really handy in college, when I'd have to find creative ways to do something (especially text manip), where C++ or Java just seemed to get in the way.

Ruby is quick to learn, and Dave Thomas from Pragmatic is a great teacher...he came to my school for a little lecture/speech one day, and talked on the merits of Ruby, which is how I got introduced to it.

The network aspects of Ruby are great too. Small concise ruby programs can do a whole lot :)

Re:Ruby is great. (4, Funny)

hoggoth (414195) | about 10 years ago | (#10568612)

> The first edition of this book came in really handy in college

Man, I feel old.
For me, 'Programming Cyber 7600 Assembly' came in really handy in college.

Re:Ruby is great. (2, Funny)

nullvector (694435) | about 10 years ago | (#10568680)

The nice thing about computer engineering, though, is that I took a look at quite a few of those old assembly books as well :) The Motorola 68HC11 book was a well-worn part of my arsenal also.

Given all the gem analogies... (4, Funny)

grunt107 (739510) | about 10 years ago | (#10568515)

Why didn't reviewer say 'Brilliant, but slightly flawed'.

Re:Given all the gem analogies... (4, Funny)

GMFTatsujin (239569) | about 10 years ago | (#10568740)

Put three copies of it into your Horadric Cube ... that'll upgrade it from "flawed book" to just "book."

Anyone want to do the math on making a perfect book?

Goodbye Ruby Tuesday (3, Funny)

Timesprout (579035) | about 10 years ago | (#10568516)


Who could hang a name on you

Oh come on someone had to do it.

Re:Goodbye Ruby Tuesday (1)

samberdoo (812366) | about 10 years ago | (#10568733)

Yes it is Tuesday. Hey isn't Dave thomas that Wendy's guy?

Re:Goodbye Ruby Tuesday (1)

sbowles (602816) | about 10 years ago | (#10569013)

Hey isn't Dave thomas that Wendy's guy?

That's the dead Dave Thomas. He must be this Dave Thomas [imdb.com] from Bob & Doug McKenzie [wikipedia.org] fame.

It's got to better than... (2, Funny)

foistboinder (99286) | about 10 years ago | (#10568521)

The non-Pragmatic Programmers' Guide

Re:It's got to better than... (1, Insightful)

Anonymous Coward | about 10 years ago | (#10568614)

Actually, I think that would depend on the development environment. And in your case, with that 'it's got to be better than' mentality, perhaps you would prefer the non-pragmatic version?

Yes.. (-1, Offtopic)

Anonymous Coward | about 10 years ago | (#10568522)

Dave Thomas - Ruby creator, fast food mogul. He will be missed.

RubyConf 04 was held recently.... (3, Informative)

tcopeland (32225) | about 10 years ago | (#10568536)

...thanks to Ruby Central [rubycentral.com] for sponsoring it.

A BitTorrent of the presentations is available here [rubyforge.org] .

Re:RubyConf 04 was held recently.... (2, Informative)

chadfowler (17679) | about 10 years ago | (#10568681)

Thanks Tom. It's actually http://rubycentral.org.

Re:RubyConf 04 was held recently.... (2, Informative)

tcopeland (32225) | about 10 years ago | (#10568748)

Curses... thanks. Would that there was a post editing capability... ah well. Retry:

Thanks to Ruby Central [rubycentral.org] for sponsoring RubyConf 2004!

pickaxe? (1)

Suppafly (179830) | about 10 years ago | (#10568558)

where does the pickaxe name come from?

Re:pickaxe? (5, Informative)

Rich_Kilmer (190162) | about 10 years ago | (#10568585)

It comes from the pick and axe on the front cover of the book :-)

Informative? (0)

Anonymous Coward | about 10 years ago | (#10568759)

Way to keep those eyes peeled, mods!

Struth! (0, Redundant)

sbowles (602816) | about 10 years ago | (#10569232)

From the ,a href="http://www.pragmaticprogrammer.com/titles/ru by/">Pragmatic Bookshelf page:

The Pickaxe book, named for the tool on the cover, is the definitive reference to this highly-regarded language.

Juat as PerlFans refer to The Camel [oreilly.com] or The Panther [oreilly.com] .

Good/bad points (1)

2.7182 (819680) | about 10 years ago | (#10568560)

I liked this book a lot but there are a lot of typos.

Re:Good/bad points (1)

Feminist-Mom (816033) | about 10 years ago | (#10568607)

True, but I can live with that. What really bothers me is how bad the index is. I am not as positive about this book as most people I have spoken too.

Re:Good/bad points (3, Informative)

PragDave (466044) | about 10 years ago | (#10569257)

Could you give some examples? I'd love to fix stuff. if it's broken.

Why not e-mail me directly as well as posting here: dave pragprog.com

Cheers

Dave

Eager to have this book (4, Informative)

rolling_bits (754633) | about 10 years ago | (#10568594)

Many of us, Rubyists, have been introduced to Ruby by the very first version of this book. And the first version is online and is still handy for consulting:
http://www.ruby-doc.org/find/pickaxe

But this new version covers all the changes from Ruby 1.6 to Ruby 1.8; making this book a must have.

As far as I know, it's available as PDF and as paper, and I'm gonna have both.

Thanks Dave for helping the occident know Ruby and Matz for creating the must inspiring language for me.

Cheers!

Too many new languages at once... (2, Interesting)

Doesn't_Comment_Code (692510) | about 10 years ago | (#10568603)

I have to admit I've never tried Ruby. I use C++, Perl and PHP all the time. I just got started learning Python because of a book review I saw here on Slashdot. In fact, I also got interested in Python because someone suggested I use it to solve a problem that needs extensive parsing (Perl strength, nightmare in C++) and large, pointer-addressable arrays of objects(C++ strength, Perl weakness).

Anyway, I was told Python was a good compromise. I've just started into it, but maybe Ruby is a better fit for this problem? I can only learn so many languages at once, and still have time for my projects.

Can I get any advice? Is Ruby really "more powerful than Perl and more object oriented than Python" - is this what I'm looking for, or should I put it off and learn Python first?

Re:Too many new languages at once... (4, Informative)

tcopeland (32225) | about 10 years ago | (#10568628)

> Ruby is a better fit for this problem?

There's a good C2 Wiki page on this - PythonVsRuby [c2.com] .

Re:Too many new languages at once... (0, Troll)

Doesn't_Comment_Code (692510) | about 10 years ago | (#10568727)

Thanks, I just looked at that page, and it has a lot of info. I still can't decide which to use though. The page suggests Python is easier to learn if you like C (which I do), and Ruby makes more sense if you like Perl (which I do also).

I hope I don't have to learn them both before I can make a decision, but maybe I'll have to.

Re:Too many new languages at once... (1)

ultrabot (200914) | about 10 years ago | (#10569140)

The page suggests Python is easier to learn if you like C (which I do), and Ruby makes more sense if you like Perl (which I do also).

Python is widely seen as the one that is easier to learn. Just learn it first, learning Ruby afterwards is trivial if you feel like it. The languages are extremely similar on most points.

Re:Too many new languages at once... (1)

Vaevictis666 (680137) | about 10 years ago | (#10568689)

I can't say I've delved too deeply into Python, but I know enough of it to read it. I'd recommend that you look at the web version of the 1st edition of this book (linked above in a few comments) and just browse through the first section on syntax.

As far as I am aware, the guts are about comparable (though anecdotal evidence suggests faster runtime with python) but I much prefer Ruby's syntax. A few of the constructs are really really nice, such as code blocks. Plus, it's much more consistent in the OO department - python (and php5) are half-OO, meaning there's OO stuff, but you still have functions like strlen which are (presumably) based off of the root Kernel object... In Ruby you have the object you want to find stuff out about do the check itself - mystring.len is all it takes.

Re:Too many new languages at once... (2, Informative)

fredrikj (629833) | about 10 years ago | (#10569123)

It is not true that Python is "half-OO", at least by the merit of your argument. Finding the length of an object is done by calling a method:
>>>"bla".__len__()
3
>>>class Foo:
... def __len__(self): return 5
>>> Foo().__len__()
5
You can also do len(Foo()) or len("bla"), and although I agree that the existence of this legacy function makes the language less consistent I fail to see how it makes it any less OO.

Re:Too many new languages at once... (2, Informative)

jonastullus (530101) | about 10 years ago | (#10568736)

at the risk of being totally flamed by all the ruby followers out there:

i have for quite some time now been programming in python and it just works like a CHARM!!
i used to be so proud of my perl skills, but at some point i just felt dirty using perl and once i had started with python there DEFINITELY was no turning back! (well, maybe for a few-line regexp script...)

from what i have gathered about ruby, the distinction between ruby and python is really slight! the syntax of ruby is VERY similar to that of python and python's object orientation is really decent.
so in case you have already started into python i wouldn't swap for ruby, but as i said, the difference seems rather marginal to me, so it doesn't make that much of a difference.

Re:Too many new languages at once... (4, Interesting)

cmowire (254489) | about 10 years ago | (#10568855)

No, there is a difference. It's a mistaken notion that Ruby is like Python meets Perl.

It's more like Smalltalk + Regular Expression + Incidental Other Goodies + Culture.

I've tried both, and I like Ruby far more than Python. Ruby is an incredible language that tends to enable really simple, yet sophisticated code. When people talk about the Ruby Way, they aren't kidding. Ruby is endearing to me in ways that Python never was.

Ruby and Python are both drinking from the smalltalk fountain, but they are still very different. Ruby plows head-on into more functional-programming types of paradigms while still using objects.

Re:Too many new languages at once... (1)

ultrabot (200914) | about 10 years ago | (#10569016)

Ruby plows head-on into more functional-programming types of paradigms while still using objects.

Err, like first class functions for example? Or list comprehensions?

It's funny, Ruby programmers never seem to know what functional programming really means. It must be some widely spread misconception within the Ruby community...

Re:Too many new languages at once... (3, Informative)

baka_boy (171146) | about 10 years ago | (#10569325)

Ruby has first-class functions; you just have to disambiguate them syntactically, since bare property access (like foo.bar) is actually calling method bar on the object foo. So, if you want to reference the method explicitly, you have to write foo.method(:foo), which returns a Method instance which can be invoked or used like any other scalar value.

So, while in Python, you might write something like this:
controller.set_handler('some_action', myObject.handle_some_action)
...the Ruby idiom would be one of the following:
controller.set_handler('some_action', myObject.method(:handle_some_action))

-or-
controller.set_handler('some_action') { myObject.handle_some_action }

The extra method(...) syntax is needed to ensure that all communication between objects is via method calls, rather than direct property access. Python allows you to directly assign to and read from object attributes, much like public members in C++ or Java classes. Ruby forces all attribute access to be wrapped in get/set methods, but provides a lot of support to make implementing those methods effectively automatic.

The latter example also uses a code block, cover many cases where first-class functions would be otherwise -- they're basically a compact syntax for lambda expressions, and prevent you from needed sugar like list comprehensions in most situations.

For example, instead of the following Python list comprehension:
[x*2 for x in myArrayOfValues if x % 3 == 0]

...you would use this:
myArrayOfValues.map {|x| x*2}.find_all {|x| x % 3 == 0}

Blocks are also a general idiom used throughout the standard library and most Ruby code in the wild. You can use them to write callbacks, query databases, and even to build domain-specific languages (another traditional stronghold of functional languages).

Really, though, neither Ruby or Python is a truly functional language; both borrow from the more "academic" languages those features and concepts they find useful, and leave behind those that the maintainers and users don't want, need, or understand. (Except for continuations, of course -- Ruby has those, and I would guess that only a very small percentage of Ruby coders ever grok them.)

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10569348)

Err, like first class functions for example? Or list comprehensions?


Well, Haskell has to be better at *something*. ;)

Re:Too many new languages at once... (3, Interesting)

xteddy (245318) | about 10 years ago | (#10569486)

You don't have list comprehensions in SML. Last time I checked, this was still a functional language.
The comp.lang.functional FAQ says
Functional programming is a style of programming that emphasizes the evaluation of expressions, rather than execution of commands. The expressions in these language are formed by using functions to combine basic values. A functional language is a language that supports and encourages programming in a functional style.
Actually Ruby only has expressions, so it seems to be a pretty good candidate. You can also create functional objects and use them as arguments:
def add(x, y) x + y end

(1..10).inject &method(:add) # => 55
The same in Common LISP, also a functional programming language:
(defun add(x y) (+ x y))

(reduce #'add (list 1 2 3 4 5 6 7 8 9 10)) ; => 55
Doesn't look so different, does it?

Re:Too many new languages at once... (2, Informative)

cmowire (254489) | about 10 years ago | (#10569494)

Notice I said "functional-programming types of paradigms", not functional programming.

It does have first-class functions (the Proc class) it's just that the syntax is driven towards making closures accessible instead of functions and creating Procs is a lot more involved.

On the other hand, what they do with the closures (a.k.a. Code Blocks) is quite amazing on its own merits. The concept of being able to iterate over arbitrary stuff in a variety of ways with them comes in quite handy, plus all of the other ways to make the language easier to deal with.

And, then of course, there's the functional library [www.ping.de] . ;)

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10568739)

Is Ruby really "more powerful than Perl and more object oriented than Python"

There nothing you can write in Ruby that you can't write in Perl. So by no definition is Ruby "more powerful" that Perl.

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10569431)

There nothing you can write in Ruby that you can't write in Perl.

And then someone mentioned threads, mutexes, thread queues and synchronization and the game was up.

Re:Too many new languages at once... (1)

binary42 (801099) | about 10 years ago | (#10569581)

The only thing I can come up with right off the bat is: continuations. I don't recall perl being able to do that.

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10568744)

in python as of 2.4 everything is ano object, too, even if it shows some of his history in things like len(sequence) for sequence.length or type(foo) instead of foo.class.
Just subtle differences, anyway.

Both ruby and python are beatiful and powerful languages,it just happens to me that the former fits my brain better than the latter, but YMMV.

ruby vs perl is a a different comparison, ruby has a much more clean appearance than perl, and perl6 appers to have stolen^Wlearned lots of things from it. ruby's text processing capability are as strong as perl's cause they were stolen^W inspired from it, but they come in a more elegant cloath, imo.

I suggest you to try ruby, it will take you little time to learn, and it *may* be an eye opener for you.

Ruby + C == World Domination (2, Insightful)

Anonymous Coward | about 10 years ago | (#10568791)

Well not exaclty, but the combination of Ruby and C is unbelievably powerful.
A graceful and dynamic OO language coupled with, well C - fast, portable (more or less) and used everywhere.
Because it is so easy to go back and forth between Ruby and C you get the strengths of both languages (also all those C libraries out there).

If you haven't used Ruby, your missing out to say the least - and this book is an excelent way to get started.

Re:Ruby + C == World Domination (2, Interesting)

CatGrep (707480) | about 10 years ago | (#10569341)

mod the parent up!

Ruby isn't the fastest language on the block, but it's so easy to write C extensions for a Ruby program. Usually only about 10 to 20% of your code is speed critical, so this allows you to write that small part of your code which is speed critical in C while writing the rest of your code more quickly in Ruby. Oh and there's a profiling module that comes with Ruby that will help you figure out where your code is spending it's time.

I would also add that if you use Swig [swig.org] , it's quite easy to integrate your Ruby code with your C++ code. I tend to prototype in Ruby to get my design squared away, then I translate methods to C++ while all along using the same unit tests written in Ruby to make sure that everything is still functioning the way I intended.

Re:Ruby + C == World Domination (0)

Anonymous Coward | about 10 years ago | (#10569603)

You don't even need swig (for C functions at least)!!

Ruby comes with Ruby/DL which lets you load dynamic libraries AT RUNTIME and call into them. For me it's a "deal breaker".. I can't imagine using Ruby without.

Re:Too many new languages at once... (1)

AuMatar (183847) | about 10 years ago | (#10569002)

I'd suggest downloading some C or C++ libraries for string parsing. Rolling your own is a pain, but there's regular expression libraries that will give you all the strength of perl's. In fact, its a little known secret but glibc has C regular expression functions built in. Here's some documentation [utah.edu] .

Really, unless a language brings in a completely new way of programming (functional vs procedural, for example), the time spent learning a new language is usually a waste. Odds are 90%+ that you can either buy or download a library in a language you already know, and learning an API is a lot quicker than learning a new language. The new languages really don't increase the ease of programming, especially not compared to using a language you're already comfortable in. Programming would be a much more advanced art if people stopped pretending the new language will be a silver bullet and instead worked on producing good libraries and APIs for existing languages.

Re:Too many new languages at once... (2, Insightful)

rolling_bits (754633) | about 10 years ago | (#10569245)

Yes, you could keep punching cards or writing asssembler. Or maybe, write C or Java. Or... You could use Ruby and build your programs and libraries in a special way, that makes them concise and much more maintenable. That way instead of creating one program per year, you could create one per week, and keep improving them as needed. You are not free from creating your own libraries, though. You are even encouraged to. And it's much easier to create a library in Ruby than in other languages. The payoff is that *you* will have the library *soon*. I could say that in other languages either you find a library to do what you want, or you are sold. With Ruby, you don't even think. You create the library right away. Though we don't need to write all the libraries necessary for our programs, because I think that Ruby has advanced from being used by early adopters to being used by application developers. See this article by Eric Sink, for example: http://software.ericsink.com/Act_Your_Age.html Cheers!

Re:Too many new languages at once... (1)

AuMatar (183847) | about 10 years ago | (#10569616)

A new language gives no additional power, at a large cost of time to learn the language. The limiting factor of programming isn't what the language can express- every Turing complete language has the same expressivity. The limit is the amount of work you can reuse- the amount of library code that already exists. And there's more library- and equally important, those libraries are better tested from real world use- in older languages.

Changing languages might earn you geek points on /., but it doesn't solve any problems. What DOES solve problems is creating reusable abstractions that handle the issue you need. Changing languages is just overhead to the process.

Re:Too many new languages at once... (4, Insightful)

CatGrep (707480) | about 10 years ago | (#10569107)

Can I get any advice? Is Ruby really "more powerful than Perl

That's really difficult to quantify. How do you define 'more powerful'?

Personally, I prefer Ruby's clean syntax to Perl's (especially when compared to OO programming in Perl, which is just a disaster from an aesthetic viewpoint, as well as the amount of work that is required from the Perl programmer to do OO). There are a few features that Ruby has that Perl doesn't: continuations, code blocks and exceptions.

and more object oriented than Python" - is this what I'm looking for, or should I put it off and learn Python first?

This tends to be an area where there is a lot of dispute between the two camps. I've already revealed my bias toward Ruby, so take that into consideration regarding the following comments: In Python I get the feeling that object orientation was tacked on. Granted it was tacked on much earlier in the language's development than it was in Perl where OO programming is essentially a do-it-yourself project. There are a couple of nagging issues in Python which give me this idea:
1) why do I need to include 'self' as the first parameter of each method definition?
2) In Python people tend to prefer, for example, to find the length of an array by saying:
length( array ) instead of array.length (the latter being the way you would do it in Ruby). Of course Pythonistas are now screaming that you can also say: array.__length__ (or something similar) in Python as well.

Python now also has something similar to Ruby's iterators (though they're a bit different), but something to keep in mind is that Ruby's standard libraries and built-in classes were built from the ground up with iterators in mind - I think that's a big advantage that Ruby has over Python.

I suggest that you try to write a smallish program in each language (pick a project that might take an hour or two) and see how each language 'fits' with the way you think. I find Ruby fits my way of thinking much better than Python does, but as they say, YMMV.

Re:Too many new languages at once... (2, Informative)

fredrikj (629833) | about 10 years ago | (#10569367)

1) why do I need to include 'self' as the first parameter of each method definition?
It's nicer for unbound methods, and makes calls to superclass methods clearer. This is also answered in the Python FAQ [python.org] .

2) In Python people tend to prefer, for example, to find the length of an array by saying:

length( array ) instead of array.length (the latter being the way you would do it in Ruby). Of course Pythonistas are now screaming that you can also say: array.__length__ (or something similar) in Python as well.
See my previous post in this thread. I agree that this is something of a wart, but a minor one.

As for Ruby vs. Python, I don't think it's a big deal as they are similar in many ways. If you're comfortable with either language, there's probably no need to switch to the other. Myself, I don't think the higher level of consistency in Ruby's object system offers any practical advantage, and find Python's syntax much nicer. Haven't seen anything particularly interesting in Ruby that isn't also in Python.

Indeed, if I had discovered Ruby before Python, it's quite possible that I would've stuck to that instead.

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10569665)

Haven't seen anything particularly interesting in Ruby that isn't also in Python.

How about continuations? How about two different kinds of exceptions (real exceptions, and catch/throw nonlocal flow control)? How about code blocks? How about "open" classes that you can extend after they are declared?

Sure, if you don't see the difference between Ruby and Python, you probably won't USE any of those things, but it's not true that Python and Ruby are almost the same.

I wish Python had blocks (or rather, I used to wish), so I could do stuff like (made-up syntax):

with_open_file('/tmp/file')(f):
f.write('hello, world')
or
with_busy_cursor():
foo()
bar()
baz()

That's what blocks let you do. Not as powerful as Smalltalk or lisp macros but pretty nice. I don't think it's hard to add this to Python since you can do the above with named functions, just not arbitrary blocks/closures.

Re:Too many new languages at once... (0)

Anonymous Coward | about 10 years ago | (#10569768)

In Python I get the feeling that object orientation was tacked on [...] why do I need to include 'self' as the first parameter of each method definition?

Because that's what is really being passed around and is exactly the same way that other OO languages (like C++) work. In C++, the first parameter to a member function of a class is the pointer to the class itself, which becomes exposed through the "this" pointer. C++ programs are effectively translated to straight C by the precompiler anyway - how's that for "tacked on"? In most implementations it's completely hidden.

In some ways, the Python solution is quite elegant because it's going to be the exact same interpreter code path for receiving member function calls as receiving non-member calls.

Re:Too many new languages at once... (2, Informative)

Jerf (17166) | about 10 years ago | (#10569828)

There are a couple of nagging issues in Python which give me this idea:

Here's how I think people should evaluate Python vs. Ruby:
  1. Run Python, downloading it if necessary.
  2. Run a Python shell (OS-dependent).
  3. Type "import this", and read it.
If everything speaks to you, as it does me, than try Python first. Otherwise, try Ruby. I'll leave a Ruby-ist to explain the exact differences.

I can give a couple of the differences, though; mostly, the differences between the languages and capabilities are philosophical. Ruby has more "purity", Python says "Although practicality beats purity." (although with a strong cultural understanding that purity isn't worth tossing away as Perl seems to). Python also thinks "Readability counts.", Ruby seems more interested in making the syntax always concise. I'd much rather read a Ruby program than a C++ program, but the Python one will look more like pseudo-code with real English words, and Ruby will have a bit more syntax. Python has no culture of saving keystrokes and such things are usually considered a joke when the topic comes up, as are various language comparision benchmarks that incorporate that as a measure. (Typing speed is very, very rarely the constraint on programming speed.)

Which is right? Well, it mostly depends on what you want.

Re:Too many new languages at once... (2, Insightful)

MetalNoise (808046) | about 10 years ago | (#10569411)

I know both languages, although I know Python better. I first learned Ruby and then switched to Python. In many ways I think both languages fit the same niche. They both make many tasks easier and you really can't go wrong with either. If you started with Python I would stick with it. You'll never regret knowing Python well. For me, Python offered 1) more bindings to existing "C" libraries. 2) a bigger community with more support. Ruby is pretty decent in both 1) and 2) also, just not as far along (I'm about 2 yrs out of the loop though). In many ways the languages are similar. Some major differences are: Python: list comprehensions, generators. Ruby: blocks, cleaner OO, more complete closures, continuations. By the way, both languages helped me realize that you can do many things easier and cleaner without OO techniques. Both languages have a bit of a functional side to them and I find this to be one of their stronger attributes.

Go for Python, then Ruby (1)

jesterzog (189797) | about 10 years ago | (#10569607)

Is Ruby really "more powerful than Perl and more object oriented than Python" - is this what I'm looking for, or should I put it off and learn Python first?

I've never bothered to learn Perl, although from what I understand you're likely to miss being able to do some things in one line that might take a few extra lines in either Python or Ruby.

Python has been by far my favourite scripting language for several years now. It's structured, it forces relatively consistent syntax, and it has a huge amount of support. The (online) documentation has room for improvement, although I might have been spoiled somewhat by the online Java documentation. (That said, I've hardly used Java at all for three or four years.)

About a year ago I took my first proper look at Ruby. Ruby is a nicer language. It's more consistent and feels a bit more natural once you get to more in-depth language-related things.

For instance, one thing I'd really like to do in Python is to modify a few things about the built-in string class. I'd like to just be able to import a module into my program, and have the string class work differently from then on.

Python simply doesn't let you do this, short of something drastic like hacking the interpreter. Although a large part of the standard libraries are very flexible, the string class is something that's just built in. It can't be touched, because the string implementation is built into the interpreter. I spent a month trying to get my idea to work before I was able to find out that the string class is inconsistent with other classes, and what I wanted really wasn't possible.

Python's a great language and it's wonderful for prototyping and scripting, but it's this type of thing, where the occasional part of the language is still inconsistent that still lets it down on occasion. For me, at least. My experience with Ruby so far has been that everything just acts the way that you'd expect it to act based on how everything else acts. I'm still not an expert Ruby programmer and there are parts of the language that I'm still working to get my head around, but I haven't yet encountered anything that seems painfully inconsistent.

Putting all of that aside, I'd recommend definitely learning Python if you want to be productive, and learning Ruby as a side project for the future. The reason I say this is that Python just has so much more support and more depth. eg. Ruby doesn't yet have great support for a lot of often-needed things like Unicode, and you're likely to find a lot more Python support for parsing routines, too.

Ruby is certainly likely to be useful in a production environment and on a later day may be superior to many other scripting languages. It's worth becoming familiar with it just for that, but I wouldn't want to base everything on Ruby (yet) without backup plans.

Note that the Ruby standard library docs... (2, Informative)

tcopeland (32225) | about 10 years ago | (#10568663)

...are also available on ruby-doc.org here [ruby-doc.org] .

REXX (-1, Offtopic)

tonsofpcs (687961) | about 10 years ago | (#10568676)

I prefer REXX scripts, especially AREXX, but Ruby is cool too.

--
Amiga Forever [cloanto.com]

Re:REXX (1)

transami (202700) | about 10 years ago | (#10568912)

Funny you mention that. I'm a Ruby coder, but with a bent toward exploring languages. I've been thinking about learning a little REXX myself.

Also I'm exploring K and R. But not C ;-) Ironic isn't it?

For general programming language discussion try:

https://lists.berlios.de/mailman/listinfo/suby-mus e

Signed,
Amiga Owner #51 ;-)

Poignant vs Pragmatic (4, Informative)

weston (16146) | about 10 years ago | (#10568691)

Why's Poignant Guide to Ruby [poignantguide.net] has got to be the most entertaining Ruby read out there....

Re: Poignant vs Pragmatic (1)

ClarkEvans (102211) | about 10 years ago | (#10569053)

"Why The Luck Stiff" rocks.

Re: Poignant vs Pragmatic (1)

ClarkEvans (102211) | about 10 years ago | (#10569072)

Seconded. The author, "Why The Lucky Stiff" is quite a clever fella.

Wendy's (1)

skilljoy (531288) | about 10 years ago | (#10568763)

...Dave Thomas, a founding father of the English Ruby community
He makes some pretty good cheeseburgers, too.

mod uP (-1, Offtopic)

Anonymous Coward | about 10 years ago | (#10568819)

Dave Thomas (2, Funny)

dfn5 (524972) | about 10 years ago | (#10568821)

a founding father of the English Ruby community...

... and hamburgers

Ruby and Perl over Python for cross-platform dev (5, Insightful)

Dystopian Rebel (714995) | about 10 years ago | (#10568835)

I can live with Python's having no statement terminator (";" in C, C++, Perl, Java).

What I find unacceptable in Python is that whitespace (tabs) determine the logical flow. I once wrote a script on Windows and moved it to UNIX; the UNIX editor handled tabs differently, and my script wouldn't work without a few hours of attention just to set the spacing right.

Ruby has Pascal-like blocking. That alone makes it superior to Python. And for all other situations that do not require a good OO implementation, there is Perl.

Re:Ruby and Perl over Python for cross-platform de (1)

ultrabot (200914) | about 10 years ago | (#10569082)

my script wouldn't work without a few hours of attention just to set the spacing right.

Python distribution has reindent.py that does this for your file(s) automatically.

Using tabs for indenting is recommended against in Python. It's a Python newbie mistake that is usually only done once.

Ruby has Pascal-like blocking. That alone makes it superior to Python. And for all other situations that do not require a good OO implementation, there is Perl.

I guess that paragraph kinda speaks for itself and makes it obvious where you are coming from in the, uh, Computer Science landscape.

Re:Ruby and Perl over Python for cross-platform de (0)

Anonymous Coward | about 10 years ago | (#10569281)

Using tabs for indenting is recommended against in Python. It's a Python newbie mistake that is usually only done once.

Exactly. Set your editor to insert n spaces (instead of a tab) when you hit the tab key. If your editor won't do this, you need a different one.

Re:Ruby and Perl over Python for cross-platform de (1)

TwistedSquare (650445) | about 10 years ago | (#10569851)

Ah but the advantage of a tab over n spaces is that it can be removed with a single backspace, whereas n spaces can't. Unless you bind backspace to un-indent, but then it wouldn't delete normal characters...

Hope to buy book soon (1)

davidross (748505) | about 10 years ago | (#10568837)

Waiting was the hard part. Hopefully I can get a copy of the book soon. Great work.

Ruby is a great language to program in and embed. Ruby and SOAP is a decent combination and anyone looking for a newlanguage, this is the language for you to try out. You'll get hooked on the great syntax, community, and Matz!

Remember to check out your local copy of ruby stable-snapshot today!

The online community has a mailing list and various channels on Freenode.

#ruby-lang, #rpa, #rubymine, #rubyonrails, and more!

Thank Matz and the other core devels.
Ruby Power! ;)

David Ross
------------------
Hassle-free packages and package system
http://rubyarchive.org/

As usual, it's cheaper here (0)

cloudkj (685320) | about 10 years ago | (#10568896)

Buy it over here [amazon.com] at Amazon and save a BUNCH of money!!!

Re:As usual, it's cheaper here (1)

PragDave (466044) | about 10 years ago | (#10569287)

Cool link, wrong book :)

Re:As usual, it's cheaper here (2, Informative)

cloudkj (685320) | about 10 years ago | (#10569538)

Oops, how embarassing. Very similar names... the book is here [amazon.com] , and you end up saving $5.

Not as fast as others though ... (2, Interesting)

reborn (224970) | about 10 years ago | (#10568951)

I've written code in many, many different languages. I got interested in Ruby a long while ago but never bothered doing anything about it, then a few weeks ago I started looking into it seriously. After doing quite a lot of speed testing (in particular various mathematic statements) against PERL I found that Ruby usually took twice as long to complete an operation than PERL did, which was rather disappointing. However, IIRC Parrot is going to support Ruby so any speed concerns should be eliminated - maybe I'll dive in properly sometime :)

Re:Not as fast as others though ... (1)

CatGrep (707480) | about 10 years ago | (#10569540)

I found that Ruby usually took twice as long to complete an operation than PERL did

Perl is often faster than Ruby. However, if you compare OO Perl code with OO Ruby (well, in Ruby OO is pretty natural) you'll find that Ruby tends to be faster than OO Perl. So if you want to write object oriented code, you'll have some advantage with Ruby.

Parrot is going to support Ruby so any speed concerns should be eliminated - maybe I'll dive in properly sometime :)

There is a project called Cardinal [rubyforge.org] that aims to produce a Ruby frontend for Parrot.

Also, since it's quite easy to write C extensions for Ruby programs, you can easily speed up things by writing certain time-critical functions in C and then call them from Ruby.

Great book, great language (2, Insightful)

CatGrep (707480) | about 10 years ago | (#10569193)

I got my copy a couple of weeks ago. It's a great followup to the first edition - much more information. I've already learned new things from it even though I've been programming in Ruby over 3 years now.

I also think that the philosophy espoused in the chapter on 'Duck Typing' could apply to other agile languages like Smalltalk and Python. I haven't really seen these ideas come out as strongly in other language communities as they have in the Ruby community.

I don't think there is any one thing about Ruby that's truly revolutionary, but the combination of features (code blocks, very consistent and complete standard libraries, OO'ness, etc.) make it very compelling. Do yourself a favor and buy the book - learning Ruby can help you think differently about how you approach problem solving in your day-to-day programming work (even if you don't program in Ruby for pay).

Language selection parameters (4, Insightful)

Mr_Icon (124425) | about 10 years ago | (#10569590)

There are several kinds of programmers, at least when it comes to the language selection:

  • The Hardcore Kind: Everything must be written in something as low-level as possible, meaning C, but only if you absolutely cannot do ASM.
  • The I'm Special Kind: I am going to pick a language that is not commonly used, because having an obscure preference in programming languages makes me feel special. To justify my preference, I am going to learn a few facts that make this language marginally better than a similar language $FOO, ignoring all other advantages of $FOO.
  • The Hammer-Happy Kind: I know one language and I will use it whether it makes sense or not

The first kind gives us applications that cannot be easily ported to other OSes or platforms, because everything is so low-level that it is tied to the underlying architecture. The second kind gives us duplicated effort and software that becomes unmantained whenever the main developer quits, since few other programmers know the language in which the project is written. The third kind gives us solutions that make sane people scream, like shell scripts that start with #!/usr/bin/php -q.

It's fun to learn other programming languages, and contribute to the development of new ones, but in the open-source environment it is also very important to remember that you a) do not and should not work in a vacuum, b) that there are freaks who will probably try to run your software on bizarre setups, and c) that there is always a chance that circumstances will require that you quit working on that project.

This is the reason why when picking a development environment for a project it is important to consider things like portability, maintainability, and suitability for the purpose. I'm not sure I can justify writing something in Ruby at this point, seeing as its adoption is far below Python, while its advantages over Python are slim to questionable.

Why is it not Release on Amazon (1)

egoots (557276) | about 10 years ago | (#10569717)

When I go to Amazon.com it tells me the book is not yet released, but according to Oreilly it is.

Hmmm.

Anyone know why?

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?