Nu skal der styr på PHP med en formel specifikation af sproget

Illustration:
PHP har fungeret så godt, at sproget med en dansk opfinder er en grundpille i webudvikling, men hidtil har der manglet en formel specifikation af syntaks og semantik.

PHP-sproget har gennemgået mange store ændringer, siden den første udgave blev skabt af danske Rasmus Lerdorff i midten af 1990'erne. Men selvom PHP i dag er en grundpille i titusindvis af store websteder, har PHP faktisk manglet en præcis specifikation. Det får det nu.

Det første udkast til en formel specifikation af PHP er nu blevet lagt ud på Github. Formålet er ikke at lave om på PHP, men blot at få nedskrevet klokkeklart, hvad der er en officiel del af sproget.

Hidtil er det lykkedes PHP-udviklerne at holde styr på PHP uden en specifikation, også selvom der har eksisteret mere end én implementering af sproget. Men alligevel mener blandt andet Facebook, der er storforbruger af PHP, at det er på tide at få formaliteterne i orden.

Specifikationen omfatter en komplet beskrivelse af syntaks og semantik. For webudviklere, som benytter PHP, er der ingen ændringer i forhold til i dag. Arbejdet med specifikationen handler om at sikre, at de næste udgaver af PHP er konsistente i forhold til de nuværende - også hvis der skulle komme flere implementeringer - så man undgår en opsplitning.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (30)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#3 Jesper Sørensen

Det er rigtigt at der er mange problemer med PHP - og det er meget populært at gøre sig smart bemærket ved at linke til diverse sider der gør opmærksom på problemerne - men jeg synes sgu man er lidt snævertsynet hvis ikke man kan forstå hvorfor PHP er så populært.

PHP er nok det lettest tilgængelige server side sprog der findes. Med PHP behøver du blot en webserver der kan parse .php-filer, så er du kørende. Man behøver ikke at lære om klasser, MVC og typer, man kan skrive PHP direkte i sin HTML, man behøver ikke køre en avanceret IDE osv. Det betyder ganske enkelt at mange menneskers første programmeringssprog er PHP, og når de så bliver dygtigere og gerne vil bruge klasser og MVC, så kan de sagtens fortsætte med at bruge PHP - og relativt let arbejde uden om sprogets problemer.

Jeg siger ikke at PHP er et fantastisk sprog, men der er altså en god grund til at mange bruger det :)

  • 18
  • 1
#7 Jakob Dahl
  • 1
  • 4
#8 Carsten Gehling

Det er mig en gåde at så mange bruger PHP, og at man hermed prøver at cementere PHP's syntax..

Svaret ligger i historieskrivningen. Windows (NT) servere var dyre i licenser dengang ('98-'99), og FreeBSD var bedste og billigste alternativ. Dsv. ASP var off-limits. Perl med venner var alle CGI med fork af en ny proces for hvert request. Og FastCGI fandtes AFAIR ikke på det tidspunkt. Da det endelig kom, var deployment besværligt, fordi det krævede en genstart af FastCGI hver gang CGI scripts blev opdateret.

Så kom PHP og kort tid efter mod_php til Apache, som gjorde det nemt for hver mand og hans hund at sætte en web-stack op. Deployment var nemt, for PHP fortolkeren loadede php-scripts ind hver gang. Samtidig var det ikke et generel-purpose sprog, men klarede alle almindelighederne for HTTP kommunikation for programmøren.

Så jeg er ret sikker på, at det ikke er sprogets kvalitet, men dets lette tilgængelighed, der har gjort det så populært.

  • 10
  • 0
#9 Jonas Høgh

mod_perl blev frigivet i 96, så jeg vil mene at perioden hvor php havde fordelen af ikke at være CGI var ganske kort, og php var meget umodent på det tidspunkt. Jeg tror mere at succesen handler om, at mindre erfarne programmører ofte foretrækker sprog, der ikke er for svært tilgængelige pga mange avancerede features.

  • 5
  • 0
#11 Deleted User

Det er selvfølgelig en smagssag, men hvis jeg skal vælge mellem http://php.net/manual/en/language.types.array.php , http://msdn.microsoft.com/en-us/library/system.array%28v=vs.110%29.aspx og http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Array.html synes jeg ikke php manualen er specielt overlegen

