Ruby is a very flexible and expressive language. A recent question
posted by a Ruby newbie got me looking through my IRC logs for a
discussion about the performance of various dynamic method invocation
approaches, so I thought I’d share some performance results.
Peter Norvig wrote a simple spelling corrector in 20 lines of Python
2.5, so I thought I’d see what it looks like in Ruby. Here are some
areas I’m not pleased with:
I’ve learned a number of programming languages since I began
programming 25 years ago. Earlier in my career, my choice of which
programming language to learn was largely driven by external factors
such as a class or job requirement, or the expectation of job demand
in the future.
I recently installed the software that came with a LEGO Mindstorms NXT
kit onto a Mac Mini running OSX 10.4. I was somewhat concerned when
the install program prompted me for an admin password, so I attempted
to install the software into a directory in my home directory instead
of the main Applications directory, but it still prompted for an admin
password. Since LEGO is a large reputable company, I gave them the
benefit of the doubt and figured the admin password may have been
necessary to install Bluetooth drivers or some other feature. I
should’ve learned a lesson from the Sony root kit debacle with respect
to blindly trusting large corporations. In the Sony case,
maliciousness was involved, in the LEGO Mindstorms case, I think only
incompetence is to blame.
Someone posted a question on comp.lang.ruby recently asking for help
with solving anagrams. The poster originally asked about ways of
generating permutations and several people pointed him to the facets
library which has some permutation utility functions. As it turns out,
I benchmarked the following naive permutation generator as 3 times
faster than the facets library code:
I’ve been teaching my eldest daughter to program in Logo over the
summer. Brian Harvey has posted PDF files for a set of excellent books
on learning to program in Logo on his
web site.
The Berkeley version
of Logo he’s produced is really excellent. It’s not just your typical
turtle graphics language; it has arrays, macros, file processing,
graphics, etc.
Rails provides some nice helper functions (numbers, dates, etc.) that
are available to views, but they’re not automatically available to
controllers. I found a number of ways to accomplish this on the web,
but I wasn’t satisfied with any of them.
I noticed a friend of mine (Jordan L.) who had half-star ratings (2.5,
3.5, etc.) on Netflix. When I asked him about it, he said to just
“hover over the left side of the star” to get a half-star rating. This
didn’t work for me, so I thought it might be a Linux vs. Windows thing
and asked another friend (Mike F.) to try it out. Same result – didn’t
work in IE or Firefox on Windows. Then Mike found a JavaScript file
that could be installed with greasemonkey and that worked fine for
him.