Framework vs. čistý kód

Re:Framework vs. čistý kód
« Odpověď #15 kdy: 17. 07. 2025, 17:50:23 »
Já osobně frameworky nesnáším a vyhybám se jim jak čert kříži.

Proč? Protože je to typicky nějaká zpatlanina názorů, která navíc při trochu složitějším systému (třeba http framework) začne velmi rychle chtít úplně specifické (zkryplené) řešení všeho (http, https, sessions, db, orm, crtd??, ..).

Autoři jsou navíc typicky ujetí do nějaké perverzní filosofie jakože je lepší neprogramovat a místo toho všechno konfigurovat (=> programovat v konfiguráku), takže to vždycky končí stejně; reálně musíš mít hrozně moc nepřenositelných (doménově specifických) znalostí konfigurace a debugování bazmeku. Až pak přijdeš k bazmeku 2, nebo to nadšeně přepíšou do verze 2, tak tohle celé co ses pracně naučil můžeš vzít a zahodit. Ta tvoje pracně vydobitá znalost jak definovat xml entity a mapovat je na beany, aby se ti autogenerovaly orm třídy co automaticky překládají REST na CRUD? K ničemu.

Co je tedy alternativa? Microframeworky nebo knihovny. Obecně věci které si uvědomují, že framework je ten jazyk a prostředí ve kterém děláš. Takže vezmou jednu věc a vyřeší jí dobře a pro tebe pohodlně. Třeba ten HTTP server. A pak ti umožní jednoduše pracovat s čímkoliv.

Příklad je třeba Flask v Pythonu, vs Zope (tam si doslova udělali vlastní databázi), vs Spring v Javě.

Jsem pokorná http knihovna, co ti nebude kecat do toho jak se loguje a jak si děláš ORM. Ne. Ja jen překládám http cally na metody a tím to hasne. Jestli chceš validace, tak si najdi něco na validace.

vs

Sežral jsem kaši z rendlíka, ucháč mlíka, pecen chleba, http požadavek, html parser, session manager, validační systém, ORM classy, půlku lispu a metaprogramování, aniž bych o něm cokoliv věděl, react backend, mámu, tátu a Tebe taky ještě sním, zatímco si mažu bradavky XML beanou. ୧༼ಠ益ಠ༽୨

A to vynechávám sto dalších plechovek s červy, jako třeba debugovatelnost, přenositelnost, rozšiřitelnost a tak podobně, nehledě na čas co do toho musíš investovat a dokumentaci která často bývá dost špatná.


Wasper

  • ***
  • 205
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #16 kdy: 17. 07. 2025, 18:43:24 »
- frameworky se rozvíjejí N let a rozvíjí je komunita. Pokud si myslí že je chytřejší než celá komunita vývojářů za N let, dost to o tom člověku vypovídá.
Na tohle odpovím volnou citací jistého pana Feynmana: "Jestli jsem chytřejší, než všichni tito lidé? To jistě ne. Jestli jsem chytřejší, než výbor složený z těchto lidí? To v každém případě ano."

Kit

  • *****
  • 838
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #17 kdy: 17. 07. 2025, 18:58:29 »
Já osobně frameworky nesnáším a vyhybám se jim jak čert kříži.

Proč? Protože je to typicky nějaká zpatlanina názorů, která navíc při trochu složitějším systému (třeba http framework) začne velmi rychle chtít úplně specifické (zkryplené) řešení všeho (http, https, sessions, db, orm, crtd??, ..).

Autoři jsou navíc typicky ujetí do nějaké perverzní filosofie jakože je lepší neprogramovat a místo toho všechno konfigurovat (=> programovat v konfiguráku), takže to vždycky končí stejně; reálně musíš mít hrozně moc nepřenositelných (doménově specifických) znalostí konfigurace a debugování bazmeku. Až pak přijdeš k bazmeku 2, nebo to nadšeně přepíšou do verze 2, tak tohle celé co ses pracně naučil můžeš vzít a zahodit. Ta tvoje pracně vydobitá znalost jak definovat xml entity a mapovat je na beany, aby se ti autogenerovaly orm třídy co automaticky překládají REST na CRUD? K ničemu.

