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
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(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

01.05.2006 Skriptsprachen sind wie Baukästen mit einer Vielzahl kleiner Teile, aus denen sich große Maschinen bauen lassen. Welche Rädchen es gibt und wie Sie sie in Bewegung setzen, erfahren Sie hier.

Früher war die Unix-Welt noch einfach: Für "richtige" Programme verwendete man C, für kleine selbst geschriebene Skripts die Shell-Sprache in Kombination mit Tools wie Sed und Awk. Heute stehen für den programmierwilligen Linux-Anwender dutzende so genannter Skriptsprachen zur Auswahl. Dieser Artikel vergleicht die derzeit beliebtesten Skripting-Tools Perl, Python und Ruby und gibt eine kurze Einführung in die Programmierung.

Skripten oder kompilieren

Obwohl die Grenzen zu kompilierten Sprachen wie C immer mehr verschwimmen (zum Beispiel mit Mono), zeichnen sich Skriptsprachen dadurch aus, dass der Programmierer den geschriebenen Code nicht in einem separaten Vorgang übersetzen muss. Stattdessen tippt er sein Programm ein und kann es sofort ausführen – vorausgesetzt es enthält keine groben Fehler. Das Ausführen übernimmt der so genannte Interpreter, ein Kommandozeilenprogramm, das bei den hier vorgestellten Beispielen so heißt wie die Sprache selbst: perl, python und ruby.

TIPP

Um ein Skript direkt durch Aufruf seines Namens (etwa mit skript statt mitpython skript) auszuführen, geben Sie in der ersten Zeile des Skripts den Aufruf für den Interpreter an – für Python etwa #!/usr/bin/python. Zusätzlich machen Sie die Skriptdatei ausführbar, indem Sie auf der Kommandzeile chmod a+x skript eingeben.

Beim Funktionsumfang können Skriptsprachen längst mit den kompilierten Kollegen mithalten. War die Domäne von Skriptsprachen wie der Shell früher vor allem die Systemadministration mit relativ kleinen Tools für eine Aufgabe, werden heute komplette Desktop-Anwendungen in Skriptsprachen entwickelt – so der Gnome-Network-Manager in Python. Diese Skriptsprache hat sich in den letzten Jahren eine große Fan-Gemeinde aufbauen können und gilt beispielsweise bei Ubuntu Linux neben dem herkömmlichen C als wichtigste Sprache – auch weil Ubuntu-Förderer Shuttleworth selbst gerne damit programmiert.

Prinzipiell lassen sich mit den Skriptsprachen Perl, Python und Ruby praktisch identisch funktionierende Programme schreiben. Auch laufen solche Skripts oder Anwendungen mehr oder weniger gleich schnell. Kommt es auf die Ausführungsgeschwindigkeit an, etwa bei komplizierten Berechnungen, bringt kluge Programmierung mehr als die Wahl der "besten" Sprache.

Tatsächlich unterscheiden sich diese drei Skriptsprachen für den Einsteiger nur wenig voneinander, auch wenn ihre jeweiligen Fans das anders sehen mögen. Der Hauptunterschied liegt in der so genannten Syntax: den Regeln dafür, wie ein bestimmter Code-Ausdruck in einer Programmiersprache "wohlgeformt" oder korrekt ist. Die Korrektheit der Syntax prüft der Interpreter als erstes, sobald der Benutzer das Skript ausführt. So erwartet zum Beispiel Perl hinter jeder Anweisung ein Semikolon, die anderen beiden Sprachen nicht.

Ein kurzes Beispiel soll den Unterschied illustrieren und einen kleinen Vorgeschmack auf die einzelnen Skriptsprachen geben: Das Beispielprogramm berechnet eine Summe aus zwei Zahlen und gibt das Ergebnis mit einem erläuternden Text aus. Die entsprechenden Skripts finden Sie in den Listings 1 bis 3.

Listing 1

Perl

$a = 3;
$b = 5;
$c = $a + $b;
print "Die Summe ist ", $c;

Listing 2

Python

a = 3
b = 5
c = a + b
print "Die Summe ist", c

Listing 3

Ruby

a = 3
b = 5
c = a + b
print "Die Summe ist ", c

Sehr groß fallen die Unterschiede nicht aus. Allerdings handelt es sich ja nur um ein sehr einfaches Programm. Neben den erwähnten Semikolons stechen in Listing 1 die Dollarzeichen ins Auge, mit denen Perl die Variablen kennzeichnet. Auch der Print-Befehl verhält sich etwas anders. In Python hängt er automatisch einen Zeilenumbruch an und schiebt durch das Komma ein Leerzeichen ein. Bei Perl und Ruby muss der Programmierer das Leerzeichen selbst hinschreiben und gegebenenfalls mit dem Zeichen \n einen Zeilenumbruch erzeugen. Die letzte Zeile sähe dann so aus: print "Die Summe ist ", c, "\n".

Die drei Skriptsprachen erlauben außerdem, Variablen auch innerhalb von Zeichenketten (Strings) auszugeben, zum Beispiel mit Perl print "Die Summe ist $c\n" oder in Ruby print "Die Summe ist #{c} \n". Der Python-Programmierer muss dazu erst einen Platzhalter innerhalb des Strings setzen, gefolgt von der Variablen selbst hinter einem Prozentzeichen: print "Die Summe ist %d" % c.

Funktional ist das Programm in allen drei Sprachen identisch: Die Variablen speichern wie in der Schulalgebra Zahlen und dienen dann zur Berechnung, deren Ergebnis in einer dritten Variablen gespeichert wird. Anders als in der Mathematik können Variablen alle möglichen Inhalte speichern – nicht nur Zahlen, sondern auch Zeichen, so genannte Zeichenketten (Strings), ganze Dateien und vieles mehr.

Strings und andere Typen

Programmierer nennen die Variablenarten auch Datentypen. Einige Typen sind in Programmiersprachen schon eingebaut, zum Beispiel Ganzzahlen (Integer), Fließkommazahlen (Real oder Float), Einzelzeichen (Characters/Chars) sowie die erwähnten Zeichenketten (Strings). Die kompilierte Sprache C besitzt beispielsweise im Gegensatz zu den Skriptsprachen keinen eigenen Typ für Zeichenketten, weshalb die String-Verarbeitung mit Skriptsprachen wesentlich leichter fällt. So kann der Skript-Programmierer einer Variablen einen String zuweisen und damit arbeiten wie mit einer Zahlvariable. So lassen sich mit dem Pluszeichen zum Beispiel zwei Strings aneinanderfügen.

Wesentlich zur Einfachheit von Perl, Python und Ruby trägt bei, dass es sich um so genannte dynamisch typisierte Sprachen kandelt. Das bedeutet, dass eine Variable, die irgendwann einmal eine Zahl gespeichert hat, im weiteren Programmverlauf durchaus auch einmal einen String aufnehmen kann. Beim Gegenteil, den statisch typisierten Sprachen, bleibt eine Variable ihr ganzes Leben lang vom gleichen Typ.

Dynamisch typisierte Sprachen machen vieles leichter. Der Programmierer muss sich erst einmal gar keine Gedanken über Typen machen, sondern kann einfach eine Variable einführen und sie verwenden, wofür auch immer er will. Der Skriptsprachen-Interpreter führt hinter den Kulissen Protokoll darüber, welchen Typ die Variable zu jedem Zeitpunkt gerade besitzt. In den Listings 1 bis 3 sind die Variablen a, b und c immer vom Typ Integer (Ganzzahl). Ein einfaches Beispiel in Python (Listing 4) zeigt, wie der Interpreter den Datentyp je nach Programmablauf umwandelt, ohne dass der Programmierer dafür etwas tun muss.

Listing 4

Python

a = 3
b = 5.0
c = 0
print "c =", c
c = a + b
print "Die Summe ist", c

Speichern Sie das Listing in der Datei typen.py und führen Sie es mit python typen.py aus. Sie sehen dann, dass c beim ersten Aufruf von print keinen Dezimalpunkt führt. Zu diesem Zeitpunkt besitzt es den Wert 0, ist also eine Ganzzahl. Nach der folgenden Addition sieht es anders aus: Da es sich bei einem der Summanden (b) um eine Fließkommazahl handelt, führt Python eine Fließkomma-Addition aus, deren Ergebnis wiederum eine Fließkommazahl ist. Von den syntaktischen Details abgesehen, funktionieren Perl und Ruby genauso.

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

1741 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...