Jak validovat DTO v dynamicky typovaném jazyce?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #45 kdy: 24. 01. 2022, 12:11:34 »

BTW možná to zapadlo, ale Rustu ten jazyk nijak nekonkuruje, je náhradou za R, Matlab a Python, těžko v něm někdo bude psát třeba mikroslužby nebo dokonce něco systémového (ani neumí vytvářet pořádné samostatné binárky). Mě osobně zajímají jen čistě technické aspekty překladu a optimalizace kódu. S Rustem se oblasti nasazení prolínají třeba u věci jako je Egg a dost často bude lepší napsat prostě všechno v Rustu kvůli například kontejnerizaci apod. Ale v oblasti tzv. vědeckých výpočtů jsou priority, proč si to nepřiznat, úplně jinde (kdysi kdosi se tam snažil prosadit Swift, ale asi se moc neuchytil).
Jasně, message received. A dík i za předchozí příspěvek.
YAW. Když narazím na nějaký zajímavý článek k tématu, dám vědět ;)


Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #46 kdy: 24. 01. 2022, 13:29:25 »
Nejelegantnější jsou stejně silně typované jazyky (s nepovinným typováním => s kvalitním odvozováním typů) a s pozdní vazbou. Ale to už se tu ale probíralo mnohokrát :)

Jinak souhlas, že validace s typovými schopnostmi jazyka v mainstreamových jazycích moc nesouvisí, pokaždé se validuje ručně psaným kódem (ať už ho napsal kdokoli).

Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #47 kdy: 24. 01. 2022, 14:10:19 »
Nejelegantnější jsou stejně silně typované jazyky (s nepovinným typováním => s kvalitním odvozováním typů) a s pozdní vazbou. Ale to už se tu ale probíralo mnohokrát :)

neni pozdni vazba synonymum pro dynamicke typovani?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #48 kdy: 24. 01. 2022, 14:11:31 »
Nejelegantnější jsou stejně silně typované jazyky (s nepovinným typováním => s kvalitním odvozováním typů) a s pozdní vazbou. Ale to už se tu ale probíralo mnohokrát :)
Jako například ObjC?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #49 kdy: 24. 01. 2022, 14:13:09 »
Nejelegantnější jsou stejně silně typované jazyky (s nepovinným typováním => s kvalitním odvozováním typů) a s pozdní vazbou. Ale to už se tu ale probíralo mnohokrát :)
neni pozdni vazba synonymum pro dynamicke typovani?
Ne.


Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #50 kdy: 24. 01. 2022, 14:13:57 »
Jinak souhlas, že validace s typovými schopnostmi jazyka v mainstreamových jazycích moc nesouvisí, pokaždé se validuje ručně psaným kódem (ať už ho napsal kdokoli).

Jakto doprcic zase ze s tim nesouvisi. V Jave DTO + tabulka v Relacni db se zakladnimi constrains mi zakladni validaci udela. To snad neni validace, ze ti v JSONu muzou prijit jen predem dane fieldy, a ze kdyz ve First Name bude 1GB string tak ze to Relacni db odmitne kdyz tam dam VARCHAR(20)?

To je zase diskuze...

Raci odtud zmizim, nez se octnu ve zbytecne a nekonecne diskuzi.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #51 kdy: 24. 01. 2022, 15:03:10 »
Jinak souhlas, že validace s typovými schopnostmi jazyka v mainstreamových jazycích moc nesouvisí, pokaždé se validuje ručně psaným kódem (ať už ho napsal kdokoli).
Jakto doprcic zase ze s tim nesouvisi.
Má pravdu, vyjde to nastejno v Javě nebo třeba Ruby.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #52 kdy: 24. 01. 2022, 16:57:05 »
Jinak souhlas, že validace s typovými schopnostmi jazyka v mainstreamových jazycích moc nesouvisí, pokaždé se validuje ručně psaným kódem (ať už ho napsal kdokoli).

Jakto doprcic zase ze s tim nesouvisi. V Jave DTO + tabulka v Relacni db se zakladnimi constrains mi zakladni validaci udela. To snad neni validace, ze ti v JSONu muzou prijit jen predem dane fieldy, a ze kdyz ve First Name bude 1GB string tak ze to Relacni db odmitne kdyz tam dam VARCHAR(20)?

Dyť jo. Jenže ty DTO a tabulky se sami nenapíšou, že jo. Dále viz: https://forum.root.cz/index.php?topic=25768.msg365337#msg365337

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #53 kdy: 24. 01. 2022, 17:45:39 »
tak jsem nabyl dojem, že zásadní problém je v tom, že slabě typovaný jazyk (= ve smyslu jazyka, kde by prostředí v daném okamžiku nevědělo jakého je ten který prvek typu […]) možná ani neexistuje. Tudíž klauzule, že jazyk XY je silně typovaný je jen tak pro parádu.
Tohle mi nedá spát :) Myšlenkový experiment: Rozhodnu se v různých jazycích explicitně neuvádět typy proměnných, takže v C++ budou všechny pointery void*, v Javě bude všechno Object, v Go vše, jak jinak, interface{}, v Rustu Any apod. Při použití (volání metody, přístup k datům) musím vždy explicitně přetypovat. Kterépak jazyky ustojí chybu v typu a kde nastane segfault nebo něco podobně nedefinovaného a destruktivního? To jen tak k zamyšlení..

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #54 kdy: 24. 01. 2022, 19:23:26 »
tak jsem nabyl dojem, že zásadní problém je v tom, že slabě typovaný jazyk (= ve smyslu jazyka, kde by prostředí v daném okamžiku nevědělo jakého je ten který prvek typu […]) možná ani neexistuje. Tudíž klauzule, že jazyk XY je silně typovaný je jen tak pro parádu.
Tohle mi nedá spát :) Myšlenkový experiment: Rozhodnu se v různých jazycích explicitně neuvádět typy proměnných, takže v C++ budou všechny pointery void*, v Javě bude všechno Object, v Go vše, jak jinak, interface{}, v Rustu Any apod. Při použití (volání metody, přístup k datům) musím vždy explicitně přetypovat. Kterépak jazyky ustojí chybu v typu a kde nastane segfault nebo něco podobně nedefinovaného a destruktivního? To jen tak k zamyšlení..