Souhlasím, většina frameworků má spoustu konfigurací, které navíc nebývají zpětně kompatibilní se staršími verzemi. Navíc mnoho z nich porušuje SOLID, doslova každou z jeho kýžených vlastností. Má to cenu se jimi zabývat? Překlad REST na CRUD by se automaticky dal dělat, pokud jsou v databázi vnořené procedury, proti kterým ti neumětelové tolik brojí. Jenže to umím i bez frameworku a pokud budu línej, tak si to nechám vygenerovat AI. Skutečně kvalitními a výkonnými frameworky s teoretickými základy však pohrdají, protože jsou již součástí jazyka...

Kit

  • *****
  • 838
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #18 kdy: 17. 07. 2025, 19:11:42 »
Tohle je nesmysl. Ten kdo nepoužívá framework skončí s tím že si napíše vlastní. Nevýhoda toho vlastního je že je většinou děravý jak cedník, je to one-man show a je to asi miliontátý design "kola" na světě.

Jenže spousta dnešních frameworků je napsána bez teoretických základů a snaží se nahradit standardní knihovny, které jsou již součástí jazyka. Například šablonovací systémy v PHP jsou dost závažnou tragédií a přitom PHP obsahuje luxusní knihovnu, která generuje validní HTML, umí dědičnost, rekurzi, procházení stromem, řazení, překrývání default parametrů a další užitečné vlastnosti. Navíc je rychlá a vytvořená šablona se dá beze změny používat i v Javě, Pythonu a dalších jazycích, které tuto knihovnu mají implementovánu.

Re:Framework vs. čistý kód
« Odpověď #19 kdy: 17. 07. 2025, 19:45:46 »
To je jako kdyby někdo tvrdil, že opravdový stavař nepoužívá bagr. A všechno dělá lžící, protože chce mít pod perfektní kontrolou každý tah. Ve skutečnosti má každý z těch nástrojů jiné určení. Když budete stavět silnici, kopat základy bytového domu nebo stavět průplav, použijete bagr. Můžete samozřejmě zkusit i tu lžíci, ale nikdy ten projekt nedokončíte. Když naopak potřebujete zazdít díru po poštovní schránce, nebudete na to brát bagr.

Podobně když budete psát systém pro banku, na kterém dělají desítky lidí, nebudete to psát čisté Javě nebo Kotlinu. Když si budete psát pětiřádkový skript na přesun souborů, nebudete k tomu používat Spring.

Mimochodem, opravdu ten kamarád zmiňoval C++ a assembler? Nebylo to C a assembler? Protože C++ je od assembleru hodně daleko a mít v C++ perfektní kontrolu nad každým řádkem – možná pokud by to psal jenom sám, spoustě konstrukcí C++ by se vyhnul a v překladači vypnul všechny optimalizace. A pokud je kamarád tak proti používání podpory, proč píše v assembleru a ne přímo ve strojovém kódu?

To přirovnání k horolezci s kyslíkem a bez kyslíku je ale celkem trefné. Bez kyslíku lezou horolezci, kteří si chtějí něco dokázat, chtějí překonat sami sebe. Pokud cílem není něco si dokazovat, ale dostat se co nejvýš, je potřeba si vzít ten kyslík. Takže pokud si programátor chce něco dokazovat, ať si klidně píše v assembleru. Pokud ale má dodat funkční aplikaci uživatelům, ty nezajímá, co si programátor chce dokázat, zajímá je výsledek. Mimochodem, horolezci jsou omezeni výškou hor, která je celkem omezená. Kdyby mohli šplhat výš a výš, až na ISS, tak narazí na nějakou hranici, za kterou už se nedostanou bez kyslíku ani ti nejlepší. Prostě už to není v lidských silách. Stejně jako není v lidských silách naprogramovat bankovní systém v assembleru.


Kit

  • *****
  • 838
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #20 kdy: 17. 07. 2025, 20:16:34 »
To je jako kdyby někdo tvrdil, že opravdový stavař nepoužívá bagr. A všechno dělá lžící, protože chce mít pod perfektní kontrolou každý tah. Ve skutečnosti má každý z těch nástrojů jiné určení. Když budete stavět silnici, kopat základy bytového domu nebo stavět průplav, použijete bagr. Můžete samozřejmě zkusit i tu lžíci, ale nikdy ten projekt nedokončíte. Když naopak potřebujete zazdít díru po poštovní schránce, nebudete na to brát bagr.

