Skizzen mit PHP Russia 2019: sauberer Code, dunkle Magie



Am 17. Mai fand in Moskau Infospace die erste Fachkonferenz für PHP-Entwickler PHP Russia 2019 statt. Nach einer langen Pause erhielten sie eine vollständig bodenständige Plattform für sie; In der Ankündigung haben wir es mit dem Stadion verglichen, das die Peychpishnikov, eines der Teams der "Top-IT-Division", nicht hatte. Und das "Stadion" hat seine erste Saison zumindest mit Würde bestanden, mit dem Unterschied zum Fußball-Prototyp, dass es schwierig ist, eine strikte Trennung zwischen Spielern und Fans vorzunehmen.

In der Zeit der „großen Eiscreme zum Einfrieren von Kuchen“ - seit neun Jahren finden in Russland keine großen PHP-Konferenzen mehr statt - braucht die Gemeinschaft rund um die Sprache einen solchen Treffpunkt. Gleichzeitig wurden große Hoffnungen auf die Veranstaltung gesetzt, und die Aufgabe, alle Interessierten zufrieden zu stellen, wurde als außergewöhnlich angesehen. Aber Angst hat große Augen und gesunde Paranoia hat eine gute periphere Sicht: Die Erfahrung von IT-Veranstaltungen auf unserer organisierenden Seite sowie die Kraft der „PHP-Magie“ auf der Seite des Programmkomitees und die Autorität seiner Teilnehmer in der Branche ermöglichten es uns, eine ausgereifte Veranstaltung zu organisieren beim ersten Versuch.

Fast 500 Menschen kamen in PHP Russland an. Das Online-Publikum war auch ziemlich groß - mehrere hundert Zuschauer waren verbunden. Grundlage des Programms waren 22 Berichte, darunter fünf von namhaften ausländischen Sprechern, sowie drei Treffen und Performances im Improvisationsformat Unconference in einem separaten Stream.



Die Konferenz verlief in drei Strömen , und es wäre schmerzhaft, zu entscheiden, wohin sie gehen soll, wenn nicht die Gelegenheit bestünde, später die Sendungen von allem zu sehen, was im Hauptprogramm passiert ist.

Alexander Makarov, Mitorganisator der Konferenz
- Wir im Programmkomitee haben lange nachgedacht und schließlich das Raster durcheinander gebracht, so dass sich das Rätsel entwickelte: Wir haben die Idee, englischsprachige Personen in einen separaten Stream zu stellen, aufgegeben und beobachtet, dass sich die Berichte gegenseitig ausbalancierten. Relativ gesehen, so dass die am meisten getroffenen parallel verlaufen und nicht einer die Mehrheit des Publikums anzieht. Natürlich gab es in jedem Track konzeptionelle Zusammenhänge: Zum Beispiel begann der Bericht von Kirill Smelov direkt nach der Rede von Dave Liddament, der über die statische Analyse von PHP-Code sprach und PHPStorm viel Aufmerksamkeit schenkte, in demselben Raum, in dem das Gerät dieser IDE aussortiert wurde, und für Auf eine Geschichte über Innovationen in PHP 7.4 folgte eine Präsentation auf 8.0.

Über Themen


Wie geplant war der Löwenanteil der Leistungen auf PHP-spezifische Themen ausgerichtet, zum großen Teil sehr, sehr hardcore.

Unter den Hauptinteressensvektoren der Konferenz wurden die Zukunft der Sprache selbst, ihre Architektur und Standardisierung, die asynchrone Programmierung in PHP, ihre Best Practices und impliziten Fähigkeiten, die Arbeit mit spezifischen Frameworks und sogar maschinelles Lernen unter Verwendung des PHP-Stacks hervorgehoben.



Schlüsselpapiere


Das Programmkomitee ging die Auswahl der Berichte gewissenhaft an, daher war es problematisch, die „coolsten“ zu identifizieren: Zumindest nach den Ergebnissen der ersten Rückmeldungen der Gäste gab es keine offen passierenden Blöcke im Programm. Als Beispiel mussten wir einige herausgreifen aus:

  • am meisten überfüllt;
  • das am meisten erwartete;
  • das reichste an Überraschung.



Nikita Popov: Typisierte Eigenschaften und mehr. Was kommt in PHP 7.4?




