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 - Idris

Stran: 1 ... 144 145 [146] 147 148 ... 153
2176
Vývoj / Re:Ideálny programovací jazyk
« kdy: 10. 05. 2019, 08:43:55 »
Jenom tak na okraj: v Go se slicing dělá i s pointery, je to jedna z věcí, které mě na Go fakt štvou. Při volání se prostě předá ukazatel opravdu jenom na ten typ, ktery v hlavičce je (tj. jenom embedded struct Base). Je to sice konzistentnější při jednom použití (volání odkazem i hodnotou se chová stejně), ale zase je nekonzistentní, že když tu samou funkci volám přímo na structu a nebo až uvnitř funkce, kam jsem struct předal, výsledek je jiný (tím voláním funkce se "vyřízne" jenom embedded struct):

https://play.golang.org/p/MCmwySyPQpl
To je docela konzistentní chování. Navíc ten kód není zrovna idiomatický. Jedním slovem: non-issue.

2177
Vývoj / Re:Ideálny programovací jazyk
« kdy: 09. 05. 2019, 19:08:44 »
Ruční volání destruktorů nebo třeba zavírání souborů by mě už nebavilo. Proč bych to měl hlídat?

V cpp zadne rucni volani destruktoru neni potreba. Akorat lze presne zjistit kouknutim do kodu, kdy se tak stane.

Takže se zánikem posledního deskriptoru na objekt se automaticky zavolá jeho destruktor?
Tohle je definice destruktoru, nedeterministický úklid dělá finalizér. Některé jazyky mají obojí.

2178
Vývoj / Re:Jak funguje Call/CC?
« kdy: 09. 05. 2019, 13:58:29 »
Včera som som si to testoval, prečítal som o tom pár článkov a skúšal som si príklady. A potom som si týmto spôsobom sám vyskúšal naimplementovať funkcie map a filter aby sa mi to trochu dostalo do krvi:

https://pastebin.com/XWvc8ZgC

Teórii stále úplne na 100% nechápem (je to náročné na predstavivosť, kúpim si dáku knihu o funkcionálnom programovaní), ale už som viac v obraze... viem ako sa to zapisuje a tiež som pochopil aké to prináša výhody. A načo to využijem

Napríklad skladanie stromu pri rekurzívnom prechádzaní listu to značne uľahčuje.

Takže teraz už tomu rozumiem natoľko že to použil v jednom parseri s kontinuáciami pri rekurzii sa jedho kód veľmi zjednodušil.
Fakt bych začal s kontinuacemi bez toho “current”. Je to podrobně vysvětlené v textech o Haskellu. Kontinuace je prostě funkce typu (A->R)->R, která “vrací” hodnotu zavoláním funkce. Toto je klasická funkcionální definice (pozor, gill píše blbosti). Nejjednodušší případ je převod konstanty na kontinuaci: λx.λf.f(x) - této operaci, která zapouzdří hodnotu do kontinuace, se někdy říká unit. Protože kontinuace je funkce, zapouzdřená hodnota se z ní získá funkční aplikací, kdy se jí předá funkce typu A->R. Výhodou kontinuací je, že se dají skládat, dvě obecně různé kontinuace jsou sice funkce, ale s nekompatibilními typy, takže nejde přímo zavolat jedna na výsledek druhé, ale jdou spojit do jedné funkce tak, aby taky byla kontinuací.

Call/cc je jen zvláštní případ, kdy ona aplikace na “návratovou” hodnotu způsobí návrat výpočtu za volání call/cc, klidně i vícekrát, čímž se dosahuje nedeterminismu. Například operátor amb se takto často vnitřně implementuje.

2179
Vývoj / Re:Ideálny programovací jazyk
« kdy: 09. 05. 2019, 01:18:39 »
Predstavte si že vytvárate nový programovací jazyk presne podľa vašich predstáv.
Jde o to, pro koho. Pro nepříliš zdatné programátory, tedy přes 95% IT audience? Ti mají Javu a PHP. Jinak mají smysl jen úzce specializované jazyky, v CERNu si třeba vytvořili speciální jazyk pro HPC. To ale není téma pro toto fórum.
Pokladat Javu za jazyk pro neprilis zdatne programatory
To byl Goslingův deklarovaný cíl. Až dospěješ, tak ti to dojde.

