Le PHP bashing est "IN" - parce qu'il n'y a rien de mieux pour prouver son prétendu professionnalisme que de s'en prendre à un élément du courant dominant.

Comme beaucoup ici, je travaille avec plusieurs langages, mais le PHP reste l'un de mes préférés.
Bien sûr, la syntaxe C est un peu inconfortable à écrire sur un clavier français. De plus, à mon avis, la lisibilité d'un langage diminue rapidement avec l'augmentation du nombre de caractères au-delà de A-Z, mais cela reste dans les limites avec PHP.

1. "Piles incluses


PHP dispose de nombreuses capacités essentielles "embarquées". Lorsque vous travaillez avec des fichiers zip, des bases de données, FTP ou XML, il n'y a pas de "utiliser", "utiliser" ou "importer" nécessaires pour faire des choses basiques. Vous n'avez pas besoin de vous appuyer en permanence sur des classes ou des dll externes.
Le PHP n'apporte pas tout, mais beaucoup.

2. multiparadigme - programmation procédurale ou orientée objet


Je peux choisir si je conçois un programme de manière descendante ou orientée objet avec des classes. Je peux développer de grands projets orientés objet, de plus petits de manière procédurale - ou vice versa, selon Shakespeare : "As you like it".

3. typage dynamique faible


Un 1 est un 1 : avec PHP, je n'ai pas besoin de le convertir en entier, en flottant ou en chaîne.
Il existe une myriade de sources de données sur le web - bases de données, fichiers texte, XML, ou POST et GET - et je ne veux pas avoir à me soucier d'un type qui pourrait être fourni ou défini dans le programme. J'ai besoin des valeurs et je veux me limiter aux contrôles vraiment nécessaires, logiques et de contenu.
Le web lui-même ne connaît pas la typographie, ni les nombres entiers ou les chaînes de caractères. Et le système de types d'un langage pour le web devrait me soutenir de manière adéquate - mais sans me donner de travail inutile.
La liaison tardive, l'une des caractéristiques essentielles de l'orientation objet, n'est de toute façon possible qu'avec le typage dynamique.

4. indépendant du système d'exploitation et portable


Je peux développer localement sur Windows, servir les pages sur le web sur Linux ou Unix - et vice versa. Sous Windows, je peux utiliser PHP de manière portable sans installation, ce qui est très utile sur les serveurs productifs où aucune installation ne peut être faite. Même des versions différentes peuvent être utilisées sur un même ordinateur sans aucun problème, par exemple pour des tests. Oui, PHP fonctionne aussi sur un Mac, bien sûr.

5. sur le web et en ligne de commande


PHP est un langage pour le web - et maintenant aussi pour les tâches d'administration en ligne de commande via l'interface de ligne de commande, CLI. Le formatage et le transfert de données à forte intensité de calcul pour le web ou à d'autres fins - autrefois le domaine de langages tels que Perl ou VBScript - peuvent être facilement réalisés avec PHP, en utilisant le code PHP existant avec seulement quelques modifications mineures.

6. le PHP est vivant et possède une grande communauté


Il existe une communauté très active et utile d'utilisateurs qui aident dans les forums et les sites web. De la documentation et des exemples de code sont disponibles pour d'innombrables cas d'utilisation.
PHP est également très activement développé et les nouveaux développements et améliorations sont rapidement incorporés dans le langage. 7.

7. de nombreux environnements de développement


Vous avez l'embarras du choix : qu'il s'agisse du simple éditeur, d'outils universels comme PSPad ou Notepad++ ou de puissants IDE comme Eclipse, NetBeans, Dreamweaver ou Zend. Vous avez le choix et n'êtes pas lié à l'existence d'un certain outil à tout moment.

8. interprétées


Avec PHP, le code source est le même que le programme. Quel que soit le processus de développement, vous avez toujours accès au code source qui est exécuté directement. Pas d'application qui ne peut être compilée qu'en arrière-plan avec un environnement de développement spécial et qui ne peut être déployée qu'ensuite.
Un projet peut être ancien et oublié - tant que l'accès FTP est possible, l'accès au code source est également garanti.

9. de nombreux CMS, frameworks et bases de données


Personne ne veut réinventer la roue à chaque fois, mais on veut être capable d'effectuer quelques réglages sur les roues qui ont été livrées. De nombreux CMS et frameworks sont disponibles pour diverses tâches et objectifs. Et si vous connaissez PHP, vous pouvez effectuer des ajustements et des modifications ou écrire vos propres extensions.
Le support des bases de données de PHP est également exemplaire, tous les grands noms sont représentés. Et avec SQLite, une puissante base de données est même directement intégrée.

10. un langage pour le web


Le web n'est ni une application de bureau ni une base de données centrale. Le web est sans état, il peut y avoir des milliers de requêtes en un temps très court, les transactions les plus diverses doivent être traitées par différents systèmes dorsaux. HTML, CSS et JavaScript veulent 


Il s'agit d'une traduction de l'article "SitePoint Smackdown : PHP vs Node.js" de Craig Buckler et des jugements de Bruno Škvorc et James Hibbard.

Du traducteur

Il existe de nombreux articles sur ce sujet avec des analyses de caractérisation qualitative et des prédictions de performance. Cependant, je voulais quand même trouver un article où des programmeurs professionnels partagent leurs points de vue et essaient de donner quelques conseils et avertissements à un nouveau venu qui apprend juste le PHP ou NodeJS (JavaScript côté serveur). Beaucoup n'aiment pas PHP et disent que PHP est conçu pour mourir (oui, il y a un garbage collector qui tue nos variables après l'exécution du script, pas parce qu'il a été abandonné par Rasmus Lerdorf), mais que maintenant on n'apprend pas du tout PHP, alors qu'il fait tourner 80% des sites sur Internet. Donc, si nous voulons être des professionnels et essayer d'élargir nos horizons d'une certaine manière, nous devons clairement séparer les tâches PHP et les tâches NodeJS, au lieu de tout mettre dans le même panier.

"10 rounds de boxeurs de différentes catégories de poids"

Un beau jour, Craig Buckler, de SitePoint.com, a publié une analyse comparative de PHP et de NodeJS appelée "10 rounds" pour déterminer qui est le champion absolu. Cependant, il note en même temps qu'une telle analyse est quelque peu controversée. Par conséquent, pour se divertir, il a invité deux juges à contribuer à ce match de boxe. Il a demandé à Bruno Škvorc (rédacteur de la rubrique PHP de SitePoint.com) et à James Hibbard (rédacteur de la rubrique JavaScript de SitePoint.com) de commenter chacune des manches, coup par coup - score.

Introduction

La programmation Web évolue rapidement et les développeurs back-end doivent choisir entre les poids lourds établis que sont Java, C et Perl et les langages modernes orientés Web tels que Ruby, Clojure et Go. Votre choix fait une énorme différence, imposant sa propre empreinte sur les performances de l'application.

Mais quel choix faire pour le développement web ?

Je ne veux pas faire de chœur mais nous allons parler de PHP et de NodeJS :

PHP - a été créé en 1994 par Rasmus Lerdorf (Rasmus Lerdorf). Il a créé un logiciel shell (interpréteur), qui est installé comme un module pour le serveur web Apache ou Nginx. Il a été conçu à l'origine comme un préprocesseur pour les pages hypertextes, de sorte que PHP pouvait facilement être intégré dans le code HTML. Cependant, ce n'est plus une bonne pratique de nos jours, mais c'était encore une approche évidente pour les nouveaux venus. Cela a contribué à la popularité du langage, si bien que 80% des sites sur Internet sont écrits en PHP, ils font aussi, notamment, tourner le CMS WordPress (20% des sites sur Internet).
Node.js - a été créé en 2009 par Ryan Dahl (Ryan Dahl). Il a créé une plateforme logicielle basée sur le moteur JavaScript V8 de Google. Fait inhabituel, la plate-forme dispose de bibliothèques intégrées pour gérer les demandes et les réponses, de sorte que vous n'avez pas besoin d'utiliser un serveur web tiers ou d'autres dépendances. Node.js gagne du terrain et est utilisé par des entreprises comme Microsoft, Yahoo, LinkedIn et PayPal.

Pourquoi ne parlons-nous pas de C#, Java, Ruby, Python, Perl, Erlang, C++, Go, Dart, Scala, Haskell et autres ?

Lisez-vous un article sur tout et n'importe quoi, avez-vous besoin d'une encyclopédie ? Donc, nous avons limité et réduit à deux célèbres parce que :

1. PHP et Node.js sont orientés vers le web, ils ont tous deux un code source ouvert, ils sont uniquement destinés au développement web.
2. PHP est un langage ancien, mais Node.js, dans notre cas, est un nouveau venu qui gagne en popularité, de sorte que le développeur php devrait s'interroger. Cela vaut-il la peine de changer de technologie ?
3. de nombreux développeurs programment depuis les lointaines années 90 en PHP et JavaScript et ne veulent pas tous passer à d'autres langages de programmation, car ils ne leur accordent pas de crédit.