MSDN siden lægger ud med stor bunke formelt skrammel, der er en "Syntax" som vist kræver en del baggrundsviden for at være til nogen form for nytte, så er der fire tabeller med "Properties", "Methods", "Extension Methods" og "Explicit Interface Implementations". Så er der en bunke "Remarks" som er en usorteret bunke af informationer som ikke lige passede ind i ovenstående. Ingen af delene giver nogen værdi før man ved hvordan man grundlæggende bruger et array. Til sidst er der to kodeeksempler, dem kan en nybegynder så copy-paste fra og begynde at bruge arrays på den måde, man kunne godt ønske sig at siden lagde ud med nogle lidt mere basale eksempler, men det virker da til en eller anden grad. (Med mindre selvfølgelig at man ønsker at kode i F#, i så fald sur urt, der er ingen eksempler.) Min erfaring er at der er masser af andre sider på MSDN som er dårligere end denne, enten helt uden eksempler, eller med ukomplette eksempler som ikke kan køre uden udeladt initiering, eller slet og ret ikke viser nogle af de mest basale brugsformer. Noget helt andet er at finde den side man skal bruge til at starte med, MSDN virker på det punkt som lidt af en høstak, og hvis man ikke ved hvad kommandoen eller klassen hedder er det ikke sikkert at det hjælper at google.

Javasiden er ca. på samme måde som MSDN siden, bortset fra at der ikke er nogen eksempler, for en nybegynder er den side fuldstændig ubrugelig.

PHP-siden lægger ud med basal information om arrays og lægger så stille og roligt mere på, med relevante kodeeksempler hele vejen igennem. Dét er hvad en begynder har brug for.

Jeg kan tilføje at MDN tidligere har været lige så tør som Javaeksemplet, men siden har fået et gevaldigt løft og er nu bredt anvendelig uanset niveau: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global... . Desværre handler MDN kun om klientkode, så der er ikke en PHP-erstatning på trapperne ad den vej.

  • 6
  • 0
#13 Deleted User

Det problem er der næppe nogen manualer der kan hjælpe på.

Ikke enig, PHP manualen har netop tekster som ikke bare beskriver funktionen, men også hvad den bruges til, samt generelt en stor bunke brugerkommentarer, og det kan Google arbejde med. Den slags beskrivelser mangler ofte på MSDN, og Stacken er generelt ikke så god hvis man bare skal have et overblik over features som kandiderer til at løse en opgave.

  • 1
  • 0
#17 Lars Sommer

Det er mig en gåde at så mange bruger PHP, og at man hermed prøver at cementere PHP's syntax..

Læs evt hvorfor her:http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

Jeg bruger php til husbehov, men mange tak for interessant læsning.

Jeg savner et par forslag til rigtig gode sprog, hvor alle de her kritikpunkter er håndteret godt. Kan du give et par bud?

  • 4
  • 0
#19 Thue Kristensen

Nu er det altid PHP som bliver kritiseret. Og PHP er da ikke perfekt. Men jeg har altid undret mig over at JavaScript slipper så billigt i sammenligning.

Variable i JavaScript er globale per default, hvis man glemmer at skrive "var"! Og object-modellen er super-uintuitiv, og tvinger programmøren til at pakke den ind i mange mærkelige konstruktioner af paranteser. Det er altså meget mere grundlæggende problemer end PHP, og man møder JavaScript-problemerne hele tiden.

  • 2
  • 1
#20 Peter Stricker

Nu er det altid PHP som bliver kritiseret. Og PHP er da ikke perfekt. Men jeg har altid undret mig over at JavaScript slipper så billigt i sammenligning.

Dedt er meget svært at undgå Javascript i en ikke-triviel browserbaseret løsning. Derimod er brugen af PHP (forhåbentlig) et aktivt valg blandt mange muligheder.

Javascript bliver så sandelig også kritiseret. Også af de mest aktive brugere. Se for eksempel denne video: https://www.destroyallsoftware.com/talks/wat

Med PHP drejer det sig mere om, at det er valget af PHP, der kritiseres.

  • 1
  • 0
#21 Baldur Norddahl

Jeg savner et par forslag til rigtig gode sprog, hvor alle de her kritikpunkter er håndteret godt. Kan du give et par bud?

Der er mange udmærkede sprog. Mit bud er Scala med Play Framework http://www.playframework.com/. Det kan noget af det samme som PHP: Du ændrer i en fil med din favorit editor, gemmer og reloader siden i browseren, hvorefter du med det samme kan se effekten af ændringen. Play er nemt at tilgå og du behøver ikke lave avancerede klassehierarkier og store build systemer for at komme igang.

Scala er udviklet på en helt anden måde end PHP. Det er et sprog hvor der bliver skrevet forskningsartikler om nye ændringer, og hvor alt er tænkt igennem. Så tænker du måske at så er det alt for akademisk, men nej. Når noget er smart og gennemtænkt, så er det også til gavn for nybegynderen og den praktiske gris.

Scala bliver nogle gange kritiseret for at være avanceret og det er rigtigt at man kan lave noget på et meget højt plan. Men man kan også holde det helt simpelt, og så er det ikke et svært sprog. En nybegynder behøver ikke kunne svejse under vand, for at komme i gang med at lave en hjemmeside i Play.

Når man kommer lidt ud over det basale, så åbner der sig nogle meget seje muligheder. For eksempel så bruger jeg Scala-JS http://www.scala-js.org/ i mine projekter sammen med Play. Det er et system som oversætter Scala kode til JavaScript. Nu kan du dele kode, som kan køres både på server og klient. Det er nemt at serialisere objekter på serveren og modtage dem på klienten, og der er aldrig problemer med at klient og server ikke stemmer overens - det er jo det samme stykke kode.

Ja faktisk kan man prøve Scala-JS direkte i browseren: http://www.scala-js-fiddle.com/

Det er så også et svar til den anden debattør, der spørger om et alternativ til JavaScript.

  • 3
  • 0
#22 Palle Simonsen

Med PHP drejer det sig mere om, at det er valget af PHP, der kritiseres

Valg af programmeringssprog er afhængig af kontekst. Er der tale om køkkenbordsprogrammering, er det stort set ligegyldig, så skal det bare være sjovt/let/lærerrigt etc.

Er der derimod tale om en mere professionel kontekst kan PHP og Javascript være ganske gode valg pga. den store installerede base herunder de mange frameworks og 'halvfabrikata' i form af e/mCommerce sites, blogsites, CMS etc. i de to sprog. Flere med kommerciel support og stor sandsynlighed for at finde systemintegratorer / indies med passende demonstrerbar rutine i sprog og frameworks.

Mht. kvalitet af koden har jeg gennem efterhånden en række system/kode reviews ikke kunnet spore nogen sammenhæng mellem anvendt værktøj og målbar kvalitet.

  • 0
  • 0
#23 Deleted User

Nu er det altid PHP som bliver kritiseret. Og PHP er da ikke perfekt. Men jeg har altid undret mig over at JavaScript slipper så billigt i sammenligning.

Variable i JavaScript er globale per default, hvis man glemmer at skrive "var"! Og object-modellen er super-uintuitiv, og tvinger programmøren til at pakke den ind i mange mærkelige konstruktioner af paranteser. Det er altså meget mere grundlæggende problemer end PHP, og man møder JavaScript-problemerne hele tiden.

Rolig nu, meget grimt kan siges om JavaScript, men det er nu efter min overbevisning ret langt fra PHP's dårligdomme. Jeg ved ikke hvad der er uintuitivt ved JavaScript objekter, giv en parameter en værdi, og den har den værdi når du læser den igen. De mærkelige konstruktioner af parenteser er nok closures, en rimelig smart feature når først man har lært at bruge den, men ikke noget man er tvunget til at bruge.

Når først man kender modellen for scopes og objekter i JavaScript, samt har styr på plus-operatoren ("1"+1==="11"), så er der ikke mange overraskelser tilbage. Det er et væsentligt mere konsistent sprog end PHP.

  • 1
  • 0
#24 Thue Kristensen

Jeg bruger både PHP og JavaScript på arbejdet. Javascript har væsentligt flere WTFs per minute.

Jeg ved godt hvad en closure er. Jeg taler mere om måden at definere objecter på I JavaScript, som er superfleksibel og dynamisk, men derfor også super-besværlig at bruge. Især for et legetøjssprog som JavaScript, som jo bare var designed til at lave lidt blinkende tekst i de første browsere, og absolut ikke har brug for en eksperimentiel og dynamisk object-model.

  • 1
  • 1
#26 Deleted User

Har du hørt om Node.js? :-)

