Maison  >  Article  >  PHP Bird Brother : J'étais une personne « inadaptée » à la programmation

PHP Bird Brother : J'étais une personne « inadaptée » à la programmation

藏色散人
藏色散人avant
2019-02-12 13:20:278419parcourir

Hui Xinchen@Laruence est l'expert technique PHP le plus influent en Chine, un membre principal de l'équipe de développement PHP, un développeur PECL et un consultant externe de Zend Company. Il a travaillé pour Yahoo, Baidu et maintenant Sina Weibo en tant qu'architecte en chef du département plate-forme et données et consultant en chef PHP. Hui Xinchen est le développeur principal de PHP NG et le principal développeur de PHP5.4 et 5.5. En tant que développeur PECL, il a contribué à de nombreux travaux open source exceptionnels tels que Yaf, Yar, Yac et Taint. Il est également le responsable d'APC, Opcache, Msgpack et d'autres projets.

D'un débutant recherchant des didacticiels PHP sur Internet à un membre clé de l'équipe de développement PHP, Hui Xinchen estime que l'ensemble du processus s'apparente à « combattre des monstres et mettre à niveau ». Selon lui, PHP, qui, comme Java, est également connu comme un langage ouvrier, est le berceau qui peut former davantage de programmeurs. À une époque où tout le monde peut programmer, des personnes plus talentueuses capables de promouvoir le progrès technologique seront inévitablement produites. Il partage des recherches, des technologies et des actualités liées au langage PHP et au moteur Zend sur son blog Fengxuezhiyu. Code à gauche, poésie à droite.

PHP Bird Brother : J'étais une personne « inadaptée » à la programmation

Q : Comment êtes-vous devenu intéressé par la programmation ?

La première fois que j'ai fait de la « programmation », c'était sur la machine d'apprentissage Xiaobawang. Plus tard, j'ai étudié l'informatique à l'université. Lorsque j'étais étudiant diplômé, j'étais responsable de la construction du campus de l'école. J'ai effectué activement ou passivement de nombreux travaux de développement Web, y compris le site Web de nombreux départements secondaires de l'école. cette fois-là, la maintenance du campus BBS, etc. En y réfléchissant, il ne semble y avoir aucune chose ou opportunité qui m'ait fait tomber amoureux de la programmation. C’était très naturel de travailler dans cette industrie, et je n’avais pas l’impression de ne pas l’aimer, alors j’ai continué à le faire.

Q : Comment êtes-vous tombé amoureux de PHP ? Comment êtes-vous devenu un membre clé de l’équipe de développement PHP ?

