Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Králík

Stran: [1] 2 3 ... 5
1
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 16:51:28 »
K té praktičnosti Rustu, kdy bude použitelné Any?
Jakej máš na to požadavek? Ale ono je to asi jedno, Any je jen jednoduchý typ ve stdlib, není v něm vůbec žádná magie, veškerá zajímavá funcionalita plyne z dyn Any, takže počítám, že pravděpodobně se tím zabývá ta iniciativa kolem lepších dyn trait.

Ještě BTW našel jsem zápisek (5 let starý) od Graydona o možných budoucích směrech vývoje. Hodně high-level, ale docela dobré IMO.

2
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 15:09:55 »
Přesně proto jsem napsal přiměl více zabývat
Jak jsem ti vysvětlil, není to pravda, představa, že Rust nějak ovlivňuje FP, je ostatně dost směšná ;D
Tvoje poznámka o Mercury to nijak nerozporuje, naopak, přesně o tom mluvim - ten koncept byl 20 let na okraji zájmu, pak je použil Rust, a následně se vyrojilo X iniciativ/jazyků s linear types (Haskell linear types, Idris2), viz také ta Jonesovo přednáška, kde přímo Rust zmiňuje. Ale no nic no, tušil jsem, že ta myšlenka pro tebe bude kulturně nepřijatelná...

Z jiného soudku (asi spíše pro BoneFlute): Nedávno jsem narazil na zajímavý jazyk, který má statický typový systém strukturně jednodušší než "obvyklí podezřelí" (Java/C++/Rust/Go), ale formálně silnější z pohledu OOP (restriktivní dědičnost) i HKT (metagenerické typy). Teď nemám po ruce odkaz, ale je popsaný na Wikibooks (pod něčím jako "Type-oriented programming", teď fakt nevím), večer můžu dát link a vysvětlit, co by si z něj Rust mohl vzít, aby byl praktičtější.
Skoro bych býval hádal jazyk Kind, ovšem až na to OOP.

Jinak lidi pracující na Rustu mají představu kam ten jazyk rozvíjet, aby byl praktičtější, už jsem zmiňoval efekty, iniciativa v tomhle směru je tady a tady, dále lepší práce s dyn traity a DSTs, případně vylepšování borrow-checkingu (do toho spadají i ty self-ref typy, stacked borrows a tak).

Nejsem si jistej, jestli tvoje představa o praktičnosti se shoduje se zaměřením toho jazyka...

3
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 13:36:30 »
když Rust přiměl FPčkaře se trochu více zabývat lineráními typy
Až na to, že ta kauzalita je opačná, autoři Rustu se netají tím, že se inspirovali starými jazyky s lineárními typy, sám Hoare prostě obšlehl způsob práce se zdroji v Mercury (jazyk z roku 1995). Tohle ti dost nevyšlo :P
Ano, jistě, kromě Mercury také Linear ML a nějaké další ještě obskurnější jazyky. Přesně proto jsem napsal přiměl více zabývat - dnes to chce každej a jeho babička :D

4
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 12:58:59 »
Žádný takový fakt nebyl prokázán.
Viz (vědecké) články o vnitřnostech Leanu od jeho autorů, které popisují srovnání a benchmarky + diskuse o nich na odborných fórech (přece jen je to od Microsoft Research, ti mají obrovské peníze na vývoj i konference). To je to “ignorance is bliss” BTW :D

:)

GOTO #451. Před 15-20 lety se diskutovalo, jak se HotSpot zlepšuje a jak bude BrzoTM Java rychlejší než C++, Sun měl taky obrovské peníze na vývoj a konference, byly předkládány benchmarky ukazující, jak je rychlejší než C++ ... Tím neříkám, že ten výzkum a ty dané jazyky nejsou zajímavé, je asi dobře, že se tim někdo zabývá ... ale jaksi nemůžu nepozorovat, že tady existuje určitý opakující se pattern :)

Ale třeba to teď půjde lépe, když Rust přiměl FPčkaře se trochu více zabývat lineráními typy :P :D

5
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 11:22:48 »
Žádný takový fakt nebyl prokázán.

