33 votes

Comment Perl a-t-il gagné la réputation d'être une langue écrite seulement ?

Comment avez-Perl gagner une réputation (méritée, imméritée, ou utilisé à être mérité, n'est plus le cas) d'être un "écriture seule langue"?

Il a été

  • La syntaxe de la langue
  • Caractéristiques spécifiques qui étaient disponibles dans la langue
  • Caractéristiques spécifiques ne sont pas disponibles dans la langue (ou au moins anciennes versions)
  • Le genre de tâches Perl a été utilisé pour
  • Le genre de personnes qui utilisent Perl (les gens qui ne sont pas à temps plein programmeurs)
  • Les critiques de gens engagés dans une autre langue
  • Quelque chose d'autre?

Contexte: j'aimerais savoir si certains aspects qui ont donné Perl la réputation d'être l'écriture seule aussi s'appliquer à d'autres langues (spécialement ruby).

Avertissement: je reconnais que Perl ne force pas les gens à faire de l'écriture que du code (peut importe la langue?), et que vous pouvez écrire du mauvais code dans n'importe quelle langue.

Edit: Si raisonnable, décrivent les aspects de la langue qui font qu'il est en écriture seule sujettes à de manière non-programmeurs Perl peut comprendre.

64voto

brian d foy Points 71781

Je ne pense pas qu'il avait vraiment quelque chose à voir avec Perl, mais l'accident de l'histoire que Perl est devenu populaire dans les années 1990.

Quand le grand boom de l'Internet qui se passait, n'importe qui avec une impulsion pourrait obtenir un emploi en tant que programmeur (ou un chef de la direction, visionnaire, peu importe). Perl, ayant une faible courbe d'apprentissage, a été utilisé par beaucoup de gens qui n'en savons pas vraiment plus sur la programmation de base de Perl ils récupérés à partir d'exemples. Ils n'ont pas vraiment se soucier de la qualité ou de l'apprentissage de la programmation, mais ont été l'espoir d'encaisser de certains gros succès sur internet. C'était le far West de programmation, et il n'y avait pas assez expérimentés, chefs d'équipe (le cas échéant dans la plupart des endroits) pour faire quoi que ce soit. Le code, ils ont pompé était horrible, mais tout ce qui vit pour toujours sur l'internet. Plus de gens copié les exemples de merde qu'ils ont vu. Beaucoup de gens comptaient sur la programmation génétique accidentellement: découpage, collage, et ajuster jusqu'à ce que les choses fonctionnent sans compréhension de tout ça.

Et, au début du boom de l'internet, il n'y avait pas un logiciel pour faire le genre de choses que les gens voulaient le faire sur leurs pages web. Si ils ont trouvé un script à partir d'environ 15 ans, ils ont juste utilisé. Ils avaient obtenir un autre enfant de faire quelques changements, et ainsi de suite. Je ne fais pas cela, et je suis en train de réfléchir très réel à des gens que je ne vais pas honte publiquement. Ça s'est passé autour de libéralement. Les gens ont construit ensemble de plans d'affaires d'environ 100 ligne de scripts Perl qu'ils ont trouvé sur le Net, ne comprenais pas, et n'a jamais prévu de réécrire. Certains d'entre nous ont des cicatrices de l'onu-fubaring les situations où ils ont frappé l'extensibilité de la paroi (non, vous ne pouvez pas avoir de 40 000 abonnés de la fourche et un processus pour chacun d'eux toutes les cinq minutes).

Perl a aussi l'avantage que c'est en partie conçu pour être très accessible. "Régulières" les gens peuvent obtenir un peu fait avec juste les trucs dans l'Apprentissage du langage Perl, qui n'est que la base, et seulement environ 400 pages. Car cette partie de l'auditoire a très peu de fond de la programmation, ils viennent souvent avec d'intéressantes pistes à leurs problèmes. Ils oublient pourquoi ils pavées tellement bizarre indésirable ensemble, mais ils ne veulent pas changer tout ça parce qu'ils ne savent pas comment résoudre le problème.

Rappelez-vous, cela n'a rien à voir avec l'intelligence ou de l'intelligence. C'est surtout une expérience de problème. "Bébé Perl" est très facile à utiliser pour les novices, ou "accidentelle" de programmeur. Ces personnes, généralement des soins de plus sur d'autres tâches que de la programmation, de sorte qu'ils n'ont pas vraiment de itératif de développement et d'amélioration. Quand elles sont proches d'une solution, n'importe comment laide, ils ont tendance à arrêter. Malheureusement, c'est beaucoup de code que le public voit.

Ruby a l'avantage de voir son essor après le point.de la bombe, et il a commencé avec une communauté qui a surtout su bonnes techniques de programmation déjà et je voulais juste un meilleur langage. Je ne pense pas que Ruby a eu les mêmes problèmes pour cette raison. Les gens n'étaient pas de se précipiter à la mine de l'internet de l'or, le Rubis du progrès et de la communauté, l'évolution a été beaucoup plus sain d'esprit. Ce n'est pas un accident que 37 Signaux aime Ruby et un beau design. :)