Nikita Popov, einer der aktivsten und bekanntesten Kernentwickler von PHP selbst, ist zu Recht in die Headliner der Konferenz eingestiegen. Sein Bericht ist eine Kreuzung zwischen einem Changelog mit Autorenkommentaren (plus Codebeispielen) und einem visionären Ausflug in die Zukunft der Sprache. Konsequent und prägnant erklärte Nikita, was uns in PHP in der nächsten Version und darüber hinaus erwartet.

Nach dem geschätzten Zeitplan wird die Alpha-Version 7.4 am 6. Juni 2019 und die Version 7.4 GA am 21. November veröffentlicht. Nun, ein Jahr später, im Dezember 2020, werden die von Gerüchten gefächerten „Acht“ veröffentlicht.

Die Hauptsache, die in PHP 7.4 implementiert wird:

  • typisierte Eigenschaften;
  • FFI - Foreign Function Interface, für die Arbeit mit externen Funktionen in C;
  • Pfeilfunktionen;
  • - Vorladen;
  • - Operator ??= ;
  • - kovariante Rückgabetypen;
  • - schwache Glieder (WeakReference);
  • - Hinzufügen eines Operators für Arrays.

Die vielleicht am längsten erwartete Neuerung in der kommenden Version ist die Möglichkeit, Typen für Klasseneigenschaften festzulegen. Es ist bemerkenswert, dass eine solche Eigenschaft notwendigerweise explizit initialisiert werden muss, und wenn ihr Standardwert nicht angegeben wird, wird sie nicht null - nein, in einer solchen Situation wird eine Ausnahme ausgelöst. Unter anderem helfen typisierte Eigenschaften dabei, etwas in PHP zu übersetzen, wie es in der Sprache der Schnittpunkttypen noch fehlt. Mit anderen Worten, geben Sie mehrere Typen für Argumente gleichzeitig an.

Die zweite wichtige Änderung in PHP 7.4 ist das Debüt der Pfeilfunktionen. Dies sind einzeilige anonyme Funktionen - nutzlos, wie einige Entwickler sicher sind, syntaktischer Zucker, während andere ihn genauso nützlich finden.

Sie können auch den Operator ??= nicht vernachlässigen, der zuvor in der Sprache nicht vorhanden war. Folgendes wird ausgeführt: Wenn der Parameter links im Ausdruck nicht vorhanden oder null ist, wird ihm der Wert des Parameters rechts zugewiesen.

Von den wahrscheinlichen Innovationen, die noch diskutiert werden, wurden Generika erwähnt. Nikita machte jedoch sofort den Vorbehalt, dass ihre vollständige Implementierung keine leichte Aufgabe ist.

Für die Funktionen, die in Version 7.4 als veraltet gelten, gab es mehrere. Die Verarbeitung des ternären Operators von links nach rechts wurde in den Mülleimer der Geschichte geworfen - im G8 erzeugt diese Syntax einen Fehler. Die Priorität des Verkettungsoperators wird ebenfalls verringert: Wenn er zusammen mit den Additions- oder Subtraktionsoperatoren verwendet wird, werden sie zuerst verarbeitet.



Am Ende der Rede wurde Nikita mit Fragen überschwemmt, die er so objektiv wie möglich zu beantworten versuchte, dank derer die Zuhörer mehrere wertvolle Tipps erhielten.

Nikita Popov:
- Ich denke, dass typisierte Sammlungen in Form von Generika vorliegen werden.

Dmitry Stogov: Das Interessanteste in PHP 8





Die Linie, die Nikita Popov gestartet hat, wurde von einem anderen prominenten Mitarbeiter des PHP-Kerns fortgesetzt - Dmitry Stogov, leitender Ingenieur bei Zend Technologies. Er erzählte von einer etwas weiter entfernten Zukunft der Sprache - von der sakramentalen Version 8.0. In den letzten Jahren hat er sich auf die Verbesserung der PHP-Leistung konzentriert und seine Geschichte mit dem gleichen Schwerpunkt aufgebaut.

Anderthalb Jahrzehnte lang "beschleunigte" sich die Sprache. Mit den Releases 5.1 und 7.0 wurden signifikante Leistungssteigerungen erzielt. In der Ära der Sieben gab es ein reibungsloses Wachstum: Die Geschwindigkeit der Codeausführung von Version zu Version zu erhöhen war nicht radikal. PHP 8.0 verspricht Entwicklern jedoch eine Geschenktüte. Sie warten auf viele interessante Dinge.

