snad nám nechceš tvrdit, že typový systém u jazyků tady máme jen kvůli interoperabilitě a proto nemusí být součástí jazyka?
Typový systém chrání aplikace před nepozornými programátory a zlevňuje tak vývoj, má své místo. Dokud v C můžeš přecástit typ jakéhokoliv pointeru na jiný typ, nikdy to nebude správný typový jazyk.
Tyhle vykriky do tmy me vzdy skvele pobavi.
Typovy system je spatny, protoze ve VS Code oznacim kus Pythonu a ten CTRL+ALT+N spustim.
Veru krucialni featura. Pro cloveka, co o unit testu este neslysel.
Akorat mi neni jasne, proc Angular od verze 2 presel z Javascriptu na Typescript, VUE.js stejny prechod planuje pro verzi 3 a jediny React zustava na JS, a to hlavne kvuli predem deklarovane rockstable nemennosti API, a taky ze je to omezeny subset zamereny pouze na view oproti plnotucnym konkurentum se spravou session a routingu.
Clovek by si az rekl, ze jakmile velikost projektu preroste urcitou mez, jsou dymamic typed bastly nepouzitelne.
A to ten Typescript ve verzi 4 je uz defacto Jawa vcetne tridnich a method dekoratoru, krapet rizla C#, misto packages mame namespacy.
Jo, a proc Python zavadi typeginting, zapis typehintu je mmch. dost podobny typescriptu.
Prostě to tak je
To má být argument?
typový systém dělá program složitější
V čem?
je sám o sobě zdrojem chyb v programu
Jakých? A jak často oproti nepoužití typového systému?
Je to naopak, u dynamického jazyka můžete spouštět a testovat už dílčí části programu, je to jrdnodušší než u statických kompilovaných jazyků.
To můžete i u staticky typovaných jazyků.
Připadá mi, že děláte z testování takovou modlu, že je to cíl. Cíl je ale mít funkční program. Podstatně lepší je, když chyba vůbec nevznikne, než když vznikne a pak se možná odhalí testem.
Karell: Je rozdíl mezi „existují“ a „používají se“. Abyste mohl test spustit, musíte mít nejprve něco, proti čemu ten test spustíte. Jasně, můžete test „použít“ už před psaním kódu tak, že se třeba podíváte, jaké vstupy ten test očekává. Jenže to pak musí programátor přenášet ručně, IDE mu nenapoví, a teprve při spuštění testu se (možná) dozví, zda to udělal správně.
Při vývoji je snaha vyvarovat se chyb co nejdřív. Typový systém nedovolí spoustu chyb vůbec udělat. testy fungují tak, že chybu nejprve uděláte, a pak ji testem možná odhalíte. Směr vývoje je tedy přesně opačný – nesnažíme se nahrazovat statickou analýzu testy, ale naopak se snažíme testy nahrazovat statickou analýzou kódu.
> Abyste mohl test spustit, musíte mít nejprve něco, proti čemu ten test spustíte
Na to úplně stačí prázdná schránka s nějakým rozhraním. V praxi to je nepodstatné, zabere to zlomek času v porovnání se samotnou implementací. Viz to video.
Ohledně typů souhlasím, tam nemáme o čem polemizovat. Pokud se někdo pokouší pomocí testů nahradit type check, tak upřímnou soustrast.
> testy fungují tak, že chybu nejprve uděláte, a pak ji testem možná odhalíte.
Opět, v TDD je to opačně, nejdřív máme test který nefunguje, až následně se do algoritmu zavleče skrytá chyba, kterou test neodhalí a projde.
Souvisí to s argumentem, který jste položil v souvislosti s tématem debaty:
"testy fungují tak, že chybu nejprve uděláte, a pak ji testem možná odhalíte."
což souvisí s Vaším předchozím tvrzení:
"Navíc testy se používají až po napsání kódu, typový systém pomáhá už během psaní a před psaním."
Ale uznávám, že to není úplně podstatné a taky jsem netvrdil, že je: "Detail, ale je tam".
Není. Např. u integračních testů nemusíte napsat ani jedno písmenko vlastního kódu aplidace, přesto je můžete spustit a mají smysl. A to často při TDD, kdy si nejprve připravíte testovací prostředí, dokonce ho i spustíte abyste se ujistil, že něco někde není a pak teprve něco spisujete. Nikdy jsem netvrdil, že ten výrok je nutně špatně, pouze že neplatí úplně vždy a že je to skutečně jenom detail.
A k tomu slavnému kontextu? Testy zaručují něco jiného a někde jinde než typový systém i když se jejich účinky mohou překrývat.
9. 11. 2020, 11:55 editováno autorem komentáře
Prosím vás, mohl byste přestat reagovat na komentáře ostatních metodou volných asociací? A ještě se tvářit, že něco v předchozím komentáři rozporujete? Když začnete svůj komentář „není“, vypadá to, že budete rozporovat něco z toho, co jsem napsal. Pak napíšete dva odstavce textu, a nerozporujete nic.
pouze že neplatí úplně vždy
Příště, až něco takového budete tvrdit, tak rovnou připojte nějaký příklad toho, kdy ten výrok neplatí. Rovnou napovím, že já jsem o integračních testech nic nepsal, takže jsem nemohl ani opomenout nějaké tvrzení o nich.
Ale já Vás neopravuji, pane Jirsáku. To tak asi řve Vaše diskuzní ego. Já jsem četl diskuzi a uviděl jsem výrok, který se mi nezdál úplný, tak jsem přidal názor svůj. To je úplně rormální, nejste první a na mě takto úplně normálně reagují jiní lidé. Rozhodnutí kvůli tomu takto vyvádět je jenom na Vás.