Wie wird die Programmierung im Jahr 2025 aussehen?



Wir lesen oft über Best Practices in der Programmierung, über neue Framework-Funktionen oder was in der nächsten Version von PHP neu ist. Wir lesen, wie man " dies in das " ändert , warum eine Technik gut oder schlecht ist oder welches neue Paket Sie in Ihrem Projekt verwenden können. Aber das alles ist Spekulation nur über die Vergangenheit oder die Gegenwart.



Ich werde das Buch « von The Inevitable » lesen , das vom Gründer der Zeitschrift Wired geschrieben wurde und in dem es nur um die Zukunft geht. Inspiriert von diesem Buch schlage ich vor, einen Blick auf die Zukunft der Programmierung zu werfen.



Heute kämpfen wir gegen technische Schulden (was auch immer das bedeutet), alten Code, der schwer zu warten und teuer zu modifizieren ist, aber gleichzeitig viel Geld generiert. Regelmäßig müssen wir den Code umgestalten, die DDD-Prinzipien befolgen, Tests schreiben, die PHP-Version aus Sicherheitsgründen aktualisieren, die neuesten Softwareversionen auf dem Server installieren und das Layout automatisieren.



Es gibt so viel Routinearbeit, dass es absolut keine Zeit gibt, sich Dutzende anderer Projekte anzusehen, die unser Unternehmen unterstützt ... oder zumindest irgendwo auf unseren Servern zu speichern. Wir sollten einen Experten einstellen, der dabei hilft, jeden Aspekt zumindest geringfügig zu verbessern. Nicht weil diese Projekte schlecht sind, sondern einfach weil es so viele Technologien gibt, die wir verwenden können, und noch mehr Code, den wir nur warten müssen.



Und wie wird das alles in Zukunft passieren?



IDE wird künstliche Intelligenz verwenden



In Zukunft wird das Eingeben von Code einfacher. Unsere IDE wird von künstlicher Intelligenz angetrieben, die aus den anonymen Daten anderer PHP-Projekte und aller Open Source-Projekte auf Github und Gitlab lernt.



Dank dieser KI weiß die IDE, wenn wir mit der Eingabe von "class HomepageC ..." beginnen, dass wir einen Homepage-Controller erstellen, dass wir Symfony sowie dessen Version von composer.json verwenden, und bietet an, dem Rest des Codes automatisch Finalisierungsmodifikatoren hinzuzufügen und starke Typen, basierend auf dem Wissen über die verwendete PHP-Version, auch von composer.json. Es wird eine Vorlage für die von uns verwendete Vorlagen-Engine generiert und der Inhalt anderer Vorlagen nachgeahmt, die wir bereits in unserem Projekt haben.



Dank der großen Menge an anonymen Daten und Daten aus öffentlichen Codespeichern weiß die KI, wie der Controller am besten getestet werden kann, und nutzt dieses Wissen, um einen optimalen Controller-Test zu erstellen.



Best Verified Practice



Wenn wir über "Best Practice" sprechen, meinen wir nicht, was ich oder jemand anderes in einem Beitrag oder Buch geschrieben hat, das ausschließlich auf persönlichen Erfahrungen basiert. Diese Meinungen basieren oft auf Erfahrungen aus nur wenigen Projekten und sind emotional aufgeladen.



In Zukunft wird das Konzept der "Best Practice" durch "Verified Practice" ersetzt und basiert auf realen Daten, die mit zwei starren Indikatoren verbunden sind - der technischen Verschuldung und der Effizienz der Codierung. Tech-Schulden haben ein finanzielles Äquivalent, das zeigt, wie viel es kosten wird, jede Codezeile in Zukunft zu pflegen. Können Sie statischen Code ohne eingegebene Klassen schreiben? Die Zeichenfolge kann 10 US-Dollar "kosten". Schreiben Sie Abschlussklassen mit starken Typen und einer öffentlichen Methode? In diesem Fall kostet die Leitung 2 USD.



Diese Zahlen sind nicht zufällig, sondern basieren auf einer ständigen Analyse einer riesigen Menge von Big Data, die für alle Projekte, die diese Funktion verwenden, anonym ist. Der Kodex wird mit den monetären Kosten verglichen, die für die Wartung und Verbesserung der Projekte erforderlich waren. Dank dieses Feedbacks weiß die KI auch, welche Version für Ihr bestimmtes Projekt vorteilhafter ist.



