From: "Jason L. Ashbaugh" Date: 2002-07-26T14:09:48+09:00 Subject: Re: Opinion on Ruby maturity Where are good places to learn / learn about ruby? Thanks again, Jason John Knight wrote: >Hi All, > >This interaction happened on a University of Maryland LUG. I thought >that the level of sophistication of this analysis deserved to be >responded to by the experts. > >There are two messages here. The first is the one that struck me as so >important. In my opinion the second letter admits marginal advantages to >ruby when compared to python. This may be important to one who has >already invested in python but not to the newbie deciding which craft to >take. > >Please include the addresses Dr. Mike and/or the list in your reply. > >John > >-------- Original Message -------- >Subject: Opinion on Ruby maturity (was: Re: Now what) >Date: Thu, 25 Jul 2002 06:37:52 -0400 >From: Michael Henry >To: John Knight > >John Knight wrote: > > > >>[...] >>I do not consider python an improvement over perl but in my view ruby is >>more cleanly designed than either perl or python. >> >>[...] I suggest >>you look at ruby and demonstrate to yourself that it is an order of >>magnitude more expressive than its predecessors. [...] If >>you come to believe that ruby is more transparent than the other >>languages. i.e. the syntax not not get in the way of understanding then >>you have thousands of programs to rewrite and put into the public >>domain. >> >> >> >I've lately been sweating the question of Python vs. Ruby for >our shop. I've read several books, and IMHO I like Ruby as a >language better than Python for several reasons [1]. However, >I'm concerned over the maturity of Ruby-related tools and support. >particularly for a few key needs we will be having: > >- We need to script C++ apps, and eventually Java apps as well. > >- We need to make portable GUI's. We are dumping MFC. > >- We need a stand-alone language for rapid filter-program > development and the one-off system-administration tasks > >A driving goal is to minimize the number of things we must >simultaneously learn (language, GUI library, ...). > >Since we need to use Java and Swing for GUI development, >I'd like to be able to use Swing with Python or Ruby. >There is Jython (Java-based Python, www.jython.org) that >provides mature-looking support for Python on a JVM. >There is JRuby (Java-based Ruby, jruby.sourceforge.net) that >has scant documentation and is beta-quality at this time. >I don't know how soon JRuby might become fully usable. > >In my position (no real experience with either Python or Ruby, >just a half-dozen books and lots of web browsing) I don't >know whether I'd be painting myself into a corner with Ruby. > >Does anyone have enough experience with Ruby to say >if the third-party libraries and support are enough? > >Thanks, >Michael Henry > >[1] - The advantages I see of Ruby over Python: >- Ruby has single-inheritance with mixins (like Java interfaces) > and should therefore map better onto JVM's > >- Ruby supports regular expressions directly in the language (a la >Perl): > string =~ /this|that/ > >- Ruby has an extremely elegant way to pass code blocks to a method, > and uses it neatly for iterating over a collection: > list.each do |currentListItem| print currentListItem end > >- Ruby can do "ruby -ne ruby_code_here" like Perl for ultra-quick > one-liners. I can't find support for this in Python, and it seems > unlikely due to Python's "whitespace as syntax" model > >- Built-in syntax to create range objects (e.g., start .. end) > >- Neat case-equality operator for extremely flexible case statement > >- Ruby has private, protected and public attributes (Python has none) > >- Parentheses may be removed on method calls where unambiguous. > Supports the principle of uniform access, where the outside world >can't > tell whether it is accessing an object's data member directly or >through > a member function, e.g.: > x = obj.member # member could be a data item or a method call like >member() > > > > > > >Hi > >I haven't looked at ruby at all but this might be of interest for your >comparison: > >On Thu, 25 Jul 2002, Michael Henry wrote: > > > >>[1] - The advantages I see of Ruby over Python: >>- Ruby has single-inheritance with mixins (like Java interfaces) >> and should therefore map better onto JVM's >> >> > >I thought Python had mixins, but maybe there's some subtle difference I >don't grasp. > > > >>- Ruby supports regular expressions directly in the language (a la Perl): >> string =~ /this|that/ >> >> > >In python, not having it directly in the language just means you have to >do "import re". Maybe you want to be able to match using operators, in >that case yes you'd have to write your own wrapper class. I have done >it, >easy and works fine, but if you can get it built in obviously that's >nicer. > > > >>- Ruby can do "ruby -ne ruby_code_here" like Perl for ultra-quick >> one-liners. I can't find support for this in Python, and it seems >> unlikely due to Python's "whitespace as syntax" model >> >> > >python -c "for x in range(3): print x" > > > >>- Built-in syntax to create range objects (e.g., start .. end) >> >> > >built into python: foo = range(1,n) > x = foo[3:n-2] > > > >>- Ruby has private, protected and public attributes (Python has none) >> >> > >In python you can do name mangling, which might not be as elegant, but >provides some of the protective functionality. Prepend a >double-underscore >to the variable name and the interpreter will change it during execution >to __foo. Better than nothing. > >Judah > > >