Les règles du jeu :

Le boxeur dans le coin droit est PHP, le boxeur dans le coin gauche est Node.js. Le vainqueur absolu sera la technologie qui l'emportera par le nombre de rounds.

Premier tour : démarrage rapide

Dans ce tour, nous déterminons à quelle vitesse nous pouvons écrire une page "Hello, world" dans un langage de programmation particulier, en incluant le temps passé à configurer le serveur.

Préparer l'environnement :

 

1) A quelle vitesse pouvez-vous construire une page web "Hello World" en PHP :

<?php
echo 'Hello World !
?>

Ce code peut être écrit n'importe où, généralement le code est écrit dans des fichiers se terminant par l'extension .php. Si vous avez écrit ce code dans le fichier index.php et que vous l'exécutez sur un serveur local sur le port 8000 (sur votre ordinateur, pas sur l'hébergement réel), il sera disponible à l'adresse suivante

http://localhost:8000

Cependant, l'utilisation d'un interpréteur PHP standard avec un serveur intégré n'est pas très fiable. Il est préférable d'utiliser des solutions prêtes à l'emploi, des builds Apache - XAMPP ou un OS virtuel (Vagrant). À propos, vous pouvez télécharger votre fichier sur n'importe quel site d'hébergement sur Internet.

2) L'installation de la plateforme Node.js est facile, si vous travaillez sur des systèmes de type unix, vous pourrez également le faire à l'aide de gestionnaires de paquets. Créons une page index.js :

const http = require('http');

const hostname = 'localhost'; const port = 8000;

http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });

 

Nous avons répété des étapes similaires, le code JavaScript est généralement écrit dans des fichiers se terminant par l'extension .js. Si vous avez écrit ce code dans un fichier index.js et que vous l'exécutez sur un serveur local sur le port 8000 (sur votre ordinateur, pas sur un hébergement réel), il sera également disponible à l'adresse (en supposant que php fonctionne maintenant sur un port différent) :

http://localhost:8000

Maintenant, évaluons le code, même si vous connaissez bien le JavaScript côté client, vous devez réfléchir et comprendre ce qui est écrit ici. Vous devez comprendre les fermetures et les fonctions de rappel, les promesses, la programmation du côté de Node.js demande quelques compétences.

PHP est conceptuellement plus simple et gagne cette manche. Bien que PHP ait quelques dépendances de programmation, il est moins difficile à apprendre.

Notes du jury - PHP 1:0 Node.js

Bruno : Le PHP l'emporte en raison du faible seuil d'entrée. C'est plus une question de perception ici. Ils apparaissent identiques à l'écran et il n'y a pas de différence significative entre eux. En fait, la syntaxe est beaucoup plus facile pour les novices en programmation.
James : Lorsque je développe sur une machine locale, je ne vois pas de différence entre les deux. Pour exécuter un script dans un navigateur, vous devez disposer d'un serveur web et d'un terminal. Pour faire des choses sérieuses avec Node.js, vous devez installer des modules supplémentaires comme express (un framework pour les applications web). Cependant, d'un point de vue conceptuel, PHP est plus simple.

 

Deuxième round : aide et soutien sur le net

Vous n'avancerez pas vraiment dans vos connaissances sans suivre de cours, sans connaître les pratiques modernes, pour vous développer vous devez poser des questions sur des forums tels que - StackOverflow. PHP remporte facilement cette manche, il dispose d'un excellent guide sur php.net et de vingt ans de questions fréquemment posées. Quoi que vous fassiez, quelqu'un a rencontré ce problème et a essayé de le résoudre pour vous.

Node.js a une bonne documentation, mais la technologie est assez jeune, donc les réponses sur les forums, seront beaucoup moins nombreuses.

Évaluation des juges - PHP 2:0 Node.js

Bruno : silencieux.
James : Je suis d'accord. Node.js est une technologie plus jeune, donc le support et la documentation sont moins bons pour le moment. Ce problème, cependant, devient de moins en moins sérieux à mesure que Node mûrit.

Troisième round : la syntaxe du langage

Contrairement à certains langages et frameworks, PHP ne vous oblige pas à travailler d'une certaine manière, et évolue avec vous. Vous pouvez écrire vos petits programmes dans de simples fonctions PHP4, et ils auront un aspect différent du MVC de PHP 5+. Cependant, dans ce cas, votre code pourrait être chaotique, vous ne commencerez à écrire un meilleur code qu'en comprenant certaines choses.

La syntaxe de PHP a changé avec la sortie de nouvelles versions, ce qui a nécessité un travail de rétrocompatibilité. Vous pouvez facilement migrer du code de PHP4 à PHP5. Cependant, en conséquence de cette approche, le PHP est un fouillis.

Par exemple, comment compter le nombre de caractères d'une chaîne de caractères ?

- count() ? str_len() ? strlen() ? mb_strlen() ?

Vous trouverez plusieurs fonctions pour cela dans la documentation, mais en fait, c'est assez simple. En général, il existe de nombreuses fonctions en PHP qui fonctionnent de la même manière. Essayez d'écrire quelques lignes de code sans consulter votre tuteur.

<?php $str = 'Hello world';

$size_1 = count($str);

$size_2 = strlen($str); 

$len = [$size_1, $size_2];

print_r($len); ?>

JavaScript est différent :

var len = ('Hello world').length;

console.log(len);

On constate que JavaScript est à la fois relativement clair, avec plusieurs grandes tendances. Son modèle objet-prototype séduit les développeurs, et la syntaxe semble assez légère, mais elle ne l'est pas. Vous trouverez des critiques sur les erreurs mathématiques (0,1 + 0,2 != 0,3) et la saisie dynamique ('4' + 2 == '42' et '4' - 2 == 2). Mais ces situations posent rarement des problèmes et toutes les langues ont des particularités.

PHP présente de nombreux avantages, mais Node.js l'emporte pour plusieurs raisons :

1. JavaScript semble être le langage le plus obscur du monde, mais une fois que vous avez saisi son concept, les autres langages deviennent encombrants en comparaison.
2. JavaScript est plus minimaliste que PHP, vous n'avez pas à vous battre avec le même UTF-8.
3) Les développeurs complets peuvent écrire du code côté client et côté serveur en JavaScript. Vous ne devez plus passer d'une technologie à l'autre.
Apprendre JavaScript vous donne envie d'écrire dans ce langage de plus en plus souvent, on ne peut pas en dire autant de PHP.

commnent les bibliothèques javascript aident le marché

Évaluation des juges - PHP 2:1 Node.js

Bruno : Je ne suis pas du tout d'accord avec ce point. Bien que PHP ait ses particularités, beaucoup d'entre elles ont été corrigées récemment, et de nombreuses bizarreries ont été supprimées dans les versions les plus récentes. D'un autre côté, c'est exactement la même chose dans le monde JS. En ce qui concerne le côté serveur, je ne suis pas d'accord non plus. Le côté client et le côté serveur sont des choses différentes, et vous devez changer votre cerveau de toute façon, le côté serveur a sa propre syntaxe si nous écrivons en Node.js, si nous écrivons du code JavaScript pour le navigateur. Ayant travaillé avec JS et PHP en mon temps, j'aime de moins en moins le premier, bien que ce soit une préférence purement personnelle.
James : J'adore JavaScript. Je sais qu'il a ses bizarreries, et je sais qu'il y a quelques pièges, mais ECMAScript 2015 corrige beaucoup de choses tout en ajoutant de nouvelles fonctionnalités intéressantes au langage. JavaScript est à la fois puissant et flexible, et peut s'adapter à de nombreux styles de programmation différents. Contrairement à PHP, j'adore écrire en JavaScript. Node.js gagne ce round.

 


Quatrième round : les outils du développeur

Les deux technologies disposent d'une bonne sélection d'éditeurs, d'environnements de développement intégrés, de débogueurs, de validateurs et d'autres outils. Il y a un tirage au sort ici, mais Node.js a toujours un excellent outil, npm - gestionnaire de paquet, c il peut gérer les modules et les dépendances.

PHP possède son propre gestionnaire de paquets, influencé par npm - Composer. Toutefois, si npm est intégré par défaut, composer devra être intégré par lui-même. Grâce à l'utilisation généralisée par npm de Gulp, Grunt - système pour construire les projets frontaux.

Évaluation des juges - PHP 2:2 Node.js

