Frust-Thread

Beim duschen ausgeruscht, dabei eine wunderschöne Grätsche in den Abflussstopfen gemacht, der dann gleich zu Bruch gegangen ist so dass ich mir den Fuss seitlich an den Bruchstellen ganz toll aufschneiden konnte…

Bin ich jetzt offiziell alt genug für eine Anti-Rutschmatte in der Wanne? :wink:

Komme bei http://forum.byte-welt.net/threads/11789-Problem-mit-java-policy nicht weiter :frowning: :heul:

(Bewusste Übertreibung:)

PERL!!! Viele verschiedene Möglichkeiten die selbe Funktion in urhässlichen Code umzusetzen…

Schnell mal drüber geschaut, aber, wenn die standardlib nicht mehr enthält, kannst du alles PERL auch mit Java machen. Wahrscheinlich ist Java aber ned so sicher wie PERL.

Wow. Danke für den Tipp, Cyborg. Das hätte ich nicht gedacht. Wenn mir jetzt Perl keinen Mehrwert bringt, dann sage ich dem Kunden einfach „Ich kann eure Skripte nicht lesen, aber ich schreibe sie euch in Java um, das kann man damit auch machen“.

inv_zim, wenn was ist wg. Perl kann ich dir helfen.

Hi fischauge,

danke dir, das ist nett gemeint. Es sind weniger Verständnisprobleme, es ist eher das Problem dass es zig verschiedene Möglichkeiten gibt, zum Ziel zu kommen. Perl scripte schreiben ist easy, aber beim lesen von Fremdscripten muss man einfach darauf hoffen, dass der andere ähnliche Paradigment gut findet wie man selbst, ansonsten kommt man andauernd ins Nachschlagen (wenn man jetzt nicht wirklich wirklich tief in Perl drinnen ist.)

Z.B. ein Kopfschüttelbeispiel:


my @stringArray = ('hipp', 'hipp', 'array');
my $var = @stringArray; #in $var steht jetzt die länge des Array: 3. 

Das sind Notationen, die zwar einfach und kurz sind, die sich aber dem ungeübten Leser nicht direkt erschließen. Von $_ fangen wir jetzt mal gar nicht erst an :smiley:

So, und jetzt Schluss mit Perl! :wink:

Ja, dein Beispiel ist schön zur Veranschaulichung was man in Perl machen kann, wenn man bei der Arbeit mit Arrays einen skalaren Kontext erzwingt :slight_smile:
Aber sauber ist das nicht. Normalerweise würde man my $var = scalar @stringArray; schreiben sollen. Ich meine sogar, dass die Zeile ohne Kommando scalar() in älteren Perl’s zu einem warning führt.

Siehst du, ich habe mehrere Perl Tutorials durchgesehen, aber diese einfache Darstellung war nirgends vertreten. Auf den skalaren Kontext ging einer ein, aber das “scalar” gab es hier auch nicht. Da gibt es wohl auch Religionskriege zwischen “Sauberer Code” und “Kompakter Code”…

Beispiel aus den Perl Wikibooks:

while (<STDIN>) {                # Zeilenweise einlesen von der Standardeingabe STDIN. 
                                 # Die gelesene Zeile wird automatisch in $_ gespeichert.
    s/BöserText/GuterText/;       # Ein Suchen-Ersetzen-RegEx : Ersetzt 'BöserText' durch 'GuterText' in der Variablen $_;
    s/PHP/Perl/;                 # Ein weiterer Suchen-Ersetzen-Regex. Merke : Perl nimmt $_ wenn keine andere Variable gesetzt ist 
    print;                       # Ausgabe von $_, welches nun nur noch "GutenText" und kein "PHP" mehr enthalten sollte.
}                                # Hole die nächste Zeile

Soweit ich das verstehe, werden Operationen die “ohne Bezug” darstehen automatisch auf $_ angewandt. Da $_ eine globale Variable ist, manipuliert auch jede dieser Operationen mein ursprüngliches Array (wenn ich im Schleifendurchlauf eins hätte). Ich würde (persönlich!) die zweite Schreibweise bevorzugen:


