Last Revised: 2005-04-14
This FAQ contains information for those who want to:
This FAQ will be posted monthly. If you are reading this material on the mailing list or the newsgroup, note that you can find it on the web at: http://rubyhacker.com/clrFAQ.html
A German version of this FAQ is maintained by Josef Schugt. It can be found at: http://oss.edrfunkstelle.de/ruby/
Note that this is not the Ruby language FAQ! That FAQ can be found here.
TABLE OF CONTENTS
Ruby is a very high level, fully OO programming language. Indeed,
Ruby is one of the relatively few pure OO languages. Yet despite
its conceptual simplicity, Ruby is still a powerful and practical
"industrial strength" development language.
Ruby selectively integrates many good ideas taken from Perl,
Python, Smalltalk, Eiffel, ADA, CLU, and LISP. Ruby combines
these ideas in a natural, well-coordinated system that embodies
the principles of least effort and least surprise to a
substantially greater extent than most comparable languages —
i.e., you get more bang for your buck, and what you write is more
likely to give you what you expected to get. Ruby is thus a
relatively easy to learn, easy to read, and easy to maintain
language; yet it is very powerful and sophisticated.
In addition to common OO features, Ruby also has threads,
singleton methods, mixins, fully integrated closures and
iterators, plus proper meta-classes. Ruby has a true
mark-and-sweep garbage collector, which makes code more reliable
and simplifies writing extensions. In summary, Ruby provides a
very powerful and very easy to deploy "standing on the shoulders
of giants" OO scaffolding/framework so that you can more quickly
and easily build what you want to build, to do what you want to
do.
You will find many former (and current) Perl, Python, Java, and
C++ users on comp.lang.ruby that can help you get up to speed in
Ruby.
Finally, Ruby is an "open source" development programming language.
1.2 Where can I find out more about Ruby?
If you're into IRC, check out #ruby-lang on FreeNode. There are
also other channels -- see http://rubygarden.org/ruby?RubyOnIRC.
There are also many web and print resources listed below:
2 About comp.lang.ruby
2.2 Tell me the posting guidelines for comp.lang.ruby. Usefully describe the contents of your post.
2.3 Tell me about the prolific Matz poster.
2.4 How do the mailing list and newsgroup interrelate?
The online archive of the mailing list therefore includes most
of the traffic on the newsgroup, excluding the posts that were
made before the creation of the gateway.
Note: Spam or other inappropriate messages are not
the responsibility of Dennis Oelkers, who now maintains the
gateway. He does everything in his power to deal with this issue.
Do not report spam to his ISP merely because the messages
come from his server.
Also note that there are some header-related glitches that affect
the behavior of the newsreaders and the gateway. Feel free to
report any problems you see, but there will always be a certain
(very small) percentage of problems that we can't seem to correct.
2.5 What are these 6-digit message numbers?
The message numbers were convenient since they were strictly
serial and formed a good way to refer to a past message. But
they interfered with threading; Matz removed them after the
matter was put to a vote in early 2002.
The news header still refers to this number, should anyone
wish to retrieve it. On the mailing list this number can
now be found in the X-Mail-Count: header.
You can point to a specific message by appending it onto the
ruby-talk.com URL; i.e.,
2.6 What is "POLS"?
POLS is an abbreviation for "Principle of Least Surprise" (also called
the Law of Least Astonishment).
This term certainly did not originate in the Ruby community, but it has
been frequently used there— even overused or abused at times.
After all, every language or software system seeks at some level
to adhere to this principle. Is any system designed to be unintuitive?
It is inappropriate to invoke POLS as a "magic word" when one's individual
expectations are not met. Ruby continues to evolve, and Matz often makes
changes based on people wishes, needs, or suggestions. But he cannot be
bribed or threatened. Make suggestions if you wish, but think twice before
mentioning POLS.
3. Anything else?
This FAQ was originally produced by Conrad Schneiker. It is now
maintained by
Hal Fulton.
I'm interested in corrections and suggestions, but remember that
the purpose of this FAQ is to be a brief and simple introduction
for new comp.lang.ruby readers.
In closing, one of the reasons that Ruby was designed to be
relatively simple, uniform, yet very powerful was to make serious
programming (among other kinds) fun. We hope you will help us
keep comp.lang.ruby fun as well. Enjoy. :-)
1 About Ruby
1.1 What is Ruby?
2nd edition. See below.
Wiley; ISBN 0-471-21972-X (2002)
by Mark Slagell
Sams; ISBN: 0672322528 (March, 2002)
by Michael Neumann, Robert Feldt, Lyle Johnson
Publishers Group West; ISBN: 1928994644 (February, 2002)
by Hal Fulton
Sams; ISBN: 0672320835 (December, 2001)
by Yukihiro Matsumoto
O'Reilly & Associates; ISBN: 0596002149 (November, 2001)
by Dave Thomas and Andrew Hunt
Addison Wesley; ISBN: 0201710897 (2000)
(As of Sept 2004, there is a second edition. It is not open-
sourced at this time.)
Online version
(Note that this is a legal first edition.)
Download
Errata
by Dirk Engel and Klaus Spreckelsen
ISBN: 3826672429
by Armin Roehrl, Stefan Schmiedl, Clemens Wyss, etc.
dpunkt.de; ISBN 3898641511 (February, 2002)
Online at: http://www.approximity.com/rubybuch2/node1_main.html
Addison-Wesley, 2002; ISBN 382731965X. A German translation of
the "Pickaxe" (Programming Ruby).
Search ruby-talk
2.1 Tell me about comp.lang.ruby
comp.lang.ruby was officially approved in early May, 2000.
(Conrad Schneiker, the former maintainer of this FAQ, was
responsible for the "net paperwork" of creating this group.)
Here is the official charter:
CHARTER: comp.lang.ruby
The comp.lang.ruby newsgroup is devoted to discussions of the
Ruby programming language and related issues.
Examples of relevant postings include, but are not limited
to, the following subjects:
- Bug reports
- Announcements of software written with Ruby
- Examples of Ruby code
- Suggestions for Ruby developers
- Requests for help from new Ruby programmers
The newsgroup is not moderated. Binaries are prohibited
(except the small PGP type). Advertising is prohibited (except
for announcements of new Ruby-related products).
END CHARTER.
You should also follow these guidelines for the ruby-list mail
list, since it is mirrored to comp.lang.ruby.
This is OK:
This is not OK:
These prefixes have become common for subject lines:
Matz (aka Yukihiro Matsumoto) is the wizard who created Ruby for
us, so be nice to him. He is very busy, so be patient when asking
questions. See the Ruby home page to find out more about him and
his work. I (Conrad Schneiker) founded comp.lang.ruby at his
suggestion. Contrary to lots of skepticism, it was approved on
the first attempt, with 200 yes votes.
The mailing list is older. When the newsgroup was created, they
diverged. In mid-2001, Dave Thomas created a two-way gateway
that would "mirror" the newsgroup to the list and vice versa.
(This was accomplished in 200 lines of Ruby code.) It is not
perfect; because of variability in the news feed, sometimes
messages are dropped or duplicated.
Historically, every item on the mailing list had a subject
starting with a string like: [ruby-talk:99999]
http://ruby-talk.com/12345
will refer to message 12345. (Note: The above was true,
but is not currently working.)
If you are new to Ruby (or haven't previously taken the Ruby User
Survey), please take a moment to anonymously tell us about your
programming background and about your Ruby-related interests. The
results will be reported back to the Ruby community from time to
time. This helps us do a better job of helping each other, and to
more effectively expand the Ruby community for our mutual benefit.
The survey is here.