Skriptsprachen: Was ich bisher übersehen hatte…

September 17, 2009 at 6:58 am 1 comment


Die Verfechter von Ruby, Python etc. sprechen von dynamischen Skriptsprachen. Ich war bisher immer der Meinung, dass der Hauptunterschied zu Sprachen wie C++ und Java im Typsystem besteht. Java und Konsorten sind statisch getypt. Ruby, Python etc. sind je nach Sprechweise dynamisch getypt oder ungetypt.
Daher war ich der Meinung, man müsste eher ungetypt/dynamisch getypt gegen statisch getypt stellen. Und dann wären Sprachen wie Smalltalk oder Lisp eben auch in der Gruppe der ungetypten/dynamisch getypten Sprachen.

Neulich habe ich aber gemerkt, dass der Aspekt der Skriptsprache doch wichtiger ist, als ich angenommen hatte. Ich musste auf meinem Rechner einen Proxy-Server installieren, um bestimmte URLs umzulenken. Und dazu musste man ein Skript (z.B. in Perl) schreiben, das die URLs in die Ziel-URLs umwandelte.

Ich habe mir dazu ein Perl-Skript als Vorlage aus dem Internet besorgt. Mit meinen beschränkten Perl-Kenntnissen habe ich das Skript nicht wirklich verstanden, aber das schien mir auch nicht notwendig.

Das hat natürlich erstmal alles nicht funktioniert. Es wurden keine URLs umgelenkt. Und natürlich war mir auch unklar, wo das Problem liegt. War die Konfiguration des Proxy-Servers falsch oder stimmte etwas mit dem Perl-Skript nicht?

Das ließ sich aber ganz leicht herausfinden. Einfach das Perl-Skript mal so starten.
./redirect.pl
An der Fehlermeldung konnte man sofort sehen, dass das Skript Daten über die Pipe erwartet. Das ergibt auch Sinn: Der Proxy-Server gibt die aktuelle URL per Pipe an das Perl-Skript. Auch diese Situation kann ich direkt auf der Linux-Shell nachstellen:
echo http://meineUrl.de | ./redirect.pl
Und siehe da, das Skript läuft durch, erzeugt aber nicht die Ausgaben, die ich erwartet habe. Folgerung: Mit dem Skript stimmt etwas nicht. Mit Quellcode-Anstarren und etwas Internet-Recherche habe ich das Problem dann auch schnell identifiziert und das Skript korrigiert.

Stellen wir uns zum Vergleich vor, das Redirect-Skript wäre in Java programmiert gewesen (C++ stellen wir uns hier lieber nicht vor…). Dann hätte ich das Programm nicht einfach so aufrufen können. Ich hätte erstmal den Classpath zusammenstellen müssen. Oder ich hätte mir einen Unittest geschrieben, um das Skript zu testen. Und für das Austesten direkt zusammen mit dem Proxy-Server hätte ich immer wieder neu compilieren müssen. Auf jeden Fall wäre das ganze ein gutes Stück schwergewichtiger mit deutlich längeren Turn-Around-Zeiten gewesen.

Und dieser Vorteil zeigt sich nicht nur bei so kleinen Hilfsskripten. Auch in echten Anwendungen ist es nützlich, wenn man einen verdächtigen Teil seiner Anwendung einfach so aus der Shell starten kann.

Entry filed under: #. Tags: .

XP-Days Germany 2009 XP-Days Germany am 26-28.11.09 in Karlsruhe

1 Comment Add your own

  • 1. marko  |  September 19, 2009 at 7:10 am

    Guter Punkt, war mir bisher noch nicht so bewusst. Spiegelt sich auch in den nützlichen interaktiven Interpretern wie z.B. irb und groovyConsole wieder.

    Ich benutze auch in Java gerne mal eine Scrapbook-Page in Eclipse, aber die sind weitgehend unbekannt. Und man kann mal eben in 1-3 Zeilen Ruby/Perl/Groovy/Python viel eher etwas ausdrücken als in 1-3 Zeilen Java.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d bloggers like this: