Home / LinuxUser / 2006 / 05 / Perl, Python und Ruby im Vergleich

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Kleine Rädchen

Perl, Python und Ruby im Vergleich

Objektorientiert vs. prozedural

An dieser Stelle zeigt sich ein Unterschied zwischen Perl und den beiden anderen vorgestellten Skriptsprachen, der bisher nicht zur Sprache kam: Python und Ruby sind von Grund auf objektorientiert. Nun lässt sich trefflich philosophieren, was Objektorientierung bedeutet, wir wollen es bei einigen Andeutungen belassen.

Die meisten Funktionen eines Programms sind bei der objektorientierten Programmierung an die Daten gebunden, die sie verarbeiten sollen. Diese Daten repräsentiert ein so genanntes Objekt. Im hier mehrfach verwendeten Adressbeispiel könnte es Objekte für Personen oder Adressen geben. Funktionen – oder im Objekt-Jargon: Methoden – könnten dann sein: das Anlegen, Verändern, Löschen von Adress- und Personendaten.

Weil Ruby noch mehr als Python auf Objektorientierung setzt, bietet es ein paar mehr ungewöhnliche Konstruktionen, die aber auch nichts anderes tun als ihre Python-Pendants. So ist es in Ruby nicht nötig, mit einer eingebauten Funktion foreach durch eine Liste zu wandern. Jede Liste besitzt, ererbt vom Elternobjekt, eine Methode each. Ein Ruby-Programmierer durchläuft eine Liste gerne mit liste.each { |elem| print elem }. Das in Pipe-Symbole eingeschlossene elem steht für das Listenelement beim jeweiligen Durchlauf. Viele Ruby-Objekte besitzen solche so genannten Iteratoren, weshalb man in Ruby-Code häufig auf solche Konstruktionen stößt.

Natürlich kann man mit Objektorientierung auch nichts anderes machen als mit der so genannten prozeduralen Programmierung wie in Perl, aber dieser Ansatz verhilft zumindest bei größeren Skriptprogramme zu übersichtlicherer Struktur und hoffentlich weniger Fehlern. Bei kleinen Skripts führt objektorientierte Programmierung eher zu mehr Schreibaufwand, aber auch in Python und Ruby lassen sich natürlich auch kleine Hacks schreiben.

Systemnähe

Die meisten schnellen Hacks mit Skriptsprachen unter Linux haben etwas damit zu tun, dass man zum Beispiel eine Datei einliest. Schließlich leisten die ganzen Variablen und Kontrollstrukturen erst etwas, wenn sie auch Daten zu verarbeiten haben. Deshalb ist jede Skriptsprache nur so gut wie ihre Bibliotheken, die umfassende Dienste für die Kommunikation mit dem Linux-System leisten: Sie müssen mindestens mit Dateien umgehen, Webseiten aus dem Internet holen, Regular Expressions beherrschen, XML-Dateien verstehen und vieles mehr.

Alle hier vorgestellten Skriptsprachen beherrschen die wichtigsten Anwendungsbereiche ausreichend gut. Das ist auch der Grund für ihre Popularität: Durch die Einfachheit von Variablen und Typen zusammen mit den umfangreichen Bibliotheken lassen sich mit wenigen Zeilen funktionsreiche Skripts schreiben.

Wie dieser Artikel zu zeigen versucht hat, bestehen die Unterschiede zwischen den Perl, Python und Ruby für einfach Anwendungsfälle nur in syntaktischen Feinheiten. Bei größeren Projekten sind Python und Ruby von Haus aus durch ihre Objektorientierung geeignete Kandidaten. Für welche Sprache man sich entscheidet, ist letztlich auch Geschmackssache

Zum Ausprobieren ist ein interaktiver Modus praktisch, wie ihn Python bietet, wenn Sie einfach nur den Interpreter python starten (Abbildung 1). Sie verlassen ihn wieder mit [Strg]+[D]. Bei Ruby dient dazu das separate Programm irb, das Sie über den Paketmanager nachinstallieren. wenn es fehlt. Für Perl gibt es leider nur die etwas unkomfortable Lösung, den Interpreter mit perl -de 42 im Debugging-Modus aufzurufen oder eine der Perl-Shells wie psh zu verwenden, die im Internet kursieren. Dort finden Sie auch zu jeder der drei vorgestellten Skriptsprachen eine Unmenge an Informationen für Anfänger und Fortgeschrittene. Lohnenswert ist auf jeden Fall ein Blick auf die PLEAC-Website, welche alle Beispiele des Perl Cookbook in vielen Sprachen nachbaut [4].

Abbildung 1: Im interaktiven Modus (hier der Python-Interpreter) können Sie die Wirkung von Skriptbefehlen direkt ausprobieren.

Glossar

Mono

Eine zu Microsofts .NET kompatible Entwicklungs- und Laufzeit-Umgebung für Software. Das Open-Source-Projekt wird hauptsächlich von Novell (Ximian) vorangetrieben.

Interpreter

Ein Programm, das einen Quellcode sondern einliest, zur Laufzeit analysiert und direkt ausführt. Im Gegensatz wandeln Assembler oder Compilern den Code in eine auf dem System direkt ausführbare Datei um.

Variablen

Speicherbereiche, in denen Werte gespeichert werden können. Der Inhalt wird über den Variablen-Namen angesprochen. Man unterscheidet Variablen nach ihrem Gültigkeitsbereich in lokale (gültig nur innerhalb eines Blocks) und globale (gültig im ganzen Programm) Variablen.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare
Perls print()
M (unangemeldet), Mittwoch, 15. Dezember 2010 13:40:13
Ein/Ausklappen

print "Die Summe ist ", $c;

würden viele Perlianer sicherlich eher als

print "Die Summe ist $c"

schreiben.


Bewertung: 0 Punkte bei 1 Stimme.
Den Beitrag bewerten: Gut / Schlecht

Hits
Wertung: 58 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...