while ( my $line = <STDIN> ) {
    $line =~ s/BöserText/GuterText/;
    $line =~ s/PHP/Perl/; # :-|
    print $line;
}

Natürlich sieht der Code weniger cool aus und ist weniger Kompakt, aber hier weiß doch auch direkt jeder was Sache ist, oder?

Könnte ein Mod das vielleicht in die Script-Ecke abspalten? Dann könnte man das noch ein wenig ausbreiten.

Also in dem Perl Buch (Programmieren mit Perl von Larry Well) wird darauf sehr umfangreich eingegangen und ich erinnere mich nicht, dass dort stand, dass das unsauber sei. Dass es ein anderer Kontext ist, sieht man ja auch auf den ersten Blick am Präfix.

*** Edit ***

Wobei ich zugeben muss, dass vieles für einen Perl-Anfänger (zähle mich da auch zu) nicht offensichtlich ist. Deshalb habe ich mir irgendwann auch das besagte Buch zugelegt, welches ich nur wärmstens empfehlen kann.
Wenn man aber erstmal den Dreh raus hat, dann kann man mit Perl sehr schnell kleine und nützliche Scripte schreiben. Die Kernkompetenz ist dabei natürlich die Textverarbeitung.

Das kommt auf die Sichtweise an. Technisch ist es in Ordnung. Aber zum Lesen des Codes ist es eher unschön. Aber das gilt für alle Sprachen. Alles was sehr spezifisch ist ist unschön zu lesen für Syntaxfremde.

Das ist richtig. Explizit ist immer gut. Allerdings sehe ich Perl da ein wenig als Spezialfall, weil es ja genau aus diesem Grunde so entwickelt wurde: um möglichst kurze, mächtige Textbearbeitungsprogramme schreiben zu können. In diesem Sinne entstand es wohl beinahe schon als domänenspezifische Sprache.
Wer es lieber explizit mag, hat die Möglichkeit. Wer echter Perl-Feteschist ist, der schreibt es dann halt kurz.
Ich glaube, dass man sich, wenn man viel in Perl programmiert, sehr schnell daran gewöhnt. Es ist eben nur eine andere - eine kürzere - Syntax.

Ja, cmrudolph, völlig richtig.

Wenn man einen Fehler vom CI-Server lokal nicht nachvollziehen kann…

Was ist das?

Jenkins, zum Beispiel. Continuous Integration. Und das Problem bzw. den Frust kann ich nachvollziehen. Besonders wenn CI nur „mal so eben nebenbei“ gemacht werden soll und es dann trotzdem fast in nen Vollzeit Job ausartet.

Maaaaaann! Der Kubuntu-Partitionierer findet bei der Installation immer noch nicht alle am System angeschlossenen Festplatten. Echt, das ist absoluter Müll... Bei Ubuntu oder Linux Mint geht das doch auch! Kapier ich nicht. Und das zieht sich nun schon durch mehrere Versionen.

Softwareanpassung, dürfte ja eigentlich halb so wild sein…

Aber der gesamte (Java-)Code von vorne bis hinten ist static. Ich habe bisher noch keine nicht-statische Methode gefunden… fassungslos

Hatte ich auch schon. Kam von einem alten Grossrechner Admin damals der Code … wir sollten den mal eben erweitern. Hat darin geendet, dass wir das alles komplett neu geschrieben haben.
Hinterher sagte er uns dann, dass er sich da jetzt gar nicht mehr zurecht findet und alles so unübersichtlich sei.
Der hatte damals doch tatsächlich statische Variablen noch als Parameter in Methoden übergeben. Unnötig zu erwähnen, dass diese Methode in derselben Klasse lagen wie auch die Variablen ^^ Hach das war ein Spass … not. Da gabs noch viel mehr solche spassigen Dinge.

[QUOTE=inv_zim;94959]Softwareanpassung, dürfte ja eigentlich halb so wild sein…

Aber der gesamte (Java-)Code von vorne bis hinten ist static. Ich habe bisher noch keine nicht-statische Methode gefunden… fassungslos[/QUOTE]

Oha! Du hast mein Mitgefühl…