Co má dnes význam - online aplikace

lukan

Co má dnes význam - online aplikace
« kdy: 11. 12. 2018, 06:50:03 »
V čem má dnes význam psát webové aplikace? Přijde mi, že PHP je již zcela mrtvé.


Trupik

Re:Co má dnes význam - online aplikace
« Odpověď #1 kdy: 11. 12. 2018, 08:32:29 »
V čem má dnes význam psát webové aplikace? Přijde mi, že PHP je již zcela mrtvé.
Áno, PHP používajú len také mŕtve projekty ako google.com či facebook.com:
https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

a 90% všetkých ostatných firiem:
https://idatalabs.com/tech/programming-languages

pepa

Re:Co má dnes význam - online aplikace
« Odpověď #2 kdy: 11. 12. 2018, 13:41:35 »
No ty si kladeš blbě otázku. Přeci zvolený jazyk se určí podle toho co ta aplikace má umět, jsou aplikace na které je PHP skvělé, ale jsou i aplikace kde je lepší sáhnout po něčem jiném jako třeba nodejs, go, python, c#.net no a jsou aplikace kde je ideální směs.
Jinak je zajímavé, že se ohledně aplikací nejčastěji řeší jazyk, přitom nejdůležitější je správně zvolit databázi a strukturu dat, protože to proč je aplikace pomalá nemá s tím v čem byla napsána zpravidla nic společného.

Re:Co má dnes význam - online aplikace
« Odpověď #3 kdy: 11. 12. 2018, 17:45:34 »
Avsak tim smerem nebyla moje otazka smerovana. A tou odpovedi jsem chtel rict, ze neexistuje nejlepsi auto, nejlepsi notebook a stejne tak neexistuje nejlepsi programovaci jazyk a cokoliv dalsiho. Vzdy je potreba stanovit vstupni podminky a hodnotici kriteria. Webova aplikace muze mit 10 navstevniku mesicne a pak je jedno v cem ji napises. Pak to muze byt online periodikum s miliony pristupu mesicne a taky muze byt jedno v cem ji napises (protoze budes hodne pouzivat cache). Pak to muze byt burza a tam se prechod z jedne platformy na druhou muze stat problemem kvuli vykonu prestoze jsou obe platformy tzv velke, dospele a "ne pro lepice jako php".
Děkuji za možnost editace příspěvku.

Michal, Praha

Re:Co má dnes význam - online aplikace
« Odpověď #4 kdy: 11. 12. 2018, 22:33:24 »
Doporučuju projít průzkum ze StackOverflow, například sekci nejoblíbenějších jazyků, se kterými chtějí programátoři pracovat a nejmíň oblíbených jazyků

https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted

Ono to má svoje důvody - ty jazyky asi nabízí to, co jejich uživatele (programátory) baví, umožní jim dosáhnout čeho chtějí snadným způsobem, elegantně apod.


Kiwi

Re:Co má dnes význam - online aplikace
« Odpověď #5 kdy: 12. 12. 2018, 00:16:04 »
Doporučuju projít průzkum ze StackOverflow, například sekci nejoblíbenějších jazyků, se kterými chtějí programátoři pracovat a nejmíň oblíbených jazyků

https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted

Ono to má svoje důvody - ty jazyky asi nabízí to, co jejich uživatele (programátory) baví, umožní jim dosáhnout čeho chtějí snadným způsobem, elegantně apod.
Teď je ještě otázka, kolik toho v těch vysněných jazycích doopravdy napsali a nakolik je to jen wow-efekt z něčeho nového, módního po prvním "hello worldu".

S přibývajícími léty mám čím dál silnější pocit, že čím rozsáhlejší projekt, tím více je jedno, v čem je to vlastně napsané - z hlediska přehlednosti a pohodlnosti vývoje. A že člověk si musel za těch pár desítek let vyzkoušet všechno možné, od BASICu, přes různé objektové a funkcionální přístupy, aby nakonec dospěl k závěru, že z hlediska univerzálnosti není nad klasický strukturovaný přístup, který zná už z prachobyčejného Pascalu od svých 15 let. Všechno ostatní jsou více či méně doménově specifické nástroje a v ambicích, jež se do nich vkládaly, naprosto selhaly. Akorát se dnes málokdo ohlédne těch 20-30 let zpátky, aby si toho všiml.

Kit

Re:Co má dnes význam - online aplikace
« Odpověď #6 kdy: 12. 12. 2018, 07:51:48 »
S přibývajícími léty mám čím dál silnější pocit, že čím rozsáhlejší projekt, tím více je jedno, v čem je to vlastně napsané - z hlediska přehlednosti a pohodlnosti vývoje. A že člověk si musel za těch pár desítek let vyzkoušet všechno možné, od BASICu, přes různé objektové a funkcionální přístupy, aby nakonec dospěl k závěru, že z hlediska univerzálnosti není nad klasický strukturovaný přístup, který zná už z prachobyčejného Pascalu od svých 15 let. Všechno ostatní jsou více či méně doménově specifické nástroje a v ambicích, jež se do nich vkládaly, naprosto selhaly. Akorát se dnes málokdo ohlédne těch 20-30 let zpátky, aby si toho všiml.

Objektové a fukcionální přístupy jsou lepší než strukturované, ale bohužel stále převažuje strukturovaný přístup i v jazycích, které jsou označovány za objektové. Možná právě proto jsou tak protežovány funkcionální jazyky, ve kterých se dá alespoň částečně psát strukturovaně. Všichni totiž tíhnou k tomu strukturovanému přístupu, i když vědí, že to úplně správné není.

Kiwi

Re:Co má dnes význam - online aplikace
« Odpověď #7 kdy: 12. 12. 2018, 15:43:03 »
S přibývajícími léty mám čím dál silnější pocit, že čím rozsáhlejší projekt, tím více je jedno, v čem je to vlastně napsané - z hlediska přehlednosti a pohodlnosti vývoje. A že člověk si musel za těch pár desítek let vyzkoušet všechno možné, od BASICu, přes různé objektové a funkcionální přístupy, aby nakonec dospěl k závěru, že z hlediska univerzálnosti není nad klasický strukturovaný přístup, který zná už z prachobyčejného Pascalu od svých 15 let. Všechno ostatní jsou více či méně doménově specifické nástroje a v ambicích, jež se do nich vkládaly, naprosto selhaly. Akorát se dnes málokdo ohlédne těch 20-30 let zpátky, aby si toho všiml.

Objektové a fukcionální přístupy jsou lepší než strukturované, ale bohužel stále převažuje strukturovaný přístup i v jazycích, které jsou označovány za objektové. Možná právě proto jsou tak protežovány funkcionální jazyky, ve kterých se dá alespoň částečně psát strukturovaně. Všichni totiž tíhnou k tomu strukturovanému přístupu, i když vědí, že to úplně správné není.
Nejsem přesvědčen ani o prvém, ani o druhém. Jsou problémy, na něž je objektový přístup lepší, a jiné problémy, jimž více sedí funkcionální. Ale strukturovaný se mi jeví jako ten nejuniverzálnější. Z hlediska návrhu jsou oba zmíněné přístupy náročnější. Objektový přístup měl zjednodušit a zrychlit návrh a umožnit znovupoužitelnost kódu. Selhal ve všech bodech. Objektové programy jsou nepřehledné, zbytečně překombinované, náročné na zdroje. Šlo by to jistě i jednodušeji, ale vymyslet dobrý objektový návrh je prostě mnohem náročnější než u strukturovaného - nutí člověka řešit otázky, které při strukturovaném návrhu řešit není třeba, protože zásadně nesouvisejí s problémem. Navíc jejich chybné vyřešení má závažný dopad na celý projekt. Podělat objektový návrh je zkrátka mnohem jednodušší než u strukturovaného.

Kit

Re:Co má dnes význam - online aplikace
« Odpověď #8 kdy: 12. 12. 2018, 17:45:32 »
Jsou problémy, na něž je objektový přístup lepší, a jiné problémy, jimž více sedí funkcionální. Ale strukturovaný se mi jeví jako ten nejuniverzálnější. Z hlediska návrhu jsou oba zmíněné přístupy náročnější. Objektový přístup měl zjednodušit a zrychlit návrh a umožnit znovupoužitelnost kódu. Selhal ve všech bodech. Objektové programy jsou nepřehledné, zbytečně překombinované, náročné na zdroje. Šlo by to jistě i jednodušeji, ale vymyslet dobrý objektový návrh je prostě mnohem náročnější než u strukturovaného - nutí člověka řešit otázky, které při strukturovaném návrhu řešit není třeba, protože zásadně nesouvisejí s problémem. Navíc jejich chybné vyřešení má závažný dopad na celý projekt. Podělat objektový návrh je zkrátka mnohem jednodušší než u strukturovaného.

