Ruby is de geïnterpreteerde script taal voor snel en gemakkelijk object-georiënteerd programmeren.Het heeft veel voorzieningen voor het verwerken van tekstbestanden en het uitvoeren van systeembeheer taken (zoals Perl). Het is eenvoudig, doorzichtig, uitbreidbaar en makkelijk te porten.
Oh, wat ik nog moet zeggen: het vrije
software. Dit betekend dat het niet alleen gratis is, maar ook dat je
vrij bent om het te gebruiken, te copiëren, te wijzigen en te
verspreiden zoals je goeddunkt.
- Ruby heeft een eenvoudige syntax, deels geïnspireerd door
Eiffel en Ada.
- Ruby heeft voorzieningen voor exception handling, zoals Java of
Python, om het eenvoudig te maken om fouten af te handelen.
- Ruby's operators zijn syntax suiker voor method calls. Ze zijn
eenvoudig te herdefiniëren.
- Ruby is a complete en pure object-georiënteerde taal: OOL.
Dit betekend dat alle data in Ruby een object is, niet in de zin van
Python
of Perl, maar in de zin van Smalltalk: geen uitzonderingen. Voorbeeld:
In
Ruby is het getal 1 een instantie van de klasse Fixnum.
- Ruby's OO is zorgvuldig ontworpen voor volledigheid en om open
te staan voor verbeteringen. Voorbeeld: Ruby biedt de mogelijkheid om
in
runtime methodes toe te voegen aan een klasse of zelfs aan een
instantie
van een klasse. Dus, indien nodig, *kan* een instantie van een klasse
ander
gedrag vertonen dan andere instanties van de zelfde klasse.
- Ruby kent, *met opzet*, alleen single inheritance. Maar Ruby kent het concept van modules (in Objective-C Categoriën genoemd). Modules zijn verzamelingen van methodes. Iedere klasse kan een module importeren en op die manier alle methodes van de module verkrijgen (mix-in). Dit volgens sommigen een betere manier dan multiple inheritance, die gecompliceerd is, en niet vaak wordt gebruikt in vergelijking met single inheritance (C++ niet meegerekend, aangezien die vaak geen andere keus heeft als gevolg van strong type checking!).
- Ruby kent echte closures. Niet alleen naamloze functies, maar
met bindings met aanwezige variabelen.
- Ruby kent code-blocks in zijn syntax (code singesloten door '{' ... '}' of door 'do' ... 'end'). These code-blocks kunnen worden doorgegeven aan methodes of worden omgezet in closures.
- Ruby heeft een echte mark-and-sweep garbage collector. Het werkt
met alle Ruby objecten. Je hoeft geen reference counts bij te houden in
extension libraries. Dit is beter voor je gezondheid. ;-)
- Het schrijven van C extensies in Ruby is makkelijker dan in Perl
of Python, deels vanwege de garbage collector, en deels vanwege de
uitstekende uitbreidings API. Een SWIG interface is ook beschikbaar.
- Integers in Ruby kunnen worden gebruikt zonder rekening te
hoeven houden met hun interne representatie. Er *zijn* kleine integers
(instanties van de klasse Fixnum) and grote integers (Bignum), maar je
hoeft je niet druk
te maken over welke er word gebruikt. Als een waarde klein genoeg is,
is
een integer een Fixnum, anders is het een Bignum. Conversie gaat
automatisch.
- Het is in Ruby niet nodig variabelen te declareren. Het gebruikt
eenvoudige naamgevings conventies om de scope van variabelen aan te
geven. Voorbeeld: eenvoudig 'var' = locale variabele, '@var' = instance
variabele, '$var' = globale variable. Het is daarom ook niet nodig om
iedere instance variabele met 'self.' te prefixen.
- Ruby kan extension libraries dynamisch laden als het OS dat
toelaat.
- Ruby kent OS onafhankelijke threading. Dus voor alle platforms
waarop Ruby draait is multithreading beschikbaar, ongeacht of het OS
het
ondersteund of niet, zelf onder MS-DOS! ;-)
- Ruby is makkelijk te porten: het wordt voornamelijk onder Linux
ontwikkeld, maar werkt op vele soorten UNIX, DOS, Windows 95/98/NT,
Mac,
BeOS, OS/2, etc.
De bedenker van Ruby
Yukihiro Matsumoto, a.k.a Matz
matz@netlab.jp
Home