Le PHP moderne favorise une bonne réflexion sur la POO


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 !