36voto

daotoad Points 17916

Un couple de choses ont contribué à la Perl écrire seulement de réputation.

  1. Comme brian l'a noté, la popularité dans le début de la bulle internet.
  2. Perl est très souple et très expressif. Il vous donne plus que suffisante pour se pendre.
  3. Perl possède des caractéristiques non conventionnelles (sigils, le contexte, la liste argument fondé sur la réussite et dynamique de la portée, et la première classe regexes, pour n'en nommer que quelques-uns) que faire se comportent différemment des autres langages de programmation.
  4. Perl est une grande et profonde de la langue. Alors que vous pouvez commencer cette dernière vaquant autour de la première journée, vraiment comprendre la profondeur des détails prend du temps et de l'expérience.
  5. Rétro-compatibilité avec Perl 4 ajoute des caractéristiques inhabituelles.
  6. Mauvais de nombreux tutoriels existent que de promulguer une mauvaise ou obsolète techniques.

Combinez toutes ces choses et vous obtenez beaucoup de mauvais code.

Les dernières années ont vu les grands efforts déployés par la communauté Perl pour souligner la bonne technique. Des outils comme Perl::Critic et perltidy aider beaucoup.

Je vois des posts sur ALORS, où les gens attendent de Perl pour agir comme un langage de script shell. Ils aléatoirement inclure des fichiers (quelque chose qui est commun, en vertu de Perl 4), et de débourser les sous-processus lorsque intégré dans les fonctions de facilement gérer les tâches à portée de main. Ces postes sont en général de nouvelles personnes à Perl, j'ai donc supposer qu'ils sont en quelque sorte trouver des livres ou des tutoriels écrits dans le début et le milieu des années 90 que montrer ce genre de choses.

J'ai vu quelques monstrueusement mauvais Perl. Mais j'ai également vu incroyable, incroyablement élégante code. L'expressivité qui permet à un imbécile sol sa literie permet également la plus sage des chefs d'écrire mieux, plus propre code.

15voto

Pavel Shved Points 34706

Pour moi, la principale raison pour Perl étant en écriture seule est une énorme quantité de façons de faire les choses simples tout en manquant de la plus simple.

Quand vous lisez le code, vous lisez les expressions idiomatiques, et vous juxtaposer les modèles que vous voyez avec des motifs qui sont dans votre tête. Mais si il y a beaucoup de façons de faire des choses simples (par exemple, trouver un indice d'un élément dans un tableau), vous aurez à réfléchir plus lorsque vous êtes en train de lire, ou de garder plus de modèles dans votre esprit. Et ces modèles ont tendance à vite devenir incroyablement difficile morceaux de code.

Il y a une question complète de solutions de comment trouver un élément dans un tableau; quelques réponses lien vers perlfaq et Perlmonks nœuds. Vérifier le nombre de variantes pour voir de quoi je parle.

Alors que 100% de Ruby utilisateurs écrira array.index(x).

Certaines personnes disent qu'ils sont surpris que le code Ruby ils écrivent à résoudre des problèmes simples est très similaire à ce que d'autres écrivent pour les résoudre. Pour Perl, chaque programmeur a son propre ensemble de favori des expressions idiomatiques (peut-être même à évoluer au cours d'un même script), et les codes les choses différemment. Peut-être, c'est la raison.

9voto

rjh Points 17192

Perl est fortement influencé par les langues naturelles. Il y a plusieurs façons d'exprimer code en Perl parce qu'il y a de multiples façons de s'exprimer en anglais.

Vous pouvez écrire un bon anglais, ou vous pouvez écrire un mauvais anglais. Les deux faire passer le message, le premier prend plus d'effort sur votre partie de celle-ci nécessite plus d'efforts de la part du lecteur.

Perl permet de faire le travail sans aucune pensée pour des raisons de lisibilité. Cela peut être un avantage lors de l'écriture de one-liners ponctuels ou des scripts. Il vous permet également d'écrire idiomatiques, facile à comprendre le code. (Si vous pouvez obtenir passé les sigils, ce qui est.) Perl peut l'échelle de one-liners jusqu'à "l'entreprise", selon la façon dont vous l'utiliser.

De retour dans la dot com boom beaucoup de gens ont écrit beaucoup de mauvaises Perl. Mais vous pouvez écrire du mauvais code dans n'importe quelle langue. Perl seulement la rend plus facile.

5voto

Alex Budovski Points 8932

Tous les one-liners que les gens avaient l'habitude d'écrire pour automatiser les choses! Les scripts ponctuels. La notion de TMTOWTDI.

Toutes ces choses contribuent à la réputation de perl-bruit de ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X