Proč je nám tedy na upevnění poštovní schránky vnucován bagr?

Re:Framework vs. čistý kód
« Odpověď #21 kdy: 17. 07. 2025, 20:18:54 »
To je jako kdyby někdo tvrdil, že opravdový stavař nepoužívá bagr. A všechno dělá lžící, protože chce mít pod perfektní kontrolou každý tah. Ve skutečnosti má každý z těch nástrojů jiné určení. Když budete stavět silnici, kopat základy bytového domu nebo stavět průplav, použijete bagr. Můžete samozřejmě zkusit i tu lžíci, ale nikdy ten projekt nedokončíte. Když naopak potřebujete zazdít díru po poštovní schránce, nebudete na to brát bagr.

Podobně když budete psát systém pro banku, na kterém dělají desítky lidí, nebudete to psát čisté Javě nebo Kotlinu. Když si budete psát pětiřádkový skript na přesun souborů, nebudete k tomu používat Spring.

Mimochodem, opravdu ten kamarád zmiňoval C++ a assembler? Nebylo to C a assembler? Protože C++ je od assembleru hodně daleko a mít v C++ perfektní kontrolu nad každým řádkem – možná pokud by to psal jenom sám, spoustě konstrukcí C++ by se vyhnul a v překladači vypnul všechny optimalizace. A pokud je kamarád tak proti používání podpory, proč píše v assembleru a ne přímo ve strojovém kódu?

To přirovnání k horolezci s kyslíkem a bez kyslíku je ale celkem trefné. Bez kyslíku lezou horolezci, kteří si chtějí něco dokázat, chtějí překonat sami sebe. Pokud cílem není něco si dokazovat, ale dostat se co nejvýš, je potřeba si vzít ten kyslík. Takže pokud si programátor chce něco dokazovat, ať si klidně píše v assembleru. Pokud ale má dodat funkční aplikaci uživatelům, ty nezajímá, co si programátor chce dokázat, zajímá je výsledek. Mimochodem, horolezci jsou omezeni výškou hor, která je celkem omezená. Kdyby mohli šplhat výš a výš, až na ISS, tak narazí na nějakou hranici, za kterou už se nedostanou bez kyslíku ani ti nejlepší. Prostě už to není v lidských silách. Stejně jako není v lidských silách naprogramovat bankovní systém v assembleru.

Diky za odpoved.
No ano, rikal C i C++. Strojovy kod pry resi v techto casech a obecne uziva zasadne Linux. Ma rad prehled o tom, co se deje v jeho PC. Jinak mate pravdu, je takovy sveraz...

Kit

  • *****
  • 838
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #22 kdy: 17. 07. 2025, 22:25:05 »
No ano, rikal C i C++. Strojovy kod pry resi v techto casech a obecne uziva zasadne Linux. Ma rad prehled o tom, co se deje v jeho PC. Jinak mate pravdu, je takovy sveraz...

Strojový kód jsem řešil asi před půl rokem. Ne pod Linuxem, ale na železe. Assembler je o něco lepší, ale stále je závislý na druhu železa. Na hraní je to docela fajn, ale v dnešních podmínkách je lepší sáhnout po C. Pošilhávám po LLVM a WebAssembly. Zkus to navrhnout svému kamarádovi.

Každý z nás je aspoň trochu svéráz, jinak by na světě byla nuda.

Re:Framework vs. čistý kód
« Odpověď #23 kdy: 17. 07. 2025, 23:56:19 »
Podle mě se právě frameworky píšou proto, abych se neupsal k smrti.

Čistý kód je takový, který je krátký, a to se bez frameworku (ať už si pod tím představím cokoliv) dělá těžko.

Re:Framework vs. čistý kód
« Odpověď #24 kdy: 18. 07. 2025, 00:32:12 »
Podle mě se právě frameworky píšou proto, abych se neupsal k smrti.

Čistý kód je takový, který je krátký, a to se bez frameworku (ať už si pod tím představím cokoliv) dělá těžko.