Bruno : Si composer s'est inspiré à l'origine de npm, il est aujourd'hui encore meilleur que npm. Composer n'endommagera pas votre système si vous souhaitez installer deux versions de la même bibliothèque, contrairement à npm. De plus, contrairement à npm, composer peut installer des dépendances récursives, alors que npm ne le peut pas. Npm a également des messages d'erreur absolument horribles qui sont dits "amicaux". Enfin, npm ne fonctionne pas vraiment avec Vagrant, et vous empêche donc de démarrer correctement, sans compter qu'ils ne font pas attention aux souhaits de leurs utilisateurs. Il y avait un bogue ouvert depuis des années qui le rendait inutilisable pour les utilisateurs de Windows - ce qui n'est pas une petite base d'utilisateurs. PHP a sa part de bogues, bien sûr, des bogues stupides aussi, mais ceux-ci n'ont pas fait disparaître des systèmes d'exploitation entiers pendant des années.
James : J'adore npm. Il est facile à utiliser et il existe des milliers de paquets disponibles pour presque tous les besoins. J'aime aussi le fait que npm vous laisse choisir entre l'installation globale et locale des paquets (contrairement à des langages comme Ruby, où c'est la norme pour vos gems). Des outils comme bower et grunt occupent une place permanente dans mon travail et ont permis d'augmenter ma productivité à plusieurs reprises.

Cinquième tour : sur quel Support ?

Où ces technologies peuvent-elles être utilisées ? Comment peuvent-ils être déployés ? Quelles sont les plateformes prises en charge ? Les développeurs Web ont souvent besoin de créer des applications qui ne concernent que le Web, comme le développement de services en ligne, les scripts de conversion de données, etc.

Vous pouvez développer des applications de bureau ou des utilitaires de console avec PHP, mais en général, PHP est utilisé du côté serveur, et va rarement au-delà.

Il y a quelques années, JavaScript était utilisé exclusivement pour le navigateur. Avec l'arrivée de Node.js, vous pouvez écrire des applications de bureau et mobiles, et vous pouvez également programmer des microcontrôleurs. Node.js a repoussé les limites de JavaScript.

Note des juges - PHP 2:3 Node.js

Bruno : Tout d'abord, nous comparons PHP à Node.js, pas PHP à JS. Deuxièmement, nous comparons les langues et les environnements où elles peuvent fonctionner. Dire qu'un singe est meilleur qu'un poisson parce que le poisson n'a pas réussi à monter dans l'arbre est tout simplement stupide. Mais les singes et les poissons savent tous deux nager, alors comparons leurs performances.
James : Plusieurs des caractéristiques qui rendent Node.js si populaire (vitesse, évolutivité, compatibilité JSON, faible utilisation des ressources) lui permettent d'être utilisé pour de nombreuses autres applications, comme l'alimentation du développement de microcontrôleurs (IoT). Je veux dire, qui n'aime pas les robots ?


Sixième round : intégration.

Vos techniques de développement seront limitées si elles ne peuvent pas s'intégrer aux bases de données et aux pilotes. Le PHP est fort dans ce domaine. Le développement existe depuis des années et ses extensions système vous permettent de travailler directement avec n'importe quel hôte utilisant une API.

Node.js rattrape rapidement son retard, mais vous pouvez vous efforcer de trouver des composants d'intégration modernes pour les anciens éléments.

Note des juges - PHP 3:4 Node.js

Bruno : Je vais donner un match nul ici. PHP a l'avantage de l'âge, ce qui lui donne plus de fonctionnalités, mais vous pourriez souffrir ici aussi, de certaines intégrations dépassées, comme l'extension MySQL, dont ils ont finalement réussi à se débarrasser en PHP7.
James : Je ne suis pas sûr d'être d'accord avec ça. J'aurais espéré un exemple de "choses plus anciennes et moins populaires dans la technologie". L'un des principaux avantages de Node.js est qu'il comprend le JSON. JSON est probablement le format le plus important pour échanger des données sur le web ou interagir avec des bases de données NoSQL. Lorsque vous travaillez avec Node.js, les données peuvent se présenter sous forme de couches soignées sans qu'il soit nécessaire de les reformater. Vous disposez d'une seule syntaxe pour communiquer avec la base de données.

Septième série : hébergement et déploiement

Est-il facile de déployer une nouvelle application sur un vrai serveur web ? C'est une autre victoire nette pour PHP. Tout service d'hébergement Web prend en charge PHP. Vous pouvez obtenir une base de données MySQL à un prix avantageux. Ici, PHP est beaucoup plus facile à mettre en sandbox (serveur local) et vous serez informé exactement des extensions PHP qui sont désactivées et de celles qui ne le sont pas.

Node.js est une bête tout à fait différente, et il peut fonctionner sur le côté serveur tout le temps, sans rupture. Pour cela, vous devrez rechercher des services d'hébergement spécialisés. Vous aurez besoin d'un nuage virtuel (VDS/VPS, environnement serveur, avec accès complet). Malheureusement, tous les hébergeurs ne peuvent pas se le permettre, et les prix seront donc appropriés.

Évaluation des juges - PHP 4:4 Node.js 

Bruno : silencieux.
James : Dans le futur, Node.js va rattraper beaucoup de choses. En général, le serveur web PHP est distribué avec MySQL. Pour voir du code php, il suffit de créer un fichier avec une extension .php et d'insérer du code <?php et ?>, de télécharger le fichier sur le serveur et de spécifier dans la barre d'adresse le chemin d'accès à ce fichier. On ne peut pas en dire autant de Node.js. Il existe, bien sûr, de nombreuses options d'hébergement pour Node.js, mais elles nécessitent invariablement une configuration plus détaillée et un accès en ligne de commande, ce qui peut décourager les débutants.

Huitième round : performance.

PHP n'est pas en reste et il existe des projets et des options réels qui permettent à PHP de fonctionner plus rapidement. Même le développeur PHP le plus exigeant s'inquiète rarement de la vitesse, mais les performances de Node.js ont tendance à être meilleures. Bien sûr, les performances sont largement le résultat de l'expérience et du développement de l'équipe, mais Node.js présente plusieurs avantages :

1. Moins de dépendances.


Toutes les demandes adressées à une application PHP doivent être dirigées vers un serveur web qui exécute un interpréteur PHP qui traite le code et le rend. Node.js n'a pas besoin de beaucoup de dépendances et, bien que vous utilisiez presque certainement un framework sur le serveur, comme express, il est assez léger et gère une partie de votre application.

2. interprète rapide.


Node.js est plus petit et plus agile que RNR. Cela est dû à l'héritage de Google qui a énormément contribué aux performances du moteur JavaScript - V8.

3. Les applications fonctionnent en permanence


RNR fonctionne selon le modèle client-serveur habituel. Chaque demande de page initie l'application, charge les paramètres de connexion à la base de données, récupère des informations et affiche le code HTML. Dans Node.js, l'application fonctionne en permanence et ne doit être initialisée qu'une seule fois. Par exemple, vous pouvez créer un objet de connexion à la base de données qui est réutilisé pour les nouvelles demandes. Il est vrai qu'il existe des moyens d'implémenter ce comportement en PHP en utilisant des systèmes spéciaux comme memcached, mais ce n'est pas une fonctionnalité standard du langage.

4. Flux d'E/S non bloquant et piloté par les événements.


PHP et la plupart des autres langages côté serveur utilisent un modèle de verrouillage évident. Lorsque vous faites une demande pour extraire des informations d'une base de données, la demande s'exécute et termine le processus avant de passer à l'instruction suivante. Dans Node.js, les choses sont différentes. Avec Node.js, vous n'avez pas à attendre. Au lieu de cela, vous pouvez créer une fonction de rappel qui, en écoutant le processus, s'exécute une fois l'action terminée.

Bien que les applications Node.js soient sensiblement plus rapides que les applications PHP, il existe quelques pièges.

Node.js / JavaScript s'exécute dans un seul thread, alors que la plupart des serveurs web sont multithreads et traitent les demandes en parallèle. L'écriture de code asynchrone est complexe et comporte ses propres défis.

Jugement - PHP 4:5 Node.js

Bruno : Les idées fausses sont nombreuses. Premièrement, les discussions sur la performance sont sans objet. Les éventuels gains de performance dépendent uniquement de l'expérience du développeur et du type d'application. Mais même si ce message n'est pas convaincant, voici quelques-uns de mes propres arguments : PHP fonctionne parfaitement avec un serveur web intégré multithread, il vous permet de ne pas utiliser entièrement un serveur externe, mais il n'est pas (encore) recommandé. Il existe également des serveurs ultra-rapides comme Nginx, qui permettent de faire tourner PHP et de lui déléguer des requêtes en toute transparence. Des projets comme HHVM et Appserver ajoutent de puissants aspects asynchrones et multithreading, PHP7 lui-même deviendra beaucoup plus puissant avec une mise à jour de version. Oui, l'application php n'est statique et ne vit qu'une fois par requête, mais cela peut aussi être contourné : memcached, ajax. Par défaut, les applications JS côté serveur s'exécutent en une seule requête. PHP par contre doit constamment faire des requêtes à la page pour la mettre à jour, mais en plus - la durée de vie d'une seule requête n'est qu'un avantage, car nous refaisons la requête à PHP, notre application est récupérée (à chaque fois que la requête est utilisée), quand elle est utilisée, ainsi nous évitons les problèmes de mémoire, garbage cleaning.