Die KI kennt den Kontext Ihres Projekts und vergleicht die Daten entsprechend. Haben Sie ein CLI-Projekt? Es wird mit dem Code anderer CLI-Projekte in diesem Themenbereich verglichen. Machst du eine Website? Es wird mit Designs von anderen Websites verglichen.



Die Effizienz der Codierung wird durch die Metrik "Wartbarkeit" des Projekts bestimmt. Es wird auf einer Skala von 0 bis 100 gemessen, wobei 0 bedeutet, dass das Verstehen des Codes viele Stunden dauert und es Tage oder sogar Wochen dauern kann, bis Änderungen vorgenommen werden. Ein Code mit einer Punktzahl von 100 ist für einen Junior-Entwickler leicht zu verstehen und er oder sie kann den Code fast sofort ändern.



IDE verifizierte automatische Vervollständigung



Die IDE kennt diese Metriken und folgt auch den in Ihrem Code verwendeten Mustern. Wenn Sie mit dem Schreiben eines Codes beginnen, dessen Effizienz 40-50 Punkte beträgt, wird bei der automatischen Vervollständigung ein Codevorschlag mit derselben Funktionalität, jedoch einer Effizienz von 80-90 angezeigt. Dies ähnelt der Arbeit, die Rector oder PHPStan heute leisten.



Neben der Codierungsleistungsanalyse wird auch eine Leistungsanalyse durchgeführt. Die Leistung wird automatisch gemessen, wenn sich der Code im Docker-Container im Hintergrund ändert, und Sie werden über Speicherverluste oder Laufzeiterhöhungen informiert. Diese Analyse ist so genau, dass sie die spezifischen Zeichenfolgen oder Zeichen kennzeichnet, die das Leck verursacht haben, und einen Fix vorschlägt, den Sie nur akzeptieren müssen.



AST Refactoring



Refactoring wird auch leistungsfähiger sein als heute. Es basiert auf dem Abstract Syntax Tree (AST). Die IDE schlägt das beste Refactoring vor, das Sie jetzt planen, basierend auf anonymen Daten aus allen offenen und geschlossenen Projekten.



Anstatt sich auf bewährte Verfahren zu beziehen, wissen Sie Folgendes:



  • Lösung A kostet Sie 3 USD pro Zeile an technischen Schulden und wird mit 95 für Effizienz und 45 für Leistung bewertet
  • Lösung B kostet Sie 1 USD pro Zeile an technischer Verschuldung mit einer Effizienzbewertung von 70 und einer Leistungsbewertung von 50


Bauen Sie ein Startup auf und möchten Ihre Idee testen? Dann wählen Sie Option A. Was ist, wenn Ihr Unternehmen stabil ist und dies auch in Zukunft bleiben sollte? Dann lohnt es sich, zu Option B zu wechseln, die in Bezug auf Support und Leistung billiger, in der Entwicklung jedoch etwas langsamer ist.



Sie müssen sich nicht mit einem Kollegen oder Ihrem Chef darüber streiten, warum Sie diese oder jene Lösung verwenden sollten. Sie vergleichen die Zahlen und entscheiden dann anhand Ihrer aktuellen Prioritäten.



Kontextarchitektur



Ihr Code hat eine kontextbezogene Architektur. Die KI weiß, wann sie zwischen Kontexten wechseln muss, basierend auf Daten aus anderen Projekten und den endgültigen Kosten für die Migration zu diesen. Starten Sie ein WordPress-Projekt? Es ist in Ordnung. Aber was ist, wenn Ihr Projekt populärer wird und Sie zu einem PHP-Framework wechseln müssen, das Ihren Anforderungen besser entspricht? Die IDE fordert Sie auf, zu Laravel zu wechseln. Ein Klick und Sie sind fertig.



Drei Jahre später wächst Ihr Projekt und Sie werden viele Aufgaben haben, um Dienste von Drittanbietern zu integrieren, die bereits in das Symfony-Framework integriert sind. Die IDE fordert Sie zur Migration auf ... Klicken Sie ... und boomen Sie, Sie sind bei Symfony 9. Haben Sie festgestellt, dass es nicht genügend Symfony-Entwickler auf dem Markt gibt, um die Entwicklung Ihres Projekts abzuwickeln? Ein Klick und die IDE überträgt das Projekt auf ein Framework, für das es genügend Entwickler zu angemessenen Kosten gibt.



StackOverflow versionierte Antworten 