Wir sagen "interessant" - meine JIT? Nicht wirklich. Ja, die dynamische Just-in-Time-Kompilierung verspricht in Version 8.0 eine Leistungssteigerung, aber ... nur bei synthetischen Tests, in realen Anwendungen ist sogar eine Verlangsamung möglich, wenn auch unbedeutend. Verbesserungen sind jedoch möglich.

Dann begann das „Fleisch“: Dmitry ging tief in die Grundlagen von PHP und JIT ein und erklärte dabei „Was ist los mit JIT?“ Und teilte der Öffentlichkeit mit, wie die JIT, der Vorlademechanismus und FFI und für aufgrund dessen, was sie entwickelt wurden, um die Leistung von PHP-Code zu erhöhen.

Die obige Triade eröffnet neue Verwendungsmöglichkeiten für PHP. Es wird möglich sein, Erweiterungen direkt in PHP zu schreiben, C-Bibliotheken von Drittanbietern zu verbinden, Prototypen ohne zusätzliche Arbeit zu erstellen ...

Als ehrlicher Ingenieur skizzierte Dmitry jedoch nicht nur die schwindelerregenden Möglichkeiten, die in der achten Version der Sprache verfügbar sein werden, sondern warnte auch vor ihren Mängeln, sondern vor "Nichtoptimalität". Es ist natürlich großartig, dass beim Vorladen geladene Skripte beim PHP-Start geladen werden. Sie können jedoch nicht ohne Neustart ersetzt werden, und einige funktionieren möglicherweise nicht wie beabsichtigt mit dem Vorladen. Natürlich ist es wunderbar, wenn Sie dank FFI mit in C definierten Datenstrukturen arbeiten können und die API selbst einfach und angenehm ist. Nur FFI eröffnet tausend neue Möglichkeiten, sich in den Fuß zu schießen, und die Leistung ohne JIT ist relativ gering.

Gleichzeitig gibt es mehr Vorteile aus der Kombination von Technologien, die der G8 zugrunde liegen, als Minuspunkte. Darüber hinaus sind viele der im Bericht erwähnten Funktionen von Dmitry bereits in Version 7.4 zu spüren.

Alexander Lisachenko: Schule der Magie PHP




Der volle Raum nach dem Mittagessen wurde von Alexander Lisachenko, Leiter Webentwicklung bei Alpari, Mitglied des Programmkomitees von PHP Russia 2019, Entwickler und Hauptentwickler des aspektorientierten Frameworks Go! Aop. Er bot einen Blick auf die Sprache durch ein Prisma - unser Untertitel lügt nicht! - Magie.

So wie Intuition Logik ist, die vor der Vernunft verborgen ist, so ist Magie in einer Programmiersprache die Ausnutzung abnormaler oder wenig bekannter Fähigkeiten dieser Sprache, basierend auf einer tiefen Kenntnis ihrer internen Struktur, „Verzerrungen“ und Lücken.

Alexander demonstrierte als Ablenkung mehrere Tricks, dass viele von denen, die in der Halle saßen (und es gab eine Minderheit von Junioren unter ihnen), das Gehirn in die Luft sprengten. Der Redner näherte sich allmählich der Verwendung der Optimierungen, die er im Laufe der Jahre beim Eingraben in den Darm von PHP entdeckt hatte, zum Nutzen der Codierung.

Magische Methoden, nicht standardmäßige Zugriffsmöglichkeiten auf Eigenschaften, sich ändernde Kontexte, Stream-Filter - all dies und noch viel mehr „Maestro Lysachenko“ aus pragmatischer Sicht. Obwohl es unmöglich war, die paradoxe Schönheit dessen, was PHP-Hasser lieber als angeborene Fehler bezeichnen würden, nicht zu bemerken. Wir wissen es nicht, wir wissen es nicht ... Wir mögen es.

Alexander legte besonderes Augenmerk auf die aspektorientierte Programmierung in PHP, die in voller Übereinstimmung mit dem Prinzip der Praxis, die Sie predigen, im Schwanz und in der Mähne verwendet wird und die dennoch den Grundstein für Go! Aop.

Dave Leading: Praktische fortgeschrittene statische Analyse




