Heim  >  Artikel  >  PHP Bird Brother: Ich war einmal eine Person, die zum Programmieren „nicht geeignet“ war

PHP Bird Brother: Ich war einmal eine Person, die zum Programmieren „nicht geeignet“ war

藏色散人
藏色散人nach vorne
2019-02-12 13:20:278419Durchsuche

Hui Xinchen@Laruence ist der einflussreichste technische PHP-Experte in China, ein Kernmitglied des PHP-Entwicklungsteams, ein PECL-Entwickler und ein externer Berater der Zend Company. Er hat für Yahoo, Baidu und jetzt Sina Weibo als Chefarchitekt der Plattform- und Datenabteilung und Chef-PHP-Berater gearbeitet. Hui Xinchen ist der Kernentwickler von PHP NG und der Hauptentwickler von PHP5.4 und 5.5. Als PECL-Entwickler hat er viele herausragende Open-Source-Werke wie Yaf, Yar, Yac und Taint beigesteuert. Er ist außerdem Betreuer von APC, Opcache, Msgpack und anderen Projekten.

Vom Anfänger, der im Internet nach PHP-Tutorials sucht, bis hin zum Kernmitglied des PHP-Entwicklungsteams: Für Hui Xinchen ist der gesamte Prozess wie „Kampf gegen Monster und Upgrades“. PHP, das wie Java auch als Arbeitersprache bekannt ist, ist seiner Meinung nach die Wiege, die mehr Programmierer hervorbringen kann. In einer Zeit, in der jeder programmieren kann, werden zwangsläufig mehr talentierte Menschen hervorgebracht, die den technischen Fortschritt vorantreiben können. Auf seinem Blog Fengxuezhiyu teilt er Forschung, Technologie und Neuigkeiten rund um die PHP-Sprache und die Zend-Engine. Code auf der linken Seite, Poesie auf der rechten Seite.

PHP Bird Brother: Ich war einmal eine Person, die zum Programmieren „nicht geeignet“ war

F: Wie sind Sie auf das Programmieren aufmerksam geworden?

Das erste Mal, dass ich „programmiert“ habe, schien auf der Xiaobawang-Lernmaschine zu sein. Später habe ich an der Hochschule Informatik studiert und war für den Aufbau des Campus der Schule verantwortlich. Ich war aktiv oder passiv für die Webentwicklung verantwortlich, unter anderem für die Website vieler weiterführender Abteilungen der Schule damals die Instandhaltung des Campus BBS usw. Wenn ich darüber nachdenke, scheint es keine einzige Sache oder Gelegenheit zu geben, die mich dazu gebracht hat, mich in das Programmieren zu verlieben. Es fühlte sich ganz natürlich an, in dieser Branche zu arbeiten, und ich hatte nicht das Gefühl, dass es mir nicht gefiel, also habe ich einfach weitergemacht.

F: Wie haben Sie sich in PHP verliebt? Wie wurden Sie zum Kernmitglied des PHP-Entwicklungsteams?

Als ich ein Doktorand war, wollte ich eine Website erstellen. Als ich nicht wusste, wie man das macht, suchte ich online und fand zufällig ein PHP-Tutorial, wie man eine einfache Website erstellt Daher habe ich versucht, ihr zu folgen. Nach einigen Recherchen stellte ich fest, dass die Installation, Bereitstellung (damals gab es noch kein zentralisiertes Bereitstellungstool, aber es gab viele Tutorials zur Bereitstellung von LAMP) und das Schreiben Code und Test Die Syntax war der C-Sprache sehr ähnlich und sogar noch mehr. Der Name der API ist auch derselbe wie der der libc-API. So begann meine unauflösliche Bindung zu PHP.

Es hätte im Jahr 2011 sein sollen. Damals wurde Ap (das Vorgängerprojekt von Yaf) für Baidu entwickelt. Es wurde zu dieser Zeit in Baidu gut genutzt, also dachte ich darüber nach, einen Beitrag zu PECL zu leisten Nachdem ich eine Weile davon erfahren hatte, änderte ich seinen Namen in Yaf (ein weiteres Framework, der Name ist auch etwas selbstironisch, da PHP viele Frameworks hat) und schickte eine E-Mail an die PHP-Mail-Gruppe Da mein Englisch schlecht ist, ist der Prozess immer noch ziemlich mühsam. Pierre Joye hat mir damals sehr geholfen und Yaf in PECL gebracht.

Außerdem habe ich vor dem Einreichen von Yaf tatsächlich den Quellcode von PHP studiert, sodass ich auch viele Fehler und Korrekturen eingereicht habe. Ich erinnere mich zum Beispiel an einen Tag mittags, Rasmus (. der Vater von PHP) war im IRC. Es hieß, ein Fehler sei gefunden worden, und ich habe in fast 5 Minuten einen Fix bereitgestellt.