Obávám se, že mi nedochází co tím chceš demonstrovat.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #55 kdy: 24. 01. 2022, 19:49:21 »
tak jsem nabyl dojem, že zásadní problém je v tom, že slabě typovaný jazyk (= ve smyslu jazyka, kde by prostředí v daném okamžiku nevědělo jakého je ten který prvek typu […]) možná ani neexistuje. Tudíž klauzule, že jazyk XY je silně typovaný je jen tak pro parádu.
Tohle mi nedá spát :) Myšlenkový experiment: Rozhodnu se v různých jazycích explicitně neuvádět typy proměnných, takže v C++ budou všechny pointery void*, v Javě bude všechno Object, v Go vše, jak jinak, interface{}, v Rustu Any apod. Při použití (volání metody, přístup k datům) musím vždy explicitně přetypovat. Kterépak jazyky ustojí chybu v typu a kde nastane segfault nebo něco podobně nedefinovaného a destruktivního? To jen tak k zamyšlení..
Obávám se, že mi nedochází co tím chceš demonstrovat.
Že C++ je slabě typované, přinejmenším typy bez RTTI. V Javě nebo Go se dá z takové chyby zotavit.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #56 kdy: 24. 01. 2022, 20:19:52 »
tak jsem nabyl dojem, že zásadní problém je v tom, že slabě typovaný jazyk (= ve smyslu jazyka, kde by prostředí v daném okamžiku nevědělo jakého je ten který prvek typu […]) možná ani neexistuje. Tudíž klauzule, že jazyk XY je silně typovaný je jen tak pro parádu.
Tohle mi nedá spát :) Myšlenkový experiment: Rozhodnu se v různých jazycích explicitně neuvádět typy proměnných, takže v C++ budou všechny pointery void*, v Javě bude všechno Object, v Go vše, jak jinak, interface{}, v Rustu Any apod. Při použití (volání metody, přístup k datům) musím vždy explicitně přetypovat. Kterépak jazyky ustojí chybu v typu a kde nastane segfault nebo něco podobně nedefinovaného a destruktivního? To jen tak k zamyšlení..
Obávám se, že mi nedochází co tím chceš demonstrovat.
Že C++ je slabě typované, přinejmenším typy bez RTTI. V Javě nebo Go se dá z takové chyby zotavit.

Toho jsem se obával. OK, můžeme se za účelem kvality diskuse vyhnout prehistorii v podobě jazyků C/C++?

Co se týče Javy a Go, tak mi to stále nedochází. Obecně v každém okamžiku prvky znají svůj typ. Že ten typ je Object nebo Any, no to je tvoje volba, ne omezení/vlastnost jazyka.

OK, jinak:
Jsou jazyky Java, Go, Rust, C#, Javascript, Python, Lua, VisualBasic, podle tebe, slabě typované? Pokud ano, tak proč?

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #57 kdy: 24. 01. 2022, 21:57:35 »
Co se týče Javy a Go, tak mi to stále nedochází. Obecně v každém okamžiku prvky znají svůj typ. Že ten typ je Object nebo Any, no to je tvoje volba, ne omezení/vlastnost jazyka.
Typ objektu je to, co je za new, ne deklarovaný typ proměnné.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #58 kdy: 24. 01. 2022, 22:00:37 »
Citace: BoneFlute link=topic=25768.msg365402#msg365402
Trochu odbočím — koukals pak ještě někdy na záv. typy? Mám teď čerstvou zkušenost s jejich výukou, tak kdyby byl zájem ;)

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jak validovat DTO v dynamicky typovaném jazyce?
« Odpověď #59 kdy: 25. 01. 2022, 05:42:56 »
Co se týče Javy a Go, tak mi to stále nedochází. Obecně v každém okamžiku prvky znají svůj typ. Že ten typ je Object nebo Any, no to je tvoje volba, ne omezení/vlastnost jazyka.
Typ objektu je to, co je za new, ne deklarovaný typ proměnné.
Kód: [Vybrat]
test(x) {
    print("type: {x.type}")
}
Deklarace je nezajímavá. New je relikt. Prvek může vzniknout parsováním, přetypováním, deserializací, etc.

Tedy zpět k otázce. Které jazyky jsou vlastně ty slabě typované, vůči kterým se ty silně typované vyhrazují? (Nebudeme-li se bavit o C/C++.)