Zkušenosti s TypeScriptem

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #60 kdy: 29. 03. 2020, 00:05:15 »
Základní princip je, že s proměnnými pracuji abstraktně. V následujícím příkladu pracuji se třemi prvky, řádkem, elementem řádku a indexem. Proto používám tři tomu odpovídající proměnné.

Kód: [Vybrat]
>>> row = '1, 2, 3, 4, 5'
>>> row = row.split(',')
>>> row = [int(elm) for elm in row]
>>> for idx, elm in enumerate(row):
...     row[idx] = idx * elm
...
>>> print(sum(row))
40

No a ted si predstav, ze ve staticky typovanem Rustu muzes psat neco jako:

Kód: [Vybrat]
fn main() {
    let v = "Ahoj Douglasi";
    println!("{:?}", v);
    let v = 42;
    println!("{:?}", v);
}

A vis, proc tomu tak je? Protoze "v" je jenom jmeno, ktere odkazuje na konkretni hodnotu. A kompilator rozumi kontextu - tedy tomu, ze kdyz dam kdykoli v prubehu dalsi "let v", ze jsem se rozhodl, ze uz to puvodni "v" pouzivat nebudu a tak ho "zastinim" uplne jinym "v". To neni nic "dynamickeho", jde o to, ze inteligentni kompilator tuhle situaci umi resit a netrva na tom, ze "v" je jednou provzdy &str.

To není žádná novinka, už v C máš ukazatele a můžeš přetypovávat proměnné. V dynamickém jazyku je to paradigma ale z podstaty jiné, datový typ není vlastností proměnné, ale samotných dat. Jinak samozřejmě statické jazyky se snaží a snaží se napodobovat dynamické jazyky a co nejvíc se jim přiblížit, byť to není dokonalé. Ale to jen potvrzuje sílu dynamických jazyků a toho, jakým způsobem mění pohled na programování. Dynamické jazyky jako Javascript a Python velmi rychle rostou, statickým nezbývá, než se přizpůsobit, pokud se nechtějí stát okrajovým jevem.


qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #61 kdy: 29. 03. 2020, 00:23:36 »
Nestalo se mi, že by mě obtěžovalo napsání Typové signatury. Zato se mi bolestně běžně stává, že mi absence typů schází. Čímž se kruhem dostáváme k tomu, že někdy to fakt záleží na preferencích. Pro někoho napsání těch několika málo typů může být stopka.
Nechápeš to. Nejde jen o to, že musíš napsat anotaci, ale že tě statické typy hrubě omezují v návrhu programu. Je to neflexibilní, a jakákoliv snaha dostat do návrhu flexibilitu je těžkopádná  a zkostnatělá. 
Ukaž příklad, jinak se o tom nemá smysl bavit.

Základní princip je, že s proměnnými pracuji abstraktně. V následujícím příkladu pracuji se třemi prvky, řádkem, elementem řádku a indexem. Proto používám tři tomu odpovídající proměnné.

Kód: [Vybrat]
>>> row = '1, 2, 3, 4, 5'
>>> row = row.split(',')
>>> row = [int(elm) for elm in row]
>>> for idx, elm in enumerate(row):
...     row[idx] = idx * elm
...
>>> print(sum(row))
40

Výborně. Konečně jsem dostal z dynamicky uvažujícího programátora konkrétní materiál.

Pokud to chápu dobře, tak tebe zásadně omezuje skutečnost, že za účelem čitelnosti kódu (tak chápu tu motivaci) potřebuješ možnost měnit typ té proměnné row. Správně? Je tam ještě něco, nebo to je všechno?

Jak zásadně omezující, nebo naopak tvé řešení výhodnější je toto:
Kód: [Vybrat]
row = '1, 2, 3, 4, 5'
   .split(',')
   .map(\i, x -> i * int(x))
print(sum(row))