Nachdem ich nach und nach einige Leute kennengelernt und das Vertrauen aller gewonnen hatte, initiierte ich einen Antrag, erhielt dann die Erlaubnis, den Kerncode von PHP einzureichen, und beteiligte mich an der direkten Entwicklung und Fehlerbehebung von PHP und wurde Mitglied des Entwicklungsteams.

Was den Kern betrifft, so baut er sich langsam auf und ist eigentlich ein Prozess des gegenseitigen Vertrauens. Wenn jeder Ihre Arbeit anerkennt, wird er Ihre Meinung respektieren. Nach und nach lernte ich Dmitry Stogov kennen, erhielt die Einreichungserlaubnis für den Kernteil von Zend und reichte viele Kernfehlerkorrekturen und neue Funktionen ein. Später wurde ich externer Berater für Zend und wurde nach und nach zum Kernentwickler.

Es hört sich ein bisschen so an, als würde man Monster töten und upgraden.

F: Unter welchen Umständen haben Sie Yaf entwickelt? Wie unterstützte Baidu damals die Yaf-Entwicklung?

Vor Yaf gab es eine klassische Debatte über die Verwendung oder Nichtverwendung eines Frameworks: „Die Verwendung eines Frameworks verringert die Leistung, während die Nichtverwendung eines Frameworks die Entwicklungseffizienz verringert.“

Zu dieser Zeit verfügte Baidu über viele interne Frameworks, darunter Open Source Yii, ZF usw., sowie über solche, die von einigen Teams selbst geschrieben wurden. Ein Problem besteht darin, dass in Klassenbibliotheken einige periphere Einrichtungen nicht miteinander kommunizieren können.


Ein weiterer Grund ist, dass viele Framework-Autoren nach der Veröffentlichung des Frameworks feststellen werden, dass verschiedene Personen verschiedene Änderungen am Framework vornehmen. Infolgedessen wird ein Framework nach langer Zeit zu verschiedenen Varianten entstanden, was spätere einheitliche Upgrades unmöglich machte.


Also habe ich beschlossen, die PHP-Erweiterung zu verwenden, um ein Framework zur Lösung dieser Probleme zu implementieren. Natürlich war ich vor dem Schreiben dieser Erweiterung nicht sehr sicher und wusste nicht, wie viel Leistungsverbesserung das bedeutet Verlängerung bringen könnte. Glücklicherweise ist das Endergebnis sehr gut.


F: Warum haben Sie sich für die Sprache C entschieden, um Yaf zu schreiben?

PHP ist in C-Sprache geschrieben, daher sind seine Erweiterungen auch in C-Sprache geschrieben, daher wurde die C-Sprache zum Schreiben von Yaf ausgewählt.


F: Warum haben Sie Baidu verlassen und sind zu Sina Weibo gekommen?

Es gibt tatsächlich viele Gründe dafür. Ich war zum Beispiel damals T7 bei Baidu und hatte das Gefühl, dass ich das nicht hatte Es gab viel zu tun und ich fühlte mich ein wenig erschöpft.

Außerdem war ich zu dieser Zeit in der kommerziellen Suchabteilung von Baidu und war nicht direkt mit Systemen mit hohem Verkehrsaufkommen konfrontiert, sodass ich auch hoffte, eine große Plattform zu finden, auf der ich mehr üben konnte, und Weibo geschah eine solche Plattform zu sein.

Nachdem ich zu Weibo gekommen bin, wurde ich tatsächlich mit vielen Herausforderungen konfrontiert, denen ich noch nie zuvor begegnet bin, und ich habe auch das Gefühl, dass mein Wissen auf einer größeren Bühne genutzt werden kann.

F: Was sind jetzt Ihre konkreten Aufgaben bei Sina Weibo?

Ich bin jetzt in der Weibo-Technologieabteilung und leite ein grundlegendes Serviceteam. Unsere Hauptarbeit ist in den ersten zwei Jahren in die Optimierung der Leistung unterteilt Weibo LAMP, einschließlich verschiedener grundlegender Frameworks, Werkzeugentwicklung, Umgebungsoptimierung, Spezifikationsformulierung usw.

In den letzten zwei Jahren ist die LAMP-Architektur von Weibo stabil geworden und die Gesamtleistung hat sich mehrfach verbessert. Darüber hinaus verfügen wir über eine eigene Hochleistungs-LAMP-Gesamtlösung. Es gibt also weniger Arbeit zur Optimierung von LAMP. Der Schwerpunkt liegt nun auf der Forschung und Entwicklung von Infrastrukturen wie Caching-Mittelschicht, Transkodierungsdienst, Kommunikationsplattform usw.

