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 - Mirek Prýmek

Stran: 1 ... 93 94 [95] 96 97 ... 618
1411
Vývoj / Re:Co si myslíte o OOP?
« kdy: 20. 01. 2019, 12:32:18 »
v čem nemá pravdu?
Všechno jsou to takový víc nebo míň zavádějící polopravdy, u kterých (alespoň mně) vlastně není vůbec jasný, co chtěl Kadet sdělit, kromě toho, že použil správný klíčový slova. Moc nemá smysl to kdovíjak rozebírat, protože zas jenom skončíme u nekonečnýho hádání se o slova a význam vět, což mě nebaví.

1412
Vývoj / Re:Co si myslíte o OOP?
« kdy: 20. 01. 2019, 12:27:34 »
to nejsou makra. V Ruby jsou možná makra jen pomocí third party knihoven, ale nikdo je nepoužívá. Matsumoto se vyjádřil jasně, že makra v jazyku typu Ruby nejsou potřeba.
Ok, je to možný, že to nejsou makra v tom smyslu, jak jsou implementovaný v Lispu nebo Elixiru. Ruby neznám tolik, abych to uměl pořádně posoudit. Každopádně se tomu makra říká [1] a používá se to k zavádění nové syntaxe, DSLek apod., což je typickej use case pro makra. A ten bordel, co tím Rubyisti vytvořili, je taky typickej pro nevhodný použití maker.

Pokud jsem se v tomhle nechal ošálit tím, že lidi používají zavádějící označení, a symptomatikou používání ne-maker v Ruby, tak se omlouvám a dík za korekci.

[1] https://pragmaticstudio.com/tutorials/ruby-macros


1413
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 20:47:15 »
Osobně se domnívám, že největší motivace jsou takové ty short-circuit operátory, nebo podobné serepetičky. Páč jinak mě nenapadá na co by nutně muselo být makro potřeba. Všechno se dá zapsat funkcí :-)
Občas se s tím dají udělat docela dobrý kravinky pro optimalizaci.

Např. kdysi (nevím jestli ještě dneska) byl v Elixiru nějakej modul pro zpracování unicode napsanej tak, že se online (fakt ve chvíli překladu std. knihovny) stáhla aktuální specifikace z nějakých stránek unicode.org nebo co - a přímo z té specifikace se makrem vygeneroval kód. Taková blbůstka :)

1414
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 20:15:25 »
Jinymi slovy, nejaka funkce, ktera transformuje reprezentaci programu predtim nez se prevese na AST nebo na target. Zkratka nejaky predchroupani at uz jakyhokoliv typu.
No ono to právě není jedno, jakýho typu. Buď pracuju s textem, aniž bych znal jeho význam, nebo pracuju s AST. To je úplně něco jinýho a má to výrazně jiné možnosti.

Elixir ma myslim prave jednoduchou a homoikonickou reprezentaci AST.
No asi je to otázka, čemu chceš říkat "jednoduchá". Každopádně kdybys měl napsat AST tak, aby ti vygenerovalo nějaký kód, tak bys z toho moc nadšenej nebyl, je to trochu opruz. Jak jsem ale řekl, v drtivé většině případů to nepotřebuješ dělat.

Vsemozny konstrukce jako classy jsou implementovany prave pres manipulaci AST, pokud si vzpominam.
Elixir žádné classy nemá a makra se nepoužívají zas tak často (autor jazyka správně tvrdí, že zlaté pravidlo je "dokud to jde udělat funkcí, udělejte to funkcí"). Takže to si spíš asi s něčím pleteš.

Pokud do quotace muzes vlozit parametr, pak se podle me jedna o tzv. quasiquotaci.

abcd - text
"abcd" - quotovany text, neboli string
f"abcd {n}" - quasiquotovany string, neboli string interpolation
Tohle vůbec nechápu. S interpolací to, o čem jsem mluvil, nemá nic společnýho.

quote je taková trochu speciální funkce, která:
1. se spouští při překladu
2. vložíš do ní normální blok kódu a ona ti vrátí příslušný AST
3. tj. když do toho kódu vpašuješ parametr, quote ti ho vpašuje do toho AST, aniž bys AST musel "ručně" upravovat (provádět operace přímo nad daty AST)