James : Node.js est distribué en tant que plateforme d'application à haute performance et faible latence. Avec son mécanisme d'E/S non bloquant et la technologie V8 de Google Chrome, Node.js est devenu synonyme des mots "rapide" et "évolutif". De nombreuses histoires racontent comment Node.js a apporté de sérieux gains de productivité aux entreprises et a produit des gains de productivité aux développeurs eux-mêmes. J'en suis heureux, mais encore une fois, c'est un point discutable.

Neuvième manche : la passion de la programmation

C'est une comparaison un peu difficile, mais relativement peu de développeurs PHP sont passionnés par le langage lui-même. À quand remonte la dernière fois où vous avez lu un article de PHP ou regardé une présentation qui a captivé un public ? Peut-être tout ce qui a été dit ? Peut-être y a-t-il moins de fascination ? Peut-être que vous ne cherchez pas aux bons endroits ? Certaines caractéristiques intéressantes sont plus récentes, comme l'arrivée de PHP7, mais cette technologie existe depuis plusieurs années. Cela a affecté le langage lui-même, de nombreux développeurs ont commencé à critiquer PHP.

JavaScript divise la communauté. Il y a ceux qui l'aiment et ceux qui le détestent, peu de développeurs sont assis sur la barrière. Cependant, les réactions sur Node.js ont été largement positives et la technologie est sur la crête d'une vague. C'est en partie parce qu'il s'agit d'une nouveauté. Pour l'instant, c'est Node.js qui remporte la palme.

Note des juges - PHP 4:6 Node.js

Bruno : Vous ne cherchez certainement pas aux bons endroits. La communauté PHP est incroyablement passionnée et très active. Il y a plus de 20 conférences majeures par an et des sujets étonnants y sont abordés. L'émergence de HHVM et de PHP7 se fait également sentir. J'aimerais également dire qu'il est intéressant de voir que les développeurs de Node.js n'ont toujours pas appris à changer les numéros de version (version v0.12.5 au moment de la rédaction), même après 6 ans de développement. De nombreuses immaturités, combinées à de vieux bogues critiques mais ignorés, peuvent faire disparaître des systèmes d'exploitation entiers, ce à quoi un développeur sérieux réfléchirait à deux fois. Je n'aime pas Node.js. Mon aversion est basée sur des expériences négatives, principalement avec npm. Peut-être que cela changera à l'avenir, mais pour l'instant, je suis plein de peur et de désespoir lorsque je dois utiliser Node.js une fois de plus. Nous avons tous nos préférences, mais il est important de rester objectif, nous devons choisir le bon outil pour notre travail. Il est également important de reconnaître que choisir le bon outil implique parfois de choisir le mauvais. N'écoutez pas les autres. Essayez vous-même - voyez ce qui fonctionne, découvrez ce que vous ressentez. En fin de compte, c'est ce que vous faites qui vous fait vous sentir productif et c'est le meilleur choix, pas celui qui vous donne quelques millisecondes de plus.
James : C'est très chaud dans la communauté Node.js. Il y a beaucoup de découvertes dans le monde de Node.js. Même si ma passion est subjective, je suis heureux que Node.js ait gagné ce tour.

Round 10 : L'avenir.

Le langage que vous utilisez côté serveur n'a pas vraiment d'importance, il fonctionnera même si le projet est abandonné. De nombreuses personnes continuent à utiliser PHP. C'est un pari sûr et son soutien semble assuré pour les vingt prochaines années.
Cela dit, nous savons que l'ascension de Node.js a été rapide. L'approche moderne du développement est évidente puisqu'elle utilise la même syntaxe que du côté client. JavaScript prend en charge HTML5, les sockets web. Node.js prend inévitablement des parts de marché, mais PHP, je doute qu'il les dépasse. Ces deux technologies ont un grand avenir. Je déclare que ce round se termine par une égalité.

Note des juges - PHP 5:7 Node.js

Bruno : silence.
James : Une égalité était un résultat équitable de ce tour. Node.js est une étoile montante, mais il ne peut pas détrôner l'énorme PHP. Pour conclure, j'ajouterai que si votre outil ressemble à un marteau, alors chaque problème ressemble à un clou. Node.js n'est pas parfait pour tous les scénarios, et il est vraiment préférable de réfléchir plusieurs fois à quand, et où, il est judicieux de l'utiliser. Cependant, là où Node.js est mauvais, il est même très bon. Vous serez en mesure de faire un choix éclairé et de choisir le meilleur outil pour votre travail.

Gagnant absolu.

Le score final est de 5:7 en faveur de Node.js. Node.js a une courbe d'apprentissage abrupte et n'est pas idéal pour les développeurs novices, mais il est tout de même gagnant. Simple. Si vous êtes un programmeur JavaScript compétent qui aime son langage, Node.js ne vous décevra pas. Vous vous sentirez plus frais et aurez une expérience libératrice du développement web. Mais ne négligez pas le PHP. PHP est vivant, et il n'y a guère de raison de mettre un pied dans le PHP parce qu'il semble à la mode. PHP est plus facile à apprendre, vous pouvez maîtriser les techniques professionnelles de programmation, l'essentiel étant la pratique. PHP est très facile à déployer sur le serveur. Même les développeurs Node.js les plus obstinés devraient utiliser PHP pour les sites et applications simples.

Mon conseil est d'évaluer vos options et de choisir une langue en fonction de vos besoins. C'est beaucoup plus pratique que de se fier aux pour et aux contre ! 

 


Le PHP moderne façonnera la pensée de la POO : un entretien avec Maxim 


Maxim Shamaev est un DevOps chez Skyeng et un membre bien connu de la communauté des développeurs PHP. Dans une interview pour le blog Hexlet, Maxim parle de l'état du langage, du marché du travail, des outils de développement PHP et du lien entre le commerce et la programmation. Selon Maxim, PHP a de grandes perspectives et le langage est adapté aux débutants. Notre invité estime que le langage évolue dans la bonne direction. WordPress dominera l'internet pendant de nombreuses années encore et les entreprises auront toujours besoin de programmeurs PHP. Détails ci-dessous.

PHP est bien vivant, mais Python s'insinue sur le Web : Maxim Shamaev parle de l'état du langage


- Maxim, je propose de diviser notre conversation en plusieurs blocs. La première sera consacrée à l'état du langage, puis nous parlerons du marché du travail, des CMS et des frameworks basés sur le PHP et de l'avenir du développement PHP.

- Oui, allons-y.

- La quasi-totalité de l'internet fonctionne avec PHP. Selon diverses sources, jusqu'à 80 % des sites web fonctionnent avec PHP. À lui seul, WordPress fait fonctionner environ 30 % de tous les sites et environ 60 % des sites qui utilisent un CMS. Pourquoi pensez-vous que les gens discutent ensuite de la question de savoir si PHP est vivant ou non ?

- Ecoutez, tout commence par un but. Chaque langue a un but, et il y a des personnes et des entreprises qui sont à l'origine de cette langue. Autrefois, en 2010, par exemple, lorsqu'un programmeur créait son entreprise, il venait sur le web et travaillait en PHP. À l'époque, cette langue était "super-super" et tout le monde l'apprenait.

Maintenant, il y a une classe d'entreprises qui viennent soit de l'intelligence artificielle, soit de la science des données, et il y a Python. De plus, Python, du point de vue des universités, est un langage plus fin. On peut s'en plaindre, mais en général, cette langue est plus fine et plus riche. Il possède des opérateurs surchargeables, il peut empiler des objets. En d'autres termes, il s'agit d'un langage pour les mathématiciens, qui est incroyablement efficace pour travailler avec des données mathématiques.

Python est de plus en plus enseigné dans les instituts et les universités, parce que les enseignants l'apprécient, et aussi parce que l'étudiant après avoir maîtrisé ce langage sera capable de coder des mathématiques, une sorte de Big Data ou d'intelligence artificielle. C'est proche des instituts. C'est pourquoi une génération de programmeurs connaissant Python s'est formée au cours des cinq dernières années. Ils créent une entreprise, ils viennent sur le web, et ils font quelque chose en Python.

Il y a ici une nuance : ces personnes arrivent sur le marché, commencent à chercher des pythonistes, cherchent - mais sur le marché, 80% des programmeurs sont en PHP. Ils se trouvent ici dans une position inconfortable. Leur code étant déjà écrit en Python, ils recyclent les programmeurs PHP. Il s'avère qu'une nouvelle couche de programmeurs qui font du business, dans celle-ci la partie qui est responsable de l'intelligence artificielle travaille en Python, et la représentation web ils font aussi automatiquement en Python - pour ne pas utiliser deux langages. C'est ainsi que Python se retrouve sur le web.

