106 votes

Différences entre Perl et PHP

J'ai l'intention d'apprendre le Perl 5 et que je n'ai utilisé PHP jusqu'à maintenant, je voulais savoir un peu comment les langues diffèrent les uns des autres.

En tant que PHP a commencé comme un ensemble de "Perl hacks" il a évidemment cloné certains de Perls fonctionnalités.

  • Quelles sont les principales différences dans la syntaxe? Est-il vrai qu'avec Perl vous avez plus d'options et de possibilités d'exprimer quelque chose?

  • Pourquoi est-Perl utilisé pour les sites web dynamiques très souvent plus? Ce qui fait de PHP gagne plus de popularité?

51voto

Lorsque PHP est arrivé sur les lieux, tout le monde a été impressionné par les principales différences entre Perl:

  1. Variables d'entrée déjà dans la portée globale, pas d'analyse ennuyeuse.
  2. Intégration HTML. Juste <?php ... ?> n'importe où. Pas de modèles ennuyeux.
  3. Messages d'erreur à l'écran. Pas d'erreur ennuyeuse journal pics.
  4. Facile à apprendre. Pas de lecture de livre ennuyeux.

Au fur et à mesure que le temps passait, tout le monde a appris qu'ils n'étaient pas un avantage, hehe ...

23voto

Duncan Points 1196

J'ai remarqué que la plupart des PHP vs Perl pages semblent être de la

PHP est mieux que Perl parce que <insérer la lame raison ici>

ilk, et rarement de faire des comparaisons raisonnables.

Syntaxe-sage, vous trouverez PHP est souvent plus facile à comprendre que Perl, en particulier lorsque vous avez peu d'expérience. Par exemple, de découper une chaîne de caractères d'attaque et de fuite des espaces dans des de PHP est tout simplement

$string = trim($string);

En Perl, il est un peu plus cryptique

$string =~ s/^\s+//;
$string =~ s/\s+$//;

(Je crois que c'est légèrement plus efficace qu'une simple ligne de capture et de le remplacer, et aussi un peu plus compréhensible.) Cependant, même si PHP est souvent plus similaire à l'anglais, il est parfois montre encore ses racines comme un wrapper pour les bas niveau C, par exemple, strpbrk et strspn sont probablement rarement utilisé, car la plupart des PHP stylistes écrire leurs propres fonctions équivalentes pour quelque chose de trop ésotérique, plutôt que de passer du temps à explorer le manuel. Je me demande aussi à propos de programmeurs pour qui l'anglais est une langue seconde, tout le monde est sur un pied d'égalité avec les choses comme Perl, d'avoir à apprendre à partir de zéro.

J'ai déjà mentionné le manuel. PHP dispose d'une amende manuel en ligne, et, malheureusement, il a besoin d'elle. J'ai encore de la consulter de temps en temps pour des choses qui devraient être simples, telles que l'ordre des paramètres ou de la fonction de convention de nommage. Avec Perl, vous trouverez probablement vous rapportant au manuel d'utilisation d'un lot que vous obtenez commencé et puis un jour, vous aurez un a-ha moment et n'ont jamais besoin de nouveau. Eh bien, au moins pas jusqu'à ce que vous êtes plus avancé et se rendre compte que non seulement il n'y a plus d'une façon, il n'y a probablement une meilleure solution, quelqu'un d'autre a probablement déjà fait il que la meilleure façon, et peut-être vous devriez juste visiter le CPAN.

Perl a beaucoup plus d'options et de possibilités d'exprimer les choses. Ce n'est pas forcément une bonne chose, même si elle permet un code plus lisible s'il est utilisé à bon escient et au moins l'un des moyens qui sont susceptibles d'être familier avec. Il y a certains styles et d'expressions idiomatiques que vous trouverez vous-même de tomber dans et je peux vous recommander chaudement la lecture de Perl Best Practices (et plutôt tôt que tard), avec Perl livre de cuisine, Deuxième Édition se lever à la vitesse sur la résolution de problèmes courants.

Je crois que la raison Perl est utilisé moins souvent dans les environnements d'hébergement partagés, c'est que, historiquement, la perception de la lenteur de la CGI et les hôtes de la réticence à installer mod_perl pour des raisons de sécurité et des problèmes de configuration a fait de PHP une option plus attrayante. Ensuite, le cycle continue, plus les gens ont appris à utiliser le PHP parce que de plus les hôtes, et de plus les hôtes de l'offrir parce que c'est ce que les gens voulaient utiliser. Les différences de vitesse et les questions de sécurité sont rendus moot en FastCGI ces jours-ci, et dans la plupart des cas, le PHP est exécuté de FastCGI ainsi, plutôt que de le laisser dans le coeur du serveur web.

Que ce soit ou non le cas ou il y a d'autres raisons, PHP est devenu populaire, et une myriade d'applications ont été écrites. Pour la majorité des gens qui veulent juste un site web avec un simple blog ou galerie de photos, PHP est tout ce dont ils ont besoin, de sorte que ce que les hôtes se promouvoir. Il devrait y avoir rien de vous empêche d'utiliser Perl (ou n'importe quoi d'autre de votre choix) si vous le souhaitez.

Au niveau de l'entreprise, je doute que vous trouvez trop de PHP dans la production (et s'il vous plaît, pas d'un point à Facebook comme un contre-exemple, je l'ai dit de l'entreprise ).

9voto

Leon Timmermans Points 23230

Perl est largement utilisé pour les sites Web, pas moins que Python et Ruby par exemple. Cela dit, PHP est utilisé beaucoup plus souvent que les autres. Je pense que les facteurs les plus importants dans ce domaine sont la facilité de déploiement de PHP et sa facilité de démarrage.

Les différences de syntaxe sont trop nombreuses pour être résumées ici, mais il est généralement vrai qu’il existe plus de façons de s’exprimer (ceci est connu sous le nom de TIMTWOTDI, il existe plus d’une façon de le faire).

9voto

crimson_penguin Points 1909

Mon préféré chose à propos de Perl est la façon dont il gère les tableaux/listes. Voici un exemple de la façon dont vous voulez faire et d'utiliser une fonction Perl (ou "routine"), ce qui rend l'utilisation de ce pour arguments:

sub multiply
{
    my ($arg1, $arg2) = @_; # @_ is the array of arguments
    return $arg1 * $arg2;
}

En PHP, on pourrait faire quelque chose de similaire avec list(), mais ce n'est pas tout à fait la même; en Perl, les listes et les tableaux sont en fait traités de la même façon (en général). Vous pouvez aussi faire des choses comme:

$week_day_name = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")[$week_day_index];

Et une autre différence que vous DEVEZ savoir à propos de, est numérique/string opérateurs de comparaison. En Perl, si vous utilisez <, >, ==, !=, <=>, et ainsi de suite, Perl convertit les deux opérandes de nombres. Si vous voulez convertir des chaînes de caractères au lieu de cela, vous devez utiliser lt, gt, eq, ne, cmp (les équivalents des opérateurs énumérés précédemment). Des exemples où cela va vraiment vous:

if ("a" == "b") { ... } # This is true.
if ("a" == 0) { ... } # This is also true, for the same reason.

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