Nechápeš to dobře. Já typ proměnné neměním, to je tvůj způsob statického uvažování. Další chyba je, že to nechápeš jako demonstrativní ukázku, která ukazuje princip, nikoliv konkrétní úkol. Zkus si to představit  jako program, který má 10 000 řádků, větvení a vícenásobné použití dat. Pořád to budeš chtít napsat jako jeden oneliner? Jestli jo, myslíš, že to bude přehlednější? A jak to budeš třeba logovat nebo krokovat a debugovat? V reálném programu také nebudeš mít data staticky deklarovaná ve zdrojovém kódu, ale obdržíš ho z nějakého vstupu, to je u mě ten první řádek, u tebe tento krok chybí, a kdybys ho aplikoval, už tam nepřiřadíš zpracovaná data. No ale nejhůř si vysvětluješ tu motivaci. Motivací je vyšší abstrakce, tedy způsob myšlení bližší normálnímu lidskému uvažování. Řádek je prostě řádek, je jedno jaký má datový formát a je lidsky naprosto nesmyslné pro to mít tři různé proměnné. Je zbytečné se o to starat, stejně jako se uživatelé vyšších programovacích jazyků už dávno nestarají o instrukční sady procesorů.
Nic z toho není problém v některém z mejch oblíbenejch staticky typovanech jazyků.

Přestaň se vztekat, a máš-li na to ponožky, tak uveď jinej, lepší příklad.


Můžu ti tisíckrát říct, že jde o způsob myšlení, stejně to nepochopíš.

Ano. Tím, že budeš tisíckrát psát, že ty to umíš, ale mě to prostě neřekneš, tak tímto způsobem to skutečně nemám šanci pochopit.

Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě. Stejně tak ti mohu říct, že rychlost světla je konstantní kdežto čas relativní, byť tvé smysly a tvůj selský rozum ti tvrdí opak. Jestli se dokážeš vymanit z omezení selského rozumu a dokážeš pochopit  prostoročas nebo dynamické jazyky je už na tobě. Obojí od tebe bude vyžadovat projít procesem změny myšlení. To je tvá zodpovědnost, nikoliv moje.

Co se týče mého příkladu, není potřeba sem dávat jiný. Pro toho kdo chce, je dostatečný, aby pochopil paradigma a smysl dynamických jazyků. Těm, kdo to nechtějí pochopit a chtějí sami sebe přesvědčit, že dynamické jazyky jsou na nic, nepomůže ani tisíc příkladů.
« Poslední změna: 29. 03. 2020, 00:29:49 od qelurg »

Ink

  • *****
  • 655
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #62 kdy: 29. 03. 2020, 00:33:34 »
To není žádná novinka, už v C máš ukazatele a můžeš přetypovávat proměnné. V dynamickém jazyku je to paradigma ale z podstaty jiné, datový typ není vlastností proměnné, ale samotných dat. Jinak samozřejmě statické jazyky se snaží a snaží se napodobovat dynamické jazyky a co nejvíc se jim přiblížit, byť to není dokonalé. Ale to jen potvrzuje sílu dynamických jazyků a toho, jakým způsobem mění pohled na programování. Dynamické jazyky jako Javascript a Python velmi rychle rostou, statickým nezbývá, než se přizpůsobit, pokud se nechtějí stát okrajovým jevem.

Co to, clovece, - s prominutim - meles? Ukazatel v C je diametralne jina zalezitost. V tom mem prikladu je videt, ze "promenna" ve statickych a dynamickych jazycich neni nutne zase tak odlisny koncept. V tech statickych kompilator samozrejme potrebuje vedet typ dat (ne "promenne") v dobe prekladu, aby mohl zkontrolovat, ze program je validni a hlavne mohl optimalne zpracovat alokaci pameti a dalsi operace. Dynamicke jazyky na to kaslou, plytvaji prostredky v dobe behu a ano, clovek v nich muze vice "prasit" a spousta veci tak nejak funguje, kdyz neprasis moc. To je casto pohodlne a umoznuje to veci resit "intuitivne", ale u vetsich projektu to je dost kontraproduktivni a neni nahodou, ze vznikl prave TypeScript nebo ze Python ma volitelne anotace typu.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #63 kdy: 29. 03. 2020, 00:41:47 »
To není žádná novinka, už v C máš ukazatele a můžeš přetypovávat proměnné. V dynamickém jazyku je to paradigma ale z podstaty jiné, datový typ není vlastností proměnné, ale samotných dat. Jinak samozřejmě statické jazyky se snaží a snaží se napodobovat dynamické jazyky a co nejvíc se jim přiblížit, byť to není dokonalé. Ale to jen potvrzuje sílu dynamických jazyků a toho, jakým způsobem mění pohled na programování. Dynamické jazyky jako Javascript a Python velmi rychle rostou, statickým nezbývá, než se přizpůsobit, pokud se nechtějí stát okrajovým jevem.

Co to, clovece, - s prominutim - meles? Ukazatel v C je diametralne jina zalezitost. V tom mem prikladu je videt, ze "promenna" ve statickych a dynamickych jazycich neni nutne zase tak odlisny koncept. V tech statickych kompilator samozrejme potrebuje vedet typ dat (ne "promenne") v dobe prekladu, aby mohl zkontrolovat, ze program je validni a hlavne mohl optimalne zpracovat alokaci pameti a dalsi operace. Dynamicke jazyky na to kaslou, plytvaji prostredky v dobe behu a ano, clovek v nich muze vice "prasit" a spousta veci tak nejak funguje, kdyz neprasis moc. To je casto pohodlne a umoznuje to veci resit "intuitivne", ale u vetsich projektu to je dost kontraproduktivni a neni nahodou, ze vznikl prave TypeScript nebo ze Python ma volitelne anotace typu.

To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #64 kdy: 29. 03. 2020, 00:55:11 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.


qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #65 kdy: 29. 03. 2020, 00:55:22 »
To není žádná novinka, už v C máš ukazatele a můžeš přetypovávat proměnné. V dynamickém jazyku je to paradigma ale z podstaty jiné, datový typ není vlastností proměnné, ale samotných dat. Jinak samozřejmě statické jazyky se snaží a snaží se napodobovat dynamické jazyky a co nejvíc se jim přiblížit, byť to není dokonalé. Ale to jen potvrzuje sílu dynamických jazyků a toho, jakým způsobem mění pohled na programování. Dynamické jazyky jako Javascript a Python velmi rychle rostou, statickým nezbývá, než se přizpůsobit, pokud se nechtějí stát okrajovým jevem.

Co to, clovece, - s prominutim - meles? Ukazatel v C je diametralne jina zalezitost. V tom mem prikladu je videt, ze "promenna" ve statickych a dynamickych jazycich neni nutne zase tak odlisny koncept. V tech statickych kompilator samozrejme potrebuje vedet typ dat (ne "promenne") v dobe prekladu, aby mohl zkontrolovat, ze program je validni a hlavne mohl optimalne zpracovat alokaci pameti a dalsi operace. Dynamicke jazyky na to kaslou, plytvaji prostredky v dobe behu a ano, clovek v nich muze vice "prasit" a spousta veci tak nejak funguje, kdyz neprasis moc. To je casto pohodlne a umoznuje to veci resit "intuitivne", ale u vetsich projektu to je dost kontraproduktivni a neni nahodou, ze vznikl prave TypeScript nebo ze Python ma volitelne anotace typu.

Není, ukazatel v C je pojmenovaný ukazatel do paměti, který se nijak nestará o datový typ objektu, na který ukazuje. V principu je to stejné, jen je to více low level, programátor si to musí přetypovat explicitně a musí si sám pohlídat paměť. Dynamické jazyky na to nekašlou, dynamické jazyky mají jiný koncept. A ano, jsou díky tomu více flexibilní a jsou proto pohodlnější na používání, proto také čím dál tím více oblíbené s tím, jak roste výkon počítačů a to jejich plýtvání zdroji je čím dál tím více marginální. Ostatně, garbage kolektor je zrovna tak plýtvání zdroji za cenu pohodlí programátora, virtuální stroje také, ale to ti asi nevadí, že? Lidské zdroje jsou cennější než hardware, produktivita programátora je ve většině případů důležitější než efektivita programu.

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #66 kdy: 29. 03. 2020, 00:57:11 »
To není žádná novinka, už v C máš ukazatele a můžeš přetypovávat proměnné. V dynamickém jazyku je to paradigma ale z podstaty jiné, datový typ není vlastností proměnné, ale samotných dat. Jinak samozřejmě statické jazyky se snaží a snaží se napodobovat dynamické jazyky a co nejvíc se jim přiblížit, byť to není dokonalé. Ale to jen potvrzuje sílu dynamických jazyků a toho, jakým způsobem mění pohled na programování. Dynamické jazyky jako Javascript a Python velmi rychle rostou, statickým nezbývá, než se přizpůsobit, pokud se nechtějí stát okrajovým jevem.

Co to, clovece, - s prominutim - meles? Ukazatel v C je diametralne jina zalezitost. V tom mem prikladu je videt, ze "promenna" ve statickych a dynamickych jazycich neni nutne zase tak odlisny koncept. V tech statickych kompilator samozrejme potrebuje vedet typ dat (ne "promenne") v dobe prekladu, aby mohl zkontrolovat, ze program je validni a hlavne mohl optimalne zpracovat alokaci pameti a dalsi operace. Dynamicke jazyky na to kaslou, plytvaji prostredky v dobe behu a ano, clovek v nich muze vice "prasit" a spousta veci tak nejak funguje, kdyz neprasis moc. To je casto pohodlne a umoznuje to veci resit "intuitivne", ale u vetsich projektu to je dost kontraproduktivni a neni nahodou, ze vznikl prave TypeScript nebo ze Python ma volitelne anotace typu.

To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #67 kdy: 29. 03. 2020, 00:59:25 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

Takže jsme zpátky na začátku, akorát jsme si vyjasnili, že esoterika, tedy pardon, víra, je na tvé straně.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #68 kdy: 29. 03. 2020, 01:21:33 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

Takže jsme zpátky na začátku, akorát jsme si vyjasnili, že esoterika, tedy pardon, víra, je na tvé straně.

Ne ne ne :-P Když by si řekl, že věříš, že dynamické jazyky jsou lepší, tak bych neřekl ani popel. Na místo toho jsi se pustil do posuzování toho, co jsem či nejsem schopen pochopit. Víš, tomu, co tu předvádíš, se říká svatá kráva.

Já dál věřím, že přijde někdo, kdo bude zastáncem dynamických jazyků, a ukáže mi, že to není jen ezoterika, ale že je to skutečně o jiném způsobu myšlení. A já třeba dospěju k závěru, že mi to stejně nic neříká, ale alespoň si budu moct odškrtnout jeden mýtus.

Mlocik97

  • *****
  • 831
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #69 kdy: 29. 03. 2020, 01:31:44 »
Podľa mňa riešenie typov v jazykoch je nezmyselné. Vôbec nevidím dôvod aby typy boli viazané na premennú a nie dáta.

JavaScript má podľa mňa skoro najzmyselnejsie to riešené, s výnimkou obskurdnosti, teda ako su riešené určité situácie kedy robíme operaciu nad 2 rozličnými typmi.

Druhá vec je že stačí rozlišovať toľko typov, aby sme rozlisili pracu s nimi v programe. To znamená:
Čísla
Stringy
Booleany
Array
Object
Null

nič iné netreba. Nepochopím jazyky kde máte 8 rôznych typov na podpísanie premennej, uchovavajucej dáta s ktorými sa pracuje rovnakým spôsobom. Viď char vs string, neni char vlastne string dĺžky 1? Alebo Int vs Float, Není Int vlastne Float s 0 desatinnými miestami? Ak hovoríme že sa ukladajú trocha inak, tak o koľko? Šetríme tam bajty dát? Dnes PC fakt nie sú stroje kde by bajty urobili rozdiel, navyše keď dáta v premenných tvoria najmenšie množstvo dát uložených v operačnej pameti.

Navyše proč to musíme definovat explicitne? Není z dát jasné, čo premenná obsahuje?

Keby v JS boli zakázané veci ako robenie operácie nad nekompatibilními typmi dát, tak by JS podľa mňa to mal najsamlepsie poriesene.
---
TS, hmm, jak ťa tlačí k OOP mi vadí, nehovorím že neni situácia kedy by sa nedalo využiť OOP, ale myslím že by programátor sa nemal prispôsobovať v tom aké paradigma musí zvoliť v ktorom jazyku.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #70 kdy: 29. 03. 2020, 01:40:47 »
Podľa mňa riešenie typov v jazykoch je nezmyselné. Vôbec nevidím dôvod aby typy boli viazané na premennú a nie dáta.
Typy v statických jazycích nejsou vázané na proměnnou (bavíme se o moderních jazycích).


Navyše proč to musíme definovat explicitne? Není z dát jasné, čo premenná obsahuje?
Nemusíš. Type inference.


To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).
Neplatí  ;) U statických jazyků něco jako neošetřená větev (ideově samozřejmě) neexistuje.

Ink

  • *****
  • 655
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #71 kdy: 29. 03. 2020, 08:34:08 »
Není, ukazatel v C je pojmenovaný ukazatel do paměti, který se nijak nestará o datový typ objektu, na který ukazuje. V principu je to stejné, jen je to více low level, programátor si to musí přetypovat explicitně a musí si sám pohlídat paměť.