Après tout, tout entrepreneur fait des affaires avec ses mains et son cerveau. Quel langage de programmation il connaît, c'est dans ce langage que son produit sera écrit. Auparavant, je connaissais PHP, parce qu'il n'y avait pas d'autre langage. En effet, tous les CMS sont réalisés en PHP. Et c'est pourquoi PHP n'abandonne pas sa position.

Imaginez un homme d'affaires qui va créer des sites web pour les petites entreprises. Il regarde ce qu'ils font sur le marché, et voit que presque tous ces sites font sur WordPress. Ensuite, il choisit également WordPress. Et WordPress est écrit en PHP. Tout vient donc de l'entreprise : quelle entreprise, quelle langue. 

- PHP est-il plutôt vivant ou plutôt mort ?

- Bien sûr que c'est vivant.

- À quoi sert PHP en 2020 ? Quelle est sa portée ou sa niche ?

- Il s'agit de tout ce qui est associé au Web : des sites simples à certains grands projets. Par exemple, le même Skyeng est réalisé avec PHP. Si vous n'écrivez pas une classe de produits en grande boîte "1C", bien que la partie web de "1C" soit également écrite en PHP, et que vous écrivez un site qui fournit des services, comme Skyeng, il peut également être écrit en PHP. Toute la question est de savoir ce que le fondateur de l'entreprise savait. Dans le cas de Skyeng, il s'agissait de PHP, et le site est donc écrit en PHP. Si une entreprise entre sur le marché de la programmation web, elle doit utiliser PHP sans aucune variante, car il y a plus de serveurs pour cela, plus de services pour cela, plus de programmeurs.

- On peut donc dire que la niche du PHP - le développement web ?

- Oui, ce langage a commencé comme un moteur de templating. Au fil du temps, il est devenu nécessaire d'écrire beaucoup de logique commerciale en PHP, il a donc ajouté la possibilité de bien décrire les objets, de sorte que les traits, protected, private sont apparus pour être en mesure d'afficher des relations complexes, comme 200 acteurs. Parce que lorsque vous commencez à comparer des langages comme PHP vs. Python, l'avantage de cette dernière est que vous pouvez spécifier comment un objet sera ajouté, divisé, soustrait. PHP ne le fait pas. Mais, par exemple, comment déterminer ce qui est protégé et ce qui est privé ? Dans Python, je ne pense pas qu'il y ait de protection du tout. Comment définir visuellement les propriétés privées ? Python n'a pas l'air sérieux ici. En conséquence, en PHP, il est plus facile de décrire certaines structures d'objets complexes, elles ont un meilleur aspect visuel. Vous pouvez travailler avec des interfaces, l'héritage, les traits, les types. Il est bon d'écrire la logique commerciale en PHP.

- Maxim, vous avez déjà mentionné Python à plusieurs reprises. Peut-on dire que ce langage rivalise avec PHP sur son terrain ?

- Oui, bien sûr.

- Et quels autres langages sont en concurrence avec PHP ?

- Ruby, JavaScript côté serveur dans sa mise en œuvre via TypeScript. Parce que JavaScript lui-même est un langage non strict. Ce qui est bien avec le PHP moderne, c'est que les types pour les arguments, et les types pour les retours de fonction, sont maintenant possibles pour définir très précisément le code. Nous pouvons "verrouiller" le code dans un certain moule : nous pouvons définir que cette fonction renvoie un nombre entier. Ce n'est pas le cas en JavaScript, ni dans les anciennes versions de PHP. Là, notre fonction peut renvoyer une chaîne de caractères, un nombre, et ainsi de suite. TypeScript nous permet de spécifier toutes les entrées et sorties.

Au fait, pour en revenir à Ruby. Ce langage a en fait été créé par un type qui n'aimait pas PHP. Il a donc créé une nouvelle langue. Mais comme il y a plus de programmeurs PHP, plus de services pour eux, plus de langage lui-même. Oui, Ruby a pris une bouchée du marché, JavaScript côté serveur a pris une bouchée du marché.

JavaScript présente également un avantage important : les programmeurs du serveur et du front-end écrivent dans le même langage. Il s'agit d'un sujet vaste et important. Si une entreprise utilise PHP pour le code côté serveur, par exemple, mais aussi TypeScript pour le frontend, le chef de service ne pourra pas redéployer rapidement un spécialiste du frontend vers un spécialiste du backend en cas de besoin. Mais si l'entreprise dispose de JavaScript à la fois sur le serveur et sur le front-end, vous pouvez le faire. 

- Java n'entre-t-il pas dans le champ du PHP ?

- Non. Bien sûr, ce langage est présent dans le développement web, mais au même niveau que C, C# et C++. Java n'a pas une très grande part de marché et est en surnombre sur le web. Oui, les applications en Java seront plus rapides et plus correctes. Mais cela prend plus de temps et est plus compliqué à écrire en Java. Et il y a moins de programmeurs Java sur le marché.

Si vous revenez à l'entreprise - vous achetez un hébergement, vous pouvez y mettre du PHP et rien d'autre. Vous pourrez peut-être trouver de l'hébergement pour Python, pour JavaScript, pour Ruby. Pour Ruby, il est même improbable de trouver. Vous voudrez mettre Java, et ça coûte beaucoup plus cher.

Java permet d'écrire le site web "M.Video" dans celui-ci. Autrement dit, ce langage est adapté à quelque chose de grand et de complexe. Ce qu'il faut comprendre : lorsqu'une petite startup commence à fonctionner, elle est tolérante aux pannes. Eh bien, le site a planté, et les clients n'ont pas pu l'utiliser pendant 30 minutes. Mais lorsque la startup est devenue une grande entreprise, ces 30 minutes se sont transformées en une perte de plusieurs millions. Ils sont entrés sur le marché boursier, ont fait une introduction en bourse. Le site est tombé, le prix de l'action a baissé, les actionnaires se sont battus. Pour elles, le coût d'une chute est plusieurs fois supérieur à celui des petites entreprises.

Ils ont donc une culture différente. Ils essaient de tout tester 33 fois, de déployer les changements de l'extension lentement. Java est mieux adapté ici. PHP est approprié dans les entreprises où le processus est construit comme ceci : "Déployons-le maintenant...". Oups, quelque chose est tombé... Maintenant, nous allons le réparer... Le site a été indisponible pendant 7 minutes, ce n'est pas grave". Ou 7 heures, ce n'est pas un problème non plus. Et Java est mieux adapté à quelque chose de complexe, lourd et coûteux.

- Maxime, une question un peu abstraite : si un utilisateur ou une entreprise crée son site web, quel est le meilleur moyen de le faire aujourd'hui ? S'agira-t-il d'une sorte de CMS, comme WordPress ? Peut-être un framework - Laravel ou Yii2, peut-être une solution SaaS comme Tilda ?

- Cela dépend de l'entreprise. Et les entreprises sont centrées sur le client. Je connais des entreprises américaines qui ont encore des interfaces téléphoniques, malgré le développement de l'internet. C'est-à-dire que vous allez sur leur site, vous voyez le numéro de téléphone, vous appelez et vous résolvez vos problèmes, par exemple l'achat de pneus.

Avant de se mettre en ligne, ils se demandent si l'opération sera rentable. Au début, ils essaient d'utiliser quelque chose de bon marché. Peut-être une sorte de solution SaaS : le même "Equid". Ou peut-être est-il encore plus rentable pour eux de mettre leurs produits en vente sur Amazon. En d'autres termes, les entreprises essaient d'investir le moins possible et de tout faire à bas prix.

Si une telle entreprise a besoin d'une page avec un catalogue, elle se rend sur WordPress et y crée un sous-domaine, qui coûte un dollar par mois. Si la charge augmente, ils finiront par se déplacer ailleurs. Peut-être que ce sera une sorte de solution à eux. Mais en ce sens, les entrepreneurs repoussent ce que les intégrateurs commerciaux voisins utilisent.

Par exemple, un entrepreneur vient au studio et demande un site web. Le studio voit que l'entrepreneur a besoin d'une refonte, mais il ne reçoit pas beaucoup d'argent. Le studio se rend donc chez un Templatemonster et achète un modèle prêt à l'emploi. Et ce modèle est conçu pour WordPress. En conséquence, le studio crée automatiquement un site PHP pour l'entrepreneur. Ils installent WordPress, WooCommerce et un forum, et préparent un modèle.

Tout le monde connaît WordPress, de nombreux programmeurs travaillent avec lui. Ici, tout est déjà connu, il y a peu de bogues. C'est-à-dire qu'ils ne pensent pas en termes de langue ; la langue est ici secondaire. Et si une personne veut créer une sorte d'analogue de Yandex.Taxi, elle réfléchira à ce qu'il faut écrire. Il va, avant tout, écrire dans ce qu'il connaît lui-même. S'il a environ 30 ans, il écrira très probablement en PHP. S'il est plus jeune, il a été formé à l'institut en Python - il écrira dans cette langue.

