Typový system versus unittesty

Kit

Re:Typový system versus unittesty
« Odpověď #345 kdy: 23. 06. 2018, 23:51:32 »
Co mi připadá trošku srandovní je to, že v podstatě objevují závorky z lispu, akorát to místo toho cpou do JSONu...

Když se podívám na šablony Latte, tak je to skoro Lisp - jen místo kulatých závorek jsou chlupaté. Psát název funkce dovnitř závorky je pro interpret velmi praktické - zrychluje a zjednodušuje to zpracování. Někomu vadí velké množsví závorek v Lispu, ale je jich zhruba stejně (možná i méně) než ve srovnatelné javovské aplikaci.


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #346 kdy: 23. 06. 2018, 23:57:45 »
Nevím, jestli je ta averze psát si vlastní jazyk opodstatněná. Elasticsearch má vlastní jazyk. Nevím, jak by to vyřešili s nějakou Luou...
Lua je skvělá. Malá, kompaktní, šikovná, rychlá. Ale není funkcionální a nepřekvapivě nemá žádné typy.

Když bych hledal nějaký jazyk, který bych chtěl zakomponovat do svého programu, tak zase tak moc na výběr není. (Nebo tedy já nebyl úspěšný.)

JSH

Re:Typový system versus unittesty
« Odpověď #347 kdy: 24. 06. 2018, 00:22:25 »
Lua je skvělá. Malá, kompaktní, šikovná, rychlá. Ale není funkcionální a nepřekvapivě nemá žádné typy.
S typy je to pravda bídné, ale některé funkcionální věci tam jdou. Přes metatabulku se dá udělat libovolná lua table volatelná, takže tam jdou udělat minimálně funkce vyšších řádů. Dře to, ale jde to.

A je objektovější (v původním smyslu) než jakýkoliv mainstreamový jazyk. S drobnýma výhradama se tam dá psát skoro jako ve Smalltalku, nebo Selfu.

Gődel

Re:Typový system versus unittesty
« Odpověď #348 kdy: 24. 06. 2018, 00:33:52 »
Lua je skvělá. Malá, kompaktní, šikovná, rychlá. Ale není funkcionální a nepřekvapivě nemá žádné typy.
S typy je to pravda bídné, ale některé funkcionální věci tam jdou. Přes metatabulku se dá udělat libovolná lua table volatelná, takže tam jdou udělat minimálně funkce vyšších řádů. Dře to, ale jde to.

A je objektovější (v původním smyslu) než jakýkoliv mainstreamový jazyk. S drobnýma výhradama se tam dá psát skoro jako ve Smalltalku, nebo Selfu.
Ta "vyšší objektovost" je ale spíš nevýhoda, ne?

Kit

Re:Typový system versus unittesty
« Odpověď #349 kdy: 24. 06. 2018, 00:37:18 »
Nevím, jestli je ta averze psát si vlastní jazyk opodstatněná. Elasticsearch má vlastní jazyk. Nevím, jak by to vyřešili s nějakou Luou...
Lua je skvělá. Malá, kompaktní, šikovná, rychlá. Ale není funkcionální a nepřekvapivě nemá žádné typy.

Lua má typy. Odvozené, ale má.

Když bych hledal nějaký jazyk, který bych chtěl zakomponovat do svého programu, tak zase tak moc na výběr není. (Nebo tedy já nebyl úspěšný.)

Co tak zmíněný Lisp? Funkcionální je, typy má také, makra na suprové úrovni,...

Jako alternativu z objektového světa jsem zkoušel Smalltalk. Má některé zajímavé vychytávky a jako zdroj inspirace pro tvorbu vlastního jazyka vůbec není špatný.

Lua zase má výhodu v tom, že je integrována do některých jazyků jako modul, např. PHP či Redis. Někdy se to prostě hodí.


Kit

Re:Typový system versus unittesty
« Odpověď #350 kdy: 24. 06. 2018, 00:39:13 »
Ta "vyšší objektovost" je ale spíš nevýhoda, ne?

Proč by měla být "vyšší objektovost" nevýhodou?

andy

Re:Typový system versus unittesty
« Odpověď #351 kdy: 24. 06. 2018, 00:51:38 »
Já si v rámci inspirace tady tím LLVM příkladem napsal interpret toho mapbox expression jazyka i s typecheckerem. Typechecker má 80 řádek, interpret dalších 80 (definice struktur/typů dalších 80). Faktem je, že díky Lisp-like syntaxi je parser asi na 25 řádek. Napsat si k tomu eventuálně nějaký parser, aby to bylo pro lidi, popravdě taky není zas až takový problém... ale pochopil jsem, proč mají lidi rádi lisp...

V každým případě nějak nevidím úplně nějaký zásadní problém v tom psát si vlastní jazyk... ani bych před pár lety nevěřil, že něco takového řeknu...

