Gå til innhold

Hva er galt med PHP?


Anbefalte innlegg

@quantum: Er du sikker på at de alternativene til mysql du foretrekker ikke er støttet i PHP? PHP støtter jo mye forskjellig. :)

Php støtter andre og bedre databaser enn mysql. Er du sikker på at du forstod det jeg skrev?

 

Php støtter andre og bedre databaser enn MySQL uten at det gjør Php noe bedre. MySQL kan brukes fra andre og bedre språk/plattformer enn Php uten at det gjør MySQL noe bedre.

Lenke til kommentar
Videoannonse
Annonse

Java krever mer jern per applikasjon og er generelt "overengineered" for lette nettapplikasjoner.

Hvis du vil lage spaghetti webapplikasjoner a'la php i java benytter du bare flate jsp-filer uten mvc og voila, du er på pasta-nett på en-to-tre. Deretter kan du f.eks. deploye applikasjonen på mobilen din i en industrstandard webcontainer som Jetty. Moderate krav til hardware vil jeg si.

 

Men det er også som du sier, på Javaplattformen har du bedre støtte for å lage store og tunge systemer.

Lenke til kommentar

Med PHP kan du, hvis du er pedagogisk anlagt, dra inn en tilfeldig person fra gata, og bruke en arbeidsuke på å lære han det grunnleggende. Så vil han, etter en måneds tid med plundring på egen hånd, kanskje klare å lage en web-applikasjon. Koden denne personen har skrevet, vil du mest sannsynlig ikke engang røre med ildtang.

 

Situasjonen jeg beskriver er kanskje ikke så veldig reell, men heller ikke så fryktelig langt unna sannheten. PHP har en veldig lav inngangsterskel. Dessuten er språket perfekt for de utålmodige, som helst vil se resultater fra dag en.

 

Det er veldig ofte slik at for språk som Java, og .Net, så må du opp på et visst nivå av programmeringsforståelse, før du kan jobbe med f.eks. web-applikasjoner.

 

Med PHP trenger man nesten ingen forståelse for programmering, for å stable på bena en primitiv web-applikasjon. Det var kanskje en liten overdrivelse, men det jeg vil frem til, er som tidligere sagt, at terskelen er lagt veldig lav.

 

PHP-applikasjoner som vokser, blir veldig fort fryktelig monolittiske, og tunge å vedlikeholde. Ved å benytte anerkjente web-rammeverk og patterns i Java / .Net, er sjansen for dette mye mindre, etter min mening.

 

Bare noen tanker fra en Java-programmerer som har sett sin skjerv av råtten PHP-kode opp igjennom årenes løp.

 

Radlekatt

Lenke til kommentar

[..snip..]

 

Ja. Det illustrerer vel godt hva mange utviklere tenker om PHP.

 

Kan du lage en gjestebok i objektorientert PHP har du lært noe grunnleggende.

 

Når man oppdager at (de mer seriøse) PHP-utviklerene jobber med rammeverk og ikke jobber så mye "på metallet" ser man at det er mer med PHP enn bare annerledes syntaks.

 

[Edit]

 

Her er noen rammeverk som er bra å kjenne til:

http://www.doctrine-project.org/

http://framework.zend.com/ ev. http://www.symfony-project.org/ (osv)

http://www.phpunit.de/

Endret av tickinghd
Lenke til kommentar

Jetty har liten memory footprint, rundt 500kb trur eg det var. Så argumentet med at Java krever meir jern er ikkje sant.

Men det er fortsatt java på java. :]

 

Java-applikasjoner som holdes i livet mellom kall (komplisert) opptar mere jern enn ett PHP skript som ikke gjør noe mellom kall (enklere). Det er jo en naturlig konsekvens av måten Java og PHP er designet på, med de fordeler og ulemper det medfører.

Lenke til kommentar

For å utføre same oppgåver så bruker PHP 100-1000 gonger meir energi enn Java, uansett korleis du vrir og vender på det.

 

For å si det enkelt, når PHP jobbar og sliter så tvinner Java tommeltottar. Argumentet med at PHP er lettare enn Java kjem jo bare frå PHP folk som lever i ein illusjon. Skal du vere miljøvennlig og grønn så satser du ijallefall ikkje på PHP.

 

Java har litt lenger oppstartstid, men når applikasjonen lever så er ytelsen på nivå med C +/- 5%. Ønsker du kjappare oppstartstid eller å unngå JVM så kan du bruke GCJ, men JVM er meir optimalisert når det kjem til ytelse.