2180
Vývoj / Re:Ideálny programovací jazyk
« kdy: 09. 05. 2019, 01:16:00 »
Ja bych osobn e byl pro aby na stacku byly jen reference, tj. odkazy na adresy. Objekty, pole, cokoliv je vic nez typ se systemovou velikosti adresy (char, int32, int64) by uz musely byt na heapu
Zrovna Go dává na zásobník kde co, a jak šlape - překladač sám pozná, co musí být na haldě, díky čemuž toho GC nemá typicky moc na práci. Zrovna tohle třeba Javě bolestně chybí.

2181
Vývoj / Re:Jak funguje Call/CC?
« kdy: 08. 05. 2019, 14:25:39 »
ako funguje Call/CC? (Call with Current Continuation)
Začal bych s tím, co je kontinuace a jak se řetězí. CC je pak jen speciální případ. Kontinuace je jednoduše funkce (například λ-výraz) vyššího řádu, která dostane funkci a předá jí zapouzdřenou hodnotu.

kontinuace neni funkce. Kontinuace je stav programu. Mozna jsi myslel call/cc, ale i potom je tve vysvetleni nic nerikajici. Nenapsal jsi, co ta funkce dela.
Přečti si definici, třeba na Wikipedii.

a continuation is an abstract representation of the control state of a computer program. A continuation reifies the program control state, i.e. the continuation is a data structure that represents the computational process at a given point in the process's execution

https://en.wikipedia.org/wiki/Continuation
To je implementace, ne definice. Ale třeba to tazateli taky pomůže.

2182
Vývoj / Re:Ideálny programovací jazyk
« kdy: 08. 05. 2019, 14:24:11 »
Predstavte si že vytvárate nový programovací jazyk presne podľa vašich predstáv.
Jde o to, pro koho. Pro nepříliš zdatné programátory, tedy přes 95% IT audience? Ti mají Javu a PHP. Jinak mají smysl jen úzce specializované jazyky, v CERNu si třeba vytvořili speciální jazyk pro HPC. To ale není téma pro toto fórum.

2183
Vývoj / Re:Jak funguje Call/CC?
« kdy: 08. 05. 2019, 13:40:41 »
ako funguje Call/CC? (Call with Current Continuation)
Začal bych s tím, co je kontinuace a jak se řetězí. CC je pak jen speciální případ. Kontinuace je jednoduše funkce (například λ-výraz) vyššího řádu, která dostane funkci a předá jí zapouzdřenou hodnotu.

kontinuace neni funkce. Kontinuace je stav programu. Mozna jsi myslel call/cc, ale i potom je tve vysvetleni nic nerikajici. Nenapsal jsi, co ta funkce dela.
Přečti si definici, třeba na Wikipedii.

2184
Vývoj / Re:Jak funguje Call/CC?
« kdy: 08. 05. 2019, 01:34:09 »
ako funguje Call/CC? (Call with Current Continuation)
Začal bych s tím, co je kontinuace a jak se řetězí. CC je pak jen speciální případ. Kontinuace je jednoduše funkce (například λ-výraz) vyššího řádu, která dostane funkci a předá jí zapouzdřenou hodnotu.

2185
Vývoj / Re:Ideálny programovací jazyk
« kdy: 07. 05. 2019, 00:33:42 »
Cim idealnejsi jazyk je tim vice se podoba lispu.

Chtel bych na nizke urovni videt kod pro kernel v lispu :-)
Kacirsky dotaz: jsou funkcionalni jazyky opravdu efektivnejsi? Mi se Lisp a dalsi libi, ale prakticky jsem je nevyuzil.
Japonci psali kernely v Prologu, tak v Lispu by to šlo taky.