F: Hat PHP7 (PHPNG) die Bedürfnisse und Schwachstellen der Verwendung von PHP auf der Sina-Weibo-Plattform als wichtiges Feedback berücksichtigt?

Seit ich dem Entwicklungsteam beigetreten bin, habe ich mit vielen anderen Mitgliedern ähnliche Argumente gehabt: Ich denke, Leistung ist wichtig, und einige Leute denken, dass neue Funktionen sehr wichtig sind , dann kommt es zu Streitigkeiten, wenn eine neue Funktion die Leistung beeinträchtigt.

Ich bin sehr besessen von der Leistungsverbesserung, weshalb ich später mehr mit Dmitry Stogov zusammengearbeitet habe, da ihm auch die Leistung besonders am Herzen lag.

Der Hauptgrund, warum mir die Leistung am Herzen liegt, ist, dass ich ein sehr reales Verständnis für den Wert habe, den jede 1-prozentige Leistungsverbesserung für Weibo, die größte LNMP-Plattform in China, bringen kann. Obwohl sich die Gesamtleistung unseres Weibo im Vergleich zu vor zwei Jahren erheblich verbessert hat, ist mir klar, dass weitere Verbesserungen nur auf Verbesserungen der Sprach- und Umgebungsleistung beruhen können, ohne die Entwicklungseffizienz zu beeinträchtigen. Dieser Teil ist also Weibos Nachfrage nach PHP.

Im Vergleich zu 5.6 auf WordPress weist PHP7 eine echte Leistungsverbesserung (QPS) von mehr als 100 % auf. Ich glaube, dass dies im nächsten Jahr, nach der Veröffentlichung von PHP7, bei den verschiedenen Unternehmen unserer gesamten LAMP-Plattform auf Weibo der Fall sein wird Sie können auch eine Leistungssteigerung von 100 % erzielen.

F: Wie ist für Sie der Prozess, an der Entwicklung von PHP7 (PHPNG) teilzunehmen? Wie arbeiten Sie mit anderen Mitgliedern des Entwicklungsteams zusammen?

PHPNG war damals ein geheimes Projekt. Die ersten Teilnehmer waren nur Dmitry und ich. Ich erinnere mich noch daran, dass das JIT-Projekt zu dieser Zeit stattfand auf PHP5 wurde zurückgestellt, weil die Wirkung nicht zufriedenstellend war. Ja, alle sind deprimiert.

Dmitry sagte, er habe eine Idee, ZVAL neu zu gestalten und die Größe zu komprimieren, um die Speichernutzung zu reduzieren. Dann haben wir beide darüber gesprochen, weil wir eigentlich jeden Tag verschiedene Ideen haben, also dachten wir damals nur: Na ja, diese Idee könnte funktionieren. Aber noch nicht sehr zuversichtlich.

Die Hauptidee bestand damals darin, schnell einen funktionierenden Prototypen zu erstellen, um die Wirkung zu testen. In diesem Prozess diskutieren wir hauptsächlich Ideen, setzen dann die Teile um, die wir tun möchten, und führen sie dann zusammen.

Das wichtigste Tool für die Zusammenarbeit ist immer noch Skype. Da er jedoch in St. Petersburg ist und es bei uns eine Zeitverschiebung gibt, wird er auch die E-Mail-Kommunikation nutzen und den Code über Github überprüfen.

Als das Projekt später fast abgeschlossen war, wurde uns klar: „Hey, das ist eine gute Idee und sie funktioniert.“ Dann wurde es öffentlich. Danach wurde es zu einem normalen Kollaborationsmodus. Wenn Sie Ideen haben, reichen Sie einen RPC ein, reichen einen Patch ein, stimmen ab, alle reagieren und führen dann zusammen.

F: Welche Funktionen wurden bisher zu PHP7 hinzugefügt oder entfernt? Wie kann die Leistung vor der Veröffentlichung noch verbessert werden?

Zusätzlich zum PHPNG-Zweig, der hauptsächlich Leistungsverbesserungen bietet, bieten wir auch AST-Unterstützung (Abstract Syntax Tree), einheitliche Variablensyntax, 64-Bit-String-Unterstützung und einige neue Syntax-Zucker. und aktuelles natives TLS usw.

