Articles

Recent Posts

Laten we het maar vroegtijdig uit de weg ruimen: PHP is een vreemde en lelijke taal. Het is niet uitzonderlijk snel. Het is syntactisch niet mooi. Het is niet geformuleerd rond een duidelijke mening over goede software ontwikkelingspraktijken. En het is nog steeds waar ik veel software in schrijf. De voor de hand liggende vraag is: waarom? Waarom zou je tegenwoordig PHP gebruiken?

Er zijn een heleboel goede redenen voor, die verder gaan dan persoonlijke idiosyncratische voorkeuren. Dit is precies de plek om dat te bespreken. Waarom is PHP mijn voorkeurstaal voor webontwikkeling?

Wat is PHP?

“Wat is PHP?” Of, wat gebruikelijker, “wat is PHP?” Kort gezegd is PHP een programmeertaal gemaakt voor het web, opgebouwd uit de programmeertaal C, en die gebruik maakt van eigenzinnige HTML-achtige tags (of sigils) om zijn code in onder te brengen. De programmeertaal PHP wordt meestal server-side gebruikt, hetgeen betekent dat hij op uw webserversoftware draait, die gewoonlijk HTML aan uw bezoekers serveert.

PHP stond aanvankelijk voor “Personal Home Page”. Omdat dat de betekenis en de wenselijkheid van het gebruik van de taal voor algemeen gebruik behoorlijk beperkte, staat de taal nu voor “PHP: Hypertext Preprocessor”. Dit is wat men noemt een recursief acroniem (een naam die de naam bevat). Nerds zijn er gek op.

Wat kan PHP?

Waar wordt PHP voor gebruikt? Eigenlijk alles wat je op een webserver wilt doen, kun je met PHP doen. Een blog maken? Ja. Een volwaardige software-as-a-serivce applicatie maken? Absoluut. Een klein scriptje schrijven om in een paar seconden wat data te verwerken? PHP is daar geweldig voor. Een ingewikkelde set scripts schrijven die per ongeluk uitgroeit tot een succesvol softwarebedrijf? PHP wordt op die manier veel gebruikt.

Als je me niet vertrouwt, de PHP website noemt de volgende toepassingen:

  • Server-side scripting
  • Command-line scripting
  • Het schrijven van desktop applicaties

Ik ben er niet zo zeker van dat ik de laatste bullet point zou aanmoedigen, maar het is mogelijk. Maar de eerste twee zijn veel voorkomende en goede redenen om PHP in 2019 te gebruiken.

Dit leidt tot één belangrijk en onvermijdelijk feit…

PHP is OVERAL

Er zijn veel redenen om PHP te kennen en lief te hebben, waarvan waarschijnlijk de krachtigste en meest geldige dit is: het wordt gebruikt en draait OVERAL waar het web dat doet. Uw goedkope kleine $3 per maand hosting account kan u een webapplicatie in Python of Ruby laten draaien als u zorgvuldig winkelt. Maar het zal zeker PHP draaien. Dit betekent dat je er overal op kunt rekenen.

Symony is one of the reasons that people choose PHP

En omdat het overal draait en eenvoudig is om mee te beginnen, is veel zeer populaire software in PHP geschreven. WordPress is het voorbeeld dat zowel het grootst is als het meest bekend bij mij, maar tools als Joomla, Drupal, Magento, ExpressionEngine, vBulletin (yep, dat bestaat nog steeds), MediaWiki, en meer draaien allemaal PHP op de server.

En er zijn ook meer PHP applicatie frameworks dan je kunt schudden met een stok: Symfony, Zend, Laravel, Aura, CakePHP, Yii, en zelfs de eerbiedwaardige CodeIgnitor. Zeker kun je een lijst maken van web frameworks van enige lengte voor bijna elke andere taal. En voor veelgebruikte webtalen zoals Python, Ruby, of Node/JavaScript kan je misschien zelfs een numeriek concurrerende lijst samenstellen. Maar het aantal sites met PHP is immens.

