Question

Quelle est la raison historique pour que dernier soit appelé comme dans Perl plutôt que break comme il est appelé dans C?

Le design de Perl a été influencé par C (en plus de awk, sed et sh - voir la page de manuel ci-dessous). Il doit donc y avoir une certaine raison à ne pas utiliser la dénomination familière de C / Style, break / last.

Un peu d’histoire tirée de la page de manuel Perl 1.000 (publiée le 18 décembre 1987):

  

[Perl] combine (de l’avis de l’auteur, en tout cas) certaines des meilleures fonctionnalités de C, sed, awk et sh, de sorte que les personnes familiarisées avec ces langues ne devraient avoir aucune difficulté à l’utiliser. (Les historiens des langues noteront également quelques vestiges de csh, Pascal et même de BASIC | PLUS.)

Était-ce utile?

La solution

  

La sémantique de 'break' ou 'last' est   défini par la langue (dans ce cas   Perl), pas par vous.

     

Pourquoi ne pas penser à "dernier" en tant que "cela est   la dernière instruction à courir pour le   boucle ".

     

Il m’a toujours semblé aussi étrange que le   La déclaration 'continue' en 'C' commence la   prochain passage d'une boucle. C'est   certainement une utilisation étrange de la   concept de "continuer". Mais c'est le   sémantique de 'C', alors je l'accepte.

     

En essayant de mapper un particulier   concepts de programmation en single   Mots anglais avec sens existant   il y aura toujours une sorte   d'incohérence discordante

Source

De plus, Larry Wall est un peu bizarre. Avez-vous vu sa photo?

 Larry Wall
(source: wired.com )

Autres conseils

Je suppose que cela tient au fait que Perl a été créé par un linguiste et non par un informaticien. En anglais normal, l’idée de déclarer que vous avez terminé votre dernière passe dans une boucle est plus étroitement liée au mot "last". ("Ceci est le dernier dernier") au mot "pause". ( rompre la boucle " rompre en dehors de la boucle" - on ne sait même pas exactement comment "pause" est censé se rapporter à la sortie de la boucle) .

Le terme "dernier" prend tout son sens lorsque vous vous rappelez que vous pouvez l'utiliser avec davantage que le contrôle de boucle immédiat. Vous pouvez l'appliquer à des blocs étiquetés d'un ou plusieurs niveaux supérieurs le bloc dans lequel il se trouve:

 LINE: while( <> ) {
      WORD: foreach ( split ) {
           last LINE if /^__END__\z/;
           ...
           }
      }

Il est plus naturel de dire "dernier" en anglais lorsque vous le lisez en tant que "dernière ligne si elle correspond ...".

Voici une raison supplémentaire à considérer:

Last ne se limite pas au contrôle de boucle.

sub hello {
  my ( $arg ) = @_; 

  scope: { 
      foo(); 
      bar(); 
      last if $arg > 4; 
      baz(); 
      quux(); 
  }
}

Le dernier en tant que tel est un mécanisme général de contrôle de flux qui ne se limite pas aux boucles. Bien sûr, vous pouvez généraliser ce qui précède comme une boucle qui s'exécute au plus une fois, l'absence de boucle pour moi indique "Break?" De quoi sortons-nous? "

À la place, je pense à " dernier ". en tant que "Aller à la position de la dernière accolade", ce qui est plus sage sur le plan sémantique.

Je posais la même question à Damian Conway à propos de dire . Perl 6 présentera say , qui n'est autre que print qui ajoute automatiquement une nouvelle ligne. Ma question était pourquoi ne pas simplement utiliser echo , parce que c'est ce que echo fait dans Bash (et probablement ailleurs).

Sa réponse était: echo est 33% plus long que dites .

Il a un point là-bas. :)

Parce que ça va jusqu'au dernier bout de la boucle. Et parce que Larry Wall était un gars étrange.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top