Kürzlich wurde berichtet, dass Hui Xinchen (bekannt als „Brother Bird“), der Chefarchitekt der Weibo-Plattform und der Big-Data-Abteilung, von Sina zurückgetreten ist und sich Lianjia angeschlossen hat. Diese Nachricht wurde von Lianjia-Beamten und ihm selbst bestätigt . Berichten zufolge wird Hui Xinchen nach seinem Wechsel zu Lianjia als Vizepräsident für Technologie und Chefarchitekt fungieren. InfoQ hat Hui Xinchen zu diesem Karrierewechsel interviewt, um mehr über die Geschichte dahinter und einige seiner Erfahrungen auf dem Karriereweg von Programmierern zu erfahren.
Hui Xinchen (bekannt als Bird Brother) 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.
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 nicht eine Sache oder eine 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 machte ich einfach weiter.
F: Wie haben Sie sich in PHP verliebt? Wie wurden Sie zum Kernmitglied des PHP-Entwicklungsteams?
Als ich ein Doktorand war, wusste ich nicht, wie man das macht, also habe ich zufällig ein PHP-Tutorial gefunden, wie man eine einfache Website erstellt. Also habe ich versucht, es zu befolgen. Nach einer Weile stellte ich fest, dass es sehr praktisch war, es zu installieren, bereitzustellen (zu dieser Zeit gab es kein solches zentralisiertes Bereitstellungstool, aber es gab viele Tutorials zum Bereitstellen von LAMP), Code zu schreiben und test Die Syntax war der C-Sprache sehr ähnlich, und sogar die Namen vieler APIs sind mit denen der libc-API identisch. So begann meine unauflösliche Bindung zu PHP.
Es hätte im Jahr 2011 sein sollen. Damals habe ich Ap (das Vorgängerprojekt von Yaf) für Baidu entwickelt, es wurde damals gut in Baidu genutzt, also habe ich darüber nachgedacht, einen Beitrag zu PECL zu leisten, und habe einige davon erstellt , änderte seinen Namen in Yaf (ein weiteres Framework, der Name ist auch etwas selbstironisch, da PHP viele Frameworks hat), also schickte ich eine E-Mail an die PHP-Mail-Gruppe, weil mein Englisch schlecht war Zum Glück war Pierre Joye zu dieser Zeit da und hat mir sehr geholfen, Yaf ins PECL zu bringen.
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 beispielsweise an einen Tag mittags, als Rasmus (der Vater von PHP) sagte im IRC, dass er einen Fehler entdeckt habe, den ich in fast 5 Minuten behoben habe.
Nachdem ich nach und nach einige Leute kennengelernt und das Vertrauen aller gewonnen hatte, initiierte ich einen Antrag, erhielt dann die Erlaubnis, PHP-Kerncode einzureichen, beteiligte mich an der direkten Entwicklung und Fehlerbehebung von PHP und wurde ein Mitglied des Entwicklungsteams.
Was den Kern betrifft, so baut er sich langsam auf. Tatsächlich ist es auch 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 an, als würde man Monster töten und verbessern.
F: Unter welchen Umständen haben Sie Yaf entwickelt? Wie unterstützte Baidu damals die Yaf-Entwicklung?
Vor Yaf gab es tatsächlich eine klassische Debatte über die Verwendung oder Nichtverwendung von Frameworks: „Die Verwendung von Frameworks verringert die Leistung, und die Nichtverwendung von Frameworks verringert die Entwicklungseffizienz.“
Baidu damals intern.“ Es gibt viele Frameworks, darunter Open-Source-Frameworks von Yii, ZF usw., aber auch 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 werden bei der Veröffentlichung eines Frameworks im Laufe der Zeit verschiedene Varianten erstellt. Auch spätere einheitliche Upgrades werden unmöglich.
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 zuversichtlich und wusste nicht, wie viel Leistungsverbesserung die Erweiterung 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 gewählt.
F: Warum haben Sie Baidu verlassen und sind zu Sina Weibo gekommen?
Dafür gibt es tatsächlich viele Gründe. Ich war zum Beispiel damals in T7 bei Baidu und hatte das Gefühl, nicht so viel zu tun zu haben Ich kam mir etwas erschöpft vor.
Außerdem arbeitete 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 meine Fähigkeiten ü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: Wofür sind Sie derzeit auf Sina Weibo verantwortlich?
Ich bin jetzt in der Weibo-Technologieabteilung und leite ein grundlegendes Serviceteam. Unsere Hauptarbeit ist in den ersten zwei Jahren darin, die Leistung von Weibo LAMP zu optimieren, 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?
Seitdem ich dem Entwicklungsteam beigetreten bin, habe ich mit vielen anderen Mitgliedern ähnliche Argumente geführt: Ich denke, dass Leistung sehr wichtig ist, und einige Leute denken, dass neue Funktionen sehr wichtig sind, also wenn a Wir argumentieren, wenn neue Funktionen die Leistung beeinträchtigen.
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 im nächsten Jahr, nach der Veröffentlichung von PHP7, auch die verschiedenen Dienste unserer gesamten LAMP-Plattform zu 100 % verfügbar sein werden % Leistungsverbesserung.
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 nur Dmitry und ich. Ich erinnere mich noch daran, dass das JIT-Projekt, das wir damals gemacht haben, auf Eis gelegt wurde Die Wirkung war nicht zufriedenstellend. Alle eher deprimiert.
Dmitry sagte, er hätte die 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 in PHP7 hinzugefügt oder entfernt? Wie kann die Leistung vor der Veröffentlichung noch verbessert werden?
Es gibt viele davon. 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, einige neue Syntax-Zucker Natives TLS usw.
PHP7 wird im Oktober 2015 offiziell veröffentlicht. Davor müssen wir noch einige Ideen ausprobieren, z. B. die Verwendung von zend_array als direkten Ersatz für Hashtable, z. B. die Neuaufteilung und Sortierung durch Angabe von Funktionen zur Reduzierung von iTLB-Fehlern; Führen Sie beispielsweise einige Optimierungsmethoden von JIT (Type Overturning) in PHP ein und arbeiten Sie mit einigen typspezifischen OPCodeHandlern zusammen, um die Geschwindigkeit zu erhöhen. Ein weiteres Beispiel besteht darin, die Lokalität von Codedaten weiter zu verbessern und Cache-Fehler usw. zu reduzieren.
Natürlich haben wir auch ein JIT-Projekt, an dem wir parallel arbeiten, aber ich mache mir Sorgen, ob dieses Projekt fertig sein wird, wenn PHP7 veröffentlicht wird.
F: Wird die neue Version von PHP über PHP6 hinweg direkt auf PHP7 aktualisiert? Warum?
Der Hauptgrund ist, dass PHP eine Entwicklungsversion namens PHP6 hatte, 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 bin mit dieser Sichtweise wirklich nicht einverstanden. 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 zukünftige Programmiersprachen in Richtung Benutzerfreundlichkeit entwickelt werden, 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 Allheilmittel.“ 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. Wenn ich heute Wein trinke, werde ich mich am nächsten betrinken. Daher bin ich mir über die Zukunft eigentlich nicht ganz im Klaren. Ich habe einfach das Gefühl, dass mir das Programmieren immer noch gefällt, und ich möchte durch meine Arbeit allen etwas Gutes tun und das werde ich auch weiterhin tun Es.
Die Leute fragen oft: Warum nennen dich die Leute Brudervogel?
Als ich jung und liebevoll war, war mein QQ IM-Spitzname „Snow Migratory Bird“, ein Lied von Xiong Tianping The Titel des Liedes, nachdem ich zu Baidu gegangen bin, vielleicht weil ich relativ alt bin? Ich habe langsam angefangen zu wissen, wie man es populär nennt
Tatsächlich habe ich mich zunächst dagegen gewehrt, „Birdman“. ist nichts Gutes, aber dann haben mich immer mehr Leute angerufen, also war es egal
Also, Bruder Niao, der ein Linux-Privatentwickler ist, ist Taiwaner, Cai Deming, warum heißt er? „Bruder Niao“? Er ist auch ein Taiwaner. Fragen, die Bruder Bird häufig gestellt werden. Bruder Niao aus Taiwan sagte in seinem eigenen Bericht, dass ihn seine Klassenkameraden vor der Mittelschule wegen seines Nachnamens „Cai“ „Caitou“ nannten und dass er nach der Oberschule weiterhin „Rookie“ genannt wurde Verwenden Sie den Titel „Rookie“. Er hatte viele Aktivitäten und wurde von seinen jüngeren Schülern oft „Rookie Senior“ genannt. Er hatte das Gefühl, dass die beiden nicht zusammenpassten, also änderte er seinen Namen in „Brother Bird“. wurde weitergegeben, bis es von immer mehr Menschen bekannt gemacht und verbreitet wurde. Was die Frage angeht, warum er „VBird“ als Netzwerk-ID verwendet hat, lachte Bruder Niao über sich selbst und sagte, er sei zunächst unwissend und dachte, „Rookie“ sei „Vegetable“ („Vegetable“ heißt auf Englisch „Vegetable“). Bruder Niao ist jedem Linux-Enthusiasten ein bekannter Name geworden.
Linux Private Kitchen ist also nicht von mir geschrieben und Linux Private Kitchen bringt Ihnen nicht bei, wie man geschnetzeltes Schweinefleisch mit Fischgeschmack zubereitet!