Die IDE scannt Ihren Code und analysiert Ihre Codierungsgewohnheiten. Normalerweise schreiben Sie eine Funktion in 15 Minuten, aber jetzt dauert es fast 2 Stunden? In den kommenden Jahren wird die IDE so gut sein, dass sie in Sekundenschnelle sogar eine leichte Abnahme der Geschwindigkeit beim Schreiben von Code feststellen wird.



Die IDE überprüft dann Ihren Code, scannt die Antworten in StackOverflow, vergleicht die Antworten mit den Versionen in Ihrem composer.lock und schlägt vor, dass Sie einen bestimmten Code als am besten geeignet verwenden.



Befürchten Sie, dass dieser Code nur zufällig kopiert wird und Ihr Projekt bricht? Die Antwortbewertung basiert nicht mehr auf der Benutzerabstimmung, sondern berücksichtigt jetzt den Prozentsatz der Verwendung der Antwort, wenn sie erfolgreich in den Projektcode integriert wurde.



Getestete Codefragmente



Darüber hinaus werden Code-Snippets täglich von StackOverflow selbst und vor dem Kopieren in Ihr Projekt getestet. Es ist mit der Version Ihrer lokalen Umgebung, so dass Sie sicher sein können, dass der Code funktioniert. Die Leute schreiben nicht mehr wie in der Vergangenheit selbst Versionen dieser Antworten. Der Code in der Antwort wird automatisch mit jeder Version der verwendeten Technologie oder des verwendeten Frameworks aktualisiert. Für Symfony 5 wurde eine Antwort gegeben. Was passiert, wenn Symfony 6 veröffentlicht wird? Der alte Code in der Antwort wird mit dem AST-Rezept aktualisiert, das mit Symfony 6 veröffentlicht wurde. Auf diese Weise können der Mensch und die IDE problemlos damit arbeiten.



Open-Source-aktivitätsbasierte Finanzierung



Es wird ein neues Projekt erstellt, das kommerzielle Unternehmen und Open-Source-Mitarbeiter miteinander verbindet. Das Open Source-Projekt wird von den Unternehmen finanziert, die es nutzen. Entwickler, die einen Beitrag leisten, werden über ein einziges System finanziert, das auf eingehenden Geldflüssen basiert, ohne zusätzliche Gebühren zur Deckung der Kosten.



Die Finanzierung wird anhand von Metriken wie Funktionsauswirkung, Arbeitsbelastung, aufgewendeter Zeit, Codeeffizienz usw. ermittelt. Daher wird der Code viel konsistenter entwickelt als zu der Zeit, als er von unabhängigen Mitwirkenden in ihrer Freizeit entwickelt wurde. Ein Entwickler eines Open-Source-Projekts erhält tatsächlich einen Vollzeitjob, der von diesem Projekt finanziert wird.



Was erhalten diese Unternehmen als Belohnung? Community-spezifische Werbung, Vorabversionen neuer Versionen und direkter Zugriff auf Expertenberater, die die von ihnen (diesen Unternehmen) verwendeten Open-Source-Projekte erstellt haben.



Konsolidierung von Frameworks



Derzeit werden ~ 10 PHP-Frameworks konsolidiert. Die Communitys rund um PHP-Frameworks werden lernen, mehr zusammenzuarbeiten, anstatt nahezu identische Kopien von Frameworks mit einem MVC-Ansatz zu entwickeln.



Dank AST-Migrationen können Sie zu jedem PHP-Framework wechseln. Dadurch wird die Auswahl auf 3-4 Frameworks eingegrenzt. Wenn die Migration zwischen Frameworks nur einen Klick in Ihrer IDE erfordert, gibt es keinen Wettbewerb mehr, der auf der Behauptung "historisch" und den Gewohnheiten basiert, sondern nur auf der Qualität.



Die Reduzierung der Anzahl der Frameworks führt zu einer engeren Ausrichtung - ein Framework wird in der API erfolgreich sein, ein anderes in der CLI, das dritte in Sites mit hervorragender UX.



Wenn sich die gesamte PHP-Community auf weniger Frameworks konzentriert, können wir den eingesparten Aufwand in die Entwicklung neuer Technologien und Funktionen investieren.



Nur 1 stabile PHP-Version



Dank automatischer AST-Migrationen wird es nur zwei Versionen von PHP geben - Stable und Dev. Da das Aktualisieren eines Pakets oder Projekts sehr schnell und kostengünstig wird, gibt es keinen Grund, nicht auf die neueste Version zu aktualisieren. Es kann ein oder zwei Jahre dauern, bis die PHP-Community dies akzeptiert und alle Projekte synchronisiert hat. In diesem Fall wird das gesamte Open Source-Ökosystem innerhalb eines Monats nach der Veröffentlichung einer neuen Version von PHP diese als Mindestversion verwenden.