Dave Liddament, Direktor von Lamp Bristol, teilte der Öffentlichkeit seine Best Practices in Bezug auf die erweiterte statische Analyse von PHP-Code mit. Als Autor des Open-Source-Tools SARB oder Static Analysis Results Baseliner entwickelte er eine Art Roadmap für das Publikum, um statische Analysen zu implementieren, damit jeder von seinen Überprüfungslösungen und -techniken leihen kann, die seiner Meinung nach zu seinem eigenen Stack und seinen Anforderungen passen. Oder um den Bericht als ganzheitlichen Mini-Leitfaden für die Implementierung statischer Analysen zu verwenden.

Unser Gast betonte die Bedeutung der Entwicklungsumgebung als Teil des Arsenals für die statische Analyse und lobte PHPStorm aufrichtig, was den Abteilungsmoderator Roman Pronsky von JetBrains, der diese IDE in seinem Unternehmen überwacht, angenehm zu überraschen schien.

Dave begann mit der Notwendigkeit grundlegender Überprüfungen:

  • Flusen.
  • Überprüft die Einhaltung der Programmierstandards (einschließlich der Bewertung der Konsistenz des im Befehl geschriebenen Codes), z. B. mithilfe von PHP CS Fixer .
  • Sicherheitscode-Analyse. Als solches Tool empfahl der Redner Security Checker von SensioLabs, den Autoren von Symfony.
  • Überprüft, ob var_dump vergessen wurde.
  • Automatische Synchronisationsprüfung composer.json und composer.lock (Composer validieren)

Diese und viele andere Tools für die statische Code-Analyse können von jedem in einem großartigen GitHub-Repository gefunden werden .

Für Symfony-Anhänger war der Bericht doppelt nützlich: Für diejenigen, die das Framework in ihrer Arbeit verwenden, gab er eine ganze Reihe von Tipps und Tricks für die Implementierung der statischen Code-Analyse.

Darüber hinaus befasste sich Dave mit den Nuancen der Verwendung fortschrittlicherer Tools, vor allem Psalm, Phan und PHPStan. Er legte einen separaten Schwerpunkt auf die Arbeit unter den Bedingungen der kontinuierlichen Integration (und beriet auch einige Zuhörer zu den Tools ).

Die Klassifizierung von Fehlern und „fast Fehlern“ von Dave war ebenfalls informativ, im Lichte der statischen Analyse des Codes und mit Einzelheiten darüber, wie sie genau auf die Entwicklung treffen. Selbst wenn der Parametertyp falsch angegeben ist und keinen Fehler in Ihrem Workflow verursacht, kann das Projekt, wenn es komplexer wird, leicht zu einem Rechen werden, auf den ein anderes Teammitglied tritt. Gemäß den in der Präsentation präsentierten Statistiken machen solche Evolvabilitätsfehler (Fehler, die während der Entwicklung des Codes aufgedeckt wurden) ungefähr 80% der Fehler aus, die während der Codeüberprüfung auftreten.

Und auch ...




Es ist schwierig, das Konferenzprogramm zu skizzieren: Der gesamte Konferenzinhalt war nützlich. Eine sorgfältige Auflistung aller 22 Berichte, selbst mit einer möglichst kurzen Zusammenfassung ihrer Thesen, würde den Bericht jedoch in ein unlesbares Blatt verwandeln. Lassen Sie uns nur einige weitere erwähnen.

Kirill Smelov von JetBrains hielt ein Versprechen und vertiefte sich in die Details des internen PHPStorm-Geräts, einschließlich der Frage, wie PHP an der Erstellung der IDE beteiligt war.

Die Rede von Anton Titov von SpiralScout LLC stellte sich als seltenes Ereignis im Rahmen des Konferenzprogramms heraus, als eine thematische Abweichung vom Kurs „ausschließlich in PHP“ gemacht wurde. Seine Geschichte über die Entwicklung hybrider PHP / Go-Anwendungen mit RoadRunner war jedoch definitiv erfolgreich.

Tomáš Votruba, ein tschechischer Delegierter, rief ein volles Haus an und erklärte Ihnen ausführlich, wie Sie das Refactoring großer Arrays von Legacy-Code weniger schmerzhaft gestalten und den Prozess durch die Entscheidung seiner Urheberschaft - Rektor - mehrmals beschleunigen können.

Dmitry Eliseev (ElisDN) las den Bericht „Kompetente OOP: Organisation zuverlässiger Geschäftslogik“, in dem er unter anderem untersuchte, wie Benutzeroberfläche und Geschäftslogik vom Verstand getrennt werden können.

Unkonferenz und Mitaps


