Erstens ein Kontext (Dinge, die die meisten von Ihnen sowieso wissen):
Jede populäre Programmiersprache hat eine klare Entwicklung, die die meiste Zeit von ihrer Version abhängt: Sie haben Java 5, 6, 7 usw., PHP 5.1, 5.2, 5.3 usw. Eine neue Version stellt neue APIs zur Verfügung, behebt Fehler und fügt hinzu Neue Funktionen, neue Frameworks usw. Alles in allem ist es also gut.
Aber was ist mit den Problemen der Sprache (oder Plattform)? Wenn in einer Sprache etwas nicht stimmt, vermeiden Entwickler es entweder (wenn sie können) oder lernen, damit zu leben.
Jetzt erhalten die Entwickler dieser Sprachen viel Feedback von den Programmierern, die sie verwenden. Es macht also Sinn, dass mit der Zeit (und den Versionsnummern) die Probleme in diesen Sprachen langsam aber sicher verschwinden. Nicht wirklich. Warum? Abwärtskompatibilität, deshalb. Aber warum ist das so? Lesen Sie unten für eine konkretere Situation.
Am besten kann ich meine Frage am Beispiel von PHP erklären:
PHP wird von Tausenden von Menschen geliebt und gehasst. Alle Sprachen haben Fehler, aber anscheinend ist PHP etwas Besonderes. Schauen Sie sich diesen Blog-Beitrag an . Es gibt eine sehr lange Liste von sogenannten Fehlern in PHP. Jetzt bin ich (noch) kein PHP-Entwickler, aber ich habe alles durchgelesen und bin mir sicher, dass ein großer Teil dieser Liste in der Tat echte Probleme darstellt. (Nicht alles, da es möglicherweise subjektiv ist).
Wenn ich einer der Leute wäre, die PHP aktiv entwickeln, würde ich diese Probleme sicherlich nacheinander beheben wollen. Wenn ich das jedoch mache, bricht der Code, der auf einem bestimmten Verhalten der Sprache beruht, zusammen, wenn er in der neuen Version ausgeführt wird. In 2 Worten zusammengefasst: Abwärtskompatibilität.
Was ich nicht verstehe ist: Warum sollte ich PHP abwärtskompatibel halten? Wenn ich PHP Version 8 mit all den behobenen Problemen veröffentliche, kann ich dann nicht einfach eine große Warnung mit der Aufschrift "Führen Sie in dieser Version keinen alten Code aus!"
Es gibt eine Sache, die man Abwertung nennt. Wir hatten es seit Jahren und es funktioniert. Im Kontext von PHP: Sehen Sie sich an, wie die Leute heutzutage aktiv von der Verwendung der mysql_*
Funktionen mysqli_*
abraten (und stattdessen empfehlen und gU). Verfall funktioniert. Wir können es benutzen. Wir sollten es benutzen. Wenn es für Funktionen funktioniert, warum sollte es nicht für ganze Sprachen funktionieren?
Nehmen wir an, ich (der Entwickler von PHP) mache Folgendes:
- Starten Sie eine neue Version von PHP (sagen wir 8) mit all diesen behobenen Fehlern
- Neue Projekte werden diese Version verwenden, da sie viel besser, klarer, sicherer usw. ist.
- Um ältere PHP-Versionen nicht zu verlassen, veröffentliche ich weiterhin Updates, um Sicherheitsprobleme, Fehler usw. zu beheben. Dies ist aus Gründen sinnvoll, die ich hier nicht aufführe. Es ist gängige Praxis: Sehen Sie sich beispielsweise an, wie Oracle die Version 5.1.x von MySQL aktualisiert hat, obwohl es sich hauptsächlich auf Version 5.5.x konzentriert hat.
- Nach ungefähr 3 oder 4 Jahren stoppe ich die Aktualisierung alter PHP-Versionen und überlasse sie dem Tod. Dies ist in Ordnung, da in diesen drei oder vier Jahren die meisten Projekte sowieso auf PHP 8 umgestellt haben.
Meine Frage ist: Sind all diese Schritte sinnvoll? Wäre es so schwer zu tun? Wenn es möglich ist, warum ist es dann nicht möglich?
Ja, der Nachteil ist, dass Sie die Abwärtskompatibilität aufheben. Aber ist das nicht einen Preis wert? Als Vorteil, in 3 oder 4 Jahren haben Sie eine Sprache, mit der 90% der Probleme behoben sind ... eine Sprache, mit der es viel angenehmer ist, zu arbeiten. Sein Name wird seine Popularität sicherstellen.
EDIT : OK, also habe ich mich nicht richtig ausgedrückt, als ich sagte, dass die Leute in 3 oder 4 Jahren auf das hypothetische PHP 8 umsteigen werden. Was ich meinte war: In 3 oder 4 Jahren werden die Leute PHP 8 benutzen, wenn sie ein neues PHP starten neues Projekt.
mysql_*
wurde zum Beispiel in 5.5 veraltet), aber das ist irrelevant, wenn die Mehrheit der Hosting-Anbieter eine oder sogar zwei Versionen zurück hat (5.3 ist - leider - immer noch die Mehrheit von ihnen) Anbieter bietet).