Ale jinak je samozřejmě možné, že takové algoritmy existují, a také není novinka, že z dynamického jazyka lze ždímat výkon - viz třeba asm.js na V8.

6
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 09:14:47 »
Ingorance čeho?

7
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 01:30:35 »
No mně to zatím puzzling nepřijde, až uvidim evidence, tak to třeba puzzling bude :)

8
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 01:00:55 »
Jo to já nevim, já ho neviděl...

9
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 00:32:31 »
Benchmarky málokdy mluví jasně. LLVM optimalizace závisí na vstupním IR kódu - není problém vyprodukvoat velmi těžko optimalizovatelný IR, koneckonců, pomalý kód je bez problému možné psát i v C. Rust je rychlý z podobného důvodu jako C nebo C++.

10
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 23. 12. 2022, 00:01:26 »
P.S. BTW zajímalo by mne, zda by šlo v Rustu nějak zprovoznit toto: https://ericniebler.com/2013/07/16/f-algebras-and-c/  :)
Čistě typovým systémem by to drhlo, v Rustu neuděláš ekvivalent template<template<typename> class F>
struct Fix

Jasně, to je právě HKT. Tak ale možná přes GAT?
GATs by asi implementaci usnadnily, ale stále nevidim způsob, jak naimplementovat traitu (nebo 'něco') pro jakejkoli unární typovej konstruktor...

Jo a taky lepší podpora self-referential types - to by Rustu pomohlo víc než jakékoli další FP featury...
Nejsou tohle náhodou induktivní typy?
Ne ne, to je o pointerech/referencích. Self-referential struktura v tomhle smyslu je třeba struktura A, která obsahuje referenci sama na sebe (což může být způsobeno i obsaženými typy, třeba A obsahuje B a C, B obsahuje referenci do C). Tohle interferuje s move semantics - ve chvíli, kdy ty data přemístíš, pointer přestane být platný. Aktuálně se to řeší Pinem (wrapper typ ve standardní knihovně, který zamezuje move), ale je to celkem ošklivý hack.

Jo, vim co jsou dependent types. U Rustu postup směrem k něčemu takovému nebo k HKTs moc nečekej, přeci jen, je to jazyk určený pro reálný, praktický engineering
Jasně, to je fajn, Rust je poměrně low level, má svou upřednostňovanou oblast nasazení, ale když už má třeba GAT, což je docela šílenost, tak k lepšímu typovému systému je už jen malý krůček. Například Lean se překládá do C++, proč by se nemohl překládat do Rustu?
GATs byly přidány hlavně z toho důvodu, že to je potřeba pro podporu async funkcí v traitách. (Sekundárně to pomůže např. s implementací některých iterátorů,...). Pro další/pokročilejší typové featury by musel být podobně silný důvod.

Lean neznám, ale pokud se může překládat do C++, tak by to asi do Rustu mělo jít taky...

V této souvislosti mě ještě napadá, k čemu je ve většině případů Rust, když stejně rychlý kód generuje i třeba (plně dynamický) Chez Scheme? Jasně, ten má TGC, ale to je jediný podstatný rozdíl. Ještě lepší příklad je Julia, taky používá LLVM, obchází GC (neměnitelné struktury) a efektivitou šlape na paty Rustu. Je skutečně celý ten cirkus okolo borrow checkeru potřeba? (Je to víceméně rétorická otázka, ale stejně, ve kterých případech je Rust jediná správná volba?)
No, tak zaprvé jsem k těm tvrzením skeptický. Podobná tvrzení, že high-level jazyk XY už "šlape na paty C++" (nebo v poslední době Rustu) se objevují pravidelně už desítky let. Často to je na základně specifických případů nebo benchmarků, které dobře sedí na optimalizační schopnosti daného jazyka.

Další věc je, že borrowck/lifetimes jde celkem dobře dohromady s C FFI. Céčkové API často obsahuje např. funkce, které vrací nějaký pointer na data pro nějaký handle (=nějaký opaque pointer na nějaký resource) a v dokumentaci se píše něco jako "pointer vrácený z této funkce je platný stejně dlouho jako handle" ... tyhle situace mapují v podstatě 1:1 na lifetimes v Rustu, takže pak nad tim je možné napsat abstrakci velmi tenkou, ale zároveň paměťově korkektní.

