Perl "use strict" und die Pragmas -w -T
coolblue
- programmiertechnik
Hallo,
sind diese "Hilfen" ein Muss oder ein Luxus, auf den man verzichten kann?
Bisher habe ich meine Programme auf Unix- und Linuxsystemen mit der Kornshell entwickelt. Nun fange ich mit Perl an, weil jegliche Shell meinen neuen Anforderungen nicht gewachsen ist. Die Deklaration von Variablen in Perl ist mir nicht unbekannt, da ich schon kleinere Funktionen in C geschrieben habe und dort eine Deklaration zwingend vorgeschrieben ist. Aber gerne würde ich auf die Deklaration mit my, our und local verzichten. Ich habe schon viele Programme gesehen und auch selber geschrieben, die weder use strict noch die Pragmas -w oder -T benützen, nur verfalle ich dann sehr schnell bei den sogenannten selbsternannten Superprogrammierern in Ungnade, wenn ich all diese "Hilfen" nicht benutze.
Welchen Rat könnt ihr mir geben?
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen. Denn immerhin ist es eine mögliche Funktion, warum sollte ich sie nicht verwenden? Die Gefahren, ein Endlos-Script zu programmieren, kann mir auch mit jeder while, for, unless, do etc. Schleife passieren!
Gruß,
coolblue
Hallo,
sind diese "Hilfen" ein Muss oder ein Luxus, auf den man verzichten kann?
Ist eine Fußgängerampel an einer stark befahrenen Straßenkreuzung ein Muss? Oder gehst du lieber so über die Straße?
"use strict" und "use warnings" (-w) helfen dir bei der Programmierung größerer Projekte. Nimm nur mal die On-the-Fly-Variablendeklaration: Wie schnell vertippt man sich da mal. Schwupps hat Perl eine "neue" Variable erzeugt, und schon funktioniert dein selbst programmiertes Meisterwerk nicht mehr so, wie es soll. Viel Spaß jetzt bei der Fehlersuche. Ich bin übrigens bis jetzt ganz gut mit my() hingekommen, local() wird sowieso nicht empfohlen und von our() habe ich ehrlich gesagt noch nie was gehört.
-T ist meines Wissens nur erforderlich, wenn dein Skript "ungeprüfte" externe Daten verarbeiten muss.
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen.
Es gibt zwar ein "Goto" in Perl, aber seine Verwendung wird schon lange nicht mehr als empfehlenswert betrachtet.
Denn immerhin ist es eine mögliche Funktion, warum sollte ich sie nicht verwenden?
Perl erlaubt auch, den gesamten Code eines Skriptes (egal wie lang der ist) in eine Zeile zu quetschen, aber würdest du das tun?
Hallo Andreas,
Ist eine Fußgängerampel an einer stark befahrenen Straßenkreuzung ein Muss? Oder gehst du lieber so über die Straße?
ein wirklich unpassendes Beispiel!
"use strict" und "use warnings" (-w) helfen dir bei der Programmierung größerer Projekte.
du sprichst den Handbüchern aus der Seele, dass ist nicht die Antwort auf meine Frage!
Nimm nur mal die On-the-Fly-Variablendeklaration: Wie schnell vertippt man sich da mal. Schwupps hat Perl eine "neue" Variable erzeugt, und schon funktioniert dein selbst programmiertes Meisterwerk nicht mehr so, wie es soll. Viel Spaß jetzt bei der Fehlersuche.
Sorry, aber Fehler passieren auch mit der my Deklaration.
Ich bin übrigens bis jetzt ganz gut mit my() hingekommen, local() wird sowieso nicht empfohlen und von our() habe ich ehrlich gesagt noch nie was gehört.
Was mich davon überzeugt, dass du ebenfalls ein Anfänger bist!
-T ist meines Wissens nur erforderlich, wenn dein Skript "ungeprüfte" externe Daten verarbeiten muss.
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen.
danke liebes Handbuch! Das habe ich alles schon gelesen!
Es gibt zwar ein "Goto" in Perl, aber seine Verwendung wird schon lange nicht mehr als empfehlenswert betrachtet.
Ich meinte nicht perl, sondern andere Sprachen!
Denn immerhin ist es eine mögliche Funktion, warum sollte ich sie nicht verwenden?
Perl erlaubt auch, den gesamten Code eines Skriptes (egal wie lang der ist) in eine Zeile zu quetschen, aber würdest du das tun?
Jeder hat seinen eigenen Stil. Ich könnte selbst als Anfänger darin lesen!
Gruß,
coolblue
Hallo coolblue,
schön, dass du lesen kannst -- auch Handbücher. Wenn du das alles schon wusstest, warum fragst du dann nach Sinn und Unsinn dieser Optionen? Leider gibts hier keinen Themenbereich "Advocacy", ich glaube, dort wäre dein Posting besser aufgehoben.
Ist eine Fußgängerampel an einer stark befahrenen Straßenkreuzung ein Muss? Oder gehst du lieber so über die Straße?
ein wirklich unpassendes Beispiel!
Beispiele hinken immer, aber ich finde es passend: Dein Programmierstil bedeutet, dass du einfach über die Straße gehst. Das geht oft gut -- solange kein Auto kommt.
Was mich davon überzeugt, dass du ebenfalls ein Anfänger bist!
Immerhin mache ich das schon so lange, dass ich weiß, dass local() und goto schon seit ewigen Zeiten als "deprecated" eingestuft sind, will heißen: Überreste aus der Perl-Steinzeit, die nur noch aus Nostalgiegründen unterstützt werden. Irgendwann kommt Perl6 ...
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen.
Ressourcen benutzen, ohne vorher zu prüfen, ob sie existieren (oder frei sind); Internet-Verbindung ohne Firewall; Autofahren ohne Gurt aber mit Alkohol im Blut; Sex (mit der neuen Bekanntschaft) ohne Kondom, bitteschön -- die Geschmäcker sind eben verschieden.
Ich meinte nicht perl, sondern andere Sprachen!
KC-Basic?
Perl erlaubt auch, den gesamten Code eines Skriptes (egal wie lang der ist) in eine Zeile zu quetschen, aber würdest du das tun?
Jeder hat seinen eigenen Stil. Ich könnte selbst als Anfänger darin lesen!
Also programmierst du alleine. Das spricht auch nicht gerade für langjährige Programmiererfahrung, oder?
Hallo Struppi,
sorry, aber ich habe nur die ersten Zeilen deiner Antwort gelesen.
Dein Ton ist unpassend und unverschämt. Meine Frage war keine Frage des Wissens oder was in Handbüchern steht, sondern eher eine Meinungsfrage an andere Programmierer. Du scheinst damit vollkommen überlastet zu sein!
Schreibe doch einfach wie du es machen würdest und warum und versuche mir nicht kindliche naivität vorzuschmeissen.
Danke!
IGNORE=true;
Gruß,
coolblue
Hallo coolblue,
Mal abgesehen davon, dass ich nicht Struppi bin -- du liest doch so gerne:
http://www.snafu.priv.at/jargon/html/P/perfect-programmer-syndrome.html
Hallo EisFux,
sorry! War in Gedanken bei der Antwort von Struppi.
immernoch
Ja und immer noch mit schrecklich vielen Vorurteilen behaftet.
Danke und schönes Wochenende.
Gruß,
coolblue
Sorry ...
*ganz kleinlaut*
Jetzt habe ich mich beim Kopieren der Adresse verhauen, gemeint war:
http://www.snafu.priv.at/jargon/html/R/Real-Programmer.html
Hallo,
jetzt interessiert mich noch immer _deine_ Meinung :-)
http://www.leo.org/information/freizeit/fun/pascal.html
Gruß,
coolblue
Die erste Programmiersprache (siehe Link), mit der ich ernsthafte Anwendungen geschrieben habe, hat Variablendeklarationen verlangt. Da ich vorher nur diverse Basic-Dialekte (u. A. KC-Basic) und Assembler bedient habe, war es anfangs lästig, Variablen immer erst zu deklarieren und dann zu benutzen. Irgendwann hatte ich mich daran gewöhnt und gut wars. Als ich dann das erste Mal mit Perl zu tun bekam, war ich erstaunt, dass "eine moderne Sprache" noch solchen "Unsinn" zulässt, einfach mitten im Code neue Variablen zu definieren.
Natürlich ist es deprimierend, die Logfiles anzusehen, die "use warnings" präsentiert. Aber es macht auch irgendwie stolz, wenn die Warnmeldungen nicht mehr auftreten.
Wenn ich mit mehreren Leuten Software entwickeln muss, müssen die meine Geistesblitze lesen und nachvollziehen können (umgekehrt natürlich genauso).
Die meisten Web-Anwendungen leiden vor allem deshalb unter Sicherheitslücken, weil Daten einfach nicht überprüft werden, bevor man sie weiterverarbeitet. Wenn ich mir das "Register_Globals=On"-Elend bei PHP anschaue, dann bleibe ich lieber bei meinem Sicherheitsdenken.
IMHO wäre Perl aber die richtige HL-Sprache für dich ("real programmer"). Es gibt für jedes programmiertechnische Problem unendlich viele Lösungen, und vor allem: superelegante (und für Anfänger völlig unverständliche) Kurz- und Sonderschreibweisen von Programmkodes.
--
Link: Amiga-E (erinnert an Pascal -- gruselig, oder? ;-)
http://wouter.fov120.com/e/
Hallo EisFux,
hmmm... hört sich sehr überzeugend an und ich halte mich nicht für so gut, jeden Fehler und vor allem jede Gefahr von selber zu erkennen. Ich werde mir die Pragmas und die Sicherheitsmodule mal anschauen, allerdings werde ich mich wohl nie mit dem Pragma -T anfreunden können. Also denn...
danke für dein umfangreiches Kommentar.
Gruß,
coolblue
Hallo,
Hi!
sind diese "Hilfen" ein Muss oder ein Luxus, auf den man verzichten kann?
Ich bezeichne sauberes Programmieren (use strict und -w) und sichere Programme (-T) nicht als Luxus, sondern als sinnvoll und in gewissen Fällen (z.B. Webanwendungen) als notwendig an.
Bisher habe ich meine Programme auf Unix- und Linuxsystemen mit der Kornshell entwickelt.
Du meinst Shell-Scripte? Respekt!
Nun fange ich mit Perl an, weil jegliche Shell meinen neuen Anforderungen nicht gewachsen ist.
Der Respekt ist gerechtfertigt.
Die Deklaration von Variablen in Perl ist mir nicht unbekannt, da ich schon kleinere Funktionen in C geschrieben habe und dort eine Deklaration zwingend vorgeschrieben ist. Aber gerne würde ich auf die Deklaration mit my, our und local verzichten.
Wieso denn? Da weißt du wenigstens, welche Variablen du hast und was am Anfang in ihnen steht. Für kleine Programme mag das nützlich sein, aber bei größeren "Projekten" macht das echt Sinn. Außerdem sieh es mal so: In dem du dich auch mit deinen Daten beschäftigst, kannst du gewisse Fehler im Vorfeld ausschließen.
Ich habe schon viele Programme gesehen und auch selber geschrieben, die weder use strict noch die Pragmas -w oder -T benützen, nur verfalle ich dann sehr schnell bei den sogenannten selbsternannten Superprogrammierern in Ungnade, wenn ich all diese "Hilfen" nicht benutze.
Also in der Perl-Manual heißt es, dass jedes Programm so anfangen sollte:
#! /pfad/zu/perl -w
use strict;
-T schon eine gewisse zusätzliche Komplexität ins Programm ein, weil man jede Variable von außen erst einmal "reinigen" muss. Für viele Fälle denke ich, ist das ein wenig zu paranoid, weil man durchaus seinen Anwendern trauen kann. Für CGI-Programme würde ich es aber immer empfehlen.
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen.
Es gibt Gelegenheiten, da hat man ohne goto Probleme. Aber diese Diskussion pro-contra goto ist schon so alt wie die höheren Programmiersprachen. Es gab mal seinerzeit ein Bashing mit Don Knuth, such mal nach "goto considered harmful" und "'goto considered harmful' considered harmful".
Denn immerhin ist es eine mögliche Funktion, warum sollte ich sie nicht verwenden? Die Gefahren, ein Endlos-Script zu programmieren, kann mir auch mit jeder while, for, unless, do etc. Schleife passieren!
Da verlierst du aber u.U. nicht Daten, was dir passieren kann, wenn du zwischen Funktionskörpern hin und her springst.
Gruß,
coolblue
Schönes Wochenende,
Robert
Hallo Robert,
Du meinst Shell-Scripte? Respekt!
Ja, Kornshell deshlab, weil es eine der schnellsten ist und ein paar Funktionen mehr mitbringt als die gewöhnliche Shell. Obwohl ich manchmal dazu neige, die Bash auf Linuxsystemen zu gebrauchen.
Nun fange ich mit Perl an, weil jegliche Shell meinen neuen Anforderungen nicht gewachsen ist.
Der Respekt ist gerechtfertigt.
Danke.
Wieso denn? Da weißt du wenigstens, welche Variablen du hast und was am Anfang in ihnen steht. Für kleine Programme mag das nützlich sein, aber bei größeren "Projekten" macht das echt Sinn. Außerdem sieh es mal so: In dem du dich auch mit deinen Daten beschäftigst, kannst du gewisse Fehler im Vorfeld ausschließen.
Ok, ich werde das in Erwägung ziehen, obwohl mich das Pragma -T oft wirklich stört, vor allem, wenn externe self-Programme aufrufen möchte.
Gruß,
coolblue
Halihallo coolblue
sind diese "Hilfen" ein Muss oder ein Luxus, auf den man verzichten kann?
Ist Zeit ein Luxus? - Dann sind auch diese Hilfen ein Luxus, den sie
ersparen Zeit.
Das mag der eine oder andere der erst gerade anfängt mit Perl zu
programmieren zwar bestreiten, aber am Ende wird auch er es einsehen.
Naja, ich würde sagen es ist besser, bereits am Anfang damit zu
arbeiten, als es nachher mühsam erlernen bzw. einarbeiten zu müssen
(glaube mir, ich spreche aus Erfahrung).
Aber gerne würde ich auf die Deklaration mit my, our und local verzichten. Ich habe schon viele Programme gesehen und auch selber geschrieben, die weder use strict noch die Pragmas -w oder -T benützen, nur verfalle ich dann sehr schnell bei den sogenannten selbsternannten Superprogrammierern in Ungnade, wenn ich all diese "Hilfen" nicht benutze.
Nun, ich möchte dir wirklich raten auf die kleinen Helferlein nicht
zu verzichten. Sie meckern zwar oft irgendwas an und das mag den
einen oder anderen nerven (besonders wenn's ja ohne auch
funktioniert...), aber, sie meckern zurecht...
Es lässt sich darüber streiten, ob jetzt immer alles mit allen
use strict;
use warnings;
und Tainted-Mode (-T) programmiert werden muss, aber ich halte
zumindest use strict für sehr hilfreich. use warnings kommt als
zweites und "-T" - nun ja... Geschmacks- und Kontextsache.
Welchen Rat könnt ihr mir geben?
Manch einer sagt, dass die Meldungen stören und die Programme ohne
immer schneller zum Laufen kommen. Nun, aus Erfahrung kann ich sagen,
dass man mit der Zeit sowieso meistens "richtig" (also ohne
Warnungen) programmiert und somit eigentlich keine Meldungen mehr
bekommt. Und falls dann doch mal eine auftritt, ist man sehr froh
darum, denn es war meistens ein Fehler, den man sonst nicht gefunden
hätte.
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen. Denn immerhin ist es eine mögliche Funktion
Goto ist eine Statement/Anweisung :-)
warum sollte ich sie nicht verwenden? Die Gefahren, ein Endlos-Script zu programmieren, kann mir auch mit jeder while, for, unless, do etc. Schleife passieren!
Das ist richtig. Goto's wirken sich nachteilig auf die Wart- und
Lesbarkeit von Code aus, deshalb wird allgemein davon abgeraten.
Viele Grüsse
Philipp
Hallo Philipp,
Goto ist eine Statement/Anweisung :-)
so meinte ich das auch nicht. Etwas zum "funktionieren" bringen :-) das geht auch mit goto.
thx again!
Gruß,
coolblue
... Aber gerne würde ich auf die Deklaration mit my, our und local verzichten. Ich habe schon viele Programme gesehen und auch selber geschrieben, die weder use strict noch die Pragmas -w oder -T benützen, nur verfalle ich dann sehr schnell bei den sogenannten selbsternannten Superprogrammierern in Ungnade, wenn ich all diese "Hilfen" nicht benutze.
Mein Hochachtung!
Dann bist du der Superprogrammierer. Du vertippst dich nie (natürlich kann man sich mit my auch vertippen nur dadurch fällt es auf) und findest bei 1000 Codezeilen noch jede Sprungadresse wieder und weißt welche Variabel deklariert ist und welchen Wert sie hat.
wenn du das alles wirklich überschaust, dann bist du wirklich ein Superprogrammierer. Ich kann es nicht.
Trotzdem versteh ich nicht warum goto braucht. Ich hab mit dem C64 angefangen und lange mit QBasic programmiert, da war goto noch obligatorisch. Aber seit ich das erstemal Kontakt mit C++ hatte kam ich nie mehr überhaupt auf die Idee irgendwo ein goto zu verwenden.
Struppi.
Dann bist du der Superprogrammierer. Du vertippst dich nie (natürlich kann man sich mit my auch vertippen nur dadurch fällt es auf) und findest bei 1000 Codezeilen noch jede Sprungadresse wieder
Genau, Tippfehler passieren, da hilft auch keine Deklaration!
und weißt welche Variabel deklariert ist und welchen Wert sie hat.
Ja, Doku ist das a und o bei mir! Ausserdem sind 1000 Zeilen nichts! Bei 10000 Zeilen käme ich schon ins Schwitzen! Aber wie geschrieben, Doku ist alles! Ausserdem kannst du eine Variable Deklarieren und sie troztdem innerhalb des Programms ausversehen überschreiben.
wenn du das alles wirklich überschaust, dann bist du wirklich ein Superprogrammierer. Ich kann es nicht.
_Doch_ das kannst du!
Trotzdem versteh ich nicht warum goto braucht. Ich hab mit dem C64 angefangen und lange mit QBasic programmiert, da war goto noch obligatorisch. Aber seit ich das erstemal Kontakt mit C++ hatte kam ich nie mehr überhaupt auf die Idee irgendwo ein goto zu verwenden.
Ich rede nicht von heute, sondern es gab Zeiten, da hat mich sich des goto's gerne erleichtert.
Ausserdem gibt es noch immer simple Batchjobs, wo ein goto wirklich nicht schadet.
Gruß,
coolblue
Dann bist du der Superprogrammierer. Du vertippst dich nie (natürlich kann man sich mit my auch vertippen nur dadurch fällt es auf) und findest bei 1000 Codezeilen noch jede Sprungadresse wieder
Genau, Tippfehler passieren, da hilft auch keine Deklaration!
Aber use stirct führt das Programm gar nicht aus. Ohne hast du igrendwelche Werte und Variabeln nach einem Tippfehler.
und weißt welche Variabel deklariert ist und welchen Wert sie hat.
Ja, Doku ist das a und o bei mir! Ausserdem sind 1000 Zeilen nichts! Bei 10000 Zeilen käme ich schon ins Schwitzen! Aber wie geschrieben, Doku ist alles! Ausserdem kannst du eine Variable Deklarieren und sie troztdem innerhalb des Programms ausversehen überschreiben.
klar, aber wenn du überschaubare Funktionen oder gar Kalssen hast ist der Bereich und Zugriff streng limitiert mit goto springst du irgendwo hin.
Wenn du allerdings goto in einer Funktion anwendest ist mir das ein Rätsel, kannst du dafür ein sinnvolles Beispiel nennen?
wenn du das alles wirklich überschaust, dann bist du wirklich ein Superprogrammierer. Ich kann es nicht.
_Doch_ das kannst du!
Klar, aber nicht mehr, wenn ich wild hin und her springe.
Ausserdem gibt es noch immer simple Batchjobs, wo ein goto wirklich nicht schadet.
Wenn du von Perl sprichst, ist es mir nachwievor ein Rätsel warum goto irgendeine Erleichterung bringen soll. aber das kann wie gesagt daran liegen das ich gar nicht mehr weiß wie man es einsetzt.
Struppi.
Hallo Struppi,
Wenn du von Perl sprichst, ist es mir nachwievor ein Rätsel warum goto irgendeine Erleichterung bringen soll. aber das kann wie gesagt daran liegen das ich gar nicht mehr weiß wie man es einsetzt.
nein, Perl meinte ich nicht. Bis dato war mir die Möglichkeit von goto in Perlprogrammen ungewiss. Aber ich werde davon absehen.
Danke für deine Meinung, schau dir noch meinen Thread mit dem Link an... bis dann!
Gruß,
coolblue
http://www.leo.org/information/freizeit/fun/pascal.html
Trotzallem werde ich die "Sicherheiten" die geboten werden hin und wieder, vor allem bei größeren Projekte, in Anspruch nehmen.
Danke!
Gruß,
coolblue
Moin,
sind diese "Hilfen" ein Muss oder ein Luxus, auf den man verzichten kann?
Bisher habe ich meine Programme auf Unix- und Linuxsystemen mit der Kornshell entwickelt. Nun fange ich mit Perl an, weil jegliche Shell meinen neuen Anforderungen nicht gewachsen ist. Die Deklaration von Variablen in Perl ist mir nicht unbekannt, da ich schon kleinere Funktionen in C geschrieben habe und dort eine Deklaration zwingend vorgeschrieben ist. Aber gerne würde ich auf die Deklaration mit my, our und local verzichten. Ich habe schon viele Programme gesehen und auch selber geschrieben, die weder use strict noch die Pragmas -w oder -T benützen,
Das ist ein toller Plan. Was meinst du was variablen ohne my declaration sind? sie sind global, wenn du also in allen subs ohne my arbeitest hast einen kuddel muddel vorm herrn, abgesehen vom speicherverbraucht der dadurch natürlich in die höhe schnellt.
Das sind wahrscheinlich keine Programme, sondern eher kleine Skripte, wie du bis jetzt auch mit der Kornshell geschrieben hast.
Genauso gehöre ich zu den "Programmieren", die sich nicht davor scheuen "goto" zu benutzen. Denn immerhin ist es eine mögliche Funktion, warum sollte ich sie nicht verwenden?
Dann solltest du vielleicht einmal in Erwägung ziehen dich nicht mit 30 Jahren alten Programmiersprachen zu beschäftigen, sondern das Konzept _neuer_ Programmiertechniken zu verstehen.
|Die Gefahren, ein Endlos-Script zu programmieren, kann mir auch mit jeder while, for, unless, do etc. Schleife passieren!
der compiler/interpreter kann dir dabei aber gegebenenfalls eine Warnung ausgeben oder einen Fehler, was bei goto nicht passiert.
Bert
Schon wieder jemand, der nur unfreundlich losgröllen, vorurteilhafte Kommentare vor sich hinschmeissen und sich für _den_ Programmierer hält.
Obwohl ich gerne zu dem 3. Satz deiner Anwort eine nähere Erklärung von dir hätte.
Danke Bert.
ansonsten... IGNORE=true;
Gruß,
coolblue
der compiler/interpreter kann dir dabei aber gegebenenfalls eine Warnung ausgeben oder einen Fehler, was bei goto nicht passiert.
while(1) { print "hello world"; }
:1
echo hello world
goto 1
hmmm... welcher Compiler/Interpreter gibt mir deiner Meinung nach hier einen Fehler aus? Egal in welcher Sprache!
Ich bin wirklich neugierig, dass hat nichts mit Ironie zu tun!
Du hast mich nicht verstanden bezüglich goto... also lass es!
Gruß,
coolblue
Hallo coolblue,
hmmm... welcher Compiler/Interpreter gibt mir deiner Meinung nach hier einen Fehler aus? Egal in welcher Sprache!
Keiner, schließlich kann man das ja durchaus wollen. Außerdem ist es im allgemeinen nicht entscheidbar, ob eine while-schleife terminiert oder nicht.
Zu deineer Frage:
use strict und use warnings sollte man meiner Meinung nach bei jedem richtigen Programm, dass länger als ein paar Zeilen ist, verwenden.
Wenn man sie nicht verwendet kann man verdammt viel Fehler machen, ohne dass sich das irgendwie auswirkt. Aber in irgend einem Sonderfall oder wenn man das Programm erweitert, fliegt einem das Ding um die Ohren und es ist sehr viel schwieriger, solche Fehler dann zu beheben, als sie erst gar nicht zu machen.
Für goto gilt: Man kann alles, was man mit Programmen tun kann ohne goto tun und es macht Programme unübersichtlich. Es mag sein, dass es Fälle gibt, in denen eine Implementierung dadurch kürzer wird, aber einen Algortihmus, den man damit lesbarer implementieren kann, hab ich noch nicht gesehen.
for-Schleifen sollten im übrigen immer terminieren (vorausgesetzt, sie enthält nicht irgendetwas, was nicht terminiert)
Mit for-Schleifen, bei denen innerhalb der Schleife an der Zählervariable geschraubt wird, sollte man aufpassen, da auch das den Code schwieriger verständlich macht. Es gibt aus guten Grund Programmiersprachen die das verbieten.
Grüße
Daniel
Hallo Daniel,
das ist mir alles sehr verständlich, jetzt.
Ich hatte bisher nur Shell (ksh) programmiert und da war ich nie auf solchen Luxus angewiesen. Debuggen musste ich selber, denn ich hatte keinen Compiler, der mir freundlichst Warnungen mitteilte, ausser natürlich Syntaxfehler und selbst das nicht immer.
Aber da ich sowas nun nutzen kann, werde ich es gerne bei größeren Programmen einsetzen.
Merci!
Gruß,
coolblue
gudn tach!
for-Schleifen sollten im übrigen immer terminieren
for(;1;){print "bollabolla";}
(vorausgesetzt, sie enthält nicht irgendetwas, was nicht terminiert)
*huestel*, ach so...
prost
seth
gudn tach!
for-Schleifen sollten im übrigen immer terminieren
for(;1;){print "bollabolla";}
(vorausgesetzt, sie enthält nicht irgendetwas, was nicht terminiert)
*huestel*, ach so...
prost
seth
LOL
Gruß,
coolblue
Hallo seth,
for-Schleifen sollten im übrigen immer terminieren
Ich meinte damit, dass man sie so schreiben sollte, dass sie das tun.
for(;1;){print "bollabolla";}
Diese Syntax ist sowieso unglücklich, ein
for(i in 1..n) {...}
gefällt mir da z.B. viel besser.
Die for Schleifen, die im Kopf gleich zu erkennen geben, dass sie keine for-Schleifen sind, sind natürlich noch harmlos. Besonders elegant finde ich so ein Konstrukt trozdem nicht.
Grüße
Daniel