Kód: [Vybrat]
$ iex
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help)

iex(1)> quote do if f(1) do 1 else 2 end end
{:if, [context: Elixir, import: Kernel], [{:f, [], [1]}, [do: 1, else: 2]]}

iex(2)> f(1)
** (CompileError) iex:2: undefined function f/1

- na tomhle vidíš:

1. quote skutečně "cituje" svůj parametr (převádí ho na AST) - používám tam fci f/1, která není definovaná a ničemu to nevadí, protože se v tuhle chvíli nevolá

2. to elixirovské AST je fakt celkem komplikované (a tohle je ještě jednoduchý příklad, mohl bych ukázat složitější), není to jako v Lispu

1415
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 17:44:06 »
ale zároveň se mi zkontroluje při překladu, že tam mám parametrů přesný počet, že implementují potřebný trait atd. Jelikož pozdní vazba je tak super, šlo by v OOP minimálně počítat ty parametry, počet by měl sedět i přes existenci pozdní vazby.
Ani na jedno z toho nepotřebuješ makra.

1416
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 14:01:37 »
Makro je funkce mapujici na AST.
To je jenom jeden význam slova "makro". Makrům v C taky říkáme "makra" a s AST nepracují.

Cim bliz je reprezentace v textu podobna reprezentaci v ast, tim vypada makro citelneji.
To není nutně pravda. Např. v Elixiru je AST poměrně komplikované, ale moc to nevadí, protože napřímo s ním skoro nikdy nepracuješ. Používáš totiž quote (čili normální, bežný kód) a jenom tam občas třeba vpašuješ nějaký parametr nebo tak něco.

1417
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 12:13:07 »
Chlapi (a roby), mám zcela nový podnět do diskuse. Když odmyslím Lisp s jeho objektovou nadstavbou, existuje v (skutečném) OOP světě něco jako makra? Pokud ano, jak moc se používají a pokud ne, tak proč ne?
Já bych řekl, že principielně jsou to ortogonální koncepty. Makra slouží k automatickému generování kódu z dat - tj. jsou někde na úrovni "textu programu" (v případě hloupých C maker doslovně, v případě plnotučných na úrovni AST). OOP je o tom, jak modelovat problém, jak program strukturovat. Takže je to spíš o nějakou tu úroveň výš.

Čistě prakticky je ale pravda, že v dobrém OOP jazyce makra moc nevyužiješ, protože máš prostě jiné prostředky pro dosažení podobných cílů. IMHO makra nejvíc využiješ ve statickém, kompilovaném jazyce, který se hodně motá kolem funkcí.

P.S. a teď je přesně čas na další Go rant: "go generate"? Ve 21. století? To si snad děláte pr.del, ne!?!

1418
Vývoj / Re:Co si myslíte o OOP?
« kdy: 19. 01. 2019, 12:04:22 »
V dynamických jazycích jako python a ruby nejsou makra moc potřeba.
V Ruby se makra (a DSLka) používají až tak extenzivně, že to dělá kód totálně nečitelný. Proto Ruby nemám rád - většina Ruby kódu, co jsem viděl, na mě působila jako že hlavní účel kódu je co největší onanie a ne srozumitelnost a čitelnost.

V Pythonu makra nejsou a proto tam taky DSLka prakticky dělat nejde. Jako skoro u všeho, python má "poor man's" variantu, která je pro některé use casy jakžtakž ucházející náhradou - dekorátory.

1419
Vývoj / Re:Co si myslíte o OOP?
« kdy: 18. 01. 2019, 12:37:42 »
Doprčic, teď jsem dal omylem edit místo citace.

V tom původním příspěvku bylo něco jako:

seznam = funkce a naopak. Jestli to je pravda, tak je to isomorfismus, jinak receno prejmenovani.
1. obecně není už proto, že funkčních hodnot může být nespočetně mnoho, zatímco položek listu je vždycky jenom spočetně.

