Investor pro C++ IDE

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Investor pro C++ IDE
« Odpověď #135 kdy: 14. 09. 2021, 00:14:13 »
Takhle to u typovaných jazyků nefunguje. Nech to bejt.

pokud typove informace zahodite pri kompilaci, nemuze to fungovat. Pokud je zachovate a umoznite jejich cteni v case behu, lze je vyuzit.
Když myslíš.


Re:Investor pro C++ IDE
« Odpověď #136 kdy: 14. 09. 2021, 00:16:29 »
V runtime žádné typy nepotřebuju

urcite lze informace o typech vyuzit i v runtime, treba pro ruzne validace vstupnich dat. Priklad z Pythonu https://pydantic-docs.helpmanual.io/ ,

Pri interpretri je runtime samotny interpreter nie kod ktory sa interpretuje.

Validovat podla deklarovaneho typu premennej v kode je na facku. Aj v pripade tak typovo silneho a bohateho jazyka ako napr ada. Vstupne hodnoty sa maju validovat podla zadania.

potom musite v kodu udavat typy na dvou mistech, coz neni DRY.

Re:Investor pro C++ IDE
« Odpověď #137 kdy: 14. 09. 2021, 00:24:02 »
Takhle to u typovaných jazyků nefunguje. Nech to bejt.

pokud typove informace zahodite pri kompilaci, nemuze to fungovat. Pokud je zachovate a umoznite jejich cteni v case behu, lze je vyuzit.
Když myslíš.

nemyslim, vim. V Pythonu se stejne typove anotace bezne pouzivaji jak ke staticke analyze, tak v runtime. Nektere typescriptove knihovny (typeORM), take pouzivaji anotace v runtime (s pomoci reflect-metadata).

a netykejte mi prosim.

Re:Investor pro C++ IDE
« Odpověď #138 kdy: 14. 09. 2021, 00:48:05 »
V runtime žádné typy nepotřebuju

urcite lze informace o typech vyuzit i v runtime, treba pro ruzne validace vstupnich dat. Priklad z Pythonu https://pydantic-docs.helpmanual.io/ ,

Pri interpretri je runtime samotny interpreter nie kod ktory sa interpretuje.

Validovat podla deklarovaneho typu premennej v kode je na facku. Aj v pripade tak typovo silneho a bohateho jazyka ako napr ada. Vstupne hodnoty sa maju validovat podla zadania.

potom musite v kodu udavat typy na dvou mistech, coz neni DRY.

Je to DRY, mam deklarovanu premennu napr smallint, do ktorej ocakavam zo vstupu prercenta (0-100). Mozem sice pouzit
Kód: [Vybrat]
subtype Percenta is Smallint range 0..100; a napisat si super parser ktory mi deklaracie bude konvertovat napr. na regular ktory potom v runtime bude validovat hodnoty. Alebo budem odchytavat exceptions...

Pripadne to urobim tak ze deklarujem triedu request ktora bude mat metodu getPercenta a vrati priamo ten typ Percenta, pripadne hodi vynimku ak vstup nebude validny. Takto v jednej triede popisem vstup podla kontraktu a v zbytku kodu uz budem pouzivat priamo percenta, bez zbytocnej typovej kontroly (tu urobi prekladac uz pri preklade) a bez zbytocnej kontroly pretecenia (implicitne priradenia ada nedovoli).

Deklaracia triedy request sa dobre anotuje (nie su v nej zalezitosti mimo ramec funkcnosti triedy). Naviac ten vysledny kod je rychly...

Re:Investor pro C++ IDE
« Odpověď #139 kdy: 14. 09. 2021, 01:17:38 »
Mozem sice pouzit
Kód: [Vybrat]
subtype Percenta is Smallint range 0..100; a napisat si super parser ktory mi deklaracie bude konvertovat napr. na regular ktory potom v runtime bude validovat hodnoty. Alebo budem odchytavat exceptions...

presne to je cil, ale tohle konkretne v Pythonu pujde validovat pouze v runtime, protoze Mypy (zatim?) neumi rozsahove ciselne typy.

doporucuji se podivat na dokumentaci te knihovny, kterou jsem odkazoval, validace podle typovych anotaci je default, ale muzete ji libovolne customizovat, kdyz nestaci
« Poslední změna: 14. 09. 2021, 01:20:18 od A.P.Hacker »


