AA_zahnraeder_photocase.jpg

© sxc.hu

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.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Mit Python programmieren
    Trotz grafischer Oberflächen führt manchmal kein Weg am Einsatz von Skripts vorbei, die regelmäßige Aufgaben individuell lösen. Einsteigern bietet sich dafür die klar strukturierte Sprache Python an.
  • Bildverarbeitung mit den Skriptsprachen Perl und Python
    Mit nur wenigen Zahlen Code korrigieren Sie das Format digitaler Bilder, passen die Metadaten an oder beschriften die Fotos für den Upload in ein Online-Album.
  • Programm-Code übersichtlich formatieren
    Manchmal reicht es nicht aus, Quelltext korrekt kompilieren zu können. Dieser Artikel zeigt, wie Sie mit Hilfe von Highlight Programm-Code ansehnlich und übersichtlich formatieren und weiterverwenden.
  • Typische Fehler in Python-Code vermeiden
    Python ist einfach – aber nicht so einfach, dass man es allein durch Lesen von Code lernen könnte. Mit etwas Hintergrundwissen vermeiden Sie typische Fehler in Python-Code und schreiben so bessere Programme.
  • Erste Schritte mit Regular Expressions
    Computer erleichtern die Arbeit – man muss ihnen nur genau sagen, was sie tun sollen. Mit regulären Ausdrücken beschleunigen Sie das Suchen und Ersetzen von Zeichenketten auf elegante Art.
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: 119 Punkte bei 7 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.