Ale samozřejmě nevtrdim, že Rust má poslední slovo a už nikdy nic lepšího nebude. Naopak, je pravděpodobný, že dřív nebo později se objeví i pro specificky použití, na které cílí Rust, něco lepšího. Možná Julia nebo Chez ... nebo něco úplně jiného... Asi uvidíme...

(Je to víceméně rétorická otázka, ale stejně, ve kterých případech je Rust jediná správná volba?)
Třeba tady k tomu došli...

11
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 22. 12. 2022, 21:44:20 »
Jo a taky lepší podpora self-referential types - to by Rustu pomohlo víc než jakékoli další FP featury...

12
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 22. 12. 2022, 21:33:26 »
No vidíš, to je přesně ono, ověřování invariantů. Rozdíl je jen v tom, že v jazycích jako Idris či Lean (nebo SPARK, ale tam se používá jiná metoda) překladač provede verifikace při překladu (nemusí se dělat runtime check), i když velikost není konstantní. (Už to asi nechceme hlouběji rozebírat, ale umožňují to sigma typy. Jinak jo, v Rustu se dá s generickými parametry taky dělat psí kusy a časem třeba přidají i něco à la Lean, nejen typy, ale i plnohodnotnou funkcionální sémantiku
Tak počítám, že tohle by se dalo udělat i s dynamickým polem, ono je celkem jedno, jak ten invariant vyrobim. Ale nezkoušel jsem si to zatim. Jo, vim co jsou dependent types. U Rustu postup směrem k něčemu takovému nebo k HKTs moc nečekej, přeci jen, je to jazyk určený pro reálný, praktický engineering, ne pro postgraduální bádání apod. Když už, tak se spíš teď mudruje nad efekty, resp. specificky control-flow efekty, kvůli error handlingu, generátorům, async streamům apod. Opět ale nečekej nějaký těžce obecný systém, pravděpodobně by to přinejlepším byl opět nějaký subset, se zaměřením na zero-costness, ergnomii a nepříliš strmou učící křivku spíš než krásy typových systémů.

Swift už ji nějakou dobu má, takže je ověřené, že to jde i v tomto typu jazyků.
Jakou featuru Swiftu máš na mysli? Jinak Swift není stejný typ jazyka, nezaměřuje se na zero-cost abstrakce, má runtime, OOP s implicitním dynamic dispatchem,...

P.S. BTW zajímalo by mne, zda by šlo v Rustu nějak zprovoznit toto: https://ericniebler.com/2013/07/16/f-algebras-and-c/  :)
Čistě typovým systémem by to drhlo, v Rustu neuděláš ekvivalent template<template<typename> class F>
struct Fix
, takže by se musela třeba napsat nějaká traita a tu pak implementovat pro typy, které bys chtěl fixovat.  S makrama by to mělo být bez problému. Ono koneckonců v tom C++ je to trochu švindl, protože ty templaty jsou duck typing, žejo...

13
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 22. 12. 2022, 09:25:41 »
Dík, ale myslel jsem spíš v Rustu.

Jinak nedávno kolega v práci ukazoval zajímavou vlastnost const funkcí v Rustu - je možné v nich psát asserty, a tím pádem staticky verifikovat některé invarianty. Ukazoval, že může vytvořit pole statické velikosti, protlačit to skrz nějaký 3rd party kód jako slice (dynamická velikost) a na druhém konci zkonvertovat zpátky na původní typ (konstantní velikost), s tím, že kompilátor velikost ověří staticky, nemusí se dělat runtime check.

14
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 18. 12. 2022, 13:17:52 »
A ten kus kódu by byl?

15
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 07. 12. 2022, 20:14:00 »
Jen pro info... java ma pattern matching...
Měl jsem dojem, že umí matchovat jenom typ objektu...

a value objects (primitive classes) jsou na ceste... JEP 401
To je zajímavé, je fajn, že se něco děje po tom, co vallhala nedopadla... Nicméně v tomhle případě by nám to nepomohlo, protože jestli to dobře chápu, ty typy nebudou moct být generické...

Stran: [1] 2 3 ... 5