2. a i kdyby to byla pravda (v reálném IT máme jenom spočetné množiny), tak občas máme nějaké koncepty, které jsou (třeba za nějakých omezujících podmínek) vzájemně převoditelné a i tak se hodí je rozlišovat. Např. gramatika a příslušný automat jsou dva různé pohledy na tutéž věc a přitom jsou to dva různé koncepty, které je dobré rozlišovat. Gramatika není automat. Gramatika je gramatika.

Kontinuaci můžeš implementovat pomocí logu (a naopak), ale jsou to jiné koncepty.

1420
Vývoj / Re:Co si myslíte o OOP?
« kdy: 18. 01. 2019, 12:24:55 »
Kontinuaci můžeš implementovat pomocí logu (a naopak), ale jsou to jiné koncepty.
BTW, dobře je to vidět na tom tvrzení "kontinuace je monáda". To je pravda (za nějakých podmínek).

Tvrzení "log je monáda" je dost zhovadilost.

1421
Vývoj / Re:Co si myslíte o OOP?
« kdy: 17. 01. 2019, 20:57:12 »
Dik za zpetnou vazbu. Event log je termin pouzivanej v event sourcingu. Event log = posloupnost zprav reprezentujicich zmenu nejakyho stavu.

Tech stejnych zprav jako 'volani metody' ve smalltalku, jen jsou ty zpravy nekam logovany a ne zapomenuty.
Ja vim,  co je log.  Kafka,  Vue.js jsou muj denni chleba.  Zrovna nedavno jsem dopsal stream processing engine (Kafka/Go)  :)

Spis jde o to,  ze log je log a kontinuace je kontinuace.  I kdyz to spolu souvisi, je to neco jinyho.

Je to jako bys rekl,  ze seznam je funkce :) Jo,  funkce se da popsat seznamem a naopak, ale i tak je to neco jinyho :)

1422
Vývoj / Re:Co si myslíte o OOP?
« kdy: 17. 01. 2019, 19:11:27 »
Jo, kontinuace je monáda  :D
To sice jo, ale asi to nikomu úplně neobjasní, co to kontinuace je, páč monáda je beztak při troše vůle skoro všechno ;)

BTW, Balde*, recence na tu The Little Typer mě oslovily, tak jsem neodolal a koupil si to. Formát je teda silně neortodoxní, snad se to bude dobře číst :) Dík za tip!

* a vůbec, neměň si furt ty nicky - a navíc tak blbě, kdo má pořád přemýšlet, jak od těch tvých úletů vytvořit vokativ!

[...] je suffix takovyho logu skutecne kontinuace. [...] je kontinuace rovna tomu zasobniku.
Sorry, ale obraty "log je kontinuace" a "kontinuace je rovna zásobníku" jsou mi teda úplně nesrozumitelný :)

(Ne že bys to musel vysvětlovat ausgerechnet mně, ale docela pochybuju, žes tím příspěvkem někomu něco srozumitelnýho sdělil :) To jenom tak zpětná vazba pro tebe )

1423
Vývoj / Re:Co si myslíte o OOP?
« kdy: 17. 01. 2019, 11:19:40 »
Nekdo tomu rika event sourcing, nekdo funkcionalni programovani, nekdo programovani s explicitnim casem.

Nejmenuje se to continuation? https://en.wikipedia.org/wiki/Continuation
Ne,  kontinuace je neco hodne jinyho.

1424
Vývoj / Re:Co si myslíte o OOP?
« kdy: 17. 01. 2019, 07:33:34 »
A zvazuji, co za tim asi je, ze tebe to tak zere :-).
Mě to vůbec nežere, já v Pythonu dělám taky. Je to fajn jazyk, některé momenty má slabší a nesmí se to s ním moc přehánět, ale dělá se mi v něm dobře.

1425
Vývoj / Re:Co si myslíte o OOP?
« kdy: 16. 01. 2019, 22:07:17 »
ve dvojce jsem používal gevent a radost to byla.
Radost je slabý slovo. Když si člověk vzpomene na ten debugging! Saturnálie!

Stran: 1 ... 93 94 [95] 96 97 ... 618