Naar aanleiding van https://www.phphulp.nl/php/forum/topic/krijg-een-error-als-ik-de-php-versie-omhoog-zet/104727
Het is toch eigenlijk wel bijzonder dat wanneer imand de versie van PHP omhoog zet, dat je dan ineens errors krijgt!

Wie kent er nog een enkele andere programmeertaal, waarbij je bloedeigen bestaande en eerder correct geteste code ineens niet meer werkt, door 'backward incompatible changes' zelfs bij een minor versie upgrade? Bij de overgang naar PHP 8 werd zelfs booleaanse logica aangepast waardoor je feitelijk al je (unit) tests na zou moeten kijken. En je moet minimaal elke 3 jaar, liefst jaarlijks door dat hele traject heen. Omdat er elk jaar een nieuwe PHP versie komt, die maar 3 jaar ondersteund wordt met beveiligsupdates.

Uit eigen ervaring heb ik vernomen dat er bedrijven zijn die 30% (dertig procent!) van hun ontwikkeltijd volledig kwijt aan het oplossen van bugs. Als ik alleen al vanuit bedrijfsmatig perspectief kijk, dan lijken PHP-programmeurs goedkoper dan voor andere talen, maar je moet die prijzen bijna met factor 1.5 omhoog gooien als je alle bugs mee telt.

PHP wordt ook wel ingezet voor bedrijfskritische processen (heb ik zelf eerder ook gedaan). Maar ik heb het idee dat de ontwikkelaars van PHP zichzelf verheven voelen boven alles wat 'userland' is. Voelen jullie je wel serieus genomen met PHP?

Overigens ben ik niet op zoek naar de standaardreflex onder PHP-programmeurs van 'als het je niet bevalt ga je toch fijn ergens anders heen?' Dat heb ik al gedaan voor mijn belangrijkste project, Rust bleek een prima alternatief. Maar ik heb nog een aantal andere kleinere projecten die (nu nog wel) op PHP werken.
Dit komt uiteraard in alle programmeer talen wel voor.
Zelf programmeer ik heel veel in Python en in PyQt. Het verschil tussen PyQt 5 en 6 is enorm.
Maar ook als ik een andere package, bijv psycopg van versie 2 naar 3 update zijn er grote verschillen.
Ook de verschillen in Python 2 en 3 zijn heel groot.
Het enige voordeel is dat je dit allemaal nog redelijk zelf in de hand hebt. En bij PHP is dit toch afhankelijk van of je een eigen server hebt of een hosting. Wanneer de hosting je pusht om een nieuwe versie te gaan gebruiken of wanneer je zelf moet gaan upgraden i.v.m. security issues (maar dan kun je dit wat beter plannen).
Al met al zou je toch altijd bezig moeten blijven om alles up-to-date te houden.
Deels is het ook een beetje een "eigen schuld" verhaal.

Vaak zie je dat iemand een script met de display_errors UIT heeft gemaakt, maar na een update staat die setting ineens AAN.
Dan krijg je topics dat er "ineens" 100 fouten op een pagina zijn. Terwijl die er al 4 jaar waren, alleen dan niet zichtbaar.

Het je een development traject waarbij je op z'n minst een devel server hebt waarop de error-reporting hoog staat en display-errors aan, dan hadden veel van die fouten al direct verholpen kunnen worden.

Naast de fouten als $i = $i + 1; als $i nog niet bestond, (niet ernstig)
zou je ook fouten als
$Telefoon = 1;
echo $telefoon;
(wat serieuzer) hebben gezien.

Daarnaast zou je ook ruim van te voren zijn gewaarschuwd dat (voorbeeld van vorige week) dat de parameters van de functie explode() niet meer "verkeerd om" mogen staan.

Ik heb nooit de logica gezien waarom dat mocht.

@Michael; het komt zeker niet in alle programmeertalen voor. In C++ is het zelfs een belangrijke peiler van de taal, het principe dat Bjarne Stroustrup beschrijft: "whatever you do, DON'T BREAK MY CODE!". Het zou ook niet best zijn als dat elke paar jaar verandert, dan waren er nooit zoveel extensies voor PHP geweest, laat staan een besturingssysteem.

De reden dat het vernielen van bestaande code door backward incompatible changes zo ontzettend slecht is, is omdat er vaak erg veel uren zit in die code. Maar dat is bij PHP duidelijk ondergeschikt aan de taal zelf.
Ik wist niet dat er ook nog andere scripttalen zijn die datzelfde principe volgen, al zie ik in jouw lijstje nog geen minor versie updates. En een groot aantal wijzigen in PHP betreft API-changes, maar een net zo aanzienlijk deel molt dus je bestaande (test)code.