Lenke til kommentar

Det er som å sammenligne epler og appelsiner. Jeg mener ikke at java ikke er raskt, det er bare større og mer komplekst enn hva som ofte kreves av en typisk webapplikasjon. PHP er ikke tregt for å være ett dynamisk språk heller. String-operasjoner gjøres av C kode, og bare kode som er nødvendig kjøres ved hvert kall (ikke hele applikasjonen). PHP og Java er designet for å løse forskjellige oppgaver.

Lenke til kommentar

PHP er treigt uansett. Når det kjem til streng operasjoner så er Perl 2-3 ganger kjappare(for å ikkje nemne kor meir fleksibelt det er til strengparsing). At det er skreve i C betyr ingenting! PHP er framleis heilt FEIL valg av verktøy.

 

Java er heller ikkje større og meir komplekst enn ein typisk PHP nettside. Bruk JSP, like enkelt(og rotete) som PHP. Også når det kjem til minnebruk og cpu tid.

Lenke til kommentar

PHP er treigt uansett.

I forhold til hva? Java? Med eller uten utbredte optimaliseringsteknikker? APC kommer standard i PHP 6, så da blir PHP raskere selv uten ekstra tillegg.

 

Når det kjem til streng operasjoner så er Perl 2-3 ganger kjappare(for å ikkje nemne kor meir fleksibelt det er til strengparsing).

Kan du forklare litt nærmere hvor du har det fra? Er perl raskere enn Java også?

 

At det er skreve i C betyr ingenting!

Fordi?

 

PHP er framleis heilt FEIL valg av verktøy.

Fordi?

 

Java er heller ikkje større og meir komplekst enn ein typisk PHP nettside.

Nettside og Java/PHP er ikke det samme. Vet ikke helt om jeg forstod dette helt. Java er og blir mer avansert/komplisert for webutvikling/hosting enn PHP om det er språkene du sammenligner.

 

Bruk JSP, like enkelt(og rotete) som PHP. Også når det kjem til minnebruk og cpu tid.

Ser ikke helt poenget med det.

 

Programkjøring er uansett bare en marginal flaskehals når trafikken går opp når alt kommer til alt.

Endret av tickinghd
Lenke til kommentar
At det er skreve i C betyr ingenting!

Fordi?

Du kan fint lage en implementasjon i Java som går like raskt som implementasjonen som er skrevet i C.

Det er til dels veldig vanlig i dag å skrive en virtuell maskin som i dag oversetter til maskinkode (dette er veldig utbredt måte å få emulatorer til å kjøre i akseptable hastigheter) og da er det uvesentlig hvilket språk som ligger bak. PHP derimot blir parset og utført linje for linje.

Lenke til kommentar
At det er skreve i C betyr ingenting!

Fordi?

Du kan fint lage en implementasjon i Java som går like raskt som implementasjonen som er skrevet i C.

Det er til dels veldig vanlig i dag å skrive en virtuell maskin som i dag oversetter til maskinkode (dette er veldig utbredt måte å få emulatorer til å kjøre i akseptable hastigheter) og da er det uvesentlig hvilket språk som ligger bak. PHP derimot blir parset og utført linje for linje.

Jeg tror du misforstår noe veldig viktig om PHP. PHP-kode blir kompilert til opcode/bytecode for den blir kjørt. Opcode mellomlagre som f.eks. APC gir ytelseseffekt ett sted mellom 2 til 10 ganger. I tillegg finnes det løsninger som optimaliserer selve opcoden. PHP har brukt opcode kompilator siden PHP 4. Mer informasjon om temaet.

Lenke til kommentar

PHP kompilerer til byte-code slik som Java, men i motsetning til Java, så oversettes koden etterpå.

Java kompilerer til maskinkode just-in-time, .NET kompilerer til maskinkode første gang siden vises (med Native Image Generator, ngen.exe)

.DLL filene som sidene består av vil ligge memory resident.

 

På ytelse er Java og .NET bedre enn PHP.

På standardbibliotek vil jeg si de er bedre enn PHP ved å bare være objektorientert.

På språk vil jeg si de er bedre ettersom de har lite tull som at bool kan implisitt konverteres til integer og omvendt.

Lenke til kommentar

Min personlige erfaring er at PHP = grisekode... Hvorfor vet jeg ikke (Drupal er et av unntakene jeg har kommet over).

 

