Die Programmiersprache für alle Fälle

Die Flut von Programmiersprachen, die zur Lösung von Softwareaufgaben zur Verfügung steht, ist kaum zu überblicken. Neben den Klassikern wie C, C++, C#, Java, Basic und den Sprachen aus dem Web-Bereich wie PHP, HTML, Javascript etc. existiert fast für jede Entwicklungsmethodik und jede Spezialaufgabe eine Sprache, die von sich behauptet, Probleme effizienter als alle anderen Sprachen zu lösen.

Gemeinsam ist dabei vielen Konzepten, daß sie einer mehr oder weniger strengen Methodik folgen, sei es nur ein objektorientierter Ansatz, funktionale Programmierung oder einfach die Fixierung auf ein Anwendungsgebiet.

Allen Ansätzen ist darüber hinaus noch ein anderer auf den ersten Blick trivialer Aspekt gemeinsam: Man muß sie lernen. Wer häufig unterschiedliche Probleme in Software lösen muß, von groß bis klein, von Benutzeroberfläche bis Kommunikation, von Testskript bis Embedded-Anwendung, der hat wahrscheinlich schon so manche Sprache aus Anlaß einer konkreten Aufgabe erlernt.

Die Sprache Python verfolgt hier einen interessanten Ansatz. Sie versucht erfolgreich, mehrere Methodiken abzubilden und für simple Problemstellungen gleichermaßen geeignet zu sein, wie für anspruchsvolle Anforderungen.

In der einfachsten Form ist Python ein gewöhnlicher Taschenrechner; man gibt einen Ausdruck ein und sieht das Ergebnis.

Wer schon einmal mit funktionaler Programmierung in Berührung gekommen ist, findet hier Listen und alles, was ihm aus Lisp bekannt ist; einer funktionalen Programmierung unter Python steht nichts im Wege.

Viele Anwendungen lassen sich mit einem objektorientierten Ansatz am besten beschreiben und Python bringt Klassen und Objekte hierfür mit. Listen, Strings, Verzeichnisse und Zahlentypen stehen ebenso zur Verfügung wie Ein- und Ausgabeoperationen.

Erstaunlich ist auch die Vielfalt an Plattformen, auf denen Python verfügbar ist. Ob Windows, MAC, Unix oder gar die auf Mobiltelefonen häufig anzutreffende Symbian-Umgebung, die Entwicklung von Pythonprogrammen verläuft überall gleich. Hierbei stellt sich der Pythoninterpreter als interaktive Umgebung dar, d.h. es ist möglich, einmal kurz ein Programmfragment auszuprobieren.

Ein simples Beispiel soll dies verdeutlichen. Eine Funktion zur Berechnung der Fakultät läßt sich auf völlig unterschiedliche Weise schreiben:

Example

def fak_imper(x):
  result = 1
  while x > 1:
    result = result * x
    x = x – 1
  return result

def fak_functional(x):
  return reduce(lambda y, z: y * z, range(1, x+1))

def fak_rekurs(x):
  if x > 1:
    return x * fak_rekurs(x-1)
  else:
    return 1

print fak_imper(5)
print fak_functional(6)
print fak_rekurs(7)

Ein entscheidender Vorteil von Python ist, daß keine Sprachdialekte existieren, wie dies beispielsweise bei Lisp der Fall ist. Auch wenn mit dem jüngst erschienenen Release 3.x einige Änderungen an der Semantik eingeführt und damit Kompatibilität aufgegeben wurde, bleibt doch die Sprache im wesentlichen konsistent.

Python bringt kein eigenes Konzept für die Handhabung von Benutzeroberflächen mit. Dafür existieren jedoch für diverse GUI-Pakete Anbindungen, mit deren Hilfe – dann natürlich plattformabhängig – Oberflächen erzeugt werden können. Windows, TCL/TK und Symbian sind Beispiele hierfür. Überhaupt ist die Anbindung von Bibliotheken eine Stärke dieser Sprache.

Bei telos® hat sich Python besonders im Bereich der Tests von Software als nützliches Handwerkszeug erwiesen, ebenso, wie für die Erstellung von Prototypen.

Python ist eine auf einem Bytecode basierende interpretierende Sprache. Diesen Systemen wird nachgesagt, häufig nicht performant genug zu sein. Natürlich gibt es Fälle, in denen man auf eine direkt in Maschinencode übersetzte Sprache aus Geschwindigkeitsgründen zurückgreifen sollte. Mit zunehmender Leistungsfähigkeit der Rechnersysteme tritt dieser Aspekt jedoch vielfach in den Hintergrund.

Auch Pythonanwendungen können ohne viel Aufwand auf andere Systeme verteilt werden. Es existieren Paketerzeugungssysteme und unter Windows können Programme in eine direkt ausführbare .exe-Datei verpackt werden, die sich für den Nutzer wie jede andere Anwendung darstellt.

Alles in allem ist Python eine Sprache, die auch in Zukunft eine Rolle als Schweizer Taschenmesser der Programmierung spielen wird.