@Ivo P; ik ben het niet met je eens dat het eigen schuld is. Programmeren is vaak ook een samenspel tussen programmeur en de compiler (of interpreter). Als jouw code eerst valide is, en later niet meer omdat de programmeertaal te slecht is ontworpen zodat er steeds allerlei verbeteringen moeten plaatsvinden die jouw code invalideren, dan is dat vooral ook de schuld van het slechte ontwerp van de programmeertaal.

Ik heb jaren geleden al zitten zeuren dat het onzinnig is dat er functies bestaan als utf8_encode(), die alleen kunnen transcoden van een enkele naar een enkele andere encoding, terwijl er nog 3 extensies zijn waarmee datzelfde veel beter kan. Inmiddels zijn ze deprecated, maar het kwaad is al geschied bij het verzinnen van die functies.

PHP is in het verleden nooit bedoeld als programmeertaal, maar als een C-toolkit met prefab oplossingen. Ontwikkelaars van PHP denken er zelfs zo naief over dat ze bijzonder idiote voorstellen doen, zoals flexibele functienamen. Gelukkig zijn er ook verstandiger mensen die daartegen hebben gestemd. Maar het punt is, dat er eigenlijk helemaal geen ontwerp achter PHP zat, en dat er pas achteraf een poging wordt gedaan om PHP te laten concurreren met serieuzere talen. Het probleem is dat PHP nu zo ontzettend groot is dat een ontwerp vooraf onontbeerlijk is om niet elke keer het wiel opnieuw uit te moeten vinden op allerlei terrein.

In de tijd van Rasmus Lerdorf was er ook al lang een opleiding voor computer science, alleen heeft hij zich daar klaarblijkelijk niet zoveel aan gelegen gelaten. Met als gevolg dat het nu lastiger is om een goede grote webapplicatie te maken (en te onderhouden!) in PHP dan dat het is met andere talen. Dat wordt ook onderschreven door de uitvinder van PHP:
"Yes, from many points of view, PHP is a horrible language, but if you’re in a situation where you need the shortest possible way to solve a web-related problem, have little prior experience with web programming, and long-term consequences are of little concern, then PHP makes a starts making a lot more sense."
Met andere woorden, PHP is leuk als hobby.

En ik ben het er nog niet eens mee eens, want om een goede webapplicatie te maken met PHP heb je wel degelijk heel veel ervaring en kennis nodig. Wat ik voor PHP vind spreken is dat het een lage instap biedt om überhaupt een webapplicatie te kunnen maken. Om programmeren te leren is het voor veel situaties een optie.
Het eigen-schuld deel sloeg wat mij betreft vooral op het onderdrukken van foutmeldingen.

Hoe vaak zien we niet topics langs komen van gebruikers die ineens hun scherm vol hebben staan met meldingen over "undefined index xyz" als ze de site op een andere server zetten of na een PHP upgrade waarbij de errors niet meer onderdrukt worden.

Ik kan me ook nog wel vinden in het verwijderen van functies als mysql_query() na 10 jaar of zo waarschuwen.