PHP7 wird im Oktober 2015 offiziell veröffentlicht. Zuvor müssen wir noch einige Ideen ausprobieren, z. B. die Verwendung von zend_array, um Hashtable direkt zu ersetzen, z. B. die Neuaufteilung und Sortierung durch Angabe von zu reduzierenden Funktionen iTLB-Fehler; zum Beispiel die Einführung einiger Optimierungsmethoden von JIT (Type Overturning) und die Verwendung einiger typspezifischer OPCodeHandler zur Beschleunigung; ein weiteres Beispiel ist die weitere Verbesserung der Lokalität von Codedaten und die Reduzierung von Cache-Fehlern usw.

Natürlich haben wir auch ein JIT-Projekt, an dem wir parallel arbeiten, aber ich mache mir große Sorgen, ob dieses Projekt fertig sein wird, wenn PHP7 veröffentlicht wird.

F: Wird die neue Version von PHP über PHP6 direkt auf PHP7 aktualisiert? Warum?

Der Hauptgrund dafür ist, dass es eine Entwicklungsversion von PHP namens PHP6 gab, diese Version jedoch später fehlschlug und nicht veröffentlicht wurde. Daher sollte diese Version PHP7 sein.

F: Welche Beziehung besteht zwischen dem von Facebook veröffentlichten Sprach-Hack und PHP? Ist der Zweck von Hack, PHP zu ersetzen? Was sind die Vorteile dieser beiden Sprachen gegenüber einander?

Es spielt keine große Rolle, Hack ist kein PHP. Was den Ersatz betrifft, glaube ich, dass sie (Facebook) möglicherweise eine solche Idee haben, aber es hängt davon ab, ob die Community sie akzeptiert.

Ich bin mit Hack nicht besonders vertraut, daher kann ich keinen konkreten Kommentar dazu abgeben.

F: Einige Leute denken, dass einige Leute hereingekommen sind, die nicht zum Programmieren geeignet sind, weil PHP leicht zu erlernen ist und die Schwelle niedrig ist. Was halten Sie von dieser Ansicht?

Ich stimme dieser Ansicht wirklich nicht zu. Als ich mein Bachelor-Studium abschloss, versuchte ich auch, einige Entwicklungsjobs zu finden und interviewte mehrere Abteilungen, wurde aber abgelehnt. Vielleicht war ich in den Augen derjenigen, die mich damals interviewten, einfach eine Person, die nicht für das Programmieren geeignet war.

Da PHP jedoch eine niedrige Schwelle hat, können die Leute schnell die Ergebnisse ihrer „Programmierung“ sehen, was ein positives Feedback und einen Anreizeffekt für Anfänger hat und das Interesse interessierter Menschen steigert. Je mehr Menschen programmieren, desto größer ist die Wahrscheinlichkeit, dass jemand auftaucht und zum Fortschritt der Technologie beiträgt.

Außerdem müssen sich zukünftige Programmiersprachen in Richtung Benutzerfreundlichkeit entwickeln, wodurch die Hemmschwelle für das Programmieren weiter gesenkt wird. Vielleicht kann eines Tages jeder programmieren!

F: Wie ist die Wissensstruktur eines qualifizierten PHP-Ingenieurs?

Ich erinnere mich, dass es früher ein Sprichwort gab: „PHP-Ingenieure sind alle ein Feuerelixier.“ Tatsächlich gilt dieser Satz nicht nur für PHP-Ingenieure, sondern sollte für alle Ingenieure gelten .

Die Wissensstruktur sollte breit gefächert sein. Die Webentwicklung umfasst viele technische Punkte. Zusätzlich zu HTML, CSS, JS und SQL müssen Sie auch einige gängige Methoden zur Konfiguration, Wartung und Fehlerbehebung von Nginx, Linux und MySQL kennen.

F: Worauf konzentrieren Sie sich neben den technischen Fähigkeiten noch während des Vorstellungsgesprächs?

Ich lege besonderen Wert auf klares Denken, Kommunikation und Sprechen. Um es ganz klar auszudrücken: Wird es Hindernisse geben, wenn wir in Zukunft zusammenarbeiten, und ob großes Wachstumspotenzial besteht?

F: Chen Bole, der ehemalige Webmaster von phpe.net, verkauft jetzt Herrensocken. Was sind Ihre Pläne für die Zukunft? Wirst du immer ein Programmierer bleiben?

Eigentlich bin ich ein sehr fauler Mensch, ich denke nie zu weit voraus, ich werde jetzt betrunken sein. Daher bin ich mir über die Zukunft eigentlich nicht ganz im Klaren. Ich glaube einfach, dass mir das Programmieren jetzt immer noch gefällt, und ich möchte durch meine Arbeit allen etwas Gutes tun und das werde ich auch weiterhin tun Es.

Stellungnahme:
Dieser Artikel ist reproduziert unter:oschina.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen