Hlavní navigace

Názory k článku
Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

blizz
blizz (neregistrovaný) ---.95-102-169.t-com.sk
19. 6. 2012 3:07 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

vdaka za clanok konecne nieco zaujimave na roote

Honza Marek aura:43
19. 6. 2012 11:06 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Připojuji se. Výborný článek!

zimiston
zimiston (neregistrovaný) 193.86.109.---
19. 6. 2012 9:10 Nový

ampersand

celé vlákno

Nepletete si ampersand s apostrofem?

comodoro
comodoro (neregistrovaný) ---.cust.termsnet.cz
19. 6. 2012 14:49 Nový

Re: ampersand

celé vlákno

Ano, taky jsem si toho všiml, je to tam nejméně třikrát.

Pavel Tišnovský aura:98
19. 6. 2012 16:06 Nový

Re: ampersand

celé vlákno

ah omlouvam se, chyba mezi zidli a klavesnici zpusobena neexistenci klimatizace doma :-)

Necham to opravit, v kazdem pripade zdrojaky jsou dobre - je to ostatne copy & paste z konzole s REPLem...

talpa
talpa (neregistrovaný) ---.panoch.net
19. 6. 2012 10:40 Nový

prejmenovat root.cz na bfu.cz

moje rec, root by se mel prejmenovat na BFU, protoze uroven clanku jde rapidne dolu... tohle je svetla vyjimka

blizz
blizz (neregistrovaný) ---.178-40-33.t-com.sk
19. 6. 2012 11:34 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

"infixové operátory by nebylo možné předávat jako parametry do jiných funkcí atd"

preco nie? btw su jazyky v ktorych je mozna aj infixova aj prefixova notacia, napriklad v F#

(+) 1 1 //prefixový zápis
1 + 1 //infixový zápis

a tiez sa dajú predávat ako parameter

[1;2;3] |> List.reduce (+) //spocita vsetky polozky zoznamu

pretoze kazdy operator je funkcia (tak ako v Clojure) takze si mozem trebars aj nadefinovat novy operator "+" - ktory bude odcitat :P

let (+) a b = a - b
1 + 1 // 0

F# a clojure su velmi podobne jazyky akurat F# ma omnoho volnejsiu syntax (vacsinu zatvoriek si dokaze doplnit compiler na zaklade odsadzovania) na druhej strane Clojure ma vyhodu ze je dynamicky z coho vyplyva kopec dalsich vyhod.

atarist
atarist (neregistrovaný) ---.redhat.com
19. 6. 2012 14:01 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

A to jsou ty operatory potom jenom binarni nebo n-arni jako v Lispu, pardon v Clojure?

Radek Miček
Radek Miček (neregistrovaný) ---.net.upcbroadband.cz
19. 6. 2012 14:43 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

V F# jsou pouze unární a binární operátory.

Inkvizitor
Inkvizitor (neregistrovaný) 89.177.48.---
20. 6. 2012 8:21 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Nejlepší by byl n-ární infixový operátor. :-D

Radek Miček
Radek Miček (neregistrovaný) ---.net.upcbroadband.cz
20. 6. 2012 9:19 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Nejlepší by byl n-ární infixový operátor. :-D

Což pro pevné n není neobvyklé:

  • podmínka ? platí : neplatí
  • kontext ⊢ výraz : typ

Podobně můžeme mít binární postfixový operátor pole[index].

Pavel Tišnovský aura:98
20. 6. 2012 11:22 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Nojo, ale to je porad operator s pevnou aritou :-)

Takove + v Clojure ma vlastne libovolnou aritu omezenou temi nechvalne znamymi LISPovskymi zavorkami - bez nejakeho omezovaciho znaku to asi nejde ...

