12
votes

Pourquoi «dernier» appelé «dernier» à Perl?

Quelle est la raison historique à ce que dernier est appelé qu'à Perl plutôt que break tel qu'il est appelé en C?

La conception de Perl a été influencée par C (en plus de AWK, SED et SH - voir la page de l'homme ci-dessous), il a donc dû y avoir un raisonnement derrière ne pas aller avec le nommage familier de style C de la pause / dernier. < / p>

Un peu d'histoire du Perl 1.000 (publié le 18 décembre 1987) Page Man:

[Perl] combine (à l'avis de l'auteur, de toute façon) certaines des meilleures caractéristiques de C, SED, AWK et SH, afin que les personnes familiarisent avec ces langues devraient avoir peu de difficulté avec elle. (Les historiens de la langue noteront également quelques vestiges de CSH, Pascal et même de base | Plus.)


7 commentaires

Parce que Perl n'est pas c?


Perl a été influencé par beaucoup de choses. Il a fallu les choses Larry aimé et laissé derrière les choses qu'il n'aimait pas. Ne donnez pas trop de poids au patrimoine C.


Comment se fait-il que cette question a une prime lorsqu'une des réponses a une citation directement de Larry Wall qui répond exactement? Quelle meilleure réponse fait-elle que quiconque espère obtenir?


Brian: voyez-le comme un conseil pour l'excellente réponse.


Si c'est une pointe pour une excellente réponse, donnez-la à la réponse qui cite directement de Larry Wall pour y répondre. Encore une fois, quelle meilleure réponse attendez-vous?


Brian: La réponse de Roboto a maintenant été acceptée.


Quelle est la ruée? La générosité fut fixée pour finir aujourd'hui ou demain. Ne sois pas aussi poussé.


6 Réponses :


5
votes

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


14 commentaires

Eh bien, je voulais dire qu'il était bizarre quand il l'a nommé, mais le point bien pris.


Pourquoi était-il bizarre quand il a nommé un opérateur après un mot que les personnes normales utiliseraient pour la décrire? Ce sont les geeks informatiques qui pensent que nous devrions penser comme des microprocesseurs étranges.


@brian: bon point. Cependant, si ce n'est pas cassé - ne le répare pas!


@surfrbum qui soulève la question que ce n'était pas cassé. 'Break' ne correspond pas à la suivante ou à Redo. Je sais que vous essayez simplement d'être une glib, mais cela n'aide pas chose.


"Dernier" pour moi dit "faire la dernière itération de la boucle", pas "sortir de la boucle entièrement". C'est ce qui est bizarre à ce sujet.


@brian: Hey mec, c'est cool. À chacun ses goûts. Il est logique que la plupart d'entre nous d'être «pause» et non de «enfin» mais nous pourrions probablement débattre de la publicité infinitum


@surfrman: La pause n'aurait jamais de sens pour vous, sauf si vous l'avez appris d'un langage de programmation précédent. "Dernier" est parfaitement logique pour les personnes qui n'ont pas été infectées.


@brian: Si vous le dites. Bonne journée.


D'accord, prenons une pause. Enfin.


@Leonardo: m'a pris une minute, mais je l'ai eu maintenant! ;)


@Paul - Pour moi, "Dernière" dit "c'était la dernière fois que nous avons fait cette boucle." C'est peut-être parce que Perl était ma langue maternelle et je suis juste habitué à son contrôle de boucle géniale.


@brian D FOY - Ne vous inquiétez pas! C'est comme une maladie infectieuse de la programmation. Pour SomerSeason, je trouve souvent que tout ce qui ne correspond pas à un "C mentalité" est considéré comme bizarre ... (à quelle fréquence utilisez-vous la phrase "parsemé libre" dans la vie Afk: 1. Lorsque vous sortez de la prison, 2. ...?)


@LDIGAS: Les mots en anglais ont plusieurs significations. Juste parce que l'utilisation la plus courante d'un mot n'est pas la signification utilisée dans un langage de programmation ne signifie pas que cela n'a pas de sens. Qu'en est-il de "pour"? Les langages de programmation ne sont pas des langues naturelles. "Break 'Signification" Sortie du bloc actuel' (la pause est non seulement utilisée pour les boucles en C) est parfaitement logique. Vous sortez de la prison, vous vous libérez des problèmes, vous prenez une pause du travail, vous rompez à l'écart du pack ... La signification est parfaitement claire. Ce n'est peut-être pas le choix le plus évident pour ce verbe en C, mais ce n'est pas ambigu ni déroutant.


"En essayant de cartographier des concepts de programmation particuliers en mots anglais simples avec un sens existant, il va toujours s'agir d'une bizarrerie incompatible"



33
votes

La sémantique de "pause" ou "dernier" sont défini par la langue (dans ce cas Perl), pas par vous.

Pourquoi ne pas penser à "Dernier" comme "c'est la dernière déclaration à courir pour le boucle ".

Ça m'a toujours frappé comme étrange que le "Continuer" relevé dans 'C' commence la Suivant passe d'une boucle. C'est définitivement une utilisation étrange de la concept de "continuer". Mais c'est le Sémantique de 'C', donc je l'accepte.

En essayant de cartographier Programmer les concepts en une seule Mots anglais avec la signification existante Il va toujours d'être une sorte d'une bizarrerie incompatible

Source

