Hauptinhalt

Meine Programmiersprachen

Ich habe mit 14 Jahren angefangen zu programmieren und seitdem viele verschiedene Systeme und Sprachen kennengelernt (in alphabetischer Reihenfolge):

  • AppleScript (heute nur noch via Python/appscript)
  • BASIC (auf C64, ZX, TRS-80, Amiga, DOS)
  • C: ANSI C / Objective C (mal versucht zu lernen, nicht weit gekommen)
  • HyperCard (lang ist’s her)
  • JavaScript/ECMAscript/TypeScript (JS auch im PDF; im Web u.a. mit jQuery, Angular, React, Meteor)
  • Logo ;-)
  • Lua (bisher nur in LuaTeX)
  • Pascal: Turbo Pascal 2.0 bis 6.0 (auf CP/M und DOS); Object Pascal / Delphi (auf Windows)
  • Perl mit Perl/Tk (bald ersetzt durch Python)
  • PHP (lange meine Hauptsprache, z.B. mit Zikula CMS und dem proprietären LX-Framework
  • PostScript (diverse Anwendungen im Zeitungsworkflow; handgeschrieben!)
  • Python (meine bevorzugte Sprache), u.a. mit Django, wxPython, PySide (Qt), Twisted, Dabo 
  • Shell-Skripte (DOS / Windows, Linux / Unix / MacOS X)
  • S-Lang (nur bei einem Projekt)
  • VB.NET / ASP.NET (mehrere Projekte, aber eine eher unangenehme Erfahrung)
  • XSLT (auf einfachem Niveau)
  • Markup: HTML, XML, SVG, CSS, JSON, YAML (kann man das als Sprachen zählen?)
  • Markup: GNU LilyPond (ohne bisher mit dem eingebetteten Scheme umgehen zu können)
  • Markup: TeX (anfangs LaTeX, schon 1999 auf ConTeXt umgestiegen)
  • Datenbank-Abfragesprachen: SQL (MySQL, SQLite, Sybase, PostgreSQL), VDP Easy, anfangs dBase

Warum nicht [Assembler, C++, C#, D, Fortran, Haskell, Java, Lisp, Oberon, Smalltalk, ...]? Ich mag keine Sprachen ohne Garbage Collection (die mich also zwingen, mich mit der Freigabe von Variablen zu beschäftigen). Ich mag auch keine geschwätzigen Bandwurm-Klassenbezeichnungen (Java, *.NET). Ich mag es, wenn ich mich nicht um Typisierung und Compiler-Optionen kümmern muss. Ich mag lesbaren Code. Manche Sprachen waren eher „vor meiner Zeit“ (was mich nicht von PostScript abgehalten hat). Zu manchen Sprachen hatte ich noch keinen Anlass. Für Lisp bin ich offenbar zu doof und für Haskell zu wenig Funktionsfetischist. Und meistens habe ich auch etwas Besseres zu tun, als neue Programmiersprachen (z.B. Dart, Rust) zu lernen.

Ich empfehle Python als Programmiersprache, weil...

  • es leicht zu lernen ist
  • der Code gut lesbar ist
  • es sich meistens so verhält, wie man es erwartet
  • die Programme für die meisten Anwendungen schnell genug sind
  • es wenig Einschränkungen gibt, was man damit machen kann (vom Server-Admin-Skript bis zum 3D-Spiel)
  • der Umgang mit Zeichencodierungen und Unicode gut funktioniert (im Gegensatz zu z.B. PHP oder .NET)
  • man sich nicht um die Speicherverwaltung kümmern muss (wie bei allen Skriptsprachen, im Gegensatz zu z.B. C oder Pascal)
  • Python-Code nicht geschwätzig ist (im Gegensatz zu meterlangen Klassen-Namen bei Java oder .NET)
  • die Objektorientierung einerseits eingängig ist (im Gegensatz zu PHP und Perl), andererseits nicht zum Dogma erhoben wird (im Gegensatz zu Ruby)
  • es leicht erweiterbar ist (z.B. lässt sich das Verhalten von Operatoren wie + bei eigenen Klassen definieren)
  • es für fast jeden denkbaren Zweck schon fertige Module gibt und/oder Bindungen an C-Bibliotheken
  • Mathematiker auch funktional programmieren dürfen
  • es einfach Spaß macht

Weniger geeignet ist Python...

  • für sehr rechenaufwändige und zeitkritische Aufgaben (dafür gibt es C, Assembler oder vielleicht Rust)
  • bei umfangreichem Multithreading (Stichwort „Global Interpreter Lock“, GIL)
  • für proprietäre Anwendungen, deren Innenleben geheim bleiben soll
  • auf Geräten mit sehr knappen Ressourcen, insbesondere Arbeitsspeicher
  • für Fans von „obfuscated“ oder „write-only“ Code (dafür gibt es Perl, PostScript, Whitespace oder BF)
  • als eingebettete Sprache (dafür gibt es das ähnlich angenehme Lua)
  • für einfache Web-Anwendungen im Shared Hosting (da tut man sich mit PHP leichter)