Re:Investor pro C++ IDE
« Odpověď #140 kdy: 14. 09. 2021, 01:24:28 »
Pripadne to urobim tak ze deklarujem triedu request ktora bude mat metodu getPercenta a vrati priamo ten typ Percenta, pripadne hodi vynimku ak vstup nebude validny. Takto v jednej triede popisem vstup podla kontraktu a v zbytku kodu uz budem pouzivat priamo percenta, bez zbytocnej typovej kontroly (tu urobi prekladac uz pri preklade) a bez zbytocnej kontroly pretecenia (implicitne priradenia ada nedovoli).

Deklaracia triedy request sa dobre anotuje (nie su v nej zalezitosti mimo ramec funkcnosti triedy). Naviac ten vysledny kod je rychly...

to neni DRY, protoze musite nekde definovat ciselnou promenou, do ktere ta procenta ukladate, a na jinem miste napsa kod, ktery overuje, ze vstupni string je cislo.

Re:Investor pro C++ IDE
« Odpověď #141 kdy: 14. 09. 2021, 04:55:46 »
Pripadne to urobim tak ze deklarujem triedu request ktora bude mat metodu getPercenta a vrati priamo ten typ Percenta, pripadne hodi vynimku ak vstup nebude validny. Takto v jednej triede popisem vstup podla kontraktu a v zbytku kodu uz budem pouzivat priamo percenta, bez zbytocnej typovej kontroly (tu urobi prekladac uz pri preklade) a bez zbytocnej kontroly pretecenia (implicitne priradenia ada nedovoli).

Deklaracia triedy request sa dobre anotuje (nie su v nej zalezitosti mimo ramec funkcnosti triedy). Naviac ten vysledny kod je rychly...

to neni DRY, protoze musite nekde definovat ciselnou promenou, do ktere ta procenta ukladate, a na jinem miste napsa kod, ktery overuje, ze vstupni string je cislo.

Njn, staticky typovany jazyk... premenna do ktorej tu navratovu hodnotu ulozim musi byt rovnakeho typu, alebo musi byt definovany operator priradenia, alebo ju musim explicitne pretypovat...

Je to DRY, naviac tym ze oddelim algoritmus pre ziskanie hodnoty od ostanej funkcionality a pred navratom tej hodnoty ju validujem v dalsej metode, tak to nie je ani spagetak...

Re:Investor pro C++ IDE
« Odpověď #142 kdy: 14. 09. 2021, 05:36:30 »
Njn, staticky typovany jazyk...

jde to jen v jazycich, ktere podporuji reflexi typovych anotaci za behu. Zrovna v ADE to asi nejde, ale s tim jste prisel vy, ja uvedl odkaz na konkretni knihovny v Pythonu a Typescriptu

premenna do ktorej tu navratovu hodnotu ulozim musi byt rovnakeho typu, alebo musi byt definovany operator priradenia, alebo ju musim explicitne pretypovat...

v pydanticu staci, kdyz konstruktor ciloveho typu akceptuje zdrojovy typ (vetsinou string). https://pydantic-docs.helpmanual.io/usage/models/#data-conversion


Re:Investor pro C++ IDE
« Odpověď #143 kdy: 14. 09. 2021, 05:45:43 »
v pydanticu staci, kdyz konstruktor ciloveho typu akceptuje zdrojovy typ (vetsinou string). https://pydantic-docs.helpmanual.io/usage/models/#data-conversion

pokud chcete zakazat implicitni konverze, pouzijete strict typy

https://pydantic-docs.helpmanual.io/usage/types/#strict-types

Re:Investor pro C++ IDE
« Odpověď #144 kdy: 14. 09. 2021, 06:26:07 »
No, vy o koze ja o voze.

Validacia vstupu je nieco ine ako typova kontrola.

Typova kontrola je o tom ze do premennej mozete vlozit typ ktory odpoveda deklaracii premennej. Alebo ze funkciu mozete volat len s parametrom rovnakeho typu s akym je deklarovana.