WordPress gaat er prat op dat het meer dan 30% van het internet van stroom voorziet. Je hoeft dat feit niet eens te vertrouwen om te beseffen dat een groot deel van het internet PHP moet gebruiken als dat feit zelfs maar denkbaar waar is.

PHP heeft een aantal zeer goede kwaliteiten

Easy Dynamism is Baked into PHP

PHP logo

PHP doet HTML renderen en programmeren makkelijker dan bijna elke andere taal. Het is dus vrij eenvoudig om HTML in PHP te veranderen. Verander gewoon je file.html in file.php, voeg een beetje dynamiek toe in enkele <?php en ?> tags. De meeste webservers zullen al geconfigureerd zijn om de rest voor je te doen. Het is zo eenvoudig dat bijna iedereen aan de slag kan zonder veel meer verstand van programmeren te hebben dan dit. Omdat PHP zo vriendelijk is om je tanden in te zetten, is er veel slechte code in geschreven.

Als je je eenmaal realiseert dat het meeste slechte PHP is geschreven door beginnende programmeurs, komt de meeste angst en haat voor PHP die je in de wereld tegenkomt voort uit een ander essentieel probleem: PHP heeft nooit een groots ontwerp gehad met een visionair idee over waarom het de perfecte taal was voor je webserver. In plaats daarvan is het het resultaat van een brede samenwerking via een open proces dat dient als een smeltkroes waar elk goed idee – en een paar slechte – doorheen moet.

Object-Oriëntatie met (geweldig) Package Management is nu de norm in PHP

Composer PHP language
Composer is een geweldige reden om PHP te gebruiken

En slechte ideeën kunnen het halen door die smeltkroes. Het populairste voorbeeld is dat PHP 5.3 – apart algemeen beschouwd als de eerste moderne versie van PHP – het goto statement introduceerde, dat over het algemeen ofwel wordt bespot ofwel wordt beschouwd als een gemakkelijke bron voor fouten.

Gelijkaardige slechte dingen in PHP die het gevolg zijn van het proces waardoor de taal is gegroeid: object-oriëntatie werd eerst geïmplementeerd als een gebrekkig en beperkt concept, de standaardbibliotheek zit vol met inconsistente namen en parameter-ordening, en (in een voorbeeld dat onlangs redelijk wat aandacht kreeg) het :: token wordt door de interpreter aangeroepen door de voor Engelstaligen ondoorgrondelijke: T_PAAMAYIM_NEKDOTAYIM.

Maar vandaag is OOP volledig gerealiseerd in PHP. Weinig talen hebben zoveel Java-achtige OOP praktijk dan PHP. Wat meer is, in tegenstelling tot Java, heeft PHP een enkele en wijd-geliefde package manager, genaamd Composer. Die was erg goed, en dus is het gemak waarmee andere goed geschreven en goed onderhouden bibliotheken in PHP kunnen worden binnengehaald, niets om mee te spotten.

PHP Has Gotten a Lot Faster

Maar dat gezegd hebbende, PHP evolueert op interessante manieren. Het wordt steeds meer een Java-achtige objectgeoriënteerde taal (in goede en slechte tijden) met veel mogelijkheden. En net als Java, krijgt het eenvoudige abstracties voor functioneel programmeren – misschien wel de huidige hotness. Er komen ook steeds meer geweldige tools bij – PHP houdt van Composer, en niet voor niets – en een prijzenswaardige inspanning om al die grote open source projecten in PHP een beetje beter te laten samenwerken.

Oh, en we moeten de huidige hotness niet vergeten: de snelheidswinst die PHP heeft geboekt in de reeks releases van PHP 7. Dit wordt algemeen beschouwd als te zijn geïnitieerd door de HHVM coming out van Facebook. Korte tijd bestond het risico dat de snelheid van de HHVM de PHP-gemeenschap zou breken. Maar dat gebeurde niet. In plaats daarvan is PHP zo veel sneller geworden dat de mensen grotendeels zijn vergeten dat de HHVM bestaat.

PHP heeft een GROTE gemeenschap; het is leervriendelijk