Gedrag veranderen als $array->$var[0] ( is dat nu $var[0] = 'X'; dus $array->x of is het
een array $array->x en dan daarvan element [0], kan wel tot onvindbare bugs leiden.

Of je om te beginnen al variabele vars wil hebben, is een tweede.
Ik denk dat PHP daar veel te flexibel is.
>> Overigens ben ik niet op zoek naar de standaardreflex onder PHP-programmeurs van 'als het je niet bevalt ga je toch fijn ergens anders heen?'

Waar ben je dan eigenlijk wél naar op zoek? Het lijkt erop alsof je bevestiging zoekt van jouw eigen standpunt. En als iemand daar dan op reageert, dan ben je het er niet mee eens en lijk je je eigen mening te willen opleggen.

Je hóeft niet met PHP te programmeren. Als jij liever iets anders gebruikt, prima toch? Niemand dwingt je ertoe. Op het moment dat je voor een programmeertaal kiest, dan weet je wat de gevolgen zijn. PHP wordt zeer veel gebruikt. En dat is niet voor niks. Blijkbaar voorziet het in een behoefte. En soms werken dingen niet meer en ja dan moet je een paar dingen aanpassen. Dat hoort erbij. We hebben te maken met een taal. Iedere taal evolueert in de loop der jaren op basis van voortschrijdend inzicht. Techniek evolueert op basis van voortschrijdend inzicht. Dat is maar goed ook, want stilstand is achteruitgang. Dingen waarvan men ooit dacht dat ze logisch waren, worden op basis van voortschrijdend inzicht verbeterd. Ik neem aan dat jouw allereerste website ook van een ander, minder, niveau was dan je laatste website? Ik neem aan dat ook jouw eigen inzicht en technieken in de loop der jaren zijn gewijzigd en verbeterd? Zo werkt het met alles. Herinner je je nog VHS, cassettebandjes, cd's? Ooit heel normaal, nu ouderwets. Alles evolueert, zo ook een programmeertaal. En ja, dan verdwijnen soms functies of ze worden aangepast. En ja, dat houdt in dat je soms zelf ook even iets moet aanpassen. Maar weet je ... zo is het leven. De dingen om ons heen veranderen. Dat geldt voor alles en niet alleen voor PHP.
ik kan geen kwartjes meer kwijt in een telefooncel,
mijn SD kaart van 128MB past niet meer in mijn nieuwe camera. Dat moet nu een micro SD zijn en 128MB is bij lange na niet voldoende;
Mijn telefoon kan niet met een mini-sim overweg (ik heb ooit een toestel gehad waar dat hele creditcard-formaat stuk plastic als SIMkaart in moest, zonder er iets uit te drukken).

Sowieso denk ik dat dat toestel zich op de huidige gsm-netwerken niet kan aanmelden.

App's op telefoon doen het niet meer sinds een update van de Android-versie.

Ik heb hier een printer staan die geen drivers heeft voor Windows 11.

MEt een oudere auto moet je bij het tanken extra stoffen toevoegen omdat euro-95 niet voldoet. En al helemaal niet als het E10 is.
Met die auto mag je dan verschillende binnensteden niet meer in.

TV kijken met een antenne? Moet nu digitaal.

Kortom: verandering zit op vele vlakken, niet alleen in PHP.
En soms moet je je daarop aanpassen.
Ozzie PHP op 11/07/2023 10:06:42

>> Overigens ben ik niet op zoek naar de standaardreflex onder PHP-programmeurs van 'als het je niet bevalt ga je toch fijn ergens anders heen?'

[..]
Je hóeft niet met PHP te programmeren. Als jij liever iets anders gebruikt, prima toch?

Dat is de reactie waar ik niet naar op zoek ben.

De vraag die ik met wat meer woorden stel is of er meer mensen zich niet helemaal serieus genomen voelen met PHP, doordat de makers van de taal geen rekening wensen houden met jouw code.

Ik bedoel, het ontwikkelteam zou ook voor een andere werkwijze kunnen kiezen: in plaats van het jaarlijkse incompatibility circus waardoor je je hele codebase moet nalopen en je halve testsuite, is het ook mogelijk om dat gewoon een paar jaar eens niet te doen.

Fix in één keer alle issues met PHP onder een major release, bijvoorbeeld versie 10.
En release de rest onder minor versies zonder dat het onze code breekt. Want daar word je als bedrijf gewoon heel erg moe van, als je een groot deel van je tijd en ontwikkelbudget kwijt bent aan het fixen van dergelijke bugs.

@Ivo P, ja natuurlijk zijn er veranderingen. Maar waarom lukt het andere talen dan wel om dat niet te doen met backward incompatible changes?
>> De vraag die ik met wat meer woorden stel is of er meer mensen zich niet helemaal serieus genomen voelen met PHP, doordat de makers van de taal geen rekening wensen houden met jouw code.

Nee, ik ervaar dat niet zo.
Ok, en waarom ervaar je dat niet zo?

Stel iemand heeft 5 ervaren programmeurs op de loonlijst van een bv.
Dat kost 5x 100k bruto per jaar, plus 100k reserve voor als er iemand langdurig ziek wordt.
Alleen al het fixen van bugs kost een bv dan 180k per jaar.
Een deel daarvan wordt veroorzaakt door de jaarlijkse incompatiblity changes.
Wat zou die iemand dan weerhouden om ook te kijken bij andere programmeertalen?
Ter vergelijk, een taal als K&R C is nog steeds ongewijzigd, code van 40 jaar terug compileert nog steeds.

Ik maak me hier druk over omdat ik het zonde vind van en voor PHP.
Omdat ik met 22 jaar PHP ervaring mijn webapplicatie liever in PHP had gehouden.
Maar nu mijn applicatie groter wordt, heb ik het moeten omschrijven naar een andere taal.
De conversie heeft me meer dan een half jaar gekost.
Je hebt mijn topics met meerdere overwegingen wel voorbij zien komen.

@Michael, dit is helaas gebeurd met alles in eigen beheer, inclusief de hosting.

Ik vraag me dan ook af waarom anderen daar geen of minder last van hebben?
Jij gaat uit van jouw eigen ervaringen. Ik heb die ervaringen niet. Misschien was jouw code wat ouder en heb je daardoor wat meer dingen moeten aanpassen. Als je alles met enige regelmaat bijhoudt, vind ik het wel meevallen. Jij praat vanuit jouw eigen perceptie en dat is prima. Alleen moet je je ook beseffen dat andere mensen anders tegen bepaalde dingen aan kunnen kijken dan dat jij doet.

Als jij reden ziet om iets om te bouwen naar een andere taal, omdat PHP eens in de zoveel jaar her en der een aanpassinkje maakt, staat dat je geheel vrij. Voor mij is dat geen reden. PHP wordt met iedere wijziging weer een stapje beter. De developers staan (gelukkig) niet stil.

Reageren