Je PHP jako Linux nebo jako Windows?
Školení, která pořádám
S Ondřejem Žižkou jsme vedli zajímavou debatu na téma, jestli je PHP svým návrhem a vývojem podobné spíše Linuxu nebo Windows a jak je na tom při stejném srovnání Java. Můj názor se dá shrnout takto:
PHP a Linux – malé jádro, k tomu volitelné jednoúčelové knihovny s jednoduchým rozhraním.
Java a Windows – vše v jednom spravované přes komplexní objektové rozhraní.
Ondřej zase tvrdí:
PHP a Windows (z pohledu programátora WinAPI): Silně proměnlivá technologie, v lecčems zpětně nekompatibilní, počáteční návrh špatný a směřující k lepšímu po vzoru lepších technologií, mnohé významné featury dodělávané ad hoc a nepřirozeně vmontované do návrhu.
Java a Linux: Stabilní technologie stavěná velmi rozvážně podle promyšleného návrhu dlouho laděného a diskutovaného mnoha IT firmami, silná a zaručená zpětná kompatibilita, standardizované API, mnoho různých použití (od embedded zařízení až po clusterované farmy serverů). Nejčastěji používaná rozšíření časem projdou procesem standardizace a začlení se do jádra, resp. JRE.
Co si myslíte vy? Čemu je v tomto příměru podobné PHP a čemu Java?
Diskuse
dffg:
Ondřejovo dělení nejde ani tak po společných vlastnech, je spíš stylu líbí/nelíbí, proto ten jeho druhý odstavec vypadá jak z reklamního prospektu Sunu. To se mi moc… nelíbí. :-) Navíc programátorskou platformou pro Windows už je WinAPI hodně v menšině, hodně se dělá v .NETu.
Já osobně souhlasím spíš s tebou, PHP mi svou logikou přijde mnohem přirozenější k linuxu a „jeho“ programovacím nástrojům (bash, Perl). (Sám používám Linux a Windows tak půl napůl.)
Já souhlasim spíš s tebou,php a linux mi dou dohromady,ale když si představim kombinaci php+windows tak si ji ani představit ani nedovedu,no a java a windows mi dohromady jde přesně jak si řekl:"vše v jednom spravované přes komplexní objektové rozhraní".
Každý má svůj názor na tyto 2 věci, ale vcelku bych souhlasil s Vaším názorem.
Ahoj,
nedá mi to a musím ti to tu trochu "zmoderovat" :-)
Pokud tedy má ten plebiscit mít nějakou hodnotu, buďme věcní. Během mailování s Jakubem jsem uváděl zcela konkrétní demonstrace k bodům, které ho zajímaly.
Proto i zdejším komentujícím navrhuji: Uveďte na podporu Jakubova či mého názoru něco, co uvedené podle vás obecně potvrzuje / vyvrací.
- Komplexní objektové rozhraní?? Prosím o ukázku komplexnosti Javy a nekomplexnosti PHP.
- Malé jádro? php6ts.dll: 14,5 MB. Java VM: Cca 6 MB.
- Vše v jednom? Máte Javu v mobilu? Myslíte, že je tam skutečně vše?
dffg << Nu tak pokud chceš PHP řadit mezi technologie na poslepování volání knihoven / utilit, tak prosím - s tím bych souhlasil :-) Ale jinak v linuxu se programuje v C / C++.
SendiMyrkr:
Podle mého malé jádro neznamená malé z pohledu množství dat která zabírá, ale z hlediska principu fungování... rozměry spíše poukazují na kvalitu zpracování než na funkční parametry...
jinak s Javou zkušenosti nemám takže nemůžu hodnotit... co se týče PHP asi bych ho spíše dal k Linuxu ze stejného důvodu jako Jakub... Ukázka nekoplexnosti si osobně myslím, že například práce s MySQL, pokud se nepletu pak mysql i mysqli není zahrnut v jádře a je nahráván jako samostatný modul, stejně tak GD, archivační knihovny... Linux je z logiky věci stejný, resp. podobný, malé jádro umožňující komunikaci s hardware a základní věci které mají patřit jádru, rozšiřování funcionalit pak patří nahrávaným modulům... windows jsou systémem vše v jedno, to se asi nikdo nebude snažit popřít, a komunikace probíhá pomocí tříd, ono to při tomto principu jádra ani dost dobře jinak nejde... z toho mála co vím o javě bych ji možná spíše přiřadil k windows, ale jak říkám moje znalosti toho jazyka jsou zatím prachbídné...
Sorry, ale Windows maji dost podobnou architekturu ja linux v tvém popisu. To že si jádro systému nemůžeš nikde stáhnout, jt neznamená, že neexistuje...
K čemu je Java VM bez rt.jar o velikosti 33 MB? A myslel jsem, že se celou dobu bavíme o PHP 5, jehož velikost je necelých 5 MB.
Ale jak už poznamenal SendiMyrkr - o velikost tady nejde. Jde o to, co je obsaženo v samotném základu a co je zvlášť.
Záleží na úhlu pohledu, dá se říct, že souhlasím s obojím. Z jiného úhlu to lze zase vidět takto: Windows je všude, PHP je všude. S Linuxem má PHP společné zase to, že těžko natrefíte na dvě stejné konfigurace.
Juraj H.:
Ondrej, prečítal som si tvoj článok, na ktorý Jakub odkazuje. Páči sa mi a myslím, že je aj pomerne objektívny a správne poukazuje na mnohé nedostatky PHP, ale...
ale pre tých násťročných (aj niektorých starších) je PHP veľmi lákavé, pretože s minimom učenia dokážu tvoriť na webe "zázraky." Ako si sám povedal aj vo svojom článku.
Na jednoduché webové vecičky však PHP stačí a myslím, že ho JAva v najbližších rokoch určite neprevalcuje aj napriek svoim výhodám. Osobne mám PHP rád a viem sa pri ňom vyšantiť. :o)
Vediem skupinku chalanov (8 - 12 rokov), ktorých učím základy tvorby webu, a zo skúsenosti viem, že po tom, čo ich oboznámim s javascriptom a PHP, tak sami prejavujú záujem aj o iné programovacie jazyky. Tým chcem povedať, že kto to myslí vážne, tak vždy prechádza od horšieho k lepšiemu. (By ste sa divili, čo takí chalani dokážu, keď ich to baví.)
Předem se omlouvám, že nejspíše nevnesu do problematiky nějaký zásadní pohled, ale srovnávat tyto technologie mi připadá trochu nešikovné.
Tyto technologie jsou druhově a účelově nesourodé, takže si myslím, že se nedají objektivně srovnat. Kulečníková koule a jablko taky mají společné rysy, ale těžko by je někdo srovnával.
Pokud jde o argument, že PHP má jednoúčelové knihovny, tak Java má také jednoúčelové knihovny s rozhraním, čili nevidím rozdíl. A vše v jednom? To rozhodně ne.
Pohled Ondřeje Žižky je myšlenkový, čili si myslím, že je schůdnější než Váš technologický.
SendiMyrkr:
Osobně si nevidím problém v nesourodosti technologií a v tom, že není vymezen pohled z jakého se mají tyto technologie hodnotit... protože z několika pohledů je můžné mít stejný a větší počet názorů...
S Ondřejem, co se týče Linuxu a Javy nesouhlasím. Linux nemá zaručenou zpětnou kompatibilitu, ani stabilní API (jen v rámci jedné verze jádra), ale je možný, že už se něco změnilo. A k Linuxu bych spíš přirovnal Perl. V PHP je strašná spousta funkcí v jádře, v Perlu jsou moduly.
Linux že nemá zaručenou zpětnou kompatibilitu? A nějaká norma POSIX nebo "Free Standards Group Linux
Standard Base Specification" ti nic neříká? Kdyby linux nebyl zpětně kompatibilní, tak bys asi ani neviděl tyhle stránky, protože by nikdo nepřeložil PHP. Nepleťte si zpětnou kompatibilitu a stagnaci.
Jinak jak nadhodil Martin Staněk, často uvažujete jen strukturu dané technologie. To je hodně úzký pohled. Zkuste se povznést a vidět ty technologie v mnohem, mnohem širších souvislostech - nejen technických, ale i historických a filozofických.
Ale bohužel dost komentujících asi nezná dost dobře ani technické aspekty všech čtyř technologií, natož jejich historii a filozofii. Já si troufám tvrdit, že tyto aspekty znám celkem dobře u všech, protože při strategickém rozhodování o výběru technologie, kolem které se bude motat vaše podnikání a kariéra, je to přinejmenším stejně důležité, jako současná syntaxe a možnosti. Určitě si nechcete vybrat anarchistickou technologii bez hlavy a paty s chaotickým vývojem bez jasného směru.
jj, to je bohužel to co se mi asi stalo, když jsem si vybral php :) Javu neumím, srovnávat nemůžu, ale php mi někdy přijde dost chaotický... ale co, zase j k php dost online materiálů, takže se to dobře řeší.
Megaloman:
Je to totálně OT, ale nedá mi to, abych se nezeptal:
Kde seženu PHP plyšáka?
Michal Illich:
Pokud je Linuxem myšlen skutečně Linux (tedy jádro), tak říkat o něm, že je to malé jádro, dále volitelně rozšiřitelné knihovnami, je nesmysl. Linux je typickým příkladem monolitického jádra. Tu definici by spíš splňoval GNU Hurd.
Pokud je tím myšlen operační systém, tak to už dává lepší smysl, zase ale není správné tomu říkat Linux, že...
Jinak popis PHP+Windows od Ondřeje Žižky je myslím velmi trefný. Ale řekl bych, že tak z třetiny sedí i na Linux+Javu, ale možná se jen většina z nás nesetkala s jejich prvními verzemi.
finc:
Vypadá to, jak když chceš rozpoutat flame :)
Ale k danému srovnání. I když je to nesmysl porovnávat, stějně jako už zde někdo psal. Pokud bych měl PHP dát do stejné úrovně, tak bych spíše skončil u JSP/Servlets.
Souhlasit se dá s oběma. Win32API je mnohem více standardizováno než je tomu u jádra Linuxu (kdo někdy koukal do obou či jen kompiloval něco pro jinou fix verzi jádra, tak ochopí, že Linux obsahuje hromadu šíleného hack kodu). Z pohledu návrhu je Java spíše jako Windows a PHP jako Linux.
Volitelnost je mnohem vyšší u Javy než u PHP. Z tohoto pohledu je to tedy spíše Java/Linux, PHP/Windows.
Nakonec bych Javu spíše přirovnal k Linuxu. A to z toho důvodu, že má skutečně mnoho použití. Kdežto PHP na desktopu je asi taková zoufalost jako Windows na serveru.
No a poslední věc, proč bych Javu přirovnal k Linuxu je mýtus. Java je pomalá a v linuxu dělají jen magoři, co mají otevřen jen terminál :)
Ondra Žižka:
Souhlas, až na jednu věc...
Win32 API není standardizované nijak - neexistuje žádný standard. Prostě vydají systém s určitým API a takové API prostě je. Nikde není žádná norma, kterou by ostatní implementace Win32 API měly dodržovat.
A zda obsahuje jádro Linuxu "hromadu šíleného hack kódu" bych pochyboval - jde přece o technologii, na které nepřímo závisí kdeco... ale kdo ví, já ho neviděl.
štíhloprd:
a co třeba ty čtyři porovnat podle následujícího:
-jak a kdo je začal vyvíjet (student / softwarový gigant)
-komerčnost / nekomerčnost, popř. svobodný / nesvobodný software
-akademičnost / praktické použití
-otevřenost / uzavřenost (o zdrojovém kódu a komunitě lidí, kteří to vyvíjí)
?
tom:
osobně mě jako uživatele tohle moc zajímat nemusí - když už si vyberu, tak vím že všechno má své plusy a minusy...
v6ak:
Jestli není pointa v tom, že oba máte rádi Linux? ;-)
vacziik:
souhlasím s nesrovnatelností zmíněných technologií / OS. Ale jako námět pro programátory do hospody je to dobré. BTW, lituju nezasvěcené kteří je budou poslouchat
Diskuse je zrušena z důvodu spamu.