Du côté de PHP, le fait qu'il existe déjà un marché établi joue en sa faveur. Ceci peut être expliqué par l'exemple des stations-service. Il est toujours rentable d'ouvrir une station-service, car il existe un marché bien établi pour les voitures. Le propriétaire d'un nouvel atelier ne fera qu'une petite bouchée de plus de ce marché. Il en va de même pour le développement web : il est rentable d'ouvrir un studio qui dessert le marché existant de WordPress et d'autres solutions PHP. 

- En d'autres termes, tant que WordPress, Laravel et d'autres solutions populaires existeront, le PHP restera demandé. Se pourrait-il que dans 10 ou 15 ans, au lieu de WordPress, le marché soit dominé par autre chose, comme Django et Python ou autre chose ?

- Cela pourrait théoriquement se produire ; de nouveaux sites pourraient être créés sur n'importe quoi. Mais les sites existants n'iront nulle part. Par exemple, il y a une forge qui fabrique des grilles ; elle a un site avec un catalogue WordPress ; le site a 10 ans. Quel est le but de la forge ? Ils forgent encore des grilles, et ils continueront à le faire. Peut-être qu'ils feront plus de produits.

Ils auront plus de visiteurs sur le site, ils auront besoin d'un plus grand catalogue. Mais le site restera le même. La forge doit combler les failles de sécurité et mettre à jour sa conception tous les dix ans. Et c'est tout - c'est un thème éternel. Dans 20, 50, j'ai bien peur que même dans 100 ans, ils fonctionneront avec WordPress.

Prenons l'exemple du boom des téléphones portables : les gens ont commencé à accéder à des sites web via des appareils mobiles. Mais il existe des habillages qui permettent à un site de paraître normal sur un écran mobile. C'est le niveau de HTML, CSS et un peu de JavaScript, cela n'a rien à voir avec le CMS.

Si nous regardons plus loin dans le futur, il y aura des gadgets à porter, des lunettes qui vous permettront d'utiliser certains widgets, comme dans les films de science-fiction, comme dans "Johnny Mnemonic", où le personnage apparaît devant une certaine structure avec laquelle vous pouvez interagir. Mais il s'agira essentiellement des mêmes modèles ou d'applications mobiles distinctes.

Ici, l'application mobile sera écrite dans un langage mobile - Swift, Objective-C, dans le même Java. Et cette application recevra des données de WordPress via une API, qui est déjà en place. Ce site WordPress survivra aussi longtemps que l'entreprise qui le soutient. Et cela vaut pour des milliers et des millions d'entreprises : forgerons, concessionnaires automobiles, vendeurs de pièces détachées, réparateurs, les mêmes cafés. Peut-être qu'avec le temps, les entreprises utiliseront plus souvent les solutions SaaS. Mais ici apparaît déjà une contradiction entre le désir d'avoir le sien et le besoin d'utiliser un morceau de quelque chose en commun. On peut le comparer au choix entre avoir son propre petit magasin et un plateau dans un grand supermarché.

Et puis il y a aussi la question du coût de la solution qui se pose ici. Peut-être que si les forgerons faisaient le chantier maintenant, la solution Tilda leur coûterait moins cher. Mais ils auraient rapidement épuisé les capacités de Tilda. Il faut ajouter une sorte de catalogue - et nous voilà de retour sur WordPress ! Autrement dit, de nouvelles solutions apparaîtront en Python et dans d'autres langages. Et les anciennes solutions resteront en PHP.

Si un débutant n'est pas paresseux, si sa tête est en ordre, il deviendra un cadre moyen avec un gros salaire en 2 ou 3 ou 4 ans : à propos du marché du travail


- Nous avons constaté que le PHP est bien vivant. Nous pouvons maintenant passer en douceur à la question qui préoccupe particulièrement nos étudiants. C'est le marché du travail. Et voici la première question : d'un côté, on dit qu'il y a beaucoup de spécialistes du PHP sur le marché, et de l'autre, on peut entendre qu'il y a un manque de ces spécialistes. Où est la vérité ?

- Cela dépend du type d'expert dont on parle. Si vous avez un petit bureau, que vous écrivez des sites sur WordPress, vous avez besoin d'un spécialiste bon marché. Il connaît un peu de PHP, un peu de mise en page, un peu d'autre chose. Il en existe des dizaines de milliers sur le marché.

Mais si vous prenez le même Skyeng, ils ont des exigences élevées pour les spécialistes. Vous devez connaître Symfony, PosgreSQL et d'autres choses. D'ailleurs, PostgreSQL n'est pas tout à fait spécifique à PHP, voici plutôt MySQL natif. Il n'y a donc pas assez de programmeurs qui en savent beaucoup et peuvent en faire beaucoup. Skyeng et quelques dizaines d'autres entreprises en ont besoin. Et les 20 000 autres entreprises qui rédigent de petites boutiques sur WordPress n'ont pas besoin de spécialistes possédant de telles compétences.

C'est une copie de la vie réelle. Il y a un soudeur, Vasya, qui soude des clôtures autour des jardins. Et il y a le même Vasya, qui soude des sous-marins nucléaires dans une grande usine. Et il n'y a que cinq de ces spécialistes qui savent souder les sous-marins dans tout le pays.

- Est-il vrai que le PHP est plus facile à apprendre que d'autres langages ?

- Je programme depuis 20 ans et il me semble que la difficulté d'apprendre PHP, Python, Ruby et JavaScript est à peu près la même. Cela ne veut pas dire que le PHP est plus facile que les autres. C'est juste qu'en raison de sa nature de modèle, il est plus facile d'écrire les premières applications. Vous n'avez pas à déclarer quoi que ce soit, vous n'avez pas besoin d'un service quelconque. Le développeur a écrit le code dans un fichier en PHP, il est déjà un certain serveur installé, et si vous l'appelez, il dans le navigateur est quelque chose hors. C'est-à-dire que les premiers pas en PHP sont vraiment faciles à faire, et en ce sens, les autres langages ne sont pas égaux à PHP. Mais ces démarches durent deux jours, et la formation prend un an. Au-delà de cela, PHP a des problèmes avec le nommage des fonctions, avec l'ordre des arguments. Les autres langues ont aussi des problèmes - on peut trouver des défauts à tout.

- Maxim, si tu commençais à apprendre la programmation aujourd'hui, commencerais-tu à nouveau par PHP ?

- J'apprenais une langue pour un bureau. Je voulais travailler chez X-Cart, cette entreprise avait besoin de programmeurs PHP. J'ai acheté un livre, j'ai passé un mois à le lire, puis je suis allé à un entretien d'embauche. Un homme n'apprend jamais les langues "juste parce que", il apprend toujours les langues "pour une raison quelconque". Il dispose d'un bureau cible qui programme, par exemple, en Erlang. Et il/elle étudiera cette langue.

Une autre variante est celle où une personne visite "Headhunter", et découvre, quel genre de programmeurs les employeurs veulent voir ? Il voit qu'ils ont besoin de spécialistes en PHP, Python, C, etc. Il commence à lire les avis et choisit celui qui convient. J'ai lu les critiques et choisi, par exemple, Python. Cela dépend donc des préférences personnelles, car, par exemple, tout le monde n'aime pas le Web.

Pour en revenir à la question, il m'est difficile de juger. Je choisirais probablement PHP. C'est juste que maintenant, j'ai déjà une bonne connaissance de cette langue. C'est pourquoi je suis intéressé par l'apprentissage de Python ou de Go, par exemple. Mais je comprends qu'aujourd'hui, c'est la curiosité qui me pousse. Ce n'est même pas une question d'argent. Les salaires sont plus ou moins les mêmes pour les spécialistes de ces langues. 

- Si vous prenez un hypothétique débutant qui a étudié PHP avec assiduité, sa tête est en place et ses mains sont en place. Cette personne trouverait-elle un emploi ?

- Bien sûr.

- Et où sont les programmeurs PHP maintenant ? S'agit-il d'externalisation, de sociétés de produits, d'entreprises, de quelque chose d'autre ?

- En général, c'est le développement web. Il s'agit de petits studios qui réalisent de petits sites, de studios de taille moyenne qui réalisent des sites pour certaines usines, et de grands studios qui réalisent des projets à l'échelle de M.Video. En plus de l'externalisation vers l'Ouest, il y a également beaucoup de travail pour les programmeurs PHP. Les sous-traitants écrivent pour l'Europe, les États-Unis et le Canada, voire l'Argentine et le Brésil. Il existe des bureaux qui fabriquent des produits en boîte. Il existe des sous-traitants pour les équipes en boîte. Il y a des équipes qui font le site comme un produit ou comme un service. Par exemple, Skyeng. Facebook fonctionne même avec PHP. Évidemment, il n'en reste plus grand-chose maintenant, mais quand même. C'est-à-dire qu'il s'agit de l'ensemble du spectre du web - littéralement tout.