On nikdo netvrdí, že nikdy nemáš použít kód někoho jiného. To o čem je ta diskuze (aspoň pokud to chápu) je jestli používat specificky frameworky. Schválně se prvně zamysli nad tím co to vlastně je, a jak se to liší od knihoven a kde je ta hranice mezi tím.

Re:Framework vs. čistý kód
« Odpověď #25 kdy: 18. 07. 2025, 00:38:57 »
Koukej, třeba ChatGPT to dal docela dobře:

Citace
Rozdíl mezi frameworkem a knihovnou není ostrý, ale dá se popsat hlavně podle toho, kdo volá koho – to je tzv. inversion of control:

Knihovna (library)

  • Ty ji voláš.
  • Je to sada funkcí nebo tříd, které používáš podle potřeby.
  • Kódová logika zůstává ve tvých rukou, knihovna jen pomáhá.

Framework

  • On volá tebe.
  • Framework definuje strukturu aplikace a diktuje, jak ji psát.
  • Tvůj kód je zapojený do frameworku skrze "háčky" (např. definované třídy, názvy funkcí, decorators...).
  • Framework obvykle řídí běh programu a tvůj kód je jen plugin.

Co mu tam chybí tak třeba to že framework se typicky snaží poskytnout nástroje na řešení všeho v dané doméně.

Kit

  • *****
  • 838
    • Zobrazit profil
    • E-mail
Re:Framework vs. čistý kód
« Odpověď #26 kdy: 18. 07. 2025, 00:51:47 »
Podle mě se právě frameworky píšou proto, abych se neupsal k smrti.

Čistý kód je takový, který je krátký, a to se bez frameworku (ať už si pod tím představím cokoliv) dělá těžko.

Když můj kód bez frameworku je kratší a jednodušší než ten s frameworkem a používá architektonické vzory, které ve frameworcích nejsou, tak patří kam?

Re:Framework vs. čistý kód
« Odpověď #27 kdy: 18. 07. 2025, 08:12:24 »
on je stara skola a moc neuznava tuny softwatu a vymyslu dnesni doby no...

To je jasný, chtěl jsem tím říct, že to je pokus o zobecnění něčeho, co obecný řešení nemá.
Na triviality jako překlopení kódování řetězce je framework (typu .NETu) nesmysl, ale na cokoli přiměřeně většího je to obrovská pomoc. Jen ti hrozí jak to, že vybereš něco nedostačujícího, tak že to bude kanón na vrabce.
« Poslední změna: 18. 07. 2025, 08:17:51 od Marek Staněk »

Re:Framework vs. čistý kód
« Odpověď #28 kdy: 18. 07. 2025, 08:16:11 »
Proč je nám tedy na upevnění poštovní schránky vnucován bagr?

Protože se dopouštíš úplně stejný chyby, jako prvopočáteční kamarád. Zobecňuješ v momentě, kdy o zobecnění nikdo nestojí a nedává smysl. Tedy to, že ti někdo na vyvrtání dvou děr pro hmoždinky a pověšení poštovní schránky vnucuje bagr, je jen ve tvý hlavě.
« Poslední změna: 18. 07. 2025, 08:18:15 od Marek Staněk »

Re:Framework vs. čistý kód
« Odpověď #29 kdy: 18. 07. 2025, 08:37:37 »
Je dobre si "osahat" toho co najviac. Dnes, ale vacsina programatorov funguje tak, ze viem jeden framework a ten pouzivam na vsetko. A vymyslam vselijake ohybaky, aby to aspon ako-tak chodilo.
Ja si vyberam, co sa mi na dany ucel viac hodi. na jednoduche skripty powershell, alebo python, na zlozitejsie veci c#, mcu C, web - tam sa drzim minimalizmu, takze ciste html + nejaky lightcss, kde su uz zastylovane zakladne prvky, a jquery na dynamicke dotazy.
A tiez kniznice sa snazim vyuzivat len tie zakladne, kde kazda ma nejaky presny ucel a nie riesenie vsetko v jednom.
lahsie sa tak udrzuje kod, a v pripade problemov viem velmi rychlo upravit program na pouzitie inej kniznice.