Matěj Konečný
Matěj Konečný (neregistrovaný) ---.190.broadband5.iol.cz
19. 6. 2012 22:06 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Že jsou F# a Clojure velmi podobné, to je dost odvážné tvrzení, až na to, že jsou to funkcionální jazyky, mají dost jinou filozofii (alespoň co o F# vím, kdyžtak mě opravte). F# je silně inspirovaný Haskellem.

Radek Miček
Radek Miček (neregistrovaný) ---.net.upcbroadband.cz
19. 6. 2012 22:16 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

F# je spíš inspirovaný OCamlem.

peci1
peci1 (neregistrovaný) 2001:718:1e03:----:----:----:----:----
19. 6. 2012 13:05 Nový

Iracionalni cisla

celé vlákno

Mam otazku k poslednimu prikladu na zlomky. Vyraz, ktery je tam uvedeny, sestava jen z nasobeni a deleni, tj. jeho vysledek vzdy musi byt racionalni!

Je snad to, ze Clojure nevypise zlomek, zpusobeno pouzitim literalu 0.3 misto 3/10?

Tohle by chtelo v clanku vic ujasnit.

atarist
atarist (neregistrovaný) ---.redhat.com
19. 6. 2012 14:00 Nový

Re: Iracionalni cisla

celé vlákno

No jestli se Clojure chova stejne jako Common Lisp, tak se tim 0.3 "prepne" datovy typ na real. Automaticky prevod 0.3 na 3/10 by asi nebylo to, co chtel uzivatel. Ale nevim, mozna to ma Clojure jinak nez CL.

xvzf
xvzf (neregistrovaný) ---.anonymouse.org
20. 6. 2012 10:13 Nový

Re: Iracionalni cisla

celé vlákno

hej, je to tak :)

Pavel Tišnovský aura:98
19. 6. 2012 16:10 Nový

FYI: Clojure ve Fedore

Martin
Martin (neregistrovaný) ---.kolej.mff.cuni.cz
19. 6. 2012 17:07 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

Clojure se mi hrozně líbí, ale roky a roky práce investované do Common Lispu, jeho kompilátorů, nástrojů a featur bude dohánět jen stěží...

Rozsáhlý Java ekosystém, vývojáři znalí největších předností (a nedostatků) Common Lispu a toho, jaké klade moderní software požadavky na použité nástroje, to všechno hraje Clojure neskutečně do karet. Ale pokud jde o vyspělost a "ověřenost v bitvách", tak tam má Common Lisp pořád ještě navrch a proto Clojure sleduju sice se zájmem, ale zatím jenom z povzdálí. :-)

YF
YF (neregistrovaný) ---.87.broadband9.iol.cz
19. 6. 2012 23:47 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

... ty uz to nehul ...

Pavel Tišnovský aura:98
20. 6. 2012 11:25 Nový

Re: Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

celé vlákno

On prave ten Java ekosystem do znacne miry nahrazuje praci, kterou museli lidi vlozit do vyvoje CL. Osobne si myslim, ze tudy povede i cesta dalsich jazyku - namisto nad HW (+ nejake vrstvicce ala libc/glibc...) budou postaveny na VM (idealne JVM, treba i Parrot VM jestli se konecne prosadi), takze se nebude muset resit optimalizujici prekladac, GC, knihovny pro GUI a ja nevim co jeste budou VM+RE nabizet.

jinak nic proti CL, to je proste poradny tezkotonazni stroj, pekne se s nim da vyhrat (makra, CLOS..,)

zaSkolak
zaSkolak (neregistrovaný) ---.197.broadband6.iol.cz
19. 6. 2012 23:02 Nový

Skolicky

Ted jsem si vzpomnel, jak jsem v mladi cetl Skolicky

Miroslav Prýmek aura:58
24. 6. 2012 17:23 Nový

Bezvadný!

celé vlákno

Opět bezvadná série. Dobrá práce, Pavle, díky!

Jenom drobný poznámky (většinou překlepy):

"podpora pro datového typu"

