Saturday, February 17, 2007

The story of Ruby and how it has blown my mind

In the days of Old, the Great Monolithic Machines created the Field of Computing, where Programmers served them as farmers and took care of the land.

The first Programmers found that they have difficulty communicating with the Machines, who only spoke Hex, a language Programmers weren't designed to pronounce and think in.

So they created Assembly, a code language in which each word mapped directly to a word in Hex, but which was easier to pronounce.

Since they still found it hard to think in the unnatural patterns of Hex, which Assembly preserved, they created Algol languages, which allowed them to call sequences of words by names and later use those names to refer to the sequences, thus allowing to map to Hex patterns and words of their own language, English.

But one group of rebel Programmers decided that it is not enough. Instead of translating their thoughts to the concepts of the Machines, they decided to force the Machines to adapt themselves to their servants, and thus they created the language LISP. LISP was different from Algol: it allowed endless abstraction, and to allow that, forced the Machines to adapt to it. While Algolites served the Machines, the Machines served LISPers and not the other way.

As those LISPers were considered very intelligent for this hack, their language was used mainly in attempts to introduce the concept of intelligence to Machines, and died gradually when future Programmers came to the realization that Machines are just stupid and gradually gave up.

Their legacy spread into many different families, like the Functional family or the Object Oriented family, while Algolites founded the Machine Oriented family that over most of the Field - because they had numbers on their side.

When I learned programming, it was accepted truth that Programming means serving the Machines, and although with time the bonds weakened, Programmers were still bound by the Tyrannous Syntax and Static Typing that were Algol's Legacy.

Nobody joined the LISP heirs because by now English has evolved and LISP and its successors sounded like Ancient English, that nobody wanted to learn, and because, well, like all rebels, they became so conservative in their later days that it was irritating. Today they seem like an ancient cult, preserving secrets long forgotten by using codes and rituals nobody understands.

And then came an evolution in the LISP camp: Matz, who spoke not English but the rune language Japanese, reminded the world that LISP was created so that Machines will serve Programmers, and here are Programmers once again serving Machines.

And he formed a new camp of rebels, dedicated to creating a new language who's essence is making Programmers' lives the most happy possible by having the Machines serve them to the greatest extent possible.

In the West, where most Programmers dwelled, Andi and Dave, two Programmers, spread the word of this new language, called Ruby, simply because they wanted a happy life, and whytheluckystiff, a Prophet, a Preacher and a Madman, spread freaky cartoons and epic poems in this language (written under the influence of drugs, some speculate), all with the intention of using Ruby to show the Programmers what absolute Freedom is.

Dave and Andi spread the call to Pick Axes up and fight, while _why's cryptic message to "follow the foxes with the chunky bacon" reached for all those who had doubts in the Algol way of doing things.

When I first stumbled upon the propoganda of _why I was another Programmer serving the Machines. By installing Ruby, I suddenly broke free of the oppressing chains of the Machines, I found that there is a whole world outside where Programmers live free and what I previously regarded as "the world" was a huge array of Programmers that served the Machines unknowingly.

Ruby was such a shock to me as a Programmer that it I cannot dream of describing it fully. Let me illustrate:
After a few days with Ruby installed I was found opening my eyes in the chair in front of my Machine, breathless, sleepless, but all I cared for, it seemed, was the new art:

"This is incredible. I know Kung Fu!"

class << self
def kungfoo code
code.split("\n").sort_by{rand}.each{|bone| print bone.chomp.split(//).sort_by{rand} << "\n"}
def enlighten
print eval <<KOAN
q = "q = %s\nputs q %% q.inspect"
puts q % q.inspect

self.kungfoo <<ALGOLITECHAINS
begin procedure p(a); string a;
begin outstring(1,a):
outsymbol(1,``'',1); outstring(1,a);
outsymbol(1,``'',2); outstring(1,`) end')
p (`begin procedure p(a); string a;
begin outstring(1,a):
outsymbol(1,``'',1); outstring(1,a);
outsymbol(1,``'',2); outstring(1,`) end')
p(') end

print "I've beaten the machine black and blue!\n\n"


That is the story of the beginning of the Ruby Rebellion and how I got involved in it.

It is the ongoing story of how Programmers at last have the cycles to make Machines work for them , instead of working for Machines.

I don't know how this is going to end, but I know how it began, and this is what I came here to tell.

Ruby is here to show you, fellow Programmers, a world where Machines do not rule you. A world without rules and controls. A world... where everything is possible.

Where you'll go from here... Is a choice I leave for you.

But do consider