Validacia vstupu je naproti tomu kontrola frormatu ako je ulozena napr. vo vymennom formate, pripadne vstup moze pochadzat s formulara. Takze mame deklarovany typ ako ho pouzivame v kode. Ale format vstupu moze odpovedat
Kód: [Vybrat]
/^1?\d{2}%$/ alebo
Kód: [Vybrat]
/^(:?0|1)\d{2}$/ alebo
Kód: [Vybrat]
/^(:?1\.0{2})|(:?0\.\d{2})$/ a mnoho dalsieho. To ale aky format je na vstupe ide mimo definiciu toto typu. Definicia typu netusi ako ho ukladaju trebars v pakistane, to je nutne deklarovat zvlast. A podla principu DRY, deklarujeme typ zvlast. A jeho validatory a parsery, zvlast. Takze v runtime tak mate ulozeny format pre validaciu s tym ako z neho urobit konkretny typ. Po validacii a parsovani sa vam z neho stane typ ktory predpokladate v kode a nie je ho nutne znova a znova validovat.

« Poslední změna: 14. 09. 2021, 06:29:21 od Death Walker »

Re:Investor pro C++ IDE
« Odpověď #145 kdy: 14. 09. 2021, 06:36:26 »
jde to jen v jazycich, ktere podporuji reflexi typovych anotaci za behu. Zrovna v ADE to asi nejde, ale s tim jste prisel vy, ja uvedl odkaz na konkretni knihovny v Pythonu a Typescript
No vidite, uz ste skoro doma. Este si staci odpovedat ci ma lua reflexiu typovych anotacii za behu... Ani v javacripte nie... Tak ze ak pouzivate nieco ako transpiller a mate to dobre otypovane v zdroji, tak vam ten transpiler predsa neda boolean ako parameter ktory ma byt int...
« Poslední změna: 14. 09. 2021, 06:42:43 od Death Walker »

Re:Investor pro C++ IDE
« Odpověď #146 kdy: 14. 09. 2021, 06:44:08 »
jde to jen v jazycich, ktere podporuji reflexi typovych anotaci za behu. Zrovna v ADE to asi nejde, ale s tim jste prisel vy, ja uvedl odkaz na konkretni knihovny v Pythonu a Typescript
No vidite, uz ste skoro doma. Este si staci odpovedat ci ma lua reflexiu typovych anotacii za behu...

do vysledneho kodu v dynamickem jazyce jdou pridat typove anotace pomoci nejake dodatecne struktury s metadatay, tak jak to dela typescript kdyz kompiluje do es6
« Poslední změna: 14. 09. 2021, 06:48:42 od A.P.Hacker »

Re:Investor pro C++ IDE
« Odpověď #147 kdy: 14. 09. 2021, 06:52:33 »
No, vy o koze ja o voze.

no, ja jsem uvedl priklad, kdy se typove anotace k validacim pouzivaji (prevazne validace JSONu). Vy jste si vymyslel jiny priklad a chcete jim dokazat, ze to neni mozne.

Re:Investor pro C++ IDE
« Odpověď #148 kdy: 14. 09. 2021, 06:54:15 »
jde to jen v jazycich, ktere podporuji reflexi typovych anotaci za behu. Zrovna v ADE to asi nejde, ale s tim jste prisel vy, ja uvedl odkaz na konkretni knihovny v Pythonu a Typescript
No vidite, uz ste skoro doma. Este si staci odpovedat ci ma lua reflexiu typovych anotacii za behu...

do vysledneho kodu v dynamickem jazyce jdou pridat typove anotace pomoci nejake dodatecne struktury s metadatay, tak jak to dela typescript kdyz kompiluje do es6

K comu, aby ten transpilovany javascrip overil ze sa typescript nezmylil. DONT REPEAT YOURSELF! Ak urobis typovu kontrolu v zdrojovom kode, tak je zbytocne ju replikovat v cielovom kode.

Re:Investor pro C++ IDE
« Odpověď #149 kdy: 14. 09. 2021, 07:03:45 »
No, vy o koze ja o voze.

no, ja jsem uvedl priklad, kdy se typove anotace k validacim pouzivaji (prevazne validace JSONu). Vy jste si vymyslel jiny priklad a chcete jim dokazat, ze to neni mozne.
Takze zavedieme pravidlo ze percenta sa budu zapisovat tak ako mate deklarovany typ?
Co ak budete importovat bankove vypisy? Mate predstavu kolko roznych formatov dostanete len v pripade ze budete pracovat s tuzenskymi bankami? Prekopete standarty tak aby vyhovovali anotaci? Alebo poprosite niekoho aby vam napisal servicu ktorej predhodite abo format a ona vam vrati json?