2186
Vývoj / Re:Ideálny programovací jazyk
« kdy: 07. 05. 2019, 00:32:47 »
Zkousel jsm si to predstavit a zjistil jsem, ze na programovaci jazyk tak akorat z vysoka kaslu a kalim, dulezita je knihovna co je pod tim, co vsechno v ni je a jak dobre se to pouziva. Za me vede Java a C#, kde Java je pro ty chytrejsi, takze Java 8) Akorat co me sejre je, ze v Jave nejsou moc neblokujici verze metod, ale to je taky otazka jestli to je problem, protoze treba POSIX sockety jsou blokujici a vlastne nevim jak se na urovni psani C kodu da na Linuxu udelat neblokujici Socket, jestli to teda vubec jde. Protoze treba design Node.js  je neblokujici, ale k cemu ti to je, kdyz na urovni operacniho systemu to blokujici je. To ze ti Node.js nezablokuje thred kdyz posilas request neznamena, ze se pod tim nevyrobi dalsi thread. A v tom pripade toto umi i Java. Jaky design v tomhle ma .NET a jestli Windows dokazi udelat neblokujici Socket, to nevim.

nodejs opravdu nevytvari vlakno pro kazdou cekajici operaci.

1 POSIX Socket = 1 vyzrany thread
100 paralelnich bezicich requestu pres POSIX Socket = 100 vyzrany threadu
Pres to nejede vlak

To se tyka OS, je uplne jedno co dela Node.js.

Vyjimka by mohlo byt akorat to, ze uz existuje nejaky neblokujici Socket na urovni OS.
Každý OS na to má svůj mechanismus, například BSD má kqueue a Windows IOCP. Dělat pro milion requestů milion vláken by asi nebyl dobrý nápad.

2187
O serveru Root.cz / Re:Autor David Ježek
« kdy: 25. 03. 2019, 13:31:27 »
ze Jezek pise dobre
Píše normálně a stylem, který je pro Root osvěžující. Že ho puberťáci kritizují mu může být ze srdce jedno, magazín o IT není o sbíraní lajků od beďarů.

2188
Vývoj / Re:Ako komplikovane programujete?
« kdy: 24. 03. 2019, 15:15:08 »
Podle me Java proste bohuzel uz pomalu zacina patrit do minuleho stoleti. Lidi si zacinaji uvedomovat, ze takove to porekadlo ze na rychlosti nezalezi, mas na to koupit silnejsi stroj, proste neplati. Zalezi na tom a zalezi na tom docela dost.
Každý, kdo má mozek, tohle viděl už přinejmenším od roku 2010.

2189
Vývoj / Re:Ako komplikovane programujete?
« kdy: 24. 03. 2019, 15:14:11 »
pouzivam Mac a fascinujou me velikosti aplikaci v Appstoru, napr. jsem si stahoval graficky peknou RSS ctecku a mela jenom nejake 3MB! A tohle je uplne bezne, ze ty Apple devkit aplikace jsou takove male.
Většina kódu je v libSystem, Foundation a AppKitu, což jsou dynamické knihovny.

2190
Pokud bych se rozhodl pro přeinstalaci na Android, nejsem si jistý, zda-li bych mobil nenávratně nepoškodil, jelikož není cesty zpět. Jste spokojeni s Androidem? Díky za každý tip ;).

Ako uz tu pisali, ono to moze po preinstalovani na android nejak fungovat, ale nebude to na 100%.(Pretoze kazdy hw ma svoje specifika a vyrobci si os hackuju)

Ale v pripade noveho telefonu radim prejst skor na ios, nez na android. Telefony s ios su sice drahsie, a je pre ne menej aplikacii. Ale je na behu poznat, ze system je odladenejsi a len tak si do store hocico nepustia. Taktiez je istota, ze apple nezareze podporu daneho modelu po troch rokoch. Vendor lock-in nehrozi, ako vacsinou nim strasia, ide pouzivat sluzby tretich stran. Napriklad ja hudbu pouzivam spotify, ako doposial a na mail gmail.

Ale aby som iphone len neospeval, ma to svoje specifika, na ktore si casom zvyknete - menej seamless dizajn, notch. (klamem na notch si nezvyknete nikdy)
Někdo má telefon 3 roky? Co tak vidím kolem sebe, tak se obměňují i častěji než jednou ročně.

Stran: 1 ... 144 145 [146] 147 148 ... 153