- Maxim, vous avez déjà mentionné les exigences pour Skyeng. Et si vous vous abstenez et essayez de donner des conseils aux débutants : que doivent savoir les débutants pour entrer en toute confiance sur le marché du travail ?

- Il y a beaucoup de cours en ligne en ce moment. Un débutant vient au cours, on lui apprend les bases de la langue. Ensuite, on leur apprend à travailler avec un serveur web, avec des frameworks tels que Laravel ou Symfony. En outre, dans le cadre du cours, un débutant rédige quelques applications de formation. Puis ils se présentent au chasseur de têtes en disant qu'ils sont un junior prêt à travailler pour 35 000 dollars. Il est engagé et reçoit 32 000. Il y acquiert de l'expérience. Et là, il y a une question de motivation et de tête. Si un nouveau venu n'est pas paresseux, s'il n'est pas stupide, en 2, 3 ou 4 ans il devient un intermédiaire. Il est transféré dans une autre entreprise avec un autre salaire. Ici, il est payé 80 000 ou 100 000. Après 2 ou 3 ans supplémentaires, il devient un senior avec un salaire de 120 000. Autrement dit, au début, vous devez acquérir de l'expérience : apprenez à travailler avec la base de données, avec l'API, etc. Il y a une nuance : il n'est pas toujours bon d'approfondir certains sujets à l'avance. Peut-être à l'exception de certaines choses abstraites, comme les modèles architecturaux. Vous ne pouvez pas savoir à l'avance avec quoi vous allez devoir travailler.

La plupart des vendeurs de voitures, de sandwichs, ou de chats et de chiens ne se soucient pas du contenu de leur site : à propos de WordPress et d'autres outils
- Du marché de l'emploi, je suggère que nous passions en douceur ou non aux frameworks et aux CMS qui font partie de l'écosystème PHP. WordPress est un leader incontestable sur le marché des CMS et sur le web en général. Et grâce à quoi il le gère ?

- Il s'agit d'une combinaison de facteurs : les efforts du marketing, des partenaires et des programmeurs. Il travaille avec les auteurs de modules tiers. Il s'agit du développement de l'infrastructure pour les auteurs tiers. Par exemple, il existe un marché pratique où les auteurs de modules peuvent vendre leurs produits. C'est l'effort de milliers de personnes. Dans l'ensemble, le professionnalisme des programmeurs qui ont développé le noyau, et les qualités visionnaires du PDG qui a choisi la bonne direction.

- Mais c'est un projet open source, il n'y a pas de développement centralisé, d'après ce que j'ai compris ?

- Tout projet open-source a toujours des entreprises qui gagnent de l'argent dessus. Ici, vous pouvez dire bonjour, par exemple, à Red Hat. Le projet lui-même peut être un projet externalisé, mais les bureaux commerciaux situés à côté adaptent le produit pour que les personnes et les entreprises tierces puissent l'utiliser. Il s'agit en fait d'un segment B2B. Par exemple, une entreprise a besoin de créer un site web. Il a l'air - voilà un bon partenaire ! La plupart des gens qui vendent des voitures, des sandwichs ou des chats et des chiens ne se soucient pas du contenu de leur site web, ils ne le savent peut-être même pas. Mais ils savent qu'ils ont un bon partenaire à qui l'on peut faire confiance pour le site.

- Maxim, vous pouvez trouver des commentaires sceptiques sur WordPress sur des ressources professionnelles. Vous pouvez voir que les professionnels n'aiment pas ça. Est-ce vrai, et si oui, pourquoi ?

- C'est le vieux discours sur un produit qui a beaucoup d'utilisateurs. Lorsqu'un produit a beaucoup d'utilisateurs, il lui est difficile de rester à la pointe de la technologie. Donc il n'y a pas de bogue, mais c'est construit à l'ancienne. L'ancien code entraîne l'ancienne technologie avec lui. D'une part, les gens veulent utiliser quelque chose de nouveau. Et d'autre part, ils veulent la continuité et la compatibilité - afin que leurs modules soient disponibles sur le nouveau WordPress sans problème. S'il existe une mise à jour de WordPress, qui sera faite strictement pour PHP 7.4, et que les modules ne s'y adapteront pas, les programmeurs le découvriront après coup, lorsqu'ils seront licenciés. Parce que l'hypothétique bureau qui fabrique des modules pour WooCommerce se rend soudainement compte qu'il devra réécrire tous les modules, il n'a tout simplement pas assez d'argent pour cela. Il sera fermé. Et c'est là que les heureux programmeurs qui ont obtenu WordPress avec les nouvelles fonctionnalités et les nouveaux cadres se retrouvent soudainement licenciés. En réalité, les programmeurs seront toujours insatisfaits de l'utilisation des anciennes technologies, mais ils auront des salaires. 

- Vous vous êtes souvenu des Frameworks. Dites-moi s'il vous plaît, dans quelles situations ils sont mieux adaptés que le CMS ?

- Le CMS convient lorsque vous avez besoin d'un site simple avec une partie information, un petit catalogue ou un magasin, et c'est tout. Vous avez besoin d'un framework si vous faites "qui sait quoi". Il peut s'agir d'un type de service, par exemple un concurrent de Yandex.Taxi, un système de livraison, qui n'aura pas de chevauchement avec le CMS. En d'autres termes, les CMS fournissent beaucoup de code prêt à l'emploi, alors qu'avec les frameworks, vous devez écrire le code vous-même. On peut comparer cette situation à la suivante : vous devez déplacer cinq cartons de T-shirts d'Oulianovsk à Moscou, vous commandez les services de SDEK et résolvez le problème. Et si vous devez transporter une maison sur le même trajet, le SDEK ne vous aidera pas.

- Un peu plus sur les frameworks en PHP : nous avons Laravel, Zend, Yii2, Symfony et d'autres solutions. Lesquelles sont le présent et le futur ?

- Yii2 a ses apologistes. Il s'agit d'un cadre normal et pas trop lourd comme Symfony. Il existe de nombreux bundles pour Symfony, mais ils sont lourds et trop généraux. Laravel est plus léger. Mais encore une fois, tout dépend de votre objectif. Si vous devez construire quelque chose de gros, et que vous connaissez Symfony, vous utiliserez ce cadre. Si vous avez besoin de quelque chose de pas très grand, une sorte de boutique en ligne, vous pouvez choisir Laravel. Tous les frameworks sont similaires, ils utilisent tous le modèle MVC. Vous devez en connaître au moins un. En fait, l'entreprise choisit ce qu'elle connaît. Et le développeur ne choisit pas. Il arrive dans une entreprise qui écrit en Laravel. Que faire ? Vous devez l'apprendre. Ça va prendre 3-4 jours.

- Ruby on rails, Python a Django - les principaux frameworks, tout tourne autour d'eux. Et PHP dispose de plusieurs frameworks de premier plan. Est-ce bon ou mauvais pour les développeurs, pour la communauté ?

- Je ne vois pas de gros problème à passer d'un cadre à un autre. En général, la diversité est une bonne chose. Une organisation choisit généralement un cadre avec lequel elle travaille en permanence. Et un développeur arrive dans une nouvelle organisation, passe une semaine à apprendre un nouveau cadre, et c'est tout, il peut déjà travailler dessus.

Le grand nombre de frameworks est une conséquence du fait qu'il y a beaucoup de PHP lui-même. Beaucoup de gens l'utilisent, ils ont leurs propres pensées et idées. Il y a des milliards de dollars dedans. Une entreprise publie un cadre. Et cette société est le deuxième plus grand intégrateur aux États-Unis. Ce cadre va être utilisé sur des dizaines de milliers de sites web.

Il y a moins de sites sur Python et Ruby. Il n'existe qu'un seul cadre, et c'est très bien ainsi. Et pour que de nouveaux cadres apparaissent, il faut des dizaines de milliers de bureaux qui gagnent des millions et des milliards. Ensuite, il y aura des gens qui diront : "Disons que nous n'aimons pas Ruby on Rails, nous allons créer notre propre nouveau framework".

Tous ces frameworks - "rails", Django, Flask et ainsi de suite, leurs développeurs ont repoussé les frameworks qui sont écrits en PHP et en Java.

Le grand nombre de frameworks en PHP est également une conséquence de son évolution. Les gens réfléchissaient à ce qu'allait être le web. Il y avait le statique, il y avait les modèles, puis vint AJAX, quelque chose a commencé à affluer vers le frontend... C'est une conséquence de l'évolution - l'ancien cadre devenait piégé comme WordPress. Les gens attendent un cadre avec un nouveau code où les anciennes méthodes fonctionnent. Et ça n'arrive pas.