Strukturovanému přístupu obvykle chybí pozdní a velmi pozdní vazba. Objektové programy nemusí být nutně pomalejší než strukturované. V mém případě bývají objektové dokonce rychlejší, protože u objektového návrhu odpadá velké množství různého větvení programu.

Objektové programy nejsou ani nepřehledné, ani překombinované, ba ani náročné na zdroje. Problém je jen v programátorech, kteří použijí nevhodnou architekturu aplikace, nevhodné návrhové vzory a nevhodné algoritmy.

Souhlasím, že vymyslet dobrý objektový návrh je pro vývojáře náročnější. Je problém ho udělat tak, aby se co nejvíc činností odehrávalo uvnitř objektu a bylo co nejméně vazeb mezi objekty. Proti chybnému řešení se však dá velmi dobře bránit testy, které skvěle vedou k maximální izolaci objektů.

Kiwi

Re:Co má dnes význam - online aplikace
« Odpověď #9 kdy: 12. 12. 2018, 19:49:57 »
Jsou problémy, na něž je objektový přístup lepší, a jiné problémy, jimž více sedí funkcionální. Ale strukturovaný se mi jeví jako ten nejuniverzálnější. Z hlediska návrhu jsou oba zmíněné přístupy náročnější. Objektový přístup měl zjednodušit a zrychlit návrh a umožnit znovupoužitelnost kódu. Selhal ve všech bodech. Objektové programy jsou nepřehledné, zbytečně překombinované, náročné na zdroje. Šlo by to jistě i jednodušeji, ale vymyslet dobrý objektový návrh je prostě mnohem náročnější než u strukturovaného - nutí člověka řešit otázky, které při strukturovaném návrhu řešit není třeba, protože zásadně nesouvisejí s problémem. Navíc jejich chybné vyřešení má závažný dopad na celý projekt. Podělat objektový návrh je zkrátka mnohem jednodušší než u strukturovaného.
Strukturovanému přístupu obvykle chybí pozdní a velmi pozdní vazba. Objektové programy nemusí být nutně pomalejší než strukturované. V mém případě bývají objektové dokonce rychlejší, protože u objektového návrhu odpadá velké množství různého větvení programu.

Objektové programy nejsou ani nepřehledné, ani překombinované, ba ani náročné na zdroje. Problém je jen v programátorech, kteří použijí nevhodnou architekturu aplikace, nevhodné návrhové vzory a nevhodné algoritmy.

Souhlasím, že vymyslet dobrý objektový návrh je pro vývojáře náročnější. Je problém ho udělat tak, aby se co nejvíc činností odehrávalo uvnitř objektu a bylo co nejméně vazeb mezi objekty. Proti chybnému řešení se však dá velmi dobře bránit testy, které skvěle vedou k maximální izolaci objektů.
Problém všech těch alternativních paradigmat a v jejich rámci dále návrhových vzorů je v tom, že na papíře to vypadá všechno krásně jednoduše a elegantně. Ale v praxi z toho vzniká horor. To rozházení do objektů a řešení rozhraní každého z nich je zkrátka náročné. Vždyť to je problém i na úrovni celého programu, OOP z toho udělalo problém i v jeho jednotlivých vnitřních částech. Když k tomu připočteme, že pro účely OOP se postupně prosadily ty nejméně vhodné jazyky, tak z toho skutečně vzniká katastrofa.

http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end

Jinak pozdní vazba se dá i ve strukturovaném návrhu udělat - tam, kde je opravdu zapotřebí. Ovšem vždy povede k pomalejšímu běhu a náročnějšímu programu, když dopředu nevím, co mi v daném místě může přistát - v případě čistých OO jazyků cokoli. Aby nevznikla mýlka - nejsem úplně proti OOP nebo FP. Ale tvrdím, že to na potřebné úrovni nezvládá skoro nikdo, takže masové nasazení je prostě omyl.

Kit

Re:Co má dnes význam - online aplikace
« Odpověď #10 kdy: 12. 12. 2018, 21:48:26 »
Problém všech těch alternativních paradigmat a v jejich rámci dále návrhových vzorů je v tom, že na papíře to vypadá všechno krásně jednoduše a elegantně. Ale v praxi z toho vzniká horor. To rozházení do objektů a řešení rozhraní každého z nich je zkrátka náročné. Vždyť to je problém i na úrovni celého programu, OOP z toho udělalo problém i v jeho jednotlivých vnitřních částech. Když k tomu připočteme, že pro účely OOP se postupně prosadily ty nejméně vhodné jazyky, tak z toho skutečně vzniká katastrofa.