plus, Larry Wall est un peu étrange. Avez-vous vu sa photo?

 Wall Larry
(source: wiref.com )


3 commentaires

Je pensais qu'ils avaient brûlé toutes les photos de lui dans d'autres chemises hawaïennes.


La photo de Larry est bizarre? En comparaison avec ces gars? upload.wikimedia.org/wikipedia/commons/3/36/ken_n_dennis. JPG


@Idigas: Ok, tu m'as eu là!



17
votes

Je m'attends à ce que cela soit parce que Perl a été créé par un linguiste, pas un informaticien. En anglais normal, le concept de déclarer que vous avez terminé votre passe final via une boucle est plus fortement connecté au mot "dernier" ("C'est le dernier pass")) que sur le mot " Break "(" pause la boucle "?" pause hors de la boucle "? - Ce n'est même pas clair comment" Break "est destiné à la confidentialité de la boucle).


5 commentaires

"Perl a été créé par un linguiste" est-ce pourquoi cela ressemble à un bruit?


Pouvons-nous s'il vous plaît ignorer la langue bashing? Je n'aime pas l'espace blanche syntaxiquement significative, je n'utilise donc pas Python - mais je ne fais pas non plus de chercher des occasions de dire à tout le monde que Python est nul. Si vous n'aimez pas les sigils (ma meilleure hypothèse sur ce que vous entendez par «ressemble à un bruit de ligne»), alors c'est parfaitement bien. N'utilisez pas Perl, PHP, Ruby ou Toute autre langue qui les utilise. Mais devez-vous vraiment faire le tour du net faisant des commentaires hors sujets sur votre aversion pour eux?


@Dave - Ne vous inquiétez pas. En fait, j'aime bien la langue bashing - c'est comme dans la vie réelle - seulement des spectacles qui se sent menacés par qui.


@Liranuna - Parce qu'il a été fait avec l'intention d'être difficile à apprendre et facile à utiliser. Après tout, vous n'avez besoin que d'apprendre la fois.


@Larelogio - "Faire une escapade", avec le mot-clé pause remplacé par "escapade"? ;-)



10
votes

Il y a une raison supplémentaire que vous voudrez peut-être envisager:

dernier fait plus que le contrôle de la boucle. xxx

en dernier Un mécanisme général de contrôle de débit n'est pas limité aux boucles. Bien sûr, vous pouvez généraliser ce qui précède comme une boucle qui fonctionne au plus 1 fois, l'absence d'une boucle pour moi indique "pause? Qu'est-ce qu'on fait sortir de?"

à la place, je pense à " Dernier " comme "saute à la position du dernier dernier BRACE", qui est à cette fin, plus raisonnable.


1 commentaires

Dans ce cas, je pense en fait que "pause" a du sens - nous sortons du bloc, pour aller à ce qui vient ensuite, de la même manière que nous sortons d'une boucle pour arriver à ce qui se passe ensuite. C'est juste que la syntaxe de C de C ne peut pas utiliser u utilement cette utilisation de la dernière / pause, car si les déclarations fonctionnent et l'absence de break



14
votes

Le terme «dernier» a plus de sens lorsque vous vous rappelez que vous pouvez l'utiliser avec plus que le contrôle de boucle immédiat. Vous pouvez l'appliquer à des blocs étiquetés un ou plusieurs niveaux ci-dessus Le bloc qu'il est dans: xxx

Il lit plus naturellement de dire "dernier" en anglais lorsque vous le lisez comme "dernière ligne si elle correspond ...".


4 commentaires

Vous voyez, c'est ce que je considère bizarre à ce sujet. "Dernière ligne" ne va pas à la ligne pendant une dernière fois, il va à l'arrière-plan de toute ligne de contrôle étiquetage. Cela va quelque part qui a une connexion très ténue à l'étiquette qu'il mentionne.


Eh bien, je le vois différemment. Il me dit "La chose que vous travaillez est la dernière". C'est comme au poker si je dis "c'est ma dernière main"; Cela ne signifie pas que je vais jouer un de plus.


@Paul: Je pense que la compréhension doit venir de votre expérience de programmation existante. Je ne connais aucune langue qui a une déclaration qui dit "D'accord, quittez l'itération actuelle, puis commencez une autre itération, mais arrêtez-vous après cela." Donc, je ne m'attendais pas à ce que "dernier" de faire ça. Compte tenu du choix entre quelque chose comme "Continuer" et quelque chose comme "Break", il est plus évident que "Suivant" de Perl et "dernier" doit signifier.


@Adam: Je suis d'accord avec Continuer vs Suivant, mais ce qui me semble que "sortir de la boucle". Dernière semble avoir plusieurs significations.



6
votes

Je posais la même question à Damian Conway sur dire . Perl 6 introduira dire , qui n'est rien de plus que Imprimer qui ajoute automatiquement une nouvelle ligne. Ma question était pourquoi ne pas simplement utiliser echo , car c'est ce que écho est à bash (et probablement ailleurs).

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

Il a un point là-bas. :)


2 commentaires

Je pense que cela explique pourquoi Perl est utilisé comme langue de golf.


Vous pouvez utiliser Say avec Perl 5.10 aussi. Utiliser la fonctionnalité qw'say ' ou Feature Utiliser ": 5.10 ou Utilisez 5.010 ou Utilisez 5.10.1 (< Code> Utiliser 5.10.0 donne un avertissement sur Perl 5.10.0)