Hui Xinchen ist der einflussreichste technische PHP-Experte in China, ein Kernmitglied des PHP-Entwicklungsteams, ein PECL-Entwickler und externer Berater bei Zend Technologies. Zuvor arbeitete er bei Yahoo und Baidu und ist jetzt Chefarchitekt der Plattform- und Datenabteilung sowie Chef-PHP-Berater bei Sina Weibo. Hui Xinchen ist Kernentwickler von PHP NG und ein maßgeblicher Entwickler von PHP 5.4 und 5.5. Als PECL-Entwickler hat er mehrere herausragende Open-Source-Projekte beigesteuert, darunter Yaf, Yar, Yac und Taint, und ist außerdem Maintainer von Projekten wie APC, OPcache und Msgpack.
Vom Anfänger, der online nach PHP-Tutorials sucht, bis zum Kernmitglied des PHP-Entwicklungsteams fühlt sich der gesamte Prozess für Hui Xinchen wie „Leveln durch Besiegen von Monstern“ an. PHP wird, wie Java, auch als Blue-Collar-Sprache bezeichnet, doch aus seiner Sicht ist es genau die Wiege, die mehr Programmierer hervorbringen kann, und in einer Ära, in der jeder programmieren kann, wird es zwangsläufig mehr herausragende Menschen hervorbringen, die technologischen Fortschritt vorantreiben können.