Citace
Lua má typy. Odvozené, ale má.
Nemá. Pierce jsem už tady citoval. "Tagování" proměnných nejsou typy.

123

Re:Typový system versus unittesty
« Odpověď #352 kdy: 24. 06. 2018, 09:02:05 »
Citace
Nevím, jestli je ta averze psát si vlastní jazyk opodstatněná. Elasticsearch má vlastní jazyk. Nevím, jak by to vyřešili s nějakou Luou... Mapbox styly mají vlastní expression jazyk. Dtto.

To ale není nějaký ad-hoc jazyk bez dokumentace, který se použije na jedné aplikaci a jede se dál, užijte si to. Tohle je úplně jiný případ.

andy

Re:Typový system versus unittesty
« Odpověď #353 kdy: 24. 06. 2018, 09:24:04 »
Citace
Nevím, jestli je ta averze psát si vlastní jazyk opodstatněná. Elasticsearch má vlastní jazyk. Nevím, jak by to vyřešili s nějakou Luou... Mapbox styly mají vlastní expression jazyk. Dtto.

To ale není nějaký ad-hoc jazyk bez dokumentace, který se použije na jedné aplikaci a jede se dál, užijte si to. Tohle je úplně jiný případ.
Ne, je to ad-hoc jazyk s dokumentací (někdy nejednoznacnou), který se použije na jedné aplikaci (elastic, aplikace mapboxu pro zobrazení map)... Je to úplně jiný případ..

123

Re:Typový system versus unittesty
« Odpověď #354 kdy: 24. 06. 2018, 10:35:34 »
ES není aplikace, ale knihovna, kterou někdo spravuje, opravuje v ní bugy, poskytuje support. Ano, je to jiný případ.

v

Re:Typový system versus unittesty
« Odpověď #355 kdy: 24. 06. 2018, 12:37:52 »
ještě k prapůvodnímu dotazu: https://www.cs.kent.ac.uk/people/staff/sjt/TTFP/

andy

Re:Typový system versus unittesty
« Odpověď #356 kdy: 24. 06. 2018, 20:57:27 »
ES není aplikace, ale knihovna, kterou někdo spravuje, opravuje v ní bugy, poskytuje support. Ano, je to jiný případ.
Aha... takže když někdo dodává aplikace, které nikdo nespravuje a neopravuje v nich bugy a neposkytuje support, tak by v těchto aplikacích neměl poskytovat konfiguraci přes vlastní jazyk, případě  by tu aplikaci neměl vyvíjet s použitím nějakého vlastního jazyka... (jako třeba v době, kdy nebylo XSLT, tak si rozhodně pro vývoj aplikací nepsat něco, co dělá něco podobného...)......

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #357 kdy: 25. 06. 2018, 13:47:51 »
Ta "vyšší objektovost" je ale spíš nevýhoda, ne?
Objektovost bych jí nevyčítal.
Metatabulky jsou perfektní věc. Daj se pak děla i ty type-tagy. Akorát tedy nejde přiřadit meta ke scaláru.

Jedna věc, která mi přijde tak nějak navíc jsou eventy. Díky tomu mám problém to nazvat funkcionální :-)

Gődel

Re:Typový system versus unittesty
« Odpověď #358 kdy: 25. 06. 2018, 14:14:32 »
Objektovost bych jí nevyčítal.
Ono říct “objektovost” je dost vágní. Je-li dostatečně pragmatická, je přínosem. Ty type tagy jsou dobrým příkladem. Takto se pak ale dostaneme k polymorfismu.

Jinak ještě k původnímu tématu - vedle typování a jednotkových testů se někdy taky používá obecné dokazování korektnosti při překladu, vývojář napíše podmínky v nějaké deklarativní notaci, které pak překladač vyhodnotí, než vygeneruje kód. Formálně to je jen zobecnění typové kontroly, ale za použití neomezené logiky. Například si můžu “staticky” vyžádat, že odmocnina prvočísla je vždy iracionální apod.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #359 kdy: 25. 06. 2018, 14:25:29 »
vedle typování a jednotkových testů se někdy taky používá obecné dokazování korektnosti při překladu, vývojář napíše podmínky v nějaké deklarativní notaci, které pak překladač vyhodnotí, než vygeneruje kód. Formálně to je jen zobecnění typové kontroly, ale za použití neomezené logiky. Například si můžu “staticky” vyžádat, že odmocnina prvočísla je vždy iracionální apod.

Uniká mi v čem se to liší od typů. Já pomocí typu nemůžu "říct", že odmocnina z prvočísla je vždy iracionální?
Kód: [Vybrat]
nthRoot = x : PrimeNum -> IrrationalNum
« Poslední změna: 25. 06. 2018, 14:28:42 od BoneFlute »