Ainsi, par exemple, Zend a disparu - Symfony l'a mangé. Zend a disparu, mais il n'est pas mort. Il est resté sur les anciens sites qui doivent être entretenus. Et les programmeurs sont obligés de le savoir. Symfony est arrivé, puis Yii est arrivé, ce qui est plus simple - c'est une évolution.

Si vous construisez votre Ruby sur quelque chose de déjà prêt, comme PHP, toutes les erreurs ont déjà été commises avant vous. C'est pourquoi il y aura moins de frameworks. 

 

Je pense que le langage va dans la bonne direction : à propos des perspectives


- Maxim, parlons de la langue elle-même. Pensez-vous que le PHP va dans la bonne direction ? Versions 7.4, 8 - améliorent-elles le langage ?

- J'ai une opinion impopulaire. Oui, je pense que la langue va dans la bonne direction. C'est juste que PHP a une chose que les gens n'aiment pas. C'est que PHP doit mourir, ce thread PHP, chaque runtime - son service externe doit mourir. Cela résout le problème de "l'effacement" des données en mémoire.

Cela permet, d'une part, aux programmeurs d'être laxistes et bon marché. Et d'autre part, cela permet aux créateurs de langues de ne pas s'embarrasser autant de l'effacement de la mémoire. Les spécialistes n'aiment pas cela, car de tels tours de passe-passe ne sont probablement restés qu'en PHP. Tous les autres ont des serveurs d'application à part entière, où votre application est exécutée, initialisée. Et puis il y a des appels à l'intérieur - c'est là que le serveur web a été appelé. Pour qu'ils ne meurent pas. Et les gens attendent : "Hé, les gars, où est votre serveur d'applications ?" Et il n'est pas là et il ne sera pas là. Oui, il existe des solutions tierces. Mais ils ne sont pas demandés.

Les développeurs de langage pensent à d'autres choses. Par exemple, la prise en charge de l'UTF-8 est plus importante pour eux. Il est plus important pour eux de résoudre les vieux conflits concernant les noms non typiques des fonctions et l'ordre différent des arguments dans les fonctions du même type. Il est plus avantageux de le résoudre, car cela facilite l'apprentissage de la langue. Il est plus rentable d'accélérer : ils ont ajouté les JAT. Grâce aux évolutions récentes, PHP peut travailler avec l'intelligence artificielle, par exemple. Donc ça devient le territoire des Pythons.

Oui, il y a des attentes envers la langue qui ne seront pas satisfaites dans les cinq prochaines années. C'est frustrant pour les gens. Mais ils ne comprennent pas toujours pourquoi certaines fonctionnalités sont nécessaires. Par exemple, pourquoi avons-nous besoin d'un serveur d'applications, surtout dans le contexte où PHP est un langage pour le web, et pourtant pour le web, qui est le milieu et plus proche du bas. Ainsi, c'est probablement une mauvaise idée de faire M.Video avec PHP. Mais certains sites de taille moyenne ou petite - oui, bien sûr. Les grands sites ont besoin de ces serveurs d'application. Mais qu'en est-il des petits ?

- Maxim, y a-t-il quelque chose en PHP que tu voudrais ajouter ?

- Comme s'il manquait quelque chose - il n'y a rien. Tout est là, tout est là. On pourrait dire que ce serait bien d'avoir un serveur d'applications. Mais c'est l'essence même d'un programmeur - il s'efforce d'atteindre un idéal. En fait - non, tout est suffisant.

- On peut donc dire que PHP est un outil de travail complet ?

- En général, oui. Peut-être qu'après l'émergence des types, j'aimerais avoir des multi-types, override pour les méthodes, de sorte que dans un objet, vous pourriez déclarer deux méthodes avec une signature frontale différente. Il y aurait donc deux méthodes d'ajout, l'une prenant une chaîne de caractères et l'autre un nombre. Peut-être que des modèles sont nécessaires. Mais là encore, tout cela est nécessaire dans les solutions d'entreprise. Skyeng en a besoin. Et vous n'en avez pas besoin dans un magasin de pneus.

- Maxim, pourquoi pensez-vous que PHP a beaucoup d'adeptes ? Pourquoi est-elle pire que les autres langues ? Ou s'agit-il à nouveau d'un problème lié à un outil très utilisé ?

- C'est un problème de personnes. Imaginez un petit bureau qui écrit de petits sites web, qui emploie des programmeurs bon marché. Ils écrivent mal parce qu'ils sont jeunes. Personne ne naît génie. Et d'autres personnes regardent le code et disent : "Oh, merde !" Ouais, ce connard est à sa place. Le budget pour créer ce site - 3000 roubles, et le délai était jusqu'à 12 heures aujourd'hui. Oui, c'est un code de merde, d'accord. Mais personne ne veut être le dernier, alors les discussions sur les mauvaises langues commencent. Je me souviens de l'époque où les gens écrivaient en Perl dans les années 90. Il y avait un code tellement merdique que PHP s'est juste levé et est sorti boire une bière. J'ai vu du code merdique en C, en Java, en C++. C'est une question de personnes et de ressources : si vous disposez des ressources nécessaires, vous y parviendrez.

- Êtes-vous d'accord pour dire que les langages de programmation influencent la pensée des développeurs ? Si oui, comment le PHP affecte-t-il la façon de penser ? Et convient-il comme premier langage de programmation ?

- Oui, je suis d'accord. Le PHP moderne permet d'acquérir un bon état d'esprit de type OOP. Il ne permet pas de développer une pensée fonctionnelle, ce qui n'est pas génial, mais ce n'est pas trop mal non plus. Il permettra également d'obtenir rapidement des résultats : on a écrit quelque chose et on a obtenu un résultat tangible. Il y a le vieux problème où vous apprenez quelque chose pendant longtemps, mais ne pouvez pas le mettre en pratique. PHP résout ce problème. Ici, vous pouvez écrire une ligne et voir le résultat. Pour les débutants, c'est parfait.

- Alors, en tant que première langue, est-elle adaptée ?

- Absolument. Il peut ne pas être aussi strict que Python, il peut ne pas fournir certaines choses OOP comme la surcharge des opérandes. Mais en réalité, ce n'est pas nécessaire. Si l'on vient à PHP, c'est que l'on est venu sur le web. Ce n'est pas le Big Data et l'intelligence artificielle. Il s'agit de faire sortir HTML. Ce que fait PHP, c'est chercher des données dans MySQL, les modifier, les formater et les restituer. C'est un bon langage pour un débutant.

- Maxim, imaginons la situation : il y a un programmeur qui écrit en PHP depuis un certain temps, travaillant sans lever la tête. Et soudain, il décide qu'il doit se développer d'une manière ou d'une autre, il prend le temps de le faire. Pouvez-vous citer des outils qu'il doit apprendre de toute urgence ? Quelque chose de remarquable est-il apparu en matière de PHP au cours des six derniers mois ou de l'année écoulée ?

- Je ne me souviens pas de la date de sortie de la version 7.4. La principale chose que je retiendrais est que la frappe est sortie. Typage des arguments, des retours de fonctions et de méthodes, et des types de propriétés. C'est une chose qui affecte le développement de manière importante. Les autres choses, comme la même notation des fonctions courtes, ne l'affectent pas autant.

Le code PHP - c'est principalement du code OOP. Si vous voulez du fonctionnalisme, changez de langage, passez à Erlang. Ensuite, vous devez changer le champ d'application - quitter le web en direction de certains produits de service. Il s'agit d'un autre niveau de migration : une personne qui avait l'habitude de travailler avec PHP, se sent triste, et pense à ce qu'elle doit apprendre. Vous pouvez aller dans les fonctionnalités ou Erlang ou tout ce qui est à la mode maintenant. Vous pourriez vous lancer dans Python et le Big Data. Vous pourriez aller dans Go, vous pourriez aller dans des trucs multi-threads de service. C'est une question d'intérêt.

C'est généralement ainsi que les gens raisonnent : ils ont travaillé dans le domaine du commerce électronique et s'intéressent maintenant à la maison intelligente. Ils vont et écrivent pour Go. Mais d'abord, ils vont travailler pour une entreprise qui fait ça. Dans ce cas, le langage de programmation est secondaire. Cette entreprise pourrait coder en C, ou Go, ou Python, ou Java. Les gens y vont plus souvent pour résoudre des problèmes intéressants. Changer la langue est secondaire ici. Si une personne a codé en PHP pendant 10 ans, il lui est facile d'apprendre le Go.

- Maxim, merci beaucoup pour cette conversation intéressante. Nos lecteurs seront intéressés de connaître l'état et les perspectives du PHP, le marché du travail et les outils. Vos commentaires m'inspirent, j'ai envie d'aller apprendre le PHP.

- Et merci pour la discussion, je souhaite du succès aux lecteurs !