Quand j'étais étudiant diplômé, je voulais créer un site Web. Quand je ne savais pas comment le faire, j'ai cherché en ligne et j'ai trouvé un tutoriel PHP sur la façon de créer un site Web simple. J'ai donc essayé de le suivre. Après avoir fait quelques recherches, j'ai découvert que l'installation, le déploiement (il n'existait pas d'outil de déploiement centralisé à l'époque, mais il y avait de nombreux tutoriels sur la façon de déployer LAMP), l'écriture de code et les tests étaient très pratique. La syntaxe était très similaire au langage C, et même beaucoup de Le nom de l'API est également le même que celui de l'API libc. Ainsi a commencé mon lien indissoluble avec PHP.

Cela aurait dû être en 2011. À cette époque, Ap (le projet prédécesseur de Yaf) était développé pour Baidu. Il était bien utilisé au sein de Baidu à cette époque, j'ai donc pensé à contribuer à PECL. et en le modifiant. Après en avoir pris connaissance pendant un moment, j'ai changé son nom en Yaf (encore un autre framework, le nom est aussi un peu autodépréciant, car PHP a de nombreux frameworks), et j'ai envoyé un email au groupe de messagerie PHP. . Parce que mon anglais est mauvais, le processus est encore assez tortueux. Heureusement, Pierre Joye m'a beaucoup aidé à ce moment-là et a fait entrer Yaf au PECL.

De plus, avant de soumettre Yaf, j'avais en fait étudié le code source de PHP, donc j'ai aussi soumis beaucoup de bugs et de correctifs. Par exemple, je me souviens d'un jour à midi, Rasmus (. le père de PHP) était sur IRC. Il disait qu'un bug avait été trouvé et j'ai fourni un correctif en près de 5 minutes.

Après m'être progressivement familiarisé avec certaines personnes et avoir gagné la confiance de tous, j'ai lancé une candidature, puis obtenu l'autorisation de soumettre le code principal de PHP, et participé au développement direct et à la correction de bugs de PHP. , est devenu membre de l'équipe de développement.

Quant au noyau, il s'accumule lentement, et c'est en fait un processus de confiance mutuelle. Si tout le monde reconnaît votre travail, alors ils respecteront votre opinion. Je me suis progressivement familiarisé avec Dmitry Stogov, j'ai obtenu l'autorisation de soumission pour la partie principale de Zend et j'ai soumis de nombreuses corrections de bugs principaux et de nouvelles fonctionnalités. Plus tard, je suis devenu consultant externe pour Zend et suis progressivement devenu développeur principal.

On dirait que c'est un peu comme tuer des monstres et améliorer.

Q : Dans quelles circonstances avez-vous développé Yaf ? Comment Baidu a-t-il soutenu le développement de Yaf à cette époque ?

Avant Yaf, il y avait un débat classique sur l'utilisation ou la non-utilisation des frameworks : "L'utilisation de frameworks réduira les performances, tandis que la non-utilisation de frameworks réduira l'efficacité du développement." >
A cette époque, Baidu disposait de nombreux frameworks internes, notamment open source Yii, ZF, etc., ainsi que ceux écrits par certaines équipes elles-mêmes. Un problème est que dans les bibliothèques de classes, certains équipements périphériques ne peuvent pas communiquer entre eux.


Une autre raison est qu'après que de nombreux auteurs de framework aient publié le framework, ils constateront que différentes personnes apporteront diverses modifications au framework. En conséquence, après un long moment, un framework devient Diverses variantes ont. a émergé, rendant impossibles les mises à niveau unifiées ultérieures.


J'ai donc décidé d'utiliser l'extension PHP pour implémenter un framework permettant de résoudre ces problèmes. Bien sûr, je n'étais pas très confiant avant d'écrire cette extension, et je ne savais pas à quel point les performances seraient améliorées. la prolongation pourrait apporter. Heureusement, le résultat final est très bon.


Q : Pourquoi avez-vous choisi d'utiliser le langage C pour écrire Yaf ?


PHP est écrit en langage C, donc ses extensions sont également écrites en langage C, le langage C a donc été choisi pour écrire Yaf.

Q : Pourquoi avez-vous quitté Baidu et êtes venu à Sina Weibo ?

Il y a en fait plusieurs raisons à cela. Par exemple, j'étais T7 chez Baidu à cette époque, et j'étais moins impliqué dans les affaires. il y avait beaucoup à faire et je me sentais un peu perdu.

De plus, je travaillais dans le département de recherche commerciale de Baidu et je n'étais pas directement exposé à des systèmes à fort volume de trafic, j'espérais donc aussi trouver une grande plate-forme pour m'entraîner davantage, et Weibo se trouvait être une telle plateforme.

Après mon arrivée sur Weibo, j'ai en effet été exposé à de nombreux défis que je n'avais jamais rencontrés auparavant, et je sens également que mes connaissances ont une plus grande portée à utiliser.

Q : Quelles sont vos tâches spécifiques chez Sina Weibo actuellement ?

Je suis maintenant dans le département technologique de Weibo, à la tête d'une équipe de service de base. Notre travail principal est également divisé en étapes. Le travail principal au cours des deux premières années est d'optimiser les performances de. Weibo LAMP. Y compris divers cadres de base, développement d'outils, optimisation de l'environnement, formulation de spécifications, etc.

Au cours des deux dernières années, l'architecture LAMP de Weibo est devenue stable et les performances globales se sont améliorées plusieurs fois. Nous disposons également de notre propre solution globale LAMP haute performance. Il y a donc moins de travail pour optimiser LAMP. Désormais, l'accent est mis sur la recherche et le développement d'infrastructures, telles que la couche intermédiaire de mise en cache, le service de transcodage, la plate-forme de communication, etc.

Q : PHP7 (PHPNG) a-t-il considéré les besoins et les problèmes liés à l'utilisation de PHP sur la plateforme Sina Weibo comme un retour important ?

Bien sûr, c'est vrai. Depuis que j'ai rejoint l'équipe de développement, j'ai eu des arguments similaires avec de nombreux autres membres : je pense que les performances sont importantes, et certaines personnes pensent que les nouvelles fonctionnalités sont très importantes. , nous aurons alors des litiges lorsqu'une nouvelle fonctionnalité affecte les performances.

Je suis très obsédé par l'amélioration des performances, c'est pourquoi j'ai ensuite collaboré davantage avec Dmitry Stogov, car il était aussi particulièrement préoccupé par la performance.

La principale raison pour laquelle je me soucie des performances est que j'ai une très réelle compréhension de la valeur que chaque 1 % d'amélioration des performances peut apporter à Weibo, la plus grande plateforme LNMP en Chine. Bien que les performances globales de notre Weibo aient été grandement améliorées par rapport à il y a deux ans, je me rends compte que sans affecter l'efficacité du développement, de nouvelles améliorations ne peuvent reposer que sur l'amélioration des performances du langage et de l'environnement. Cette partie est donc la demande de Weibo pour PHP.

Par rapport à la version 5.6 sur WordPress, PHP7 a une amélioration réelle des performances (QPS) de plus de 100 %. Je crois que l'année prochaine, après la sortie de PHP7, les différentes activités de notre plateforme LAMP globale sur Weibo le feront. Vous pouvez également obtenir une amélioration des performances de 100 %.

Q : Quel est votre processus de participation au développement de PHP7 (PHPNG) ? Comment collaborez-vous avec les autres membres de l’équipe de développement ?

PHPNG était un projet secret à l'époque. Les premiers participants n'étaient que Dmitry et moi. Je me souviens encore que c'était au printemps de cette année. sur PHP5 a été abandonné car l'effet n'était pas satisfaisant Oui, tout le monde est déprimé.

Dmitry a déclaré qu'il avait eu l'idée de repenser ZVAL et de compresser la taille pour réduire l'utilisation de la mémoire. Ensuite, nous en avons discuté tous les deux, car nous avons en fait des idées différentes chaque jour, alors à ce moment-là, nous avons simplement pensé : eh bien, cette idée peut fonctionner. Mais pas encore très confiant.

L'idée principale à cette époque était de réaliser rapidement un prototype fonctionnel pour tester l'effet. Dans ce processus, nous discutons principalement des idées, puis mettons en œuvre les parties que nous devons réaliser, puis les fusionnons.

Le principal outil de coopération reste Skype. Cependant, comme il est à Saint-Pétersbourg et qu'il y a un décalage horaire avec nous, il utilisera également la communication par courrier électronique et révisera le code via Github.

Quand le projet a été presque terminé plus tard, nous avons réalisé : "Hé, c'est une bonne idée et ça marche." Puis c’est devenu public. Après cela, c'est devenu un mode de collaboration normal. Si vous avez des idées, vous soumettez un RPC, soumettez un patch, votez, tout le monde réagit, puis fusionnez.

Q : Quelles fonctionnalités ont été ajoutées ou soustraites à PHP7 jusqu'à présent ? Sinon, comment les performances seront-elles améliorées avant la sortie ?

Il y en a beaucoup. En plus de la branche PHPNG qui fournit principalement des améliorations de performances, nous avons également le support AST (Abstract Syntax Tree), la syntaxe Uniform Variable, la prise en charge des chaînes de 64 bits, un nouveau sucre de syntaxe, et TLS natif récent, etc.

PHP7 sortira officiellement en octobre 2015. Avant cela, nous avons encore quelques idées à essayer, comme utiliser zend_array pour remplacer directement Hashtable comme la resection et le tri en spécifiant les fonctions à réduire ; iTLB miss ; par exemple, introduire certaines des méthodes d'optimisation de JIT (renversement de type) dans PHP et utiliser certains OPCodeHandlers spécifiques au type pour accélérer ; un autre exemple consiste à améliorer davantage la localité des données de code et à réduire les échecs de cache, etc.

Bien sûr, nous avons également un projet JIT sur lequel nous travaillons en parallèle, mais je suis très inquiet de savoir si ce projet sera prêt lorsque PHP7 sera publié.

Q : La nouvelle version de PHP sera-t-elle directement mise à niveau vers PHP7 via PHP6 ? Pourquoi?

La raison principale en est qu'il existait une version de développement de PHP appelée PHP6, mais plus tard, cette version a échoué et n'a pas été publiée. Par conséquent, cette version devrait être PHP7.

Q : Quelle est la relation entre le langage Hack publié par Facebook et PHP ? Le but de Hack est-il de remplacer PHP ? Quels sont les avantages de ces deux langages l’un par rapport à l’autre ?

Cela n’a pas d’importance, Hack n’est pas PHP. Quant au remplacement, je pense qu'ils (Facebook) ont peut-être une telle idée, mais cela dépend de l'acceptation ou non de la communauté.

Je ne connais pas particulièrement Hack, je ne peux donc pas commenter spécifiquement.

Q : Certaines personnes pensent que parce que PHP est facile à apprendre et que le seuil est bas, certaines personnes qui ne sont pas adaptées à la programmation sont arrivées. Que pensez-vous de ce point de vue ?

Je ne suis vraiment pas d’accord avec ce point de vue. Lorsque j'ai obtenu mon diplôme de premier cycle, j'ai également essayé de trouver des emplois en développement et j'ai passé des entretiens dans plusieurs unités, mais j'ai été rejeté. Peut-être qu'aux yeux de ceux qui m'ont interviewé à l'époque, j'étais simplement une personne inadaptée à la programmation.

Cependant, comme PHP a un seuil bas, les gens peuvent rapidement voir les résultats de leur « programmation », ce qui aura un retour positif et un effet incitatif sur les novices, rendant les personnes intéressées plus intéressées. Plus il y a de personnes qui programment, plus grande est la probabilité que quelqu'un émerge et contribue à l'avancement de la technologie.

De plus, les futurs langages de programmation doivent évoluer vers la facilité d'utilisation, abaissant encore le seuil de programmation. Peut-être qu'un jour tout le monde pourra programmer !

Q : Quelle est la structure des connaissances d'un ingénieur PHP qualifié ?

Je me souviens qu'il y avait un dicton auparavant : "Les ingénieurs PHP sont tous des élixirs de feu". En fait, cette phrase ne s'applique pas seulement aux ingénieurs PHP, mais devrait s'appliquer à tous les ingénieurs. .

La structure des connaissances doit être large. Le développement Web implique de nombreux points techniques. En plus du HTML, CSS, JS et SQL, vous devez également connaître certaines méthodes courantes de configuration, de maintenance et de dépannage de Nginx, Linux et Mysql.

Q : En plus de la capacité technique, sur quoi d'autre vous concentrez-vous pendant l'entretien ?

J'accorderai une attention particulière à la clarté de la pensée, de la communication et de l'expression orale. En fait, pour parler franchement, si nous travaillons ensemble à l'avenir, y aura-t-il des obstacles et s'il existe un grand potentiel de croissance.

Q : Chen Bole, l'ancien webmaster de phpe.net, vend désormais des chaussettes pour hommes. Quels sont vos projets pour l’avenir ? Serez-vous toujours codeur ?

En fait, je suis une personne très paresseuse, je ne pense jamais trop loin, je serai ivre aujourd'hui. Donc, en fait, je ne suis pas très clair quant à l'avenir. Je pense simplement que maintenant j'aime toujours la programmation, et j'aime profiter à tout le monde grâce à mon travail et recevoir les éloges de la communauté. Je pense que c'est bien, et je vais continuer à le faire. il.

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer