Comme vous le demandez en 2014, il serait intéressant de se concentrer sur les idéologies des langages de programmation du contexte de 1997 par rapport au contexte actuel. Je ne vais pas entrer dans ce débat ici, mais les opinions sur Perl et sur Perl lui-même ont beaucoup changé.
Cependant, pour rester dans un contexte 2013 ( de l'eau un sous les ponts coulé DEPUIS), je suggère de mettre l' accent sur la reconstitution de citations en utilisant une célèbre bande dessinée XKCD qui est une citation directe de Jamie Zawinski One :
Tout d' abord , j'ai eu des problèmes à comprendre cette bande dessinée parce qu'il était une référence à la Zawinski citation, et une citation d'un paroles de chansons de Jay-z, et une référence de GNU program --help -z
drapeau 2 , donc, il était trop culture pour moi de le comprendre.
Je savais que c'était amusant, je le ressentais, mais je ne savais pas vraiment pourquoi. Les gens font souvent des blagues sur Perl et les regex, d'autant plus que ce n'est pas le langage de programmation le plus branché, vous ne savez pas vraiment pourquoi c'est supposé être amusant ... Peut-être parce que les meneurs de Perl font des bêtises .
Donc, la citation initiale semble être une blague sarcastique basée sur des problèmes réels (douleur?) Causés par la programmation avec des outils qui font mal. Tout comme un marteau peut faire mal à un maçon, programmer avec des outils qui ne sont pas ceux qu'un développeur choisirait s’il pouvait peut faire mal (le cerveau, les émotions). Parfois, de grands débats sur l'outil est le meilleur produit, mais il est presque sans valeur parce que c'est un problème de votre goût ou votre goût de l' équipe de programmation , culturelles ou économiques raisons. Une autre excellente bande dessinée XKCD à ce sujet:
Je peux comprendre les personnes qui ressentent de la douleur à propos des regex, et ils croient qu'un autre outil est mieux adapté à l'usage pour lequel les regex sont conçus. Comme @ karl-bielefeldt répond à votre question avec une grande expressivité, il y a une grande responsabilité , et les expressions rationnelles sont particulièrement concernées par cela. Si un développeur ne s'inquiète pas de la façon dont il gère les expressions rationnelles, cela finira par être pénible pour les personnes qui conserveront le code ultérieurement.
Je terminerai avec cette réponse à propos de la reconstitution de citations par une citation montrant un exemple typique tiré des meilleures pratiques Perl de Damian Conw (un livre de 2005).
Il explique qu'écrire un motif comme celui-ci:
m{'[^\\']*(?:\\.[^\\']*)*'}
... n'est pas plus acceptable que d'écrire un programme comme celui-ci :
sub'x{local$_=pop;sub'_{$_>=$_[0
]?$_[1]:$"}_(1,'*')._(5,'-')._(4
,'*').$/._(6,'|').($_>9?'X':$_>8
?'/':$")._(8,'|').$/._(2,'*')._(
7,'-')._(3,'*').$/}print$/x($=).
x(10)x(++$x/10).x($x%10)while<>;
Mais cela peut être réécrit , ce n’est toujours pas joli, mais au moins il est maintenant possible de survivre.
# Match a single-quoted string efficiently...
m{ ' # an opening single quote
[^\\']* # any non-special chars (i.e., not backslash or single quote)
(?: # then all of...`
\\ . # any explicitly backslashed char
[^\\']* # followed by any non-special chars
)* # ...repeated zero or more times
' # a closing single quote
}x
Ce type de code de forme rectangulaire est le deuxième problème, pas les expressions rationnelles pouvant être formatées de manière claire, facile à gérer et lisible.