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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 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

1471 Hits
Wertung: 58 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/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

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 0 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...
8! Anfängerfrage :) Wie finde ich in Ubuntu die Datenträger (Bild, Text)
samuel leusam, 04.02.2012 15:53, 2 Antworten
Ich habe neu Ubuntu. Wenn ich die SD Karte im Laptop einstecke, erkennt er sie und gibt ihr den N...