Frage: Wie hast du Interesse am Programmieren entwickelt?
Mein erstes „Programmieren“ war wahrscheinlich auf einer Subor-Lernkonsole. Später habe ich an der Universität Informatik studiert, und während meines Graduiertenstudiums war ich für den Aufbau der Campus-Informatisierung verantwortlich. Ich habe viel Webentwicklungsarbeit geleistet, aktiv oder passiv, darunter Websites für viele Unterabteilungen der Hochschule und die Wartung des Campus-BBS. Wenn ich darüber nachdenke, scheint es kein einzelnes Ereignis oder keinen Moment gegeben zu haben, in dem ich sagte, ich hätte mich in das Programmieren verliebt. Es fühlte sich einfach natürlich an, in diese Branche einzusteigen, und ich hatte nichts dagegen, also machte ich weiter.
Frage: Wie hast du begonnen, PHP zu mögen? Und wie wurdest du Kernmitglied des PHP-Entwicklungsteams?
Damals, während meines Graduiertenstudiums, musste ich eine Website erstellen. Ich hatte keine Ahnung, wie, also suchte ich online und stieß zufällig auf ein PHP-Tutorial darüber, wie man eine einfache Website erstellt. Ich versuchte, es zu befolgen, und stellte fest, dass Installation, Deployment (es gab damals keine zentralisierten Deployment-Tools, obwohl es auch viele Tutorials zum Deployment von LAMP gab), Programmierung und Tests alle sehr praktisch waren. Die Syntax war auch sehr ähnlich zu C, und sogar viele API-Namen waren dieselben wie die in der libc-API. Und so begann meine untrennbare Verbindung mit PHP.
Es war wahrscheinlich 2011. Damals entwickelte ich Ap (das Vorgängerprojekt von Yaf) für Baidu. Es wurde innerhalb von Baidu recht gut genutzt, also dachte ich darüber nach, es zu PECL beizusteuern. Nach einigen Änderungen benannte ich es in Yaf um (Yet Another Framework — der Name ist ein wenig selbstironisch, weil es bereits viele PHP-Frameworks gibt). Ich schickte eine E-Mail an die PHP-Mailingliste. Weil mein Englisch ziemlich schlecht war, war der Prozess ziemlich mühsam. Glücklicherweise half mir Pierre Joye sehr, wodurch Yaf in PECL aufgenommen werden konnte.
Außerdem hatte ich mich, bevor ich Yaf einreichte, tatsächlich die ganze Zeit mit dem Quellcode von PHP beschäftigt, sodass ich ziemlich viele Fehlerberichte und Korrekturen eingereicht hatte. Zum Beispiel erinnere ich mich, dass Rasmus (der Vater von PHP) eines Tages mittags im IRC sagte, er habe einen Bug gefunden, und ich etwa fünf Minuten später eine Korrektur lieferte.
Nachdem ich nach und nach einige Leute kennengelernt und das Vertrauen aller gewonnen hatte, reichte ich eine Bewerbung ein. Dann erhielt ich Commit-Zugriff auf den PHP-Kerncode, beteiligte mich an der direkten Entwicklung von PHP und an Fehlerbehebungen und wurde Mitglied des Entwicklungsteams.
Was die Rolle als Core-Mitglied angeht, so wurde sie langsam aufgebaut; es war tatsächlich ein Prozess gegenseitigen Vertrauens. Wenn deine Arbeit von anderen anerkannt wird, werden sie deine Meinungen respektieren. Ich wurde allmählich mit Dmitry Stogov vertraut, erhielt Commit-Zugriff auf den Kernbereich von Zend, reichte viele Core-Bugfixes und neue Features ein und wurde später externer Berater bei Zend, wobei ich nach und nach ein Core Developer wurde.
Das klingt ein bisschen wie Aufleveln durch Kämpfen gegen Monster, nicht wahr?
Frage: Was war der Anlass, der dich dazu brachte, Yaf zu entwickeln? Wie hat Baidu damals die Entwicklung von Yaf unterstützt?
Vor Yaf gab es immer wieder eine klassische Debatte darüber, ob man Frameworks verwenden sollte: "Die Verwendung eines Frameworks verringert die Leistung, während die Nichtverwendung eines Frameworks die Entwicklungseffizienz verringert."
Damals gab es bei Baidu viele Frameworks, darunter Open-Source-Frameworks wie Yii und ZF sowie einige, die von einzelnen Teams geschrieben wurden. Ein Problem war, dass Klassenbibliotheken und einige unterstützende Infrastrukturen nicht interoperieren konnten.
Ein weiterer Grund war, dass viele Framework-Autoren nach der Veröffentlichung ihrer Frameworks feststellten, dass verschiedene Leute diverse Änderungen am Framework vornahmen, sodass mit der Zeit aus einem veröffentlichten Framework viele Varianten wurden, was spätere einheitliche Upgrades unmöglich machte.
Also entschied ich mich, ein Framework als PHP-Erweiterung zu implementieren, um diese Probleme zu lösen. Natürlich war ich mir vor dem Schreiben der Erweiterung nicht wirklich sicher und wusste nicht, wie viel Leistungsverbesserung eine Erweiterung bringen könnte. Glücklicherweise war das Endergebnis sehr gut.
Frage: Warum hast du dich entschieden, Yaf in C zu schreiben?
PHP ist in C geschrieben, also sind seine Erweiterungen auch in C geschrieben. Daher wählte ich C, um Yaf zu schreiben.
Frage: Warum hast du Baidu verlassen und bist zu Sina Weibo gekommen?
Es gab tatsächlich viele Gründe. Zum Beispiel hatte ich bei Baidu T7 erreicht und war weniger in geschäftliche Angelegenheiten eingebunden. Ich hatte das Gefühl, nicht so viel zu tun zu haben, und es schien, als würde ich etwas Zeit verschwenden.
Außerdem war ich damals in der Abteilung für kommerzielle Suche bei Baidu und arbeitete nicht direkt mit Systemen mit hohem Verkehrsaufkommen, daher hoffte ich auch, eine größere Plattform zu finden, um mich weiter zu trainieren. Weibo war zufällig genau eine solche Plattform.
Nachdem ich zu Weibo gekommen war, stieß ich tatsächlich auf viele Herausforderungen, mit denen ich nie zuvor konfrontiert gewesen war, und ich hatte auch das Gefühl, dass mein Wissen eine größere Bühne hatte, auf der es angewendet werden konnte.
Frage: Für welche konkrete Arbeit sind Sie jetzt bei Sina Weibo verantwortlich?
Ich bin jetzt in der Technologieabteilung von Weibo und leite ein Team für Basisdienste. Unsere Hauptarbeit erfolgt ebenfalls in Phasen. In den ersten zwei Jahren bestand die Hauptarbeit in der Leistungsoptimierung des LAMP-Stacks von Weibo, einschließlich verschiedener Basisframeworks, Toolentwicklung, Umgebungsoptimierung und Standardformulierung.
In den vergangenen zwei Jahren ist Weibos LAMP-Architektur stabiler geworden, und die Gesamtleistung hat sich um ein Mehrfaches verbessert. Wir haben auch unsere eigene ganzheitliche Hochleistungs-LAMP-Lösung. Daher ist die LAMP-Optimierungsarbeit etwas zurückgegangen. Jetzt konzentriert sich unsere Hauptenergie auf Forschung und Entwicklung der Infrastruktur, wie die Cache-Middleware-Schicht, Transkodierungsdienste, Kommunikationsplattformen und so weiter.
Frage: Hat PHP 7 (PHPNG) die Bedürfnisse und Schmerzpunkte von Sina Weibo bei der Verwendung von PHP als wichtiges Feedback berücksichtigt?
Natürlich, ja. Seit ich dem Entwicklungsteam beigetreten bin, hatte ich ähnliche Debatten mit vielen anderen Mitgliedern: Ich denke, Leistung ist sehr wichtig, während einige finden, dass neue Funktionen sehr wichtig sind. Wenn also eine neue Funktion die Leistung beeinträchtigt, gibt es Auseinandersetzungen.
Ich bin sehr besessen von Leistungsverbesserungen. Das ist auch der Grund, warum ich später stärker mit Dmitry Stogov zusammengearbeitet habe, weil auch er sich besonders um Leistung kümmert.
Der Hauptgrund, warum ich mich für Leistung interessiere, ist, dass ich den Wert, den jede 1%ige Leistungsverbesserung für eine Plattform wie Weibo, die größte LNMP-Plattform in China, bringen kann, sehr real einschätze. Obwohl sich die Gesamtleistung von Weibo im Vergleich zu vor zwei Jahren stark verbessert hat, ist mir klar, dass weitere Verbesserungen ohne Beeinträchtigung der Entwicklungseffizienz nur von Leistungsverbesserungen in der Sprache und Umgebung abhängen können. Dieser Teil ist auch Weibos Anforderung an PHP.
Im Vergleich zu PHP 5.6 erzielt PHP 7 auf WordPress eine echte Leistungsverbesserung (QPS) von mehr als 100%. Ich glaube, dass nächstes Jahr, nach der Veröffentlichung von PHP 7, auch alle Geschäftsbereiche auf Weibos gesamter LAMP-Plattform eine Leistungsverbesserung von 100% erreichen können.
Frage: Wie verlief Ihre Beteiligung an der Entwicklung von PHP 7 (PHPNG)? Wie haben Sie mit anderen Teammitgliedern zusammengearbeitet?
PHPNG war damals ein geheimes Projekt. Die ersten Teilnehmer waren nur Dmitry und ich. Ich erinnere mich, es war im zeitigen Frühjahr dieses Jahres. Damals wurde das JIT-Projekt, an dem wir auf Basis von PHP 5 arbeiteten, auf Eis gelegt, weil die Ergebnisse nicht zufriedenstellend waren, und alle waren ziemlich niedergeschlagen.
Dmitry sagte, er habe eine Idee: ZVAL neu zu gestalten und seine Größe zu komprimieren, um den Speicherverbrauch zu reduzieren. Dann haben wir beide es diskutiert. Weil wir tatsächlich jeden Tag alle möglichen Ideen haben, dachten wir damals nur: "Hmm, diese Idee könnte funktionieren." Aber wir waren nicht sehr zuversichtlich.
Die Hauptidee damals war, schnell einen lauffähigen Prototyp zu erstellen, um die Wirkung zu testen. Während dieses Prozesses diskutierten wir hauptsächlich Ideen, dann implementierte jeder seine eigenen Teile und dann führten wir sie zusammen.
Das Hauptwerkzeug für die Zusammenarbeit war immer noch Skype. Da er sich jedoch in St. Petersburg befindet und es eine Zeitverschiebung zu uns gibt, kommunizierten wir auch per E-Mail und überprüften Code über GitHub.
Später, als das Projekt fast abgeschlossen war, stellten wir fest: "Hey, diese Idee ist gut, sie funktioniert." Dann haben wir sie öffentlich gemacht. Danach wurde es das normale Kollaborationsmodell: Wenn man eine Idee hat, reicht man einen RFC ein, reicht man einen Patch ein, stimmt ab, alle prüfen, und dann wird gemergt.
Frage: Welche Funktionen wurden in PHP 7 bisher hinzugefügt oder entfernt? Wie wird die Leistung vor der Veröffentlichung weiter verbessert?
Es gibt viele. Neben dem PHPNG-Zweig, der hauptsächlich Leistungsverbesserungen bietet, haben wir auch Unterstützung für AST (Abstract Syntax Tree), einheitliche Variablensyntax, Unterstützung für Zeichenketten mit 64-Bit-Länge, etwas neuen syntaktischen Zucker und neuerdings unter anderem Native TLS.
PHP 7 wird offiziell im Oktober 2015 veröffentlicht. Davor haben wir noch einige Ideen auszuprobieren, zum Beispiel zend_array direkt zum Ersetzen von Hashtable zu verwenden; zum Beispiel iTLB-Fehltreffer zu reduzieren, indem man Funktionen neu abschnittsweise anordnet und sortiert; zum Beispiel einige Optimierungstechniken von JIT (Typinferenz) in PHP einzuführen, kombiniert mit einigen typspezifischen Opcode-Handlern, um Dinge zu beschleunigen; und zum Beispiel die Code- und Datenlokalität weiter zu verbessern, um Cache-Fehltreffer zu reduzieren, und so weiter.
Natürlich haben wir auch ein JIT-Projekt, das parallel durchgeführt wird. Ich mache mir nur Sorgen, ob dieses Projekt bis zur Veröffentlichung von PHP 7 fertig sein kann.
Frage: Wird die neue Version von PHP PHP 6 überspringen und direkt zu PHP 7 gehen? Warum?
Der Hauptgrund ist, dass PHP einmal eine Entwicklungsversion namens PHP 6 hatte, aber diese Version später scheiterte und nie veröffentlicht wurde. Daher sollte diese neue Version PHP 7 sein.
F: Welche Beziehung besteht zwischen Hack, der von Facebook veröffentlichten Sprache, und PHP? Ist es der Zweck von Hack, PHP zu ersetzen? Was sind die jeweiligen Vorteile dieser beiden Sprachen im Vergleich zueinander?
Es gibt nicht wirklich eine Beziehung; Hack ist nicht PHP. Was das Ersetzen von PHP betrifft, glaube ich, dass sie (Facebook) diese Idee haben könnten, aber es hängt davon ab, ob die Community es akzeptiert oder nicht.
Ich bin mit Hack nicht besonders vertraut, daher fällt es mir schwer, dazu gezielt etwas zu sagen.
F: Manche Leute denken, dass PHP, weil es leicht zu lernen ist und eine niedrige Einstiegshürde hat, Menschen angezogen hat, die eigentlich nicht wirklich zum Programmieren geeignet sind. Was halten Sie von dieser Ansicht?
Dieser Ansicht kann ich wirklich nicht zustimmen. Als ich mein Bachelorstudium abschloss, habe ich ebenfalls versucht, eine Stelle in der Entwicklung zu finden, habe mich bei mehreren Unternehmen beworben und wurde von allen abgelehnt. Vielleicht war ich in den Augen der Leute, die mich damals interviewt haben, jemand, der nicht zum Programmieren geeignet ist.
Aber weil PHP eine niedrige Einstiegshürde hat, können Menschen schnell die Ergebnisse ihres „Programmierens“ sehen, was bei Anfängern einen positiven Rückkopplungsanreiz erzeugt und diejenigen, die interessiert sind, noch mehr interessiert. Und je mehr Menschen programmieren, desto größer ist die Wahrscheinlichkeit, dass es Experten gibt und Menschen, die zum Fortschritt der Technologie als Ganzes beitragen.
Darüber hinaus werden sich Programmiersprachen in Zukunft definitiv in Richtung Benutzerfreundlichkeit entwickeln und die Hürde zum Programmieren weiter senken. Vielleicht kann eines Tages jeder programmieren, wer weiß!
F: Wie sollte die Wissensstruktur eines qualifizierten PHP-Ingenieurs aussehen?
Ich erinnere mich an ein altes Sprichwort: „PHP-Ingenieure sind Alleskönner.“ Eigentlich gilt dieses Sprichwort nicht nur für PHP-Ingenieure; es sollte für alle Ingenieure gelten.
Die Wissensstruktur muss sehr breit sein. Webentwicklung umfasst ziemlich viele technische Bereiche. Neben HTML, CSS, JS und SQL muss man auch einige gängige Methoden zum Konfigurieren, Warten und zur Fehlerbehebung von Nginx, Linux und MySQL kennen. Von all dem sollte man ein wenig verstehen.
F: Worauf achten Sie bei Interviews neben der technischen Fähigkeit noch?
Ich lege besonderen Wert auf Klarheit des Denkens, der Kommunikation und der Sprechweise. Im Grunde möchte ich, wenn wir in Zukunft zusammenarbeiten, wissen, ob es Hindernisse geben wird und ob das Wachstumspotenzial groß ist.
F: Chen Bole, der ehemalige Webmaster von phpe.net, verkauft jetzt Herrensocken. Was sind Ihre Pläne für die Zukunft? Werden Sie immer ein Programmierer bleiben?
Eigentlich bin ich ein sehr fauler Mensch. Ich denke nie weit voraus; ich lebe im Moment. Deshalb bin ich mir auch nicht wirklich sicher, was die Zukunft angeht. Ich habe nur das Gefühl, dass ich im Moment immer noch gern programmiere und dass ich es mag, dass meine Arbeit allen zugutekommt und mir das Lob der Community einbringt. Ich finde das großartig, also werde ich damit weitermachen.
Quelle: http://www.ituring.com.cn/article/142454