Jeg merker det selv. Hver gang jeg skriver PHP så ender jeg opp med grisekode, uansett. Det gjør jeg ikke i andre språk (c, c++, #c, lisp, python, perl, etc.)

 

Hva det kommer av vet jeg ikke og nei jeg lærte ikke php som førstespråk, rekkefølgen var vell noe slikt:

 

basic -> pascal -> [ c/c++ , perl , java ] -> php -> c# -> lisp -> python

Endret av cyclo
Lenke til kommentar

I forhold til hva? Java? Med eller uten utbredte optimaliseringsteknikker? APC kommer standard i PHP 6, så da blir PHP raskere selv uten ekstra tillegg.

APC er caching, akkurat som Java sin Ehcache. Dei fleste språk har den type caching.

Kan du forklare litt nærmere hvor du har det fra? Er perl raskere enn Java også?

Ja til streng parsing så er Perl det beste verktøyet. Ja du kan sikkert få det til betre ytelse i Java/C/Assembly, men det på bekostning av tid og kompleksitet.

 

At det er skreve i C betyr ingenting!

Fordi?

Fordi ein dårleg implementasjon i C er treigare enn ein god implementasjon i PHP?

 

PHP er framleis heilt FEIL valg av verktøy.

Fordi?

Fordi du kan kutte ned antall linje kode, få betre ytelse, mindre kompleksitet. PHP har ein god styrke, og det er at det er brukbart pedagogisk til vevutvikling.

 

Nettside og Java/PHP er ikke det samme. Vet ikke helt om jeg forstod dette helt. Java er og blir mer avansert/komplisert for webutvikling/hosting enn PHP om det er språkene du sammenligner.

 

JSP er nesten det same som PHP. JSP kompileres før den kjøres, PHP kjører linje etter linje. Men du blander HTML/Java på same måte som du blander HTML/PHP.

 

For å forklare litt betre. Du skriver ein JSP fil på same måte som PHP og leggjer den ut på webserveren på same måte som du legger ein PHP fil på webserveren.

 

For ein nybegynnar innanfor programmering så vil det fungere identisk som med PHP.

Endret av siDDIs
Lenke til kommentar

PHP kompilerer til byte-code slik som Java, men i motsetning til Java, så oversettes koden etterpå.

Java kompilerer til maskinkode just-in-time, .NET kompilerer til maskinkode første gang siden vises (med Native Image Generator, ngen.exe)

.DLL filene som sidene består av vil ligge memory resident.

Merkelig, med alt dette er PHP 5 "godt nok" selv uten opcode mellomlagring for brorparten av nettsidene som finnes. Kan det ha noe med at det i mange tilfeller ikke spiller så stor rolle som du skal ha det til? Eller har det noe med at Java og .net er så tunge at det ikke finnes noen annen måte å gjøre ting på?

 

På ytelse er Java og .NET bedre enn PHP.

Det hadde vært rart om de ikke var det, men tiden Java/C#/PHP bruker på prosessering er uansett en forholdsvis liten faktor.

Endret av tickinghd
Lenke til kommentar

I forhold til hva? Java? Med eller uten utbredte optimaliseringsteknikker? APC kommer standard i PHP 6, så da blir PHP raskere selv uten ekstra tillegg.

APC er caching, akkurat som Java sin Ehcache. Dei fleste språk har den type caching.

 

Ehcache er ikke det samme som APC. APC mellomlagrer opcode slik at PHP ikke behøver å kompilere for alle forespørsler. Se lenke i innlegg jeg skrev tidligere i dag.

 

Kan du forklare litt nærmere hvor du har det fra? Er perl raskere enn Java også?

Ja til streng parsing så er Perl det beste verktøyet. Ja du kan sikkert få det til betre ytelse i Java/C/Assembly, men det på bekostning av tid og kompleksitet.

Så du er altså sikker på at Perl er spesielt raskere enn PHP til å håndtere strenger? Kan du begrunne det? Rart om det skulle være stor forskjell, PHP har jo hentet mye fra Perl.

 

At det er skreve i C betyr ingenting!

Fordi?

Fordi ein dårleg implementasjon i C er treigare enn ein god implementasjon i PHP?

 

PHP er skrevet i C, flere standardfunksjoner i C har tilsvarende funksjoner i PHP, og det er C kode som gjør jobben. Hvis du mener PHP er skrevet i dårlig C-kode så bør du vel kunne utdype det litt nærmere?

 

JSP er nesten det same som PHP. JSP kompileres før den kjøres, PHP kjører linje etter linje. Men du blander HTML/Java på same måte som du blander HTML/PHP.

 

PHP kompileres til opcode før det kjøres, fra og med PHP 4 og nyere..

Endret av tickinghd
Lenke til kommentar

[quote name='tickinghd' date='23. april 2010 - 20:08' timestamp='1272046133' post='15554437'

 

Ehcache er ikke det samme som APC. APC mellomlagrer opcode slik at PHP ikke behøver å kompilere for alle forespørsler. Se lenke i innlegg jeg skrev tidligere i dag.

Ok, så APC er lik måten Python kompilerer seg sjølv på og JVM. Men det hjelper enda ikkje på den lause typinga som lager eit vanvittig overhead uansett. Er det ein string, int eller float? Sånt kan ikkje caches eller bli gjort raskare.

 

Så du er altså sikker på at Perl er spesielt raskere enn PHP til å håndtere strenger? Kan du begrunne det? Rart om det skulle være stor forskjell, PHP har jo hentet mye fra Perl.

Det er bare å google, eller sjekke computer benchmark game.

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=perl&lang2=php

 

PHP er skrevet i C, flere standardfunksjoner i C har tilsvarende funksjoner i PHP, og det er C kode som gjør jobben. Hvis du mener PHP er skrevet i dårlig C-kode så bør du vel kunne utdype det litt nærmere?

Det var ikkje det eg meinte, men at PHP er skrevet med dårleg C kode er eg ikkje tvil om. Det er og har vore vanvittig mange sikkerhetsfeil og andre feil i PHP kjernen. Elementære feil som dette finnes enda http://bugs.php.net/bug.php?id=40544

Lenke til kommentar

Ok, så APC er lik måten Python kompilerer seg sjølv på og JVM. Men det hjelper enda ikkje på den lause typinga som lager eit vanvittig overhead uansett. Er det ein string, int eller float? Sånt kan ikkje caches eller bli gjort raskare.

 

Det der må du nesten forklare. PHP gjør ikke noe prinsipielt annerledes fra andre språk, utenom i syntaksen for programmereren.

 

Så du er altså sikker på at Perl er spesielt raskere enn PHP til å håndtere strenger? Kan du begrunne det? Rart om det skulle være stor forskjell, PHP har jo hentet mye fra Perl.

Det er bare å google, eller sjekke computer benchmark game.

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=perl&lang2=php

Og hvilke av de testene testet stringhåndtering? Det var jo stringhåndtering som var overlegent i perl i forhold til PHP i følge deg.

 

PHP er skrevet i C, flere standardfunksjoner i C har tilsvarende funksjoner i PHP, og det er C kode som gjør jobben. Hvis du mener PHP er skrevet i dårlig C-kode så bør du vel kunne utdype det litt nærmere?

Det var ikkje det eg meinte, men at PHP er skrevet med dårleg C kode er eg ikkje tvil om. Det er og har vore vanvittig mange sikkerhetsfeil og andre feil i PHP kjernen. Elementære feil som dette finnes enda http://bugs.php.net/bug.php?id=40544

Hvilken relevans har en bug med php-cli å gjøre med ytelse og sikkerhetsfeil?

Lenke til kommentar

Ok, jeg fant en tullete test. :!:

 

Ruby, Python og Perl var definitivt raskere på funksjon og objekt-kall (1 million ialt), men PHP var på linje med Perl når det kom til å skrive hello world og telle til 1 million.

 

PHP er ikke raskest, men prosessering er bare en liten den av hva en webapplikasjon holder på med. Mesteparten av tiden for en webapplikasjon (ved en forespørsel) går til IO-relaterte ting. Tunge bakgrunnsjobber kan bearbeides i en jobbkø som håndteres av ett cronskript (også i PHP om man vil). Om man behøver mer prosesseringskraft kan man legge til flere jern bak en lastbalanserer. Det finnes en rekke med ting man kan gjøre for å øke ytelse, ved hjelp av mellomlager og lignende. PHP fungerer merkelig nok bra for webprosjekter til tross for at Java og .Net teknisk sett er overlegent, og Python er penere, og Ruby ansees for å være penest? :hmm:

 

Pragmatiske språk er tydeligvis mer populære til tross for at de gjør alt galt.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...