Warum ist 'liest' 'liest' in Perl genannt?
-
06-07-2019 - |
Frage
Was ist der historische Grund zu dieser last
in Perl aufgerufen wird, dass anstatt break
wie es in C genannt wird?
Das Design von Perl wurde von C beeinflusst (zusätzlich zu awk, sed und sh - siehe Manpage unten)., So muss es einige Überlegungen gewesen sein hinter nicht mit der bekannten C-Stil Namensgebung Pause / letzten gehen
Ein wenig Geschichte von der Perl 1.000 (veröffentlicht 18. Dezember 1987) man-Seite:
[Perl] kombiniert (in der Meinung des Autors, sowieso) einige der besten Eigenschaften von C, sed, awk und sh, so dass Menschen mit diesen Sprachen vertraut sollen wenig Schwierigkeiten damit haben. (Sprache Historiker werden auch einige Spuren von csh, Pascal beachten und sogar BASIC |. PLUS)
Lösung
Die Semantik der ‚Pause‘ oder ‚letzter‘ ist durch die Sprache (in diesem Fall definiert, Perl), nicht von Ihnen.
Warum nicht denken ‚letzten‘ wie „das ist die letzte Anweisung für die laufen Schleife“.
Es ist mir immer als seltsam, dass die ‚Continue‘ Anweisung in ‚C‘ beginnt die nächster Durchlauf einer Schleife. Das ist auf jeden Fall eine seltsame Verwendung der Konzept von „weiter“. Aber es ist die Semantik von 'C', so Ich akzeptiere es.
Durch den Versuch, insbesondere zur Karte Programmierkonzepte in einzelne Englisch Wörter mit bestehenden Bedeutung es gibt immer eine Art sein würde Mismatching Kuriosität
Plus, Larry Wall ist irgendwie komisch. Haben Sie sein Bild gesehen?
(Quelle: wired.com )
Andere Tipps
Ich gehe davon aus, dass dies, weil Perl von einem Linguisten erstellt wurde, kein Informatiker. Im normalen englischen Sprachgebrauch, das Konzept zu erklären, dass Sie Ihren letzter Durchgang durch eine Schleife abgeschlossen haben stärker an einem das Wort „letzten“ ( „Dies ist die letzte paßt“) als auf das Wort " break“( " brechen die Schleife brechen aus der Schleife"? "?" - nicht einmal klar ist, wie "Pause", um die Schleife beziehen soll Verlassen).
Der Begriff ‚letzter‘ macht mehr Sinn, wenn man bedenkt, dass man es mit mehr als nur der unmittelbaren Looping Steuerung verwenden kann. Sie können es an markierte Blöcke eine oder mehrere Ebenen gelten oben der Block ist in:
LINE: while( <> ) {
WORD: foreach ( split ) {
last LINE if /^__END__\z/;
...
}
}
Es liest mehr natürlich in Englisch „liest“ zu sagen, wenn Sie es als „letzte Zeile, wenn sie paßt ...“ lesen.
Theres einen zusätzlichen Grund, den Sie vielleicht prüfen:
Zuletzt ist mehr als nur Schleifensteuerung.
sub hello {
my ( $arg ) = @_;
scope: {
foo();
bar();
last if $arg > 4;
baz();
quux();
}
}
Zuletzt als solche ist ein allgemeiner Flusssteuerungsmechanismus nicht beschränkt auf Schleifen. Während natürlich können Sie die oben als Schleife verallgemeinern, die höchstens 1 mal läuft, mir das Fehlen einer Schleife zeigt „Break? Was wir aus? Brechen“
Stattdessen denke ich an "last
" als "in die Position Wechsel der letzten Klammer", die für diesen Zweck ist, mehr semantisch sinnvoll.
Ich fragte die gleiche Frage zu Damian Conway über say
. Perl 6 einführen wird say
, die nichts mehr als print
ist, die automatisch eine neue Zeile hinzufügt. Meine Frage war, warum nicht einfach echo
verwenden, weil das ist, was echo
tut in Bash (und wahrscheinlich auch anderswo).
Seine Antwort lautete:. echo
ist 33% länger als say
Er hat es einen Punkt. :)
Weil es an den letzten der Schleife geht. Und weil Larry Wall ein seltsamer Typ war.