OOP vzniklo právě proto, aby se jeden velký problém rozdělil na více malých problémů, které jdou snadno řešit, resp. se do nich dá recyklovat již hotový kód. Náročné rozhraní? Stačí se jen podívat na zásady SOLID a hned vidíš, jak málo jsou dodržovány. Místo SRP různé god objekty. OCP je ignorováno - každý si přejmenovává metody, kdy se mu zamane a neváhá přitom měnit i signatury v rozhraní. LSP? O zaměnitelnosti potomků s rodiči si fakt můžeme nechat zdát. ISP je pro mnoho vývojářů jen dobrým vtipem. A DIP? Jeho implementace v podobě různých DIC tento princip zcela degradují.

Z toho je vidět, že OOP se v praxi moc nepoužívá. V podstatě se strukturované programování jen převlékne do objektového kabátku a je to. Získáme tím paskvil, který je pomalejší, komplikovanější a méně srozumitelný, než jaký by byl ve strukturovaném zápisu.

A teď do toho přijde FP, který ukazuje, jak elegantně se vše dá řešit pomocí funkcí a monád. Dobrá, začtu se do prvního netriviálního programu a co vidím? Opět strukturovaný paskvil. Moduly ne nepodobné god objektům. Vychvalované namespace neplnící svou funkci, neboť dvacetiznakové neintuitivní názvy funkcí určitě nejsou to, co jsme od toho chtěli. Když se na něco zeptáš, tak jsi místo odpovědi poslán do teorie kategorií. Proč? Protože tomu skoro nikdo pořádně nerozumí.

Když se tedy vrátíme ke strukturovanému programování, tak proč jsme nezůstali u osvědčeného Fortranu?

Jinak pozdní vazba se dá i ve strukturovaném návrhu udělat - tam, kde je opravdu zapotřebí. Ovšem vždy povede k pomalejšímu běhu a náročnějšímu programu, když dopředu nevím, co mi v daném místě může přistát - v případě čistých OO jazyků cokoli. Aby nevznikla mýlka - nejsem úplně proti OOP nebo FP. Ale tvrdím, že to na potřebné úrovni nezvládá skoro nikdo, takže masové nasazení je prostě omyl.

Když jsem kdysi používal pozdní vazbu v Pascalu, tak jsem byl za exota. Přitom to bylo velmi elegantní řešení mnoha problémů, které vůbec nebylo pomalé ani náročné. Naopak se tím dalo zredukovat větvení programu, takže to mohlo být i rychlejší.

abc

Re:Co má dnes význam - online aplikace
« Odpověď #11 kdy: 13. 12. 2018, 11:04:09 »
Tak dobry vtip jsem dlouho neslysel - dobry navrh OOP se da cilit pomci provadenych testu.... To je treba zaramovat :)

Kit

Re:Co má dnes význam - online aplikace
« Odpověď #12 kdy: 13. 12. 2018, 11:29:23 »
Tak dobry vtip jsem dlouho neslysel - dobry navrh OOP se da cilit pomci provadenych testu.... To je treba zaramovat :)

Ano, lidem, kteří nerozumí TDD, to připadá směšné.

Re:Co má dnes význam - online aplikace
« Odpověď #13 kdy: 13. 12. 2018, 11:41:39 »
Tak dobry vtip jsem dlouho neslysel - dobry navrh OOP se da cilit pomci provadenych testu.... To je treba zaramovat :)

Ono to neni tak mimo jak by se mohlo zdat. Pokud budes delat TDD by the book... a zakazes si pouziti mocking knihoven...
Tak te to opravdu dovede k lepsimu navrhu.

.

Re:Co má dnes význam - online aplikace
« Odpověď #14 kdy: 13. 12. 2018, 11:47:52 »
Tak dobry vtip jsem dlouho neslysel - dobry navrh OOP se da cilit pomci provadenych testu.... To je treba zaramovat :)
Možná se nejdřív koukněte do zrcadla, komu že se to vlastně smějete.

Správné uplatňování testů a TDD obecně téměř vždy vede k lepšímu návrhu (nejen u OOP), protože:
1. Nejdříve musíte přemýšlet nad vhodným interfacem a až pak řešíte interní detaily
2. Kvalitu vnějšího interfacu okamžitě podrobujete praktické zkoušce jste nuceni jej předělat, pokud narazíte na problém

Čím méně zkušený programátor, tím více jej TDD vede správným směrem.