Není pro "form" v češtině zaužívaný pojem "formule"? Jako "forma" (ani "formulář" ;) bych to nepřekládal.

Ampersand -> apostrof, to už tady zaznělo
duplikátní -> duplicitní

Není zbytečný psát pořád dokola Closure, Lisp atd. italikou? Při čtení to trochu ruší běh odstavce...

Některý věci se možná zbytečně opakují (už zazněly v předchozím dílu).

> Pomocí běžných funkcí by nebylo možné tuto funkcionalitu splnit, protože by se kód (předaný jako parametr – jinou možnost v Clojure ostatně prakticky nemáme) vykonal ještě před zavoláním „podmínkové“ funkce.

Jde to udělat i pomocí lambdy, ne? Speciální "if-funkce" imho nezbytně nutná není.


Ale to jsou jenom drobný výhrady, jinak fakt super práce a ještě jednou za ni dík.

atarist
atarist (neregistrovaný) ---.tmcz.cz
25. 6. 2012 9:34 Nový

Re: Bezvadný!

celé vlákno

Jak by se dala specialni forma (formule?) "if" vytvorit pomoci lambdy? Me to dost zajima, protoze jsem premyslel o tom, jestli by slo udelat lisp-like jazyk bez spec. forem. Neco podobneho ma TCL, ale tam je to jaksi vsechno naopak - cely seznam se automaticky quotuje, takze se musi spustit explicitne. Tam asi spec. formy nepotrebuji, kdyz je to interne vsechno retezec, ale LISP/Clojure?

Miroslav Prýmek aura:58
25. 6. 2012 12:08 Nový

Re: Bezvadný!

celé vlákno

Imho by to slo minimalne tak, ze by ten if byla specialni zabudovana funkce (takze minimalne syntakticky by to nic specialniho nebylo):

if (podminka, lambda x,y: neco_pokud_ano(x,y), lambda a,b: neco_jinyho_po­kud_ne(a,b))

Kdyby to nemela byt ani zabudovana funkce, tak by se to nejspis dalo zrealizovat za podminky lineho vyhodnocovani: (podminka) and (lambda x,y: neco_pokud_ano(x,y))

Syntakticky je to samozrejme nepohodlny, ale jde to.

Pavel Tišnovský aura:98
26. 6. 2012 8:45 Nový

Re: Bezvadný!

celé vlákno

Diky za pripominky, italiku jsem v dalsi casti omezil (pokud jsem to nekde nezapomel, tak je u kazdeho terminu pouzita jen u jeho prvniho vyskytu). Ampersand uz by se taky nemel vyskytovat - za to se stydim, ale zase psat v podkrovnim byte s 33 C, to uz opravdu mozek vynechava :-)

*if* jako specialni forma (formule?) nutny neni, slo by to resit pomoci makra a specialnich forem *and* a *or* - myslenka v clanku byla takova, ze podporu specialnich forem v LISPovskych jazycich potrebujeme, protoze se automaticky vyhodnocuji parametry, coz ne vzdy chceme (krome if je prikladem i makro while pro smycku, def/defun/defi­ne/let atd.)

Přezdívka
Přezdívka (neregistrovaný) 193.67.103.---
3. 7. 2012 15:14 Nový

"Prvky v množině nesmí být duplikátní!"

tak nejak mi unika chovanie sa vstupu:

user=> #{1 '1}
#{1}

Nemalo by to taktiez vyhodit vynimku?, nakolko:
(= 1 '1)
true

František
František (neregistrovaný) ---.net.upcbroadband.cz
28. 7. 2012 14:52 Nový

Konstruktor seznamu

Děkuji za článek :-)

Jenom poznámka - část 3 - pro konstruktor Seznamu se v Clojure používá (list prvky)

=> (doc list)
- - - - - - - - - - - - - -
clojure.core/list
([& items])
Creates a new list containing the items.

Zasílat nově přidané příspěvky e-mailem