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)

War es hilfreich?

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

Quelle

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top