Ruby Projects

I've been writing computer programs for more than 25 years now, often to solve some specific problem (like changing the phone codes in my address book) or simply for pleasure. For many years I remained faithful to Borland's Turbo Pascal, and tried hard to carry this faith over to its successor Delphi (but parted company after version 3). After a long gap in which I programmed very rarely I discovered first Python and soon after Ruby, which comes pretty close to being my ideal programming language.

I demand several things from my chosen programming language:

1) Its syntax must be attractive and lucid. I've always hated the terse and spiky syntax of C, but unfortunately many useful later languages like Java and Javascript chose to adopt it. Ruby borrows little syntax from C - and imposes very few quirky formatting rules like Python's compulsory indentation - so it is possible to write readable code that looks quite like Pascal (but without all those ugly BEGIN...ENDs)

2) It must be extremely expressive, to produce short, quick-to-write programs. That means it must support lists and similar dynamic programming features. Ruby excels, particularly by its powerful concept of "blocks". Ruby's hugely expressive semantics can tempt you to write horribly over-compressed, "line-noise" code, but as a code aesthete I find this temptation easy to resist.

3) It must be fully object-oriented to give the full advantage of code-reuse by inheritance. Ruby is more wholly object-oriented than any language since Smalltalk.

I've written several utilities and toys in Ruby (and with the remarkable graphical user-interface library Shoes.), whose source I'm making available for download on the sub-pages here. Some are mathematical tools to do with matrix arithmetic and factorisation; some are just fun, like my biomorphic Creatures; some are more serious research projects like my system of Primitive Parallel (PriPar) computers based on communicating Turing Machines.


All the software and source code on these pages is released under the Creative Commons/GNU licence: