Hezke a je fajn, ze se na tom maka a posouva dal. Na php jsem kdysi davno zacinal a tak je to moje srdcovka nicmene mam pocit, ze je na tom dnes podobne jako byla java pred 10ti lety - legacy systemy se na tom udrzuji protoze je jeste porad dost lidi, kteri v tom pisou, ale neco noveho na tom nikdo dnes uz asi stavit nebude :)
3. PHP umí všechny levné webhostingy.
Což je i odpověď na otázku, jakou výhodu má PHP proti Java, Python, Ruby, Go nebo C#. Jestli budete platit 30 Kč měsíčně za webhosting nebo 300 Kč měsíčně za VPS plus X Kč za administrátora je u spousty projektů rozdíl. Ne všechny projekty jsou tak velké, že se vyplatí je nasazovat do cloudu.
Java, C# a Go cielia na trochu iné kategórie systémov, typickí konkurenti PHP sú podľa mňa hlavne Python, Ruby, Perl a taktiež JavaScript.
Ruby a Perl majú problém, že sú v porovnaní s ostatnými oveľa menej rozšírené, pričom žiaden špeciálny benefit neprinášajú. No a rozhodovanie medzi Python, PHP a JS na BE je potom hlavne otázkou programátorského štýlu, ktorý preferujeme.
Ak preferujeme klasický OOP prístup, tak ani Python ani JS rozhodne nemá tak pokročilé OOP ako PHP. Rovnako aj typové kontroly sú v PHP už na veľmi slušnej úrovni a hlavne sa ďalej zdokonaľujú každou vydanou novou verziou, oproti Pythonu tu má PHP značný náskok.
Taktiež z hľadiska syntaxe je PHP najbližšie ku "klasickým" jazykom ako C či Java, najmä Python je v tomto smere tak trochu "hypsterčina", ktorá nemusí každému vyhovovať a nie každý sa je ochotný ju učiť, keďže podobné syntaktické špeciality ako určovanie scope podľa úrovne odsadenia či všetky tie "underscore konvencie" sa v iných jazykoch bežne nenachádzajú.
PHP dnes už nemá žiaden fundamentálny problém, prečo by sa v ňom nedal robiť kvalitný kód a kto chce jazyk syntaxou a vlastnosťami podobný Jave, ale viac "lightweight" a s jednoduchším deploymentom, tak určite bude PHP zvažovať.
Na druhej strane, ak si niekto obľúbil Python syntaktickú hypsterčinu alebo potrebuje riešiť doménu, kde sú pre Python dostupné lepšie knižnice, tak sa rozhodne pre Python. No a kto chce na BE rovnaký jazyk ako na FE alebo kladie dôraz na asynchrónne spracovanie, tak ten asi bude zvažovať najmä JavaScript.
Ale to je přesně co si myslím. Pokud je projekt velký tak PHP nepoužiji a pokud je zas malý s FE, tak použiji JS i na BE. Proč bych psal FE v JS a BE v PHP? U malého projektu je mi OOP celkem šumák a to, že je PHP podobné C mi už tuplem přijde nepodstatné. Navíc PHP se skoro nikde než na webové aplikace nepoužívá, narozdíl od JS a Pythonu. Je mi celkem šumák, že Python syntaxe je podle někoho hipsterská, protože ho můžu využít od AI až po MicroPython a nejedná se jenom o okrajové projekty, které používá pár lidí. Tohle mi u PHP naprosto chybí.
4. 12. 2020, 22:49 editováno autorem komentáře
- JS na BE pro malý projekt je pořád o VPS. Sdílený hosting ho nabízí sporadicky.
- I malý projekt může narůst, a kvalitní architektura je imho vždy základ.
- PHP z těch "malých" jazyků nabízí největší paletu nástrojů, jak toho dosáhnout.
- Osobně mám radši jazyky i projekty, co dělají hlavně to, na co jsou navržené, a dělají to dobře. O mnohých "hipsteřinách" se to říct nedá a zrovna JS je často špartným příkladem. "Nativní aplikace" z Elektronu s "hello world" kolem 80 MB. Jako ukázka možností dobrý, ale když v tom někdo vyvine něco, co by v pitomém Céčku s pitomýma knihovnama z roku začínajícího jedničkou, běželo i na kalkulačce, a ona mi ta supermoderní bestie sežere celou paměť, tak nevím...
- konec PHP se předvídá už od doby Flashe, co pamatuju. A kde je Flash:-) Na backend prostě dobrý a s určitým solidním vývojem, jinam ale netahat.
PHP z těch "malých" jazyků nabízí největší paletu nástrojů, jak toho dosáhnout.
PHP má paletu nejširší, ale taky někdy dost pitomě zpracovanou. Např. hojně používané CURL funkce, které jsou "nejlepší", ale taky nejpitomější a k tomu v PHP implementovány nešikovně - např. skvěle Vás vypeče závislost na proměnné ARG_MAX, může být dost malá když serializujete.
Image magick funkce jsou taky "velká radost", zejména když se potkají s poškozenými obrazovými daty.
Osobně mám radši jazyky i projekty, co dělají hlavně to, na co jsou navržené, a dělají to dobře.
Což je naopak obrovská slabina PHP. Na každý požadavek se sestavuje kompletní prostředí od nuly a na konci zaniká. PHP-FPM je nalepenec, který hodně pomohl, ale problém jen oddálil - nevyřešil.
PHP je naopak velmi nešťastně navržené na to, na to se používá. Jeho popularita je dána opravdu tím, že out-of-box nabízí velkou šíři funkcí (knihoven) a tuto pozici si vybudovalo v době, kdy mělo opravdu pramálo konkurence. V době, kdy jsme mohli volit mezi CGI/perl, CGI/cokoliv a vše si nalátat od nuly (od hlaviček odpovědi), bylo PHP opravdu velký posun vpřed. Dnes je to koule u nohy.
Což je naopak obrovská slabina PHP. Na každý požadavek se sestavuje kompletní prostředí od nuly a na konci zaniká. PHP-FPM je nalepenec, který hodně pomohl, ale problém jen oddálil - nevyřešil.
To, že sa takto z dôvodu jednoduchosti chová PHP defaultne ešte neznamená, že to je jediná možnosť. Už v ére PHP 5 existovali veci ako Opcache či APC a od verzie 7.4 máme aj PHP preloading.
Ak sa správne použije preloading + APCU tak tvrdenie o zostavovaní kompletného prostredia od nuly pri každej požiadavke nemôže byť vzdialenejšie od skutočnosti.
Už v ére PHP 5 existovali veci ako Opcache či APC a od verzie 7.4 máme aj PHP preloading.
Jasně, ale to všechno jsou narovnáváky na ohejbáky. Dotahují designovou slabinu. Opcache či APC trpí tím, čím veškeré cache: buďto riskujete neaktuální data, nebo musíte pokaždé kontrolovat (což jsou cenné iopsy). Preloading je fajn, pokud máte na každou aplikaci svůj FPM pool (což může být problém v případě hostingů).
Ak sa správne použije preloading + APCU tak tvrdenie o zostavovaní kompletného prostredia od nuly pri každej požiadavke nemôže byť vzdialenejšie od skutočnosti.
Ale jistěže se sestavuje pokaždé znovu, jen využívá přednatažených dat.
Ale to je přesně co si myslím. Pokud je projekt velký tak PHP nepoužiji a pokud je zas malý s FE, tak použiji JS i na BE. Proč bych psal FE v JS a BE v PHP? U malého projektu je mi OOP celkem šumák a to, že je PHP podobné C mi už tuplem přijde nepodstatné.
To je ale čiste subjektívne hodnotenie, nie nejaká objektívne platná skutočnosť. Takže to čo platí pre teba, nemusí platiť pre iných a nedá sa na základe toho tvrdiť, že PHP nemá zmysel pre nikoho.
Tebe je napríklad OOP "celkem šumák", niekto iný ho považuje za klúčové ... a tak by sme mohli pokračovať.
Zvladnes v necem jinem nez PHP (z tech co jsi jmenoval) udelat za vikend kvalitne postaveny CMS se spravou uzivatelu a opravneni, flexibilni strukturou entit a jejich vlastnosti, spravou medii, i18n a l10n apod. , s out-of-box exportem pres GraphQL ci JSONAPI? Pokud ano zvladnes pak pridavat nove polozky do entity na par kliknuti? Ja to s Drupalem zvladnu uplne v pohode a nebude to zadny extra sprint. (a frontend mi udela frontendak v Gatsby)
Mas v pythonu, perlu nebo ruby nejaky takovy hezky hotovy CMS ktery dokazes fakt jednoduse upravovat pokud jde o strukturu dat?
I mimochodem v tomhle pripade ti to za vikend udelam i s kompletnim CI pres Docker a GitLab pipelines vcetne toho, ze se ti na nove git branch nahodi nove prostredi na vlastni subdomene...
5. 12. 2020, 09:49 editováno autorem komentáře
To je prece uplne nesmyslny argument.
Delam v PHP pres 20 let, a to co pisete nahore v PHP skutecne jde udelat. Ale to s tim musite mit dobrych par let zkusenosti, znat "ten svuj" framework, znat "ty sve" knihovny atd.
A mimochodem zaroven pracovat na fakt jednoduchem projektu, kde vlastne neni co programovat!
Problem je v tom, ze lidi co delaji Jave to umi zrovna tak. A v C# taky. V pythonu. V javascriptu.
Proste profik to da dokupy rychle a efektivne, protoze o nic nezakopne.
Pokud zakopne, trva mu najit chybu stejne dlouho v PHP jako v Jave. Zna framework, zna deployment atd.
Proste to co popisujes neni otazkou programovaciho jazyku, ale otazkou zkusenosti s nim a jeho "tooly".
Na to ja odpoved nedam, to se ptej pythonistu.
A stejne jako v PHP to neni jeden konkretni tool, ale nejaky set na ktery jsi zvykly, lze to stejne ocekavat i u ostatnich jazyku.
Nabyvam dojmu, ze protoze ty delas v PHP je vsechno ostatni na nic.
Ale faktem je ze - a to rikam jako PHPckar - opak je mozna pravdou.
Moje srdcovka to není, ale je fakt, že se nad PHP někdo zamýšlí a snaží se ho posunout dále. Když čtu novinky z PHP 8, tak to konečně začíná vypadat jako jazyk. Ale souhlasím s vámi i když jen částečně. Podle mě by nebyl problém v tom, že by se všude používal lagacy věci. Rozhodně je hodně firem, které používají nové verze PHP, tak i FW. Problém spíše vidím ve dvou věcech: 1) hodně programátorů prostě "zakrnělo" v době PHP 4/5, 2) i když se použijí moderní přístupy a FW, lidi píší stále spaghetti. Obojí je prostě v lidech a to nijak nezměníme, ikdyž nabídneme úplně nejvíc nejdokonalejší FW.
Bohužel znám dost programátorů, pro které je MVC / MVP / MVVM architektura sprosté slovo, nedej bože po nich chtít nějaké ORM atd. Obecně je dost lidí, kteří se neradi učí nové věci, ať už jde o syntaxi, features atd, prostě si jednou na svém píšečku, který je technologicky starý 15 let. Další věcí je i to, že staré projekty se nepřepisují a důvodů je hned několik.
to ano, to je pravda. Ale i tak si myslím, že je stále hodně webů, které používají PHP jako vyložene server side. Přeci jen je tu Symfony, Nette, Laravel atd.
Na druhou stranu, záleží na tom, k čemu bude web fungovat. Nemá cenu používat FE framework, pokud půjde jen o statické stránky. Ale i tohle je otázkou, kdo to chce, jak to chce atd.
PHP je prave na REST uplne v pohode, pokud zvolite spravne tooly.
A tim mam namysli kompletni reseni od samotneho kodu vcetne TDD, CI atd.
Celkem snadno se skaluje na vetsi objem, microservices atd.
Nikdy nebude nejrychlejsi, nikdy nebude nejefektivnejsi, ale pro relativne jednoduche male kousky je v pohode. A REST endpointy jsou presne o tom, ze jsou to male jednoduche kousky.
je to jen úhel pohledu... :-D Osobně, bych Javu nepoužil.
S kamarádem jsme psali v PHP crypto exchange, response byla v průměrně do 8ms. Každý uživatel má vlastní kontejnery za HAProxy a loadbalancerem. Existuje plno řešení.
Osobně mě spíše áráží, jak si lidé myslí, že v PHP nelze udělat rychlé weby. Z praxe vím, že to jde a výsledek je mnohdy o dost lepší, než jiné rádoby "skvělé" jazyky ;-)
samozřejmě že není, tedy pokud by jste chtěl použít K8s. A ne na vše se kubernet cluster hodí. Ono je to dnes takové zaklínadlo, říkat máme Kube, jsme skvělí.
Už jsem viděl, že se dekerizovala opravdu velká monolitická aplikace a protože to bylo napsáno v Javě a ještě blbě, raději se nasadil Kube cluster a brutálně se škálovalo. Což je špatně.
Napsat špatně jde vše, stejně tak použít kanón na vrabce jde skoro také vždy. Osobně mi to přijde jako žabomyší války o ničem, to jestli je PHP špatné nebo skvělé. Dobří programátoři jsou jak v PHP, Javě, .NET a dalších jazycích. Samozřejmě jsou také špatní. Podle mě je to vše jen o lidech. Z praxe vím, že chyby je z 99.9% mezi jazykem a klávesnicí, tj. programátor. samozřejmě, jsou konstrukce, které třeba jdou v jiném jazyku udělat lépe, rychleji, ale zase narazíte na jiná úskalí.
PHP je etablovaný jazyk, kde je zažitý styl vývoje, který vyhovuje relativně velké skupině vývojářů. GO vyhovuje úplně jiné sortě lidí a o NodeJS nemluvě (totéž platí pro Python, Javu). Tady si myslím, že je situace poměrně stabilizovaná - a není důvod si myslet, že by se mohlo něco nějak razantněji změnit v následující dekádě.
Technologie samotné určitým způsobem konvergují, ale to jak se používají (kultura kolem nich), to se nemění. Hezky je to vidět třeba na MySQL a na Postgresu. Funkčně tam dochází k určité konvergenci - kulturně ani náhodou (ty jednotlivé kultury neporovnávám, nehodnotím - tak jak se nedívím z patra na někoho, kdo má Renaulta, protože já mám škodovku). Jen konstatuji, že ty kultury přes technologickou konvergenci nekonvergují.
To je pravda, on se častěji hodnotí jazyk a zapomíná na vliv té kultury. Ta ovlivňuje celý vývoj. Mě třeba kultura PHP moc nevyhovuje, ale na druhou stranu se mi ani nezdá, že by bylo jednodušší vyvíjet v PHP oproti třeba Javě. Ta technologická konvergence totiž pomáhá, aby se dalo všude vyvíjet +- solidně a aby si šlo +- poradit s technologickou zátěží z minulosti, kterou si většina letitých technologií s sebou nese.