Srovnáváš jazyk s vyspělým typovým systémem, který rozumí kontextu a vyšší assembler, který umožňuje dělat jenom low level věci, protože je jednoduchý a moc lepších možností nemá.


Dynamické jazyky na to nekašlou, dynamické jazyky mají jiný koncept. A ano, jsou díky tomu více flexibilní a jsou proto pohodlnější na používání, proto také čím dál tím více oblíbené s tím, jak roste výkon počítačů a to jejich plýtvání zdroji je čím dál tím více marginální.

Subjektivní hodnocení - nuda.

Ostatně, garbage kolektor je zrovna tak plýtvání zdroji za cenu pohodlí programátora, virtuální stroje také, ale to ti asi nevadí, že? Lidské zdroje jsou cennější než hardware, produktivita programátora je ve většině případů důležitější než efektivita programu.

To jsi četl kde, že mi to "nevadí"? Plýtvání je vždycky plýtvání, vždycky to je škoda, ale někdy je odůvodnitelné - něco za něco. To, že je produktivita programátora ve všech částech vývojového cyklu v dynamických jazycích v součtu vyšší, je Tvoje víra. Jinak doporučuju následující čtení - převod velkého systému z Pythonu do Rustu v Dropboxu - proč to dělali a co tím získali (nápověda: nešlo jenom o problém pomalosti některých dílčích operací v runtime dynamického jazyka, ale zejména o jeho relativní neflexibilitu, tedy naprostý opak toho, co tu celou dobu tvrdíš):

https://dropbox.tech/infrastructure/rewriting-the-heart-of-our-sync-engine

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #72 kdy: 29. 03. 2020, 09:32:43 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

Takže jsme zpátky na začátku, akorát jsme si vyjasnili, že esoterika, tedy pardon, víra, je na tvé straně.
tomu, co tu předvádíš, se říká svatá kráva.
Spíš demence.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #73 kdy: 29. 03. 2020, 09:35:06 »
Podľa mňa riešenie typov v jazykoch je nezmyselné. Vôbec nevidím dôvod aby typy boli viazané na premennú a nie dáta.

JavaScript má podľa mňa skoro najzmyselnejsie to riešené, s výnimkou obskurdnosti, teda ako su riešené určité situácie kedy robíme operaciu nad 2 rozličnými typmi.

Druhá vec je že stačí rozlišovať toľko typov, aby sme rozlisili pracu s nimi v programe. To znamená:
Čísla
Stringy
Booleany
Array
Object
Null

nič iné netreba. Nepochopím jazyky kde máte 8 rôznych typov na podpísanie premennej, uchovavajucej dáta s ktorými sa pracuje rovnakým spôsobom. Viď char vs string, neni char vlastne string dĺžky 1? Alebo Int vs Float, Není Int vlastne Float s 0 desatinnými miestami? Ak hovoríme že sa ukladajú trocha inak, tak o koľko? Šetríme tam bajty dát? Dnes PC fakt nie sú stroje kde by bajty urobili rozdiel, navyše keď dáta v premenných tvoria najmenšie množstvo dát uložených v operačnej pameti.

Navyše proč to musíme definovat explicitne? Není z dát jasné, čo premenná obsahuje?

Keby v JS boli zakázané veci ako robenie operácie nad nekompatibilními typmi dát, tak by JS podľa mňa to mal najsamlepsie poriesene.
---
TS, hmm, jak ťa tlačí k OOP mi vadí, nehovorím že neni situácia kedy by sa nedalo využiť OOP, ale myslím že by programátor sa nemal prispôsobovať v tom aké paradigma musí zvoliť v ktorom jazyku.
Zase blábol.

Re:Zkušenosti s TypeScriptem
« Odpověď #74 kdy: 29. 03. 2020, 09:37:17 »
To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).
Neplatí  ;) U statických jazyků něco jako neošetřená větev (ideově samozřejmě) neexistuje.

Ideově neošetřená větev? Co je to za hovadinu?

Kód: [Vybrat]
f :: Maybe a -> a
f (Just x) = x

Navyše proč to musíme definovat explicitne? Není z dát jasné, čo premenná obsahuje?
Nemusíš. Type inference.

Ta nebývá 100%.

Keby v JS boli zakázané veci ako robenie operácie nad nekompatibilními typmi dát, ...

Nic takového v JavaScriptu není? Ono by stačilo, kdyby programátoři, kteří JS neumí, používali === místo == (nebo se ho naučili, ale to je náročnější).