Als je beslist welke coole nieuwe technologie je gaat gebruiken, wordt er volgens mij vaak te weinig aandacht besteed aan hoe het is om met de taal in aanraking te komen. Hoe is het om PHP te leren? PHP-tutorials zijn gebruikelijk en vaak behoorlijk goed.

Een nadeel van de populariteit van PHP is dat je soms niet-zo-goede training kunt vinden van mensen die niet genoeg weten over wat het gebruik van de tool nu echt inhoudt. Of die laatst “best practices” volgden die een decennium geleden actueel waren. Maar over het algemeen komt dat zo weinig voor dat ik denk dat je je daardoor niet hoeft te laten ontmoedigen. Er achter komen dat een praktijk die je een paar maanden hebt gebruikt niet zo goed is, is zeldzaam en geen groot probleem.

Common Comparisons to PHP

Veel mensen die nieuw zijn met programmeren, zijn op zoek naar zeer algemene vergelijkingen van talen. Dus, hier komen ze. Alle talen die ik hier ga opschrijven hebben de volgende kenmerken gemeen met PHP:

  • Ze zijn open-source. Dit betekent dat je de onderliggende taal gratis (zonder kosten) kunt gebruiken, en dat je het onderliggende programma kunt bekijken en begrijpen als je dat wilt.
  • Ze worden vaak gebruikt voor webontwikkeling. Vrij eenvoudig, dit zijn talen die veel gebruikt worden voor web ontwikkeling. Sommige worden ook daarbuiten veel gebruikt, maar niet allemaal.
  • Ze zijn hoog-niveau, losjes en dynamisch getypeerd. Dit betekent dat een variabele van type kan veranderen en dat je bij het definiëren van een variabele niet hoeft te definiëren welk type dingen (getallen vs. tekenreeksen vs. objecten, enz.) erin wordt opgeslagen. Dit wordt over het algemeen geprefereerd voor webprogrammering, maar niet universeel.
  • Hun gemeenschappen zijn van goede of betere omvang. Er zijn een heleboel interessante talen die de hierboven genoemde kwaliteiten hebben, maar die geen grote gemeenschap hebben. Ik laat ze hier buiten beschouwing.

Waarom PHP gebruiken? Waarom geen JavaScript?

De belangrijkste taal om PHP mee te vergelijken is misschien wel JavaScript. Moderne ontwikkeling vereist dat elk project ten minste een klein beetje JavaScript gebruikt voor client-side ontwikkeling en interactiviteit. Met Node is het relatief eenvoudig geworden om JS ook op de server te gebruiken. Het idee om dezelfde taal “isomorf” te gebruiken op de client en de server is erg aantrekkelijk.

Zoals PHP is JavaScript een eclectische en soms lelijke taal met een heleboel wratten en “gotchas”. Maar JavaScript is de laatste tien jaar enorm snel geworden, dus de argumenten ervoor zijn reëel. Waarom PHP verkiezen boven JavaScript? Je hebt expertise of je moet bibliotheken in PHP gebruiken. Anders denk ik dat JavaScript een betere keuze is.

PHP vs Active Server Pages ((.Net) Core)

Active Server Pages begon zijn leven als een closed-source Microsoft taal voor web programmering. Het was vrij direct vergelijkbaar met PHP, maar draaide in Windows Server-omgevingen. Dat werd vervangen door ASP.net. Die nu is vervangen door ASP.NET Core. De laatste twee zijn nu open-source talen, zoals PHP dat is. En ik heb persoonlijk nog nooit een likje ASP geschreven, in welke variatie dan ook.

Ik zou de voorkeur geven aan ASP als ik Microsoft servers gebruikte en ervan hield. Anders, geef me PHP alsjeblieft. De omvang en schaal van de gemeenschappen zijn niet echt vergelijkbaar.

Zal ik Ruby of PHP gebruiken?