Gegen Ende des Hauptprogramms wurde anstelle eines der Bausteine ​​das Unconference-Format getestet - ein Analogon zum "offenen Mikrofon": Jeder konnte einen Mini-Bericht zu einem Thema erstellen, das ihm interessant erschien. Der Pilot eines solchen „IT-Stand-Ups“ war ein Erfolg: Alexander Makarov sprach darüber, was Yii3 wahrscheinlich sein wird, ein Gast aus Badoo erzählte eine Geschichte, wie er und seine Kollegen einen Proxy für Xdebug machten, und schließlich widmete sich eine weitere spontane Präsentation den Merkmalen der Arbeit mit speziellen Etikettendruckern und einer Überprüfung und Verschraubung dieser ganzen Sache mit PHP.



In einem separaten vierten Raum begann nach dem Mittagessen eine Reihe von angewandten Mitaps (und sie fanden auch ihr Publikum):

  • "Laravel vs Symfony: ein Vergleich von unvergleichlichen."
  • "Wie man zu Symfony beiträgt und warum man es tut."
  • "Wie verwende ich Yii2 in Enterprise? Holen Sie sich die Best Practices von Symfony! “

Die Konferenzpartner wiederum organisierten keinen „Friedhof der Gestelle“, sondern eine unauffällige, unterhaltsame und angemessene Bewegung. ManyChat hatte Online-PHP-Quiz, einen Wettbewerb zum Erstellen und Entwirren von Bots und ein cooles Kreuzworträtsel mit regulären Ausdrücken. In der Ecke schneidet Badoo Tech Alias ​​ein - eine IT-Version von Alias-Desktops. Nun, am Paxful-Stand warteten die Besucher auf „atypische lila Elefanten“, Aufkleber und Süßigkeiten aus Estland.





Die Vergangenheit "sichern"


Die Afterparty wurde in jeder Hinsicht zu einem angenehmen Fall der Zusammenarbeit innerhalb der Community: Die Organisatoren arrangierten zusammen mit den Initiatoren des Beer PHP-Meetings. Am Ende des Hauptprogramms rückten diejenigen, die wollten, und darunter eine ganze Reihe von Rednern, zum Roten Oktober vor, um die Debatten in der „handwerklichen Atmosphäre“ fortzusetzen.



Was halten wir von den „Elefanten 2020“?


Wenn sehr prägnant, dann PHP Russland 2020 - zu sein. Neben den Grundformaten, die sich als relevant erwiesen haben, wird es für die nächste Konferenz sicherlich neue geben. Das Änderungsprotokoll der Wunschliste und des Organisationskomitees wird noch gefüllt, aber etwas ist bereits klar.

  • Ohne Zweifel werden wir weiterhin Unconference machen: Die Leute sind mit dem Format zufrieden und bitten um mehr.
  • Wir werden versuchen, ein Stück Elefanten zu bestellen. Bei PHP Russia 2019 waren sie es nicht: Es stellte sich heraus, dass die Rechte an ihnen den Jungs aus Frankreich gehören, und sie sind sehr langsam - sie müssen für 4-6 Monate bestellt werden.
  • Mit ziemlicher Sicherheit werden wir denselben Marco Pivetta mitbringen, der in unserem Programm war, aber im letzten Moment aus Gründen, die außerhalb seiner Kontrolle lagen, abgefallen ist. Wir haben auch Ansichten des Vaters von Symfony Fabien Potencier. Am Ende werden wir versuchen, Rasmus Lerdorf zu bringen: Wir haben ihn zur ersten Konferenz gerufen, aber er hatte Überschneidungen mit anderen Ereignissen.

Alles in allem bleiben Sie dran!



PS Endlich - ein kleiner Bonus. Wie einige von Ihnen wissen, veranstaltet Konstantin Burkalev , ein gebürtiger Habrowsk-Bewohner und Mitglied des PHP Russia-Programmkomitees, auch IT-Podcasts. Und die nächste, 104. Ausgabe seiner DEZA ist ein Interview, das er von zwei hochverdienten Konferenzrednern, Anton Shabovty und Anton Morev, geführt hat. Er sprach mit dem ersten über asynchrones PHP, Multitasking und langlebige PHP-Prozesse, mit dem zweiten über die Rest-API und GraphQL, die Vor- und Nachteile von Ansätzen, Bereichen und Aufgaben der Anwendung. Viel Spaß beim Zuhören!

Source: https://habr.com/ru/post/de454028/


All Articles