Nejsem si tak jistý.
PHP by mohlo být na začátky super, protože je dost benevolentní a tak se člověk v úplných začátcích opravdu zabývá jen "programováním", i prostředí a způsob běhu programu je jednoduchý, tedy žádné prekompilace, balíčkování atd., protože na začátečníky je toho i tak dost. Plus jednoduše v kombinaci s Mysql třeba uvede začátečníka do užívání databáze.
Nicméně ale PHP ve své benevolentnosti (třeba parametry funkcí například) zase nedává začínajícím programátorům náhled, zkušenost a drill už na začátku a tím je nenutí extrémně přemýšlet nad datovými typy a strukturami v kódu, paměti a programu vůbec. A taky OOP v PHP je díky způsobu běhu programu spíš jen moderní a zapouzdřující záležitost, než že by mělo skutečný význam jako OOP v Javě nebo C, resp. C++.
Osobně si myslím, že PHP v rukou začátečníka dokáže napáchat na jeho rozvoji velké škody a nakonec bude stejně jednou vystaven těm "obtížnějším" jazykům jako C, Java ...
Možná ta otázka zní špatně. Možná by měla znít: "Jaký je to výklad, kolik je na něj času a co se pak od studenta očekává? Protože když budu mít naučit programovat ajťáky a budu na to mít 3 semestry, zvolím jiný jazyk než když budu mít učit jeden nepoviný předmět na ekonomce 1 semestr.
Ukludnime sa. Nie je dovod viest s PHP vojnu. On to ako jazyk sam o sebe nie je zly a svojmu ucelu vyhovuje. Inak by nedosiahol taky stupen vyuzitia. Ma dobru krivku ucenia.
Dobremu programatorovi prestane po case stacit a sam sa posunie k dalsim jazykom, kde uz sa deju tie krajsie veci.
True story.
PHP je možná špatně navržen, ale proč se stále používá? Podle mě je prostě jednodušší a snadno použitelný. Díky němu pak lze vytvářet všemožné webové appky.
Si vezměte hotové aplikace. Různé CMS (Drupal, Joomla, Wordpress, ...), e-shopy (PrestaShop), analyzátory (Piwik), DB manažery (phpMyAdmin, Adminer) atd. Má něco takového Rails, ASP.net nebo Java atd? Možná pro ty jazyky existuji hotové řešení, ale u nich je zase problém s dostupnosti, se zprovozněním, s nastavením apod.
PHP prostě doplácí na svoji popularitu a jednoduchost. Každý jazyk má své slabiny. Já třeba nepřišel na chuť s Ruby/Rails. Pro mě je to nepřehledný, nepochopitelný jazyk/framework. A taková chuťovka jako elsif - koho by to napadlo. Já do té doby byl v přesvědčení, že Ruby nezná elseif, který se takto všude používá, a zbytečně tak rozepisoval if bloky.
Jednoduše se dá napsat, že PHP je tak dobrý jako jeho programátor. Lze napsat kvalitní kód, ale i naprosto zprasený kód.
A s tím souvisí to, o čem píše tazatel. Jako prvotní jazyk nebo jako prostředek pro začátek programování se nehodí. PHP je až moc volný, aby se z něj dalo naučit základy programování. K tomu je potřeba nějaký, který má zásady, pravidla. Proto se doporučuje jazyk C nebo jemu podobný. Já na střední škole začínal s Pascalem a i ten je dobrým příkladem pro naučení se programování.
Základním principem programování je naučit se postupy, pravidla atd. nikoli jazyk jako takový. Jakmile se naučíte principy, pak není problém přejít na jiný jazyk a aplikovat na něj stejná pravidla. A to platí i pro PHP. Znáte pravidla programování, tak je aplikujete i na PHP. Jen díky tomuto napíšete v PHP kvalitní, správný kód.
Misto jednoduchosti PHP bych to nazval falesnym pocitem bezpeci. PHP rychle doda i zacatecnikovi pocit, ze tomu rozumi a vi co program bude delat. Nicmene je to jen pocit.
K vasim poslednim vetam je nutno jeste doplnit, ze programator zna pravidla programovani, tak jich musi dost zapomenout a naucit se PHP obskurnosti (za vsechny treba to, ze == neni tranzitivni). Pak snad dovede napsat spravny kod.
To nie je novinka
Programátorské schopnosti absolventov klesajú, problémom je Java
Publikované pred 7 rokmi: 17.01.2008
Dvaja profesori z New York University sa v obšírnejšej rozprave zaoberali problémom, ktorý trápi mnohých zamestnávateľov v IT priemysle: programátorské schopnosti
nových absolventov počítačových vied sa postupne znižujú. Podľa nich za to môžu úvodné kurzy Javy a skriptovacích jazykov.
Vývoj programovacích schopností vo viacerých jazykoch potom študentov učí
automaticky používať veľké knižnice a špeciálne balíky s kódom, akoby programovali z predpripraveného receptu[kuchárskej knihy]. Výsledným negatívom pre softvérový priemysel je nedostatočná zručnosť, najmä pre bezpečnostné a ochranné účely,
ktorá je navyše prakticky na úrovni toho, čo ponúka outsourcingový priemysel
Profesori z NYU však varujú, že tento prístup má pre študentov výrazne negatívne následky. V prvom rade sa sa študentom ťažko píšu programy, ktoré nemajú žiadne grafické rozhranie; ďalej nemajú pochopenie pre vzťah medzi zdrojovým kódom a tým, čo hardvér dokáže skutočne spraviť. Nakoniec, vôbec nerozumejú
sémantike ukazovateľov (resp. smerníkov), takže majú neskôr problémy s C
pri systémovom programovaní.
http://www.itnews.sk/spravy/produkty/2008-01-17/c87894-programatorske-schopnosti-absolventov-klesaju-problemom-je-java
Zajímavý, jaký odpor PHPčko má. Ale ani se tomu nedivím. Cokoli je nejpoužívanější, tak je i zároveň nejvíce kritizované. Viz Windows, Android atd.
To jako, že kdokoli s titulem nemá používat PHP? Tak to bude problém. Znám dost lidi, co titul mají a programuji kvalitní PHP aplikace. Jeden příklad za všechny Jakub Vrána, expert na PHP, tvůrce Admineru, má VŠ. Radek Hulán programuje v PHP, i přesto, že je MS fanda a měl by spíše používat .net jazyky. A mnoho dalších.
Ať si každý používá co chce a co je mu lepší.
A jak už jsem napsal. PHP je tak dobrý jako jeho programátor. Kdo umí programovat, tak vyprodukuje i kvalitní PHP aplikaci.
Když to takto vezmu, tak i v javascriptu, BASHi, Pythonu lze napsat prasečiny, protože mají volné pole působnosti - lze tam napsat cokoli.
Ale víte co? Ony ty prasečiny jdou udělat i v Javě. Objektová struktura sice zůstává zachována, ale nic nebrání udělat prasečiny uvnitř metody.
Ale raději to ukončíme. Ty prasečiny tam dělají pouze začátečníci. Zkušený programátor žádné prasečiny nedělá a je naprosto a naprosto jedno v čem to dělá. To znamená, že i v PHP žádné prasečiny nedělá.
Ještě jednou a znovu uvádím. PHP je takový, jaký je jeho programátor. Zkušený programátor vytváří kvalitní PHP kód. Začátečník naopak udělá neefektivní kód.
Jenže nelze jen tak napsat, že PHP jako celek je prasácký, protože tomu tak není.
To je dane tou volnostou PHP, ale to neznamena, ze je to zly jazyk.
Ak by sa v nom nedal napisat dlhy kod, ktory by bol zaroven aj funkcny, citatelny a prehladny, tak by to bol zly jazyk. Lenze taky kod sa v nom napisat da.
Aj v Jave sa daju robit prasaciny... To naozaj nie je ziaden problem, vid aktualny serial o JavaFX.
Takže znáte PHP jen z rychlíku.
To co uvádíte, lze i v PHP. U PHP jde pouze o to, že není přísný a nekontroluje to. To ale neznamená, že programátor nemůže tuto přísnost sám aplikovat.
Je to jeho nevýhoda, ale také i výhoda. Nevýhoda, že to nekontroluje či není přísný, tudíž neprogramátor v tom udělá guláš. Ale zase výhoda ve volnosti. Třeba na obyčejné "Hello world" nepotřebuje nějakou objektovou strukturu, ale jen jediný příkaz. V takovém případě je jediný příkaz kvalitnější a přehlednější než nějaký několikařádkový nepřehledný objektový bordel - parafrázuji Vaši logiku k PHP. Ale pokud chcete Java konvenci, tak není problém v PHP udělat totéž co v Javě.
Argumentovat tim, ze PHP je dobry, protoze je v nem napsano nejvic pseudo-cms/frameworku je asi jako rikat, ze linux je na nic, protoze majorita pouziva Windows.
Vyhody php z pohledu zacatecnika jsou dle meho takove:
1.) Hromada dokumentace a prikladu
2.) Snadna instalace a nepotreba prilis konfigurace ke sprovozneni zakladu
3.) Benevolence v kodu
Nevyhody php z pohledu pokrocileho programatora:
1.) Odporna syntaxe a bordel ve vetsine prehistorickeho kodu, ktery po nekom opravujete
2.) Nedostatek PHP programatoru, nikoliv bastlicu tech je dost
3.) Nekoncepcnost fraworku/cms, zadne coding standards -> bordel a hniloba
Ja zacinal poradne programovat az na PHP, predtim trochu .NET a nejake to domaci bastleni na windowsi platforme. Zacal jsem s Mistrovstvim v PHP, ktere me naucilo solidne zaklady, pote s narustajici popularitou OOP jsem zacal cist 33 objektovych navrhovych vzoru, ktere vsak pouzivali jako priklad Java code. Bylo celkem uzitecne vytvaret stejne scenare v jinem jazyce, clovek se toho naucil vice a pochopil vice.
ROR ti prijde neprehledny a nepochopitelny, protoze nemas zadne poradne navyky na koncepcnost nebo programovani (nikoliv bastleni). Porovnavat RoR s PHP neni prilis stastne, je lepsi porovnavat treba RoR s Nette nebo HipHop. Na Ruby se mi libi nektere konstrukty co se daji delat.
dej_mu_facku if panacek_si_vyskakuje?
vice napr. zde: http://code.tutsplus.com/tutorials/ruby-on-rails-study-guide-blocks-procs-and-lambdas--net-29811
Prakticky od sebe PHP a Ruby nejsou az tak daleko, je jenom trochu tezssi si ochocit RoR popr. Django oproti PHP, kde netreba resit zavislosti gemu/balicku a kde si clovek udela vsechno, tak nejako jak mu to prijde pod ruku. Neumim si ale predstavit, velkou aplikaci v PHP, to musi bejt na zesileni (radku 100K+) =D Jakmile si jednou osvojite coding standards z RoR, muzete to pouzivat i jinde a uvidite, jak to najednou dava vsechno mnohem vetsi smysl a uz zadne promene $tabulka, $k, $i .... http://itsignals.cascadia.com.au/?p=7
Uznavam, ze na to domaci bastleni a na zacatek PHP neni spatny jazyk na nauceni se zakladu programovani, ale pouzivat ho na opravdove programovani mi prijde spise nestastne. Byt po mem, tak je vychozi jazyk Python, prijde mi nejuniversalnejsi jak pro zacatecniky tak pro pokrocile a lehce se da naintegrovat skoro vsude (hmmm je interpret Pythonu v Cobolu? :D)
Já také pořádně programuji. Je to několik let moje práce. A mám vrozené vlohy pro programování. Tudíž nemám problém se vyznat se v jiných jazycích. C# mi nedělá problémy, ASP.net mi nedělá problémy, Java mi nedělá problémy. Samozřejmě u těchto jde spíše o bastlení. Ostatně sekundární jazyky jsou vždy o bastlení.
Ruby mi také tak nějak nevadí, jen mám u něho nějaký divný pocit. Nevím jaký. Prostě mi nepasuje. Samozřejmě znám jeho koncepci a fungování.
Pokud jste dobře četl, tak jsem odlišoval Ruby a RoR. Vím, že ROR je to framework. Stejně tak znám a používám Nette. Ostatně, když už porovnávat, tak spíše než Nette, bych ROR porovnával se Symfony, který má skoro stejnou logiku - ovládání přes příkazový řádek, závislosti přes bundly (obdoba gemu), coding standards atd.
Tady to bude vždycky válka mezi skupinami. Třeba PHP vs Ruby. Jedni budou vychvalovat to své a odsuzovat to druhé a druzí zase naopak.
Třeba to, že Railista nepochopí velkou PHP aplikaci. Tak Phpsta zase nepochopí jak může Rails takto fungovat. Atd. ;)
Ale pokud Vás to zajímá, tak velká PHP aplikace není nic složitého ani náročného. Svým způsobem si to lze porovnat i s Rails. Kdybyste dal dohromady všechny soubory Railsu včetně gemů, tak byste měl také 100K+. Tady jde prostě o tu přehlednost. Ty gemy máte někde uložené bokem a ani do nich nesáhnete. Prostě je používáte. To lze provést, a také se to tak dělá, i u PHP. Do vendoru nebo systému nahrajete hotové knihovny, a v aplikaci je jen použijete. Takže ve výsledku kód PHP aplikace může být identický s kódem Railsu. Prostě jak už jsem psal. ROR je vlastně to samé jako Symfony. Jen má každý jinou syntaxi a logiku.
A ještě jedno o tom pseudovšeho a opravdovém programování. Tam jsem uvedl jen veřejné příklady. Tak třeba tento web root.cz. Také ho považujete za výtvor bastlení, či neopravdového programování? Vždyť root.cz je napsán v PHP. Stejně tak většina portálu či služeb.
Ja som pisal celkom narocne aplikacie v PHP (pocet riadkov 100K+) a pokial sa to urobilo dobre, objektovo, s coding standards (ano, predstav si, daju sa aplikovat) a postavi sa to na dobrej koncepcii, tak ziaden vazny problem nebol.
Vsetko je o tom aky programator to pise a aky poriadok si v tom urobi.
> Ukludnime sa. Nie je dovod viest s PHP vojnu. On to ako jazyk sam o sebe nie je zly a svojmu ucelu vyhovuje. Inak by nedosiahol taky stupen vyuzitia. Ma dobru krivku ucenia.
Pokud existuje nějaký jazyk, vůči kterému je třeba vést vojnu, tak je to právě PHP. Kdybych měl zjednodušit důvody, tak protože je špinavým trnem v oku strojového boha.
Podrobnosti viz:
PHP je ukázka toho, co se stane, když banda nekompetentních opic zkouší psát jazyk a banda dalších neschopných opic hledá něco, v čem psát web.
PHP je taky asi jedný jazyk, kde tvůrci 20 let nechápali[0], k čemu se používá BNF a kteří dodneška píšou parser vkládáním dalších a dalších ifů[1]*. Skončilo to tak špatně, že facebook si musel celý jazyk přepsat, protože se jim to začalo hroutit na hlavu. Tak konečně vzniklo BNF, které odporučuji k pročtení, na dlouhé zimní horory. Otrlejší čtenáři můžou zkusit srovnat třeba s tou pythonní, která se vejde na 150 řádek i s 43 řádky komentářů. Jenže tohle je něco, co běžná PHP opice neocení, protože ani nepochopí o čem je řeč a proč by to mělo vadit. Někteří z nich mají dokonce pocit, že nekonzistentní a nesmyslné chování není facka do tváře developera, ale standardní způsob, jakým mají programovací jazyky fungovat.
PHP by se nemělo nazývat jazyk. Je to framework na šmudlání webů. Vždyť i samotný název „Hypertext Preprocessor“ mluví za vše. Přerostlé makro, které se tvůrcům vymklo z rukou, protože se našlo dost lidí, kteří si ho spletli s programovacím jazykem. Pokroucenina, které odpovídá jen pokroucení těch, kdo v ní (dobrovolně) programují. O míře ubohosti autorů nechť vypovídá, že se jim to ani po 20 letech nepodařilo dotáhnout do použitelného tvaru.
*Jako příklad prohnilosti parseru vždy uvádím, že do PHP5.4 nešlo[2] napsat getSomeArray()[2]. Od téhle verze to jde[3], ale zase nefunguje[4], když se to uzávorkuje (getSomeArray())[2]. Někomu se to možná může zdát jako detail, nepodstatná blbost, ale to jen naznačuje, jak málo toho ví o konstrukci interpretrů. Ve skutečnosti se jedná o šílenství úrovně cthulhu.
A jako vždy v těhle diskuzích, md5('240610708') == md5('QNKCDZO') zdar.
Abych ještě nějak ilustroval, jak moc je PHP parodie na jazyk, tak dobrý je ten příběh, jak nezvládli ani pojmenování vlastních verzí a po PHP5 následuje PHP7:
http://news.php.net/php.internals/76254
https://www.reddit.com/r/lolphp/comments/2c4m61/and_the_winner_is/
https://wiki.php.net/rfc/php6
Jazyk resit nebudu. Nejsem programator. Jsem jen blbej systemak co jeste k tomu aby zvladl system musel neco naprgat ve strojaku a cecku.
PHPckari byli vzdy startupovi gelousi a dnes je to jeste horsi. S PHP jsem zacinal po tom co skoncil na webu nadvladu perl+CGI shell skripty. Aneb hackni si svuj web. Pak po delsi dobe jsem prebral i maintaining baliku pro jeden komercni OS. Je to humus udrzovat. Ani nestihnes otestovat a uz je tu nova verze.
Pak ti zakaznici busi holema na support proc nejsou nove verze. Nejsou, protoze nejsou testnute se zbytkem systemu. Nebo je tam takova chyba ktera potrebuje proverit a otestovat. U PHP zapomente na backporty a nejakou dlouhodobe stabilni verzi. Na produkni provoz je to proste humac.
"Pokud existuje nějaký jazyk, vůči kterému je třeba vést vojnu, tak je to právě PHP. Kdybych měl zjednodušit důvody, tak protože je špinavým trnem v oku strojového boha."
To akoze myslis vazne, hej? No dobre... Tak si bojuj. :)
K argumentom sa vyjadrovat nebudem, pretoze nie je dovod. V PHP som pisal dlhe roky a robil v nom jednoduche weby a aj komplexnejsie webove aplikacie. Ak sa zvoli dobry pristup a nerobi sa vyvoj stylom halabala kockopes, tak ziaden zavaznejsi problem nie je. Z toho co bolo uvedene mi zivot zneprijemnilo maximalne tak to, ze PHP chape aj 0 ako FALSE a poobne. Ale aj to sa da vyriesit jednoduchym sposobom.
A ano, tiez som sa chvilu potkynal kvoli tomu, ze funkcie su casto pomenovane nekonzistentne a nekonzistentne je aj poradie argumentov. Ale tie najcastejsie pouzivane funkcie som si zapamatal a ostatne som vzdy diskutoval s referencnou priruckou. Ale to koniec koncov robim pri vsetkych jazykoch a nepoznam programatora, ktory nie.
Ak potrebujes mat v zivote nepriatela, proti ktoremu chces bojovat, tak kludne bojuj proti PHP. Ale v skutocnej praxi uvedene problemy nie su tak bolestne, aby robili z PHP nepouzitelny jazyk.
Kdyby se jazyky pouzivali vzdy na co byli navrzeny a ruzne se neohybali byla by to parada, to je presne pripad php jsou veci na ktere je bozi a je tuna veci na co to proste nepouzivat. Druhym prikladem budis java, opet pokud by zustala na serveru tak se o ni dodnes pisou chvalospevy, ale ne nekoho napadlo udet v ni gui a od te doby ma nalepku pomale potvory.
Jediná dobrá vlastnost PHP je přetížení VM opkódů - https://secure.php.net/manual/en/function.uopz-overload.php . Už jen změnit jazyk samotný a bude to OK.