Vollautomatische und sofortige Code-Updates



PHP-Code muss nicht manuell aktualisiert werden. Jede Version von PHP verfügt über ein vollständiges AST-basiertes Update-Rezept, mit dem Sie den Code in Ihrem Projekt automatisch aktualisieren können. GitHub verarbeitet diese "Rezepte". Wenn also eine neue Version von PHP veröffentlicht wird, sendet GitHub automatisch eine Pull-Anfrage an Ihr Repository. Es wird automatische Updates nicht nur für PHP geben, sondern auch für jedes Framework oder Paket. Wie Dependabot, das kürzlich in GitHub integriert wurde, jetzt jedoch mit einem Code-Update und allen Abwärtskompatibilitätsproblemen.



GitHub-Upgrade



Wenn Sie nicht alle PRs selbst übernehmen möchten, können Sie sich für das Auto-Update-Programm anmelden, damit GitHub dies für Sie erledigt. Er wird auch die Releases und deren SemVer ordnungsgemäß aktualisieren.



Automatisierter SemVer 



Es wird keine Debatte darüber geben, ob es sich bei der Änderung um eine Abwärtskompatibilitätsunterbrechung oder nur um einen Patch handelt. AI analysiert den Code vorher und nachher und trifft auf dieser Grundlage Entscheidungen. Er wird so schlau sein, dass er feststellen kann, wie bedeutend eine bestimmte Änderung ist. Wenn dies keinen Code in anderen Projekten betrifft, wird er als Patch veröffentlicht.



PHP RFC basierend auf den gewonnenen Erkenntnissen



Die gleiche Analyse der Abwärtskompatibilitätsunterbrechung wäre für jeden RFC im PHP-Kerncode möglich. Möchten Sie typisierte Konstanten vorschlagen? AI wird Ihnen sagen, wie viele Projekte von den Top 10.000 auf Github in Prozent gebrochen werden. Ähnliches wird jetzt in einigen RFCs manuell durchgeführt.



Überdenken der Rückwärtskompatibilitätsunterbrechung



AI hilft Ihnen auch dabei, AST-Migrationsrezepte zu generieren, sodass ein sofortiges Update die Unterbrechung der Abwärtskompatibilität vollständig bewältigen kann. Dies wird zu einer Änderung des Konzepts führen. Abwärtskompatibilitätsunterbrechungen treten nur auf, wenn keine automatischen Aktualisierungen möglich sind und ein Benutzer den Code ändern muss.



Probieren Sie RFC lokal aus



Darüber hinaus kann jeder die RFC-Funktion direkt nach der PR-Erstellung auf GitHub lokal ausprobieren. Wie? Github erstellt automatisch eine temporäre Version mit einem speziellen Dev-Tag und überträgt diese PHP-Version in die Paketregistrierung. Sie erstellen einen RFC, um typisierte Konstanten hinzuzufügen, senden ihn als PR an GitHub und nach 1 Minute können Sie sudo apt-get install php-dev-typed-Konstante ausführen, um PHP mit diesem RFC auf Ihrem lokalen Computer zu erhalten.



Auf diese Weise können Programmierer diese Funktion bereits vor der Aufnahme in den Hauptzweig und vor der Abstimmung über den RFC ausprobieren. In diesem Fall basiert die Abstimmung über neue Funktionen auf realen Daten und Erfahrungen und nicht auf Emotionen, subjektiven Meinungen und Argumenten.



Was hält die Zukunft für uns bereit?



In Zukunft werden unsere Fähigkeiten nicht durch unsere Geschichte, frühere Entscheidungen oder sich schnell entwickelnde Technologien eingeschränkt, die unseren Code schnell veralten lassen. Mit nur einem Klick sind alle unsere Tools die fortschrittlichsten auf dem heutigen Markt.



Auf diese Weise können wir mehr experimentieren, unsere Annahmen testen und echtes Feedback erhalten. Dies wird zu einer noch besseren Automatisierung von Codierungsprozessen und Erfindungen in Sprache, Mustern und Anwendungsarchitektur führen, die wir uns heute noch nicht vorstellen können.



"Der beste Weg, die Zukunft vorherzusagen, besteht darin, sie zu schaffen." 



Fröhliche Schöpfung!



All Articles