Ja, og det indeholder hundredevis af nye keywords med tilhørende funktioner som er lemfældigt dokumenteret på http://nodejs.org/documentation/api/ . Dertil er selve strukturen i Node en del sværere at arbejde med end PHP hvis man ikke i forvejen kan programmere på et rimeligt niveau. Samlet set må jeg konkludere at Node i sin nuværende form ikke truer PHP som begynderplatform.

  • 0
  • 0
#30 Jesper Louis Andersen

Jeg savner et par forslag til rigtig gode sprog, hvor alle de her kritikpunkter er håndteret godt. Kan du give et par bud?

Lua er forbløffende veldesignet som sprog. Mange af dem jeg kender med god programmeringserfaring i mange sprog hælder til Lua som implementationssprog for rigtigt mange ting. Python er også et bud, men det er temmeligt stort som sprogstandard set i forhold til Lua.

I samme klasse som PHP, men et større spring ville være Google's Go (golang.org) - der brillierer ved sin virkeligt gode tooling og gennemførte simple tilgang med god dokumentation. At det typiske program er ca. 50 gange hurtigere end PHP gør heller ikke noget fordi man så kan implementere noget mere lemfældigt i forbindelse med mange problemer. Det har også den fordel at det har en gennemført concurrency-model, i modsætning til mange andre konkurrenter.

Hvis du godt vil have fat i det tungere skyts, så er det du kommer til at stifte bekendtskab med Scala, Clojure, Erlang, Haskell, OCaml, ..., men fælles for disse systemer er at du skal forvente det kræver noget mere tillæring at kunne benytte dem effektivt. Til gengæld står indsatsen så også mål med resultatet, og du skal nok forvente at det kommer til at tage noget tid.

Personligt ville jeg prøve at undgå Javascript med mindre du rent faktisk har en masse erfaring med client-side programmering og derved kender dets faldgruber. Node.js er tiltalende fordi det har så lille impedans-mismatch mellem webclient og serverside, men prisen herfor er at du skal slås med Javascript begge steder nu. Det er velsignelse og forbandelse samtidigt.

PHPs chance er at Facebook har så meget investeret kode i PHP at de er NØDT til at gøre noget. Snart. Og det ser også ud til at de gør en masse ting ved det.

  • 0
  • 0
Log ind eller Opret konto for at kommentere