Ruby, specifiek Ruby on Rails, was een decennium geleden erg populair. Ruby is nog steeds een zeer geliefde taal, die in mijn ogen veel eleganter is dan PHP. Dat gezegd hebbende, de gemeenschap is kleiner. En ik heb het gevoel dat Ruby niet meer de “hot language” is (in die rol voorbijgestreefd door JavaScript). Ruby is mooi, en er zijn genoeg mensen die er goed in zijn dat ik het om die reden niet zou mijden. Maar mensen inhuren die er al vertrouwd mee zijn, zal moeilijker blijven dan dat je dat in PHP doet. (Hoewel ik denk dat de vaardigheid van een gemiddelde Ruby ontwikkelaar waarschijnlijk hoger is dan hetzelfde voor PHP.)

Python vs PHP: Wat is beter?

De laatste taal die zinvol is in een één-op-één vergelijking met PHP is Python. Python wordt in veel meer contexten gebruikt dan webontwikkeling (het is ook erg populair voor statistiek en data-analyse). Het is ook een van de meest stabiele en goed ontworpen talen die er zijn, volgens de populaire consensus.

Python (net als Ruby en JavaScript) is een beetje moeilijker op een webserver te draaien dan PHP. Maar het is een mooiere taal, en meer divers gebruikt dan PHP. Het is een van de talen die ik moeilijk de voorkeur zou geven boven PHP, als alle andere dingen (toegang tot een externe bibliotheek, toegang tot het inhuren van expertise, enz.) gelijk zijn. Scala? Java? etc?

Ik zei bovenaan al dat er veel overeenkomsten waren met alle eerdere directe taalvergelijkingen die ik heb gemaakt. Maar als we die beperkingen weglaten, zijn er tonnen andere talen die we kunnen vergelijken. Dus om er een paar kort te bespreken:

  • Java is enorm populair, en erg snel. Het wordt gebruikt voor het bouwen van Android apps, desktop apps, en web apps. Het is echter niet dynamisch getypt, wat betere prestatiegaranties biedt, maar minder gemak bij webprogrammering.
  • Go is een nieuwere en groeiende taal die door Google wordt ondersteund. Het is gericht op web servers, maar iets lager niveau (meer als C) dan PHP. Het is snel, maar de gemeenschap van de praktijk is kleiner.
  • Scala is een populaire JVM-running (Java-compatibele) taal die nog steeds lijkt te groeien in populariteit. Het is eleganter ontworpen dan PHP, maar ik kan er verder niet veel met vertrouwen over zeggen.

Alweer, dat is alles waarvan ik het gevoel heb dat ik genoeg context heb om het aan te raken. Maar er zijn nog meer opties die je kunt overwegen. Maar dat is het einde van de specifieke alternatieven voor PHP.

Programmeertaalkeuze gaat over context

Gezien deze vergelijkingen, waarom PHP gebruiken? Ik heb een aantal dingen opgesomd die slecht zijn aan PHP, en ik voel een aantal van hen regelmatig. Naald en hooiberg inconsistentie in zoekfuncties bijt me minstens een keer per maand wanneer ik snel iets aan het doen ben zonder autocomplete.

Voor een echt en compleet greenfield project, zonder noodzaak tot interoperabiliteit met enig ander systeem, of noodzaak om te draaien in een willekeurige omgeving, zonder bestaande expertise in het team, zou ik vrij diep nadenken voordat ik PHP zou aanbevelen. Python spreekt me echt aan in dat scenario. Maar dat zijn een heleboel voorbehouden. Er zijn goede redenen om zelfs een vers greenfield project in PHP te schrijven.

Elke moderne webtaal kan je helpen om goede websites en apps te maken. En elk van hen heeft functies die niet ideaal zijn. PHP, net als alle andere, vereist dat je de afwegingen voor jouw project echt begrijpt om te bepalen of het voor jou zinvol is of niet. Maar voor mij persoonlijk blijft het mogelijk om – zoals Keith Adams het in een geweldige toespraak verwoordde – “schokkend productief in PHP te zijn.”

Als je een team van Python-programmeurs hebt, schrijf je toepassing dan in Python. Als je een medeoprichter hebt die Java kent, schrijf je SaaS dan in Java. De personeelsoverwegingen van software moeten altijd zwaarder wegen dan de taaloverwegingen.