Hlavní navigace

Názory k článku Programovací jazyk Julia: další stříbrná kulka v IT?

Článek je starý, nové názory již nelze přidávat.

  • 26. 5. 2016 0:29

    K D (neregistrovaný) ---.freepoint.cz

    Super, už se těším na další pokračování.
    Měl bych jeden dotaz:
    Dá se z toho nakonec nějak vybourat kód kompatibilní s Matlab?
    Máte někdo tucha, jak moc ambiciózně to sviští do budoucna oproti Octave?

    Díky

  • 26. 5. 2016 10:51

    robotron (neregistrovaný) 80.250.30.---

    Julii pouzivam docela casto. Momentalne jsou tam v hroznym srabu grafy, jinak to jde. S matlabem to kompatibilni nijak bejt nema a nechce (narozdil od SciLabu a Octave). Ale da se volat MATLAB externe, vymena datovejch struktur funguje docela hezky. Jestli to nekde neleakuje, to jsem neoveroval, ale asi je to cisty, protoze mi to nikdy neslitlo a to jsem pres to cpal nehorazny mnozstvi dat.

  • 26. 5. 2016 11:09

    K D (neregistrovaný) ---.freepoint.cz

    Díky. Nějakou možnost jak volat Matlab scripty jsem na šel na GitHubu, ale měl jsem na mysli spíš něco jako nějaký transpiler do Matlabu, protože používám Simulink a bylo by asi dost na prd dělat půlku v Matlabu a druhou v Juliji, ne tak to ještě takhle spouštět ...

  • 26. 5. 2016 11:14

    robotron (neregistrovaný) 80.250.30.---

    Simulink je skutecne vybornej nastroj a rozumnou nahradu neznam (scicos nebo jak se jmenoval jsem videl v dobach, kdy za nahradu nemohl bejt povazovan i jen pro hnusnost GUI, a to jsem v tomhle hodne tolerantni; mozna mel streva shodny nebo i lepsi nez Simulink, ale neslo se mi pres to prenest). Transpiler je podle me scifi.

    Naproti tomu lze volat Julii z C a C (MATLAB) z Julie.

    Kdybych mel propojit Julii se Simulinkem, asi bych si napsal v C S-funkci a z ni volal Julii. Podle me by to melo i smysl. Simulink by se postaral o vazbu systemu, ovladaci prvky a vizualizaci a Julie by pocitala.

  • 26. 5. 2016 11:19

    K D (neregistrovaný) ---.freepoint.cz

    Jo, to zní rozumně, ale stojí Julie za to? Řekněme že bych počítal max. tak s průměrnými statistickými úlohami, spíše jenom nějaké normalizace dat s využitím i statistických metod, nějaká optimalizace + aplikace algoritmů řízení ?

  • 26. 5. 2016 11:45

    robotron (neregistrovaný) 80.250.30.---

    Taky jsem ridic. Julii zatim nepouzivam na vsechny operace. Podle me za to stoji, jinej nez knihovni kod je brutalne rychlejsi a krome toho je (subj.) mensi mozkozer v tom psat.

    V neposledni rade casto vim, ze budu pracovat s necim jinym nez floatem a chci, aby to probihalo nejak inteligentne. Jakmile uz je krome samotny matiky vazba na treba v mem pripade SQL a ProtoBuf, neni co resit, pohodli a lehkost psani oproti matlab/scilab/oc­tave prevazi.

  • 26. 5. 2016 11:58

    robotron (neregistrovaný) 80.250.30.---

    Jeste neco k aplikacim Julie v teorii rizeni a signalu (z nakejch smutnejch asi dejinnejch duvodu si jedou tyhle dva obory napul na svym LTI pisecku, nevim proc). V Julii je zatim jen zakladni DSP tbx (zato, rekl bych, zapocatej velmi slusne -- napr. objekt filtru zda se mi rozumnejsi, nez neobjektovej pristup v klasickym sig.proc.tbx -- umoznuje napr. pustit FIR/IIR filtr na singal nekonecne delky po castech a to syntakticky prijemne). Dale pak, pokud se neco nezmenilo, chybi i to, co je matlabakum znamo jako "control toolbox" a ve skutecnosti je to takovej obal nad knihovnou SLICOT.

    Mate-li spetku sil, urcite by stalo za to dostat SLICOT do Julie. SLICOT je zajimavej projekt, ve svem puvodu a podstate open-source, ale jelikoz byl zaprodan (i) do MATLABu, jeho opensourcovatost se vselijak taji a existuji open- i neopen forky. K puvodni verzi a repozitarum se dostat lze a zda se, ze v nem stale probiha puvodni matematickej vyvoj, tj. snad se objevuji i novinky nejen na poli implementacnim. Octave nejakou verzi SLICOTu ma. Zajimavy ovsem je, ze ani MATLAB nepouziva ze 100% fci SLICOTu.

    V prvni vlne by bylo bezva, kdyby aspon ten FORTRANskej SLICOT externe volanej v Julii chodil. V nejakem budoucnu by pak asi stalo za to nektery kusy SLICOTu prepsat nativne do Julie, aby chodily ty bigfloaty a tak -- zrovna v teorii rizeni to ma extremne dobrej smysl. (Jedna z mejch motivaci pro Julii byla, ze v bigfloatech sly resit veci se spatne podminenejma systemama, napr. kraceni nul a polu u systemu, kde casovy konstanty mely rozsah nekolika radu -- fakt parada.)

    Sam na to bohuzel nemam cas :-( Ale klidne bych se podilel jako kibic/tester/...

  • 26. 5. 2016 12:32

    K D (neregistrovaný) ---.freepoint.cz

    Aha, tak to zní zajímavě. No síla by i byla, ale toho času není. SLICOT neznám, aspoň o tom nevím, nejvíce to bude záležet na tom, jestli ho budu potřebovat. Mám začínat vetší projekt, chtěl jsem to dělat v Octave a přemýšlím teď nad tou Julií. Zatím jsem ve stadiu, kdy si ještě můžu vybrat . . .

  • 26. 5. 2016 9:12

    K> (neregistrovaný) 212.47.28.---

    Dle clanku Julia ma byt lepsi jazyk nez Matlab/Octave/Num­py/Scipy/R, cokoliv. Jakozto clovek zivici se numerickymi vypocty profesionalne mam spis pocit, ze neni potreba novy jazyk, ale ucelenejsi soustava knihoven. Ostatni programy jsou dobre prave proto, ze umi spocitat ten statisticky test, onen typ prolozeni, generovat nahodna cisla podle tohoto rozdeleni atd. Jsou dobre diky svym rozsahlym knihovnam. Jestli smycku musim napsat jako for...end nebo for{...} ci jakkoliv jinak, tak to je mi celkem ukradene. A jestli se neco pocita 0.01 nebo 0.02 vteriny taky neni pro mne az tak dulezite, protoze ja stejne nedokazu napsat tak optimalizovany program, abych to vyuzil. Teda je pravda ze pri nekterych simulacich uz to citim, ale jestli se neco pocita 2 dny, a s Julii by se to pocitalo o 2 hodiny kratsi dobu, tak to neni duvod.

    Naopak me zarazi, ze pokud autori Julii meli moznost to udelat od zacatku spravne, proc pri preteceni se nenastavi nejaky priznak Overflow, a misto toho se tam nastavi 0 (ono 2^70). To je primo zhovadilost. Octave/Matlab tam hodi Inf, a hned vim ktera bije, ze musim dohledat nejakou chybu, at uz v rovnici nebo v programu.

    Takze vlastne musim rict, ze me tenhle clanek od jazyku Julia docela odradil.

  • 26. 5. 2016 9:49

    bez přezdívky

    Nezatracujte Julii příliš brzy. 2^70 sice vyčíslí jako 0, ale 2.0^10000 vrátí jako Inf. Rozdíl je v tom, že v prvním případě pracuje s celými čísly a pro ně Inf není definováno. Ve druhém případě pracuje s číslem typu Float64 a tam už Inf je definováno v IEEE 754. Pokud si dobře vzpomínám, tak Matlab a Octave provádějí všechny operace v double.

    Julia má mnoho velice přitažlivých vlastností, které se do úvodního článku nevešly: vícenásobný dispatching, provázanost s JIT, snadné externích volání knihoven a poměrně rozsáhlý balík vlastních knihoven. Počkejte si na další díly a třeba změníte názor.

  • 26. 5. 2016 10:57

    gamer (neregistrovaný) 2a02:598:7001:----:----:----:----:----

    No jo, ale když to srovnám s pythonem...

    >>> 2**70
    1180591620717­411303424L

  • 26. 5. 2016 11:21

    gamer (neregistrovaný) 2a02:598:7001:----:----:----:----:----

    No jo, jenže python má virtuálně nekonečný int, nemusím řešit žádné typy...

    >>> 2**700
    5260135901548­373507240989882880128665­550339802823173859498280­903068732154297080822113­666536277588451226982968­856178217713019432250183­803863127814770651880849­955223671128444598191663­757884322717271293251735­781376L

  • 26. 5. 2016 11:49

    robotron (neregistrovaný) 80.250.30.---

    To ma Julca taky, akorat je ji potreba rict, ze ma pracovat s nim. A zaroven je rozhodne dobry, ze ma Julia krome bigintu i vsechny inty konkretnich bitovejch delek. Mozna patrite k skupine lidi, ktera uprednostni, kdyz si jazyk sam urci, v jakym typu se jede, ale me osobne takovy chovani pripada krajne nevyhodny.

  • 26. 5. 2016 11:56

    bez přezdívky

    julia> BigInt(2)^700
    5260135901548­373507240989882880128665­550339802823173859498280­903068732154297080822113­666536277588451226982968­856178217713019432250183­803863127814770651880849­955223671128444598191663­757884322717271293251735­781376

  • 26. 5. 2016 10:36

    Kiwi (neregistrovaný) 194.138.12.---

    Začínal jsem na BASICu, pak Assembler, pak Pascal, pak C, pak C++, dnes mě živí i Java, ale od té doby, co do nás ve třeťáku na VŠ nahustili FORTRAN 77 kvůli numerice, dělám všechno, kde převažuje numerika, ve Fortranu 95 a zatím jsem nenarazil na nic, co by mě motivovalo to změnit. Množství odladěných knihoven - jak matematických, tak fyzikálních, tak technických, rychlost výsledného kódu, přímočarost při psaní programu, podpora polí, rozsáhlá komunita odborníků - to všechno dohromady zatím bezkonkurenční a popravdě mi uniká, proč se neustále někdo snaží to nahrazovat něčím jiným.

    Máš ambice dělat numeriku seriózně? Nauč se Fortran. Konec konců je to jen nářadí, ale na seriózní práci je třeba seriózní nářadí, do něhož lze upnout standardní nástroje, a ne nějaká dětská sada na hraní.

  • 26. 5. 2016 10:57

    robotron (neregistrovaný) 80.250.30.---

    Velikej nesmysl. Delam predevsim DSP a ve Fortranu bych se zblaznil. Samozrejme bych to taky dokazal, ale ty obeti na case a dusevni pohode oproti Julii by nebyly vyvazene nicim.

  • 26. 5. 2016 12:15

    Kiwi (neregistrovaný) 194.138.12.---

    DSP bych snad ani numerikou nenazýval. DSP obnáší obvykle nějakou konvoluci, proveditelnou v Assembleru ve fixed-pointové aritmetice, a to co nejrychleji. Tím to hasne.
    Numerikou mám na mysli simulace, výpočty s PDE, proudění v kotli, obtékání profilů, pružnost-pevnost, jaderně-fyzikální výpočty apod. K tomu jsou zapotřebí specifické knihovny, provádějí se tam poměrně náročné maticové operace, vedle řešení soustav například hledání vlastních čísel, počítání determinantů. Při výpočtech metodou konečných prvků se například výborně uplatňují fortraní schopnosti vysoce optimalizované extenzivní práce s poli. A rychlost kódu je taktéž dosti zásadní, je docela rozdíl, trvá-li výpočet týden nebo měsíc. On ten čas něco stojí.

    Opravdu mi nejsou jasné ty "oběti na čase a duševní pohodě". Možná by stálo za zvážení, zda se nevěnovat něčemu intelektuálně méně náročnému. "Oběti na čase a duševní pohodě" přinášeli především kolegové, kteří si vybírali nějaké své vlastní cesty, aby se pak ukázalo, že se v tom nakonec sami totálně ztratěj, vzdají to a utečou a celé to nakonec musí někdo udělat za ně. Ale tímhle se momentálně neživím, nicméně stejně pochybuji, že by zde došlo k nějaké revoluci.

  • 26. 5. 2016 12:31

    robotron (neregistrovaný) 80.250.30.---

    Ale to jsou mi moudra povyseneho rozumbrady :-) Tak ze sveho pohledu povyseneho rozumbrady pozmanem nasledujici:

    - omezovat numeriku na FEMy mi prijde velmi omezene;

    - pokud nedohlednete v DSP dal, nez ke konvoluci a filtrum zadanejm dvema vektorama koeficientu, pak to jen svedci o tom, ze o DSP nevite temer nic; namatkou, uplatnuju tam sirokou skalu maticovejch operaci vcetne operaci s ridkejma maticema, faktorizaci, atd. (Cholesky, QR, UDU, Sylvester, SVD,...). Opravdu nevim, jak jinak nez numerikou to nazvat. Krome toho zakladni operace vetsiny DSP technik je FFT a to je numerickej podobor sam o sobe;

    - u tech FEMu a fortranska "vysoce optimalizovana extenzivni prace s poli" nejak netusim, jak se lisi od v.o.e.p.s p. v C nebo Julii; podotykam, ze ve Fortranu obcas pisu (velmi vzacne, F9*) a je mi znamo, jak ma ulozena pole v pameti, ale co znamena toto reklamni sdeleni, si bohuzel neumim predstavit;

    - k tem obetem, to jste me pobavil: ja jsem v nejvetsi dusevni pohode, kdyz se prave *mohu* venovat necemu intelektualne narocnejsimu, nez jak (tupe, nezazivne a riskantne) zapsat elegantni myslenku neelegantnim kodem. Radsi tutez napisu o neco hezcim kodem.

    - vlastni cesty v numerice moc nehledam, naopak se snazim pouzit neco, co dali dohromady chytrejsi. Julie jsem parkrat pouzil jako ucelnej nastroj na nektery ulohy, jimiz se zivim a bavim.

    No ale jinak je samozrejme obcas potreba dat si pauzu a misto intelektualni cinnosti si treba pokecat ve foru, v tomto jsem s vami zajedno :-)

  • 26. 5. 2016 13:14

    Kiwi (neregistrovaný) 194.138.12.---

    To klidně přiznám, že nejsem žádný velký expert na DSP. Já tam opravdu dělal jen filtry a transformace a tím to hasne a nikoho jiného jsem taky neviděl, že by tam dělali kdo ví co. Ale dovedu si představit, že třeba u GSM a LTE technologií se mohou uplatnit i další metody, to je pravda. Jenže tam to asi stejně nakonec bude muset být přepsáno do Assembleru v kombinaci se specializovanými HW moduly, ne? Nebo u vás se věnujete nějakému hardcorovému postprocessingu signálů offline?

    A čím ta Julie podle tebe tak válcuje ten Fortran? V jazyku samotném oproti Fortranu žádné killer features nenacházím, zato si dovedu představit problémy při kooperaci s fortraními knihovnami, s rychlostí kódu to asi taky žádná sláva nebude... Takže jednoduchá otázka - proč?

  • 26. 5. 2016 14:55

    robotron (neregistrovaný) 80.250.30.---

    Dekuji za rozumnou odpoved. Nejdriv k te Julii vs. Fortranu. Kooperace s fortrannima knihovnama je zcela v pohode a samozrejme se jich ohromna spousta vyuziva, na tom jsou postaveny i MATLAB/Octave/Sci­Lab. Urcita vyhoda je v FFI. Jazykovou vyhodou oproti Fortranu uz je prave treba to, ze muzu volat map() a apply(), zrovna treba u optimalizacnich problemu se tohle hodi. Sirsi repertoar ciselnejch typu (od bitu po bigfloaty). Velmi prehledny napojeni ruznejch vysokourovnovejch I/O, ja jsem daval jako priklad ProtoBuf a SQL, ale urcite je spousta jinejch zdroju a cilu dat. Za killer-featuru povazuju ten system typu, diky nemuz je mozne: 1. jednu fci znovuvyuzit pro ruzne zpracovavane typy (aniz by je treba autor fce vsechny znal), ale 2. zachovat moznost optimalizujici kompilace.

    (Jinak v modernim Fortranu jsem nedavno psal skutecne jen par malo radku (pouzivani ciziho SW baliku) a nutno rict, ze to nebyl tak odpudivej humus jako driv. Ale druh prace je to porad jinej nez v tech vysokourovnovejsich nastrojich.)

    Ad DSP co delam(e): jednoduse receno od implementace v samotnem HW az po ten (post)processing na CPU. V soucasne dobe dokonce zvazuju, ze jednu vec v Julii necham bezet v realnem case na data blizici se Gb/s prijimana primo z druzice. U DSP (a teorii rizeni) jsou zajimave algoritmy jak behem samotne "filtrace" (tedy pruchodu signaly nejakymi systemy, regulatory a filtry), tak ve fazi "navrhu" (kdy je potreba ten filtr/regulator vytvorit) -- oboji je numerika, protoze ani ten navrh, krome specialnich pripadu, nejde treba resit analyticky. Nebo jde a stejne to vede na optimalizaci treba vahovanejma nejmensima ctvercema.

  • 26. 5. 2016 20:55

    atarist (neregistrovaný) ---.tmcz.cz

    Jen pro zajimavost - o kterou verzi Fortranu se jednalo? Ono se totiz da narazit jeste na knihovny a programky psane ve Fortranu 77, coz ma svoje vyhody (ten jazyk byl skutecne jednoduchy), F95 mi pripadne zbytecne rozkosately (OO atd.)

  • 27. 5. 2016 11:45

    Kiwi (neregistrovaný) 194.138.12.---

    Knihoven ve F77 je obrovské množství, většina. Ale není problém je použít i z F95, kód se dá použít i stylem copy-paste přímo ve zdrojáku, což je veliká výhoda.
    F95 ještě OOP nemá, to se přidalo až ve F2003. Ale pomocí module a type se něco jako OOP dá udělat i ve F90, kdyby bez toho někdo fakt nemohl žít.
    Výhoda F90/95 oproti F77 je v tom, že z Fortranu dělá normální strukturovaný modulární jazyk, který se obejde bez goto, což F77 rozhodně není, odstraňuje pevný formát zdrojáku, odstraňuje 6znakové omezení délky identifikátorů a další nešikovnosti před-ASCII a děrnoštítkového původu, není už třeba čarovat s common bloky, přidává dynamickou alokaci a mnoho užitečných (a přitom rychlých!) operací s poli a jejich částmi (m-tý řádek krát n-tý sloupec, každý n-tý prvek apod.) a rozšíření většiny matematických funkcí i na argument typu pole, což je pro numeriku fakt dost zásadní. Navíc tímto zápisem se spousta cyklů mění na implicitní, což dále zvyšuje přehlednost programu a možnost optimalizace překladačem. Tím, že to nejsou knihovní funkce, má optimalizátor překladače velikou výhodu a dokáže vyprodukovat i solidní paralelní kód, aniž by programátor pro to musel něco udělat. Použitím pure function, elemental subroutine, forall, where/ elsewhe­re, codimension, sync apod. se dá překladači ještě dále pomoci v optimalizaci a program je navíc velmi přehledný.
    Chápu, že F77 dokáže znechutit spoustu lidí, ale F90/95 už je normální, dobře čitelný, bezpečný a pro numeriku výborně uzpůsobený jazyk, jehož je F77 podmnožinou, F2003 dokonce objektový (ale to mi zrovna v tomto případě nechybí a pokud je mi známo, tak stejně většina lidí, kteří dnes tvoří nový kód ve Fortranu, bere za standard F95).
    Chápu tažení proti F77, ale od té doby, co je F90/95, mi nikdo nebyl schopen vysvětlit, co má proti Fortranu. Pokaždé se totiž ukázalo, že ten jazyk dotyčný vlastně vůbec nezná.
    Kdybych měl více času, tak bych třeba dal dokupy nějaký seriál o F95, abych ten jazyk a jeho schopnosti trochu přiblížil širším kruhům. On tu na rootu jakýsi seriál vycházel někdy před 10 lety, ale to bylo opravdu jen naprosté minimum.
    Kdybych já chtěl vytvořit nějaký nový numerický nástroj s REPL, tak bych nevynalézal kolo, ale narazil bych to na moderní Fortran. To je to, co mi chybělo – nevím jak dnes, ale za dob mého doktorandování se k laborování používala Mathematica, Maple a Matlab a pak se to celé přepisovalo do Fortranu.

  • 26. 5. 2016 20:48

    atarist (neregistrovaný) ---.tmcz.cz

    Ja mam prave dojem, ze to diky prekladu pres LLVM muze byt docela rychly. Je fakt, ze ty benchmarky linkovane z clanku jsou takove nijake, chtelo by to vice (mnohem vice) testu. Jinak nic proti Fortranu, Julia ma spis byt nahradou za Octave nebo R, nikoli za Fortran (vsak taky LAPACK tusim bere puvodni).

  • 26. 5. 2016 20:53

    M. Prýmek

    BLAS a LAPACK používají snad všechny jazyky pro výpočty. Nemělo by žádný smysl to reimplementovat. Btw, pořádné tóčo stejně začíná teprve s cuBLASem a clBLASem ;)

  • 27. 5. 2016 23:55

    MMN (neregistrovaný) ---.elisa-mobile.fi

    Z FORTRANu bych blil. Přes tu musejní syntaxi bych se možná ještě přenesl, ale vzhledem k tomu, jakým stylem v něm daná část fysikální komunity pras^H^H^H^Htvoří, dokázal jsem si k němu vypěstovat značný odpor.

    Céčko je z hlediska nástrojů s FORTRANem naprosto srovnatelné, a přinejhorším se dá nějaký extrabuřt psaný ve FORTRANu do céčkového programu nalinkovat.

  • 28. 5. 2016 10:32

    Viky (neregistrovaný) 46.13.196.---

    Je vidět, že o tom nevíš zhola nic. Stejně by mě zajímalo, co lidi vede k tomu, aby se vyjadřovali o něčem, o čem vůbec nic nevědí.

  • 26. 5. 2016 10:55

    robotron (neregistrovaný) 80.250.30.---

    Jakozto clovek zivici se ze znacne casti numerikou musim rict, ze Julii vitam a podle me rozhodne *je* duvod pro jinej jazyk, nejen pro pod tim lezici knihovny.

    Konkretni priklad, proc jsem Julii uvital: moznost rozumne pracovat v cislech s libovolnou presnosti. Tohle je neco, co treba do Matlaku kvuli jazykovejm omezenim dostanete jen s prisernou ztratou na vykonu a to jeste tak, ze budete rad, kdyz bude chodit + - * / a pak kdyz bude treba... co ja vim, treba najit koreny polynomu nebo provest netrivialni rozklad matice, tak smula, nutno implementovat znovu. Tady, kdyz nejaka funkce je naprgana pro "cislo", tak to proste bude fungovat i s nove zavedenym, nebo libovolnym dosud existujicim typem.

    Dale, ten matlabi hnusnej datovej vsehotyp a fixace na to, ze jednorozmerne pole neexistuje jsou proste humus. Plus prijemnejsi prace s lambdama v Julii (apply...).

  • 26. 5. 2016 15:29

    K> (neregistrovaný) 212.47.28.---

    By me zajimalo, kde potrebujete libovolnou presnost? Vzhledem k tomu, ze sam pracuji s nejpresnejsim mericim zarizenim v oblasti elektromagnetismu v republice, a na problemy s libovolnou presnosti narazim opravdu zridka, tak by me zajimalo kde a kdo na to narazi jinde...

  • 26. 5. 2016 15:41

    robotron (neregistrovaný) 80.250.30.---

    Uvodem se zeptam, co je povazovano za nejpresnejsi merak v oblasti elmag v republice. Elmag je dost sirokej pojem, pokud je to jen mag., tak naposled vim jen o kariere pana soucasneho dekana FELu, postavene na jeho pokracovani v slepejich Fritze Primdahla z DTU. Ale mozna uz mame v republice i nejakej lepsi magnetometr, bylo by nacase (ze by opticke cerpani a <1pT?).

    K cemu libovolna presnost: v praxi se mi to hodilo, co si vzpomenu, dvakrat. Jednak pri praci s presnym casem; narazite na metrologii, tak asi nemusim zduraznovat, ze jedna SI jednotka vladne (skoro) vsem (napriklad 1kg stale vzdoruje, ale snad ne nadlouho). 20 platnych mist se v praxi potka a to uz jsme na 64 bitech mantisy (!).

    Druhej a mnohem zajimavejsi protoze mezioborovej duvod pouziti presny aritmetiky u me byl, kdyz jsem potreboval kratit nejaky polynomy v teorii rizeni. (Konkretne: Wieneruv filtr.) Sice lze k vysledku (mozna) dojit i aplikaci jinejch numerickejch metod, ale mne konkretne se zalibila moznost proste misto toho, abych problem prevedl na faktorizace matic (a jiny hruzy, ktery by v dany uloze dost mozna dojely opet na numericky potize) proste zustat u kraceni polynomu, akorat jejich koreny diky te libovolne presnosti mohly byt vycisleny natolik presne, ze se kraceni seslo. (Zaujalo to i meho profesora ridici techniky. Zel jsem neprisel na zobecneni metody pro MIMO systemy, ale to uz zabihame do podrobnosti.)

  • 27. 5. 2016 7:43

    K> (neregistrovaný) 212.47.28.---

    cas jsem cekal, ale skoda ze jste nerozvedl detaily. svetova porovnani ukazuji nejlepsi nejistoty v radu 10^(-15), ve vyzkumu jsou zdroje frekvence nekde na radu 10^(-18). ale s timhle se clovek bezne (chapej mimo 10 metrologickych institutu na svete) nesetka, a nema smysl aby v techle presnostech pocital.

    tedy porad bohuzel nechapu, kde v praxi potkate 20 platnych mist?

    jinak v elmag je to josephsonuv etalon, relativni nejistota 10^(-10), neboli pokud se pri vypoctech naakumuluji chyby na radu 10^(-11), tak to nema zadny vliv na vysledek.

    jde o relativni hodnoty. samozrejme pokud by clovek meril napr. picotesla, tak nema smysl pocitat treba v megatesla. pokud clovek napise rovnici tak blbe, ze se mu michaji ve vzorci rady v obrovskem rozsahu, tak pak libovolna presnost je treba, ale je to hloupost a zbytecnost.

  • 27. 5. 2016 8:14

    robotron (neregistrovaný) 80.250.30.---

    Detaily sem asi nepatrej, ale nebranim se podrobnejsimu popovidani, koneckoncu, snad se behem cervna dostanu i do Brna. Ano, mj. i svetova porovnani jsou to, co resim. Pro me je to tedy praxe a otazka, kde v praxi, je zodpovezena. V geodezii se bezne prumeruji casove rady trvajici nekolik let, tak tam uz se tech platnejch mist nasbira hodne i pri uvazeni toho, ze apriorni stredni hodnoty odecitame.

    Ad pT vs. MT: to je samozrejme pravda a plati to napric obory.

  • 27. 5. 2016 10:26

    K> (neregistrovaný) 212.47.28.---

    geodezie. fajn, takze resis polohu v (kdyz to prezenu) mikrometrech na zemekouli s prumerem v tisicich kilometru, to je 12 radu...

  • 27. 5. 2016 11:16

    robotron (neregistrovaný) 80.250.30.---

    Cisla pro koncovy uzivatele skutecne muzou nejakejch ~10 platnejch mist mit. K tem cislum je ale potreba nejak dojit, (ridky) soustavy o milionu rovnic nejsou nic neobvykleho. To i s velmi dobrejma numerickejma algoritmama uz je vyzva. (Nicmene stale jich vetsina jede na doublu, aspon pokud vim -- jen je potreba znacne opatrnosti.) Puvab presne aritmetiky je v tom, ze muzu napriklad konzistentne ulozit data. To jsou treba roky casovejch znacek s rozlisenim v radu ns..fs (podle toho, v kterem jsme desetileti). Samozrejme si misto toho muzu delat nejaky vlastni struktury z intu (a v C to tak delam, koneckoncu, dela to tak kazdej, viz struct timespec ci NTP datum), ale je to dost nepohodlny.

    Uvadel jsem vyse ale i jinej zajimavej zpusob vyuziti libovolne aritmetiky, a to na kraceni polynomu, coz je v DSP/teorii rizeni uzitecna operace a tradicne se to tak nedela, tradicne se pouzivaji brutalne slozite algoritmy primo na dane faktorizace (viz treba SLICOT). Ale i ty maji nekde meze a pokud mam u atomovejch hodin specifikovanou presnost se zlomama spektra sumu rozlozenejma pres 5 radu, pak to ani nejlepsi (tradicni, doublovy) algoritmy proste nedavaj, nebo stezi.

  • 26. 5. 2016 15:52

    Pavel Tišnovský

    Podle me nejde ani tak o presnost jedine hodnoty, co vyleze z meraku (nebo serie hodnot), ale o vypocty. Uz jenom par stovek souctu nad floaty/doubly vede k mnohdy monstroznim chybam, nehlede na nekomutativitu a neasociativitu vsech operaci. + problemy s cisly typu 0.1 (nelze presne reprezentovat) vedou k tomu, ze napriklad operace v bankach se s float/double nedaji rozumne delat.

  • 26. 5. 2016 20:33

    J (neregistrovaný) ---.static.grapesc.cz

    Což obvykle svědčí o špatně podmíněných algoritmech. V takových případech výpočty s libovolnou přesností příliš nepomáhají. Trochu ano ale nešikovně zvolený algoritmus může velmi rychle divergovat k nesmyslným výsledkům.

    Komutativní zákony ve výpočetní technice nebudou obecně platit nikdy. Jestliže má číslo 0.2 nekonečný binární rozvoj, k jeho přesnému zobrazení v počítači je potřeba nekonečná paměť. Za mých mladých let to byl problém a mám takové temné tušení, že je to drobný technický problém do dneška...

  • 26. 5. 2016 21:10

    Pavel Tišnovský

    Buď špatné algoritmy nebo špatně zvolené datové typy :-) Typicky pokud víme, že 0.1 nelze v IEEE 754 floatech reprezentovat, tak volbou tohoto typu na výpočty, kde se používají desetiny a setiny (centy, halíře - vše musí být podle zákona), si zaděláváme na problém a mnoho programátorů mě do očí tvrdí "ale s doublem už to bude v pohodě, ten je _přesný_".

    U některých výpočtů je například lepší se spolehnout na zlomky, samozřejmě pokud se pracuje s racionálními čísly atd.

    IEEE 754 je jen jedna z možností, jak reprezentovat floaty, používají a používaly se i další formáty:
    http://www.mrob.com/pub/math/floatformats.html

    (zajímavé mohou být ty formáty, kde je B=10 nebo B=100, protože tam s 0.1 problém není, samozřejmě zase bude problém s jinými hodnotami, záleží na tom, co a jak je potřeba řešit a jak rychle - třeba místo floatů jít do fixed point apod.)

  • 27. 5. 2016 11:12

    JS (neregistrovaný) 130.119.13.---

    > je to drobný technický problém do dneška

    Tak treba IBM zSeries mainframe (procesor) ma uz par let dekadicka cisla v plovouci radove carce.. (Mimochodem je to docela zajimave udelane, pouzivaji kodovani 3 cifer do 10 bitu.) Takze reprezentovat 0.2 fakt neni problem. Casem se mozna podobny koprocesor dostane i do beznych PC.

  • 27. 5. 2016 7:49

    K> (neregistrovaný) 212.47.28.---

    hm, matlab/octave jsem v te tabulce http://www.mrob.com/pub/math/floatformats.html nenasel, ale zkusil jsem v octave secist cislo 0.1 10^8krat, a relaivni chyba byla ~-2^(-9). to mi neprijde az tak katastrofalni.

  • 28. 5. 2016 0:03

    atarist (neregistrovaný) ---.tmcz.cz

    To ovsem nic nerika o tom, jak ta chyba oscilovala kolem spravnych hodnot.
    S 0.1 je to s floatama sranda, napriklad (pochopitelne) neplati, ze

    suma deseti 0.1 == 1.0

    takze typicky skolni priklad na nekonecnou smycku:

    #include <stdio.h>

    int main(void)
    {
    float f;
    for (f=0.0; f!=1.0; f+=0.1) {
    printf("%f\n", f);
    }
    return 0;
    }

    no a tak je to se vsim :) protoze != a == na floaty se proste nesmi pouzivat! (jen fabs(x,y)<delta)

  • 28. 5. 2016 0:19

    robotron (neregistrovaný) 80.250.30.---

    != a == na floaty je naprosto legitimni, pokud vime, ze vznikly rozkopirovanim jedne a teze hodnoty bez dalsich zmen, tj. typicky pri vyhledavani nebo vyberu prvku.

  • 28. 5. 2016 0:44

    atarist (neregistrovaný) ---.tmcz.cz

    To je pravda, v tomto pripade to pujde (pokud se striktne zachova typ, tj, zadne float to double apod.). Ale obecne se na tyto operace spolehnout neda a musi se striktne porovnavat abs s nejakou deltou - coz je fajn, clovek si aspon presne uvedomi, co vlastne znamena "rovna se" a s jakymi hodnotami dela.

  • 26. 5. 2016 11:11

    robotron (neregistrovaný) 80.250.30.---

    "Naopak me zarazi, ze pokud autori Julii meli moznost to udelat od zacatku spravne, proc pri preteceni se nenastavi nejaky priznak Overflow, a misto toho se tam nastavi 0 (ono 2^70). To je primo zhovadilost."

    Naopak! Ja jsem moc rad, ze to konecne udelali spravne, tedy tak, ze kdyz pracuju s intama, chova se to intove, kdyz s floatama, tak floatove atd. Koneckoncu, kdo je opravdu numerik, tak by na to mel bejt zvyklej i z praveku, nebot ve Fortranu (a C) se taky chova jinak "0" nez "0.".

    Lidska disciplina nutna k tomu vybrat si datovej typ a psat konstanty podle nej je zde uplne minimalni a zisk v tom, ze jazyk dela, co potrebuju a ne nejak umele-inteligentne zvolenou kravinu, je ohromnej.

  • 26. 5. 2016 15:24

    K> (neregistrovaný) 212.47.28.---

    Pro mne osobne je ta nutnost vybirat si datove typy spis otravnost, dana vyvojem a omezenim pocitacu. Nejsem ajtak, a kdyz to nemusim resit, tak mi to umozni soustredit se na tu matematiku, a ne na psani zdrojoveho kodu.

    Kdyz si pocitam na papire, tak taky neresim jesli pisu inty nebo floaty :)

  • 26. 5. 2016 15:29

    robotron (neregistrovaný) 80.250.30.---

    Pokud na papire neresis, jestli vysledek vysel celociselne, tak to nekdy muze znamenat tak drasticke rozdily, jako jestli pracujes se sumem nebo s periodickym signalem. Pokud na papire neresis, jestli vysledek je realne nebo komplexni cislo, pak se asi mijis s celou existujici algebrou. To nemluvim o telesech, okruzich a vubec algebre jako takovy -- to je system typu (objektu) a funkci nad nima par excellence.

    Ja na papire resim intovost, floatovost a complexnost pokazdy a vyzaduji, aby mi v tom pocitac nedelal o svoji vuli bordel ;-)

  • 27. 5. 2016 7:56

    K> (neregistrovaný) 212.47.28.---

    no dobre, tak jsem si trochu nabehl, ale tys to uplne prekroutil. a navic: pokud zpracovavas opravdove mereni (ne idealni simulaci), tak stejne si o nejake celociselnosti muzes nechat leda tak zdat.

  • 27. 5. 2016 8:17

    robotron (neregistrovaný) 80.250.30.---

    Ja jsem nic prekroutit nechtel, myslel jsem to uptimne jak Standa. No tak pri mereni je typicky treba pocet mereni cele cislo. Na vzorkovaci frekvenci 200MHz se brzo dostavame na hranice malych intu (mantis).

  • 26. 5. 2016 17:04

    Santiago (neregistrovaný) 2a00:ca8:a10:----:----:----:----:----

    Kdyz si pocitam na papire, tak taky neresim jesli pisu inty nebo floaty

    Kdyz pocitac na papire, tak take resis, zda to pocitas v R, v N nebo v okruhu Z/(2^32).

  • 26. 5. 2016 12:00

    Pavel Tišnovský

    Jde o to (mozna jsem to mel vic zduraznit), ze typovy system Julie je sice dynamicky, ale striktni. Takze kdyz chcete pracovat s integery, bude se pracovat s integery a neni tam zadna automagie, ktera by najednou prepnula na floaty (coz je stejne blbost, protoze se ztrati nejnizsi cifry, takze budme radi, ze to neumi :). Kdo chce floaty, primo je specifikuje, stejne jako ve Fortranu atd. No a pokud si je nekdo jisty, ze pro numericke vypocty potrebuje BigInt nebo BigFloat, tak je pouzije. Navic je mozne (to jsem zatim nezminil) u floatu ridit rezimy zaokrouhlovani, nejedna se o zadnou raketovou vedu, ale je dobre to vedet a kdyztak pouzit.

    Ale chapu, ze nekomu to nemusi vyhovovat, me napriklad nevyhovuji systemy, kde se automaticky prevadi (u nejakych operaci) int->float/double bez moznosti to ovlivnit.

  • 1. 6. 2016 16:57

    randolf (neregistrovaný) ---.honeywell.com

    Matlab:
    uint8(2).^uint8(8)

    ans =

    255

    :)

    Jeste lepsi.. defaultni saturace. Takovouto chybu lze dohledat jeste hure nez nulu...

  • 26. 5. 2016 10:10

    bez přezdívky

    Julia v Ubuntu 14.04 neumí funkci range, musím to zadávat jako [1:10] ...

    A ke komentáři vedle, zkoušel jsem si ten faktoriál a pro dostatečně velké číslo vrací Inf.

  • 26. 5. 2016 12:58

    Inkvizitor (neregistrovaný) 62.168.12.---

    Pouzivej PPA. U tak nezraleho a bourlive se vyvijejiciho jazyka nema smysl drzet se verze ve 2 roky stare distribuci.

  • 26. 5. 2016 11:02

    robotron (neregistrovaný) 80.250.30.---

    Par praktickejch postrehu z Julie:

    - grafy v pruseru (to asi ve svete obecne, slusnej je Gnuplot ale jeho dementni licenci uz nikdo nepredela); kde jsem potreboval rychlost nebo aby to neleakovalo, musel jsem si dopsat vlastni grafovac ve fltk;

    - paradni FFI, dodelaval jsem si do Julie MQTT a byla to otazka chvilky, vola libmosquitto.so a pohoda;

    - jazyk jsem pochopil tak, ze klade extremni duraz na system typu a konverzi, podle me se to vyplatilo, spousta veci pak funguje uplne vyborne a logicky, namatkou:
    -- ProtocolBuffers (ProtoBuf.jl)
    -- sqlite

    - umi volat externe MATLAB (bezici matlabi instanci), hodi se, kdyz neco neumi matlab a neco zas neumi julia, ale je to samozrejme bida.

  • 26. 5. 2016 15:30

    M. Prýmek

    > grafy v pruseru (to asi ve svete obecne, slusnej je Gnuplot

    No, Gnuplot bych zrovna "slusnym" nenazval. Pokud chceš slušné grafy, zkus ggplot2 v Rku. Než pochopíš princip, je to trchu brainfuck, ale pak se s tím dělá dobře.

  • 26. 5. 2016 15:43

    robotron (neregistrovaný) 80.250.30.---

    Dik za tip, rad vyzkousim. Zatim co do .png a .eps vystupu mi prislo, ze jsem z niceho nevyzdimal tak peknej graf, jako z patricne osetrenyho Gnuplotu. Ale tim netvrdim, ze je Gnuplot nakej nedostiznej cil, spis jen mi dosud vsechno ostatni pripadalo jako nebetycnej hnuj. R neznam a ggplot2 tudiz taky ne, rad se poucim.

  • 26. 5. 2016 17:07

    robotron (neregistrovaný) 80.250.30.---

    Z toho isch me zaujaly ty mlzny grafy shluku bodu, to mi uz nekolikrat chybelo (a nahrazoval jsem to generovanim vlastniho rastroveho obrazku). Dik!

  • 26. 5. 2016 18:39

    M. Prýmek

    To se dělá v ggplot úplně snadno - mám nějaké body (X,Y) a ty typicky stačí vykreslit s nějakou průhledností. Někdy se hodí třeba i různá průhlednost jako Z. To jde taky snadno - ggplot je silný právě v tom mapování dat na vlastnosti. Přijde mi to principielně podobné D3.

  • 26. 5. 2016 12:09

    Karel (neregistrovaný) 2a01:e35:8bee:----:----:----:----:----

    Super, díky za článek. Doufám, že se příště bude mluvit o RUSTu.

  • 26. 5. 2016 15:33

    M. Prýmek

    Super článek, bude pokračovat nějakou delší sérií?

    Mně by hlavně zajímalo, jestli je Julia jenom nadějný jazyk, který se vyplatí sledovat, nebo už má smysl ji i prakticky využívat. Např. mám nový projekt, má smysl ho začít psát v Julii? Nebo je to pořád ještě moc tekutý písek?

    Jestli budou nějaká další pokračování, poprosil bych, jestli by šlo se trochu zmínit o interoperabilitě. Zajímalo by mě hlavně Rko a jeho knihovny.

  • 26. 5. 2016 18:10

    Pavel Tišnovský

    Diky.

    Tak planuju jeste par dilu napsat, cekal jsem hlavne na reakce pod timto clankem :)

    Julia jeste nedosla k verzi 1.0, ale ty posledni verze (ne z oficialnich rep distribuci, to je vetsinou strasne zastarale!) me pripadaji dost stabilni a funkcni. Jazyk s velkou pravdepodobnosti menit uz nebudou, na druhou stranu na stabilitu F77 to nema ze ;)

    Ja kdybych mel ted neco zacinat - nejakou statistiku nebo analyzy big dat - klidne bych to napsal v Julii. R-ko je sice na prvni pohled fajn, ale uz jsem se parkrat pekne strelil do nohy.

  • 26. 5. 2016 18:34

    M. Prýmek

    > R-ko je sice na prvni pohled fajn, ale uz jsem se parkrat pekne strelil do nohy.

    Mně přijde Rko fajn až tak na desáty pohled, na první je spíš odpudivé ;)

    Rko jako jazyk jsem schopnej překousnout, jeho záludnosti a divné špeky (jako třeba environments) jsem už jakž takž vstřebal, ale co mi vadí je, že je to jazyk spíš na ruční exploraci a fajn lepidlo pro knihovny (imho o něco lepší než python) . Ale nasazení experimentů přímo do produkce je buď strašně limitované/li­mitující nebo úplně nemožné. Mj. třeba kvůli strašně těžkopádné paralelizaci (opět to samý jako python).

    ...a právě tady vidím hodně prostoru pro Julinku. Kdyby se v ní dalo dělat ruční pokusy a pak zdrojáky víceméně rovnou hrnout do produkce, byla by to obrovská výhoda. Ještě to pak slušně napojit na Spark apod. (pokud nelžou zprávy o dobré integraci, tak by to snad mělo jít) a byla by to bomba. Jenom právě nevím, jestli je tohle realistický očekávání a za jakou dobu by se případně mohlo naplnit...

    Takže proto by mě právě ten rozbor integrovatelnosti zajímal.

  • 26. 5. 2016 20:41

    atarist (neregistrovaný) ---.tmcz.cz

    Tak v R se elegantne dela s vektory a maticemi, ovsem pokud ten vypocet je komplikovanejsi, nastavaji pri zapisu problemy. Ale to stejne je s Matlabem. V obou pripadech je to pouzitelne hlavne kvuli knihovnam, ne kvuli tomu, ze by ten jazyk byl nejak nadherny.

  • 26. 5. 2016 18:40

    MK (neregistrovaný) ---.iinfo.cz

    Hlavně ten multiple dispatch je celkem zásadní a měl by se to příště alespoň trochu zmínit. Julia nemá OOP a myslím, že když člověk potřebuje něco na ten způsob, tak se to dělá přes právě přes ten mutliple dispatch.

    Jinak rychlost u nějakých trochu komplexnějších benchmarků prý odpovídá zhruba Go, což je určitě o řád lepší než Python, ale na C/C++, Fortran to fakt nemá.

  • 26. 5. 2016 18:42

    M. Prýmek

    > ale na C/C++, Fortran to fakt nemá

    To ale v praxi vůbec nevadí. Ty kritické části se stejně typicky delegují na specializované knihovny (C,C++,Fortran). Důležitá je paralelizace a _slušná_ rychlost lepidla. Není nutný, aby bylo lepidlo extrémně rychlé.

  • 27. 5. 2016 0:33

    mikrom (neregistrovaný) ---.dynamic.orange.sk

    Mala poznamka:
    Ak hladate jazyk na pocitanie s lubovolnou presnostou, tak je to predchodca vsetkych skriptovacich jazykov tzv. "Restructured Extended Executor" alias REXX. Ti starsi si ho mozno pamatate aj z Amigy, ale v skutocnosti sa REXX zrodil a stale zije na IBM mainframe.
    Samozrejme existuju minimalne 2 hlavne ditribucie pre rozne platformy:
    http://regina-rexx.sourceforge.net/
    http://www.oorexx.org/

    Kto o nom REXXe tak https://en.wikipedia.org/wiki/Rexx

    REXX ma decimalnu (nie float) aritmetiku s lubovolnou presnostou a to co tu niekto prezentoval vypocita uplne bez problemu

    Napr.:

    numeric digits 100000
    say "2**700 = "
    say 2**700
    say "2**7000 = "
    say 2**7000
    say "2**70.000 = "
    say 2**70000

    vychrli bez problemu vysledok

    c:\Work>rexx power.rexx
    2**700 =
    52601359015483735072409898828801286655503398028231738594982809030687321542970808
    22113666536277588451226982968856178217713019432250183803863127814770651880849955
    223671128444598191663757884322717271293251735781376
    2**7000 =
    16216967556622020264666650854783770951911124303637432562359820841515270231627023
    52987080237879446000465199601909953098453865255789254651320410702211025356465864
    74315852270765993733408428427224200122818782600729310826170431944842663920777841
    25099996860169436006660011209817579296678781962552377006552947572566780558092938
    44627218640216108862600816097132874749204352087401101862690842327501724605231129
    39552350590545442145547725095090965078894780946835929395741125694734386191215296
    84847434440674120417402088754037186942170155022073539838122429925874353753616104
    15934359455766656170179090417259702533652666268202180849389281269970952857089069
    63755754143448760882483699419938024151975145101251270438290872809195384763028578
    11854024099958895964192277601255360491156240349994714416090573084242931396211995
    36793730129447956002483335707389983920299103223465980389530690429801740098017325
    21069130797124201696339723021835300758978451952584855371088581956317370007438051
    67411189134617501484521767984296782842287373127422122022517597535994839257029877
    90770635533479024493543538666051259107956729143121629778878481855229281965417660
    09803989979916814047493842157435158026038115106828640678973048382922034604277576
    55073776567547507027144662263487685709621261074762705203049488907208978593689047
    06342854853166866565732717466065818560906648495080127617546145721617695557519921
    17507514067775104496728590822558547771447242334900764026321760892113552561241194
    53870268029904400183858505767193696897593661213568888386800238409325673807775018
    91470304962150996983853975207154939633923720287592041517294937079097785362510832
    00928396048072379548870695466216880446521124930762900919907177423550391351174415
    32973747930089955830518884135334798464113680004999403737245600354288112326328218
    66113106455077289922996946915601858083982074170460683212438815202609958469658816
    13758263829210295473438888321636271223029212297953848683554835357106034077891774
    17026363656202726955437517780741313455101810009468809407811220573803353711246329
    58916237089580476224595091825301636909236240671411644331656159828058372078343988
    8562390892028440902553829376
    2**70.000 =
    12580458767788455347797853956075050016542418083594704593969019623048304218456164
    44164771274078718146928993451682372699102894425761547484709440191049559671829879
    03836506557519396227540403372000132136725017523173058955696778074394449999929487
    27218426974295898725920259242568505977520522643138986500591318225650373914191920
    93347178375753976435609268877865838638092042357456173963380889910938663168351539
    07249045400267535223518173613565343335305339018067079075902544425074837366081342
    22474390146687482345519493737837132907733499206156947893625688592582643850885214
    65794979514727694104604194236526614458576088755647175826755434261139325355864220
    87155780591470502959249812900570986444965757942155669634989245863280383568362309
    38517593866390074217171706499064212040037090338954527056752533045899549299198230
    56409867421100453470506686627583517942757317139598837695468930719456834892953750
    03496933990489166050943976483744947546566382514804736439596895366336809909707037
    52549547167396511959726914564505110646066199314228427878799326780054502539758137
    96628666537259318862872878141540019003445116341039279323512256242267708994838622
    14911680672720315319199136297451205931167968984478440152551296551900521013189832
    02678272438569821126652044217476867245632738542075017029673592081887148698022124
    48266227604849484033357524039773953390376432462151192271839323135217587077665459
    07392934989702826706618656129683098479208345564179417418410918293150055752059129
    04260861353968289191959976169310123238721813945451778372956395547381968310865982
    52461896820330686416605387706005460673578238699826712036976725503270869345378811
    58083398729211488869906433801760897986167517731349146390940835880452224347351265
    20662253004270826103795137873727814869324306089534591327965663400435965579947766
    36930956070817173646369174959390604108190411216837283162295853322882829317469086
    22308381564296529383399076136985169020494498331402565744390363379712597871819216
    73111022301352670861595018916364425934930588417005798414859224731241330505937882
    69948991723419839191849269592743615909205530172389338797592699105059446515209240
    61623278690849727761626542228720587663977956567614895571183859725996786896913255
    98862990379306754212902433461330575508248129333381442392675257673874112356295720
    01343958264112947994061850514657647900857130863602920534151052574159288387775213
    44377671174222465994042817166732867181009298259177489581566456344226583195713188
    76195116261161791309714428229942133101982746749380723548086840067492360978645838
    50692788281575871055622465956089705480442631301287787234591207863741410227358042
    63033738124991718760762224100362763702647903028133321253098270034132831255724710
    61945793817644758514601449904844530887178800009570830887331326893232027029205109
    27238844600900270108863027275376599449415560026731355361899528804482175152319621
    88176613959065049277356820007239280778959658434985080616178488152627295558243033
    62339117655921192891171839125866166028141981796536283482110871063882314018569494
    68644205918402806292684679882546619859640016184140000983923019123625163625104579
    26461665759017102670035494309990652250766029249204412091837243709851494878204969
    53774995126768810142192608100004148102093039003320737835004013873804217605742485
    41057025637852691027485277976842968527872510881350186983819621486134343373694143
    68792778350351541536928320754365803757508255062861362695545021823599735690690266
    97246611076420868708213321704340996341392374614510503249300836745788025082510278
    32007047938531387305499901318062185779309026049319522453297072403916383332930535
    30702000195844190821779625733797537314695901500176486368037529885038061766469675
    27498486055477553910169225760217922914313184514302233501687924720533900090865770
    31905851484717564587012717447940958471908563958722182735134253557830388642986637
    12280378144364178297183154774569850036037668999977685549576520509979424544122050
    52831296769893716669926989006247842924883197006895798589044410953480518777707954
    55862843700058168562935193342099812321729620338863116776404478883918287727257496
    57636342329220886972349171291885823355097871236374711777866791156799964152778687
    85540665977981197309845144843875753165484265695335545060681850822413291211877580
    00606163354837081049822110051179380811392964797650005437276486363900561591264223
    03201928905467604681974504774135526804615698194467500998542878179483176341765608
    12010330007210984406249837837460204217881727914164872574037566099052364948324564
    65995634459111401163940662737647331255684876228576307792782591409380956532741952
    85661408341746632839875291658744584240764748039835786016393024588143824451046481
    91532228209575565414232273264179727506461867885610277308848191127759657433229709
    01281846311728806334504151470646238818186813363522728643993088673646194455883869
    03133027401629582336777088374008210913493974115278768205664002559571020932320571
    52105781707827961722366972151863140441922985148881695325970897122116173700330407
    35925379727096432187476661128786779367438885354906319421669843517932319289263963
    01988069929166443312015320037567292540054300700820630033217072974990215902905939
    05438934659925662510842896125389889338263596649848315835693821850235191247528227
    13146740924213296157301584346475431107354878230825654986630402538631511651279550
    56731284559849648852161886297480380396344181798148652679626719205843995157042379
    92241191878837583711448919962923789056174324685833861331131087517855631937351518
    37636823335766650029779610517100395829476065484641791052047850117655355900182042
    80511751583892553856705505100331788550891335725143505452780440269970317427379312
    48329734058505690239368655363314175014261562936789065057541438832905570327288968
    73807108960578435400756768804139017875153996460266250413152859340028463200457277
    17149345495637674854659048126341569054620561065233391789482397633616270389048280
    44312893533478898560980812795277893362166163701104160342524509126990773497497620
    80566821544724397453894268784530178899117716915572883098766312466550864130341551
    17668775866746109698610952884264623136675948493270213726389989934167448522445553
    45366919230272019340107306924247267908151685145498810032535630455577021660719542
    77630200032110131607025890968963718815750693798776321464237695323387965481169894
    70185604111634422528723857830252231370215388743228405526077666470322440102931206
    20925778437532081419728195479647839476606752150815194142727228016849776931194690
    75265434667203444109208722114915241910347867187421090552391519355327760352621129
    58852519735866882726640785385798004112100018267098479646349110842823429765229706
    85807821561885223351504743228831368323096849271010275827537735265520714601818860
    13611952458338110652451912646689473948131129001085933778721098435986233131969518
    97247127552361934616743559408282711051625478391495113412146167525389362828523799
    32320258727791886710132975457162373501285581393748491332179704742006326487253499
    93781310354789968583862311514468561979379051447429332342681978482533461593880310
    91991879158263731951558583715901775151090488683985167241247044287899509208448799
    45963496490639047890628941558300353981332428463961440528237770897247230896104474
    48375914571138187998447955540941465175551372034013556415670641272446113166390692
    88400484669735539635895853903055791665126334780394323915302861476471011060869857
    90767735863323427492270724633755510798279794558821338749332961037033277140883137
    85988545726910963888545596211512228501466997025771640029676313288209823930580642
    88049824297956783973698092177833781716053989210487017993773132530034656853824849
    96699523581523121101030678484185720565053721931387827320512856697562316433825900
    96116707442763052243728861407398737726940511534019327843812478652337531793848035
    74014667817200849909512720855278494348080599781062284393764573401791450884636894
    06899360627302519718389782007045723796201045790216392103708431322165221946003242
    48699478833568757620217635503102550343796033149846649076657149874209584838411243
    87236513180251335846704770899513465620746390377000728094136057915520311089130108
    53102577799864808751809963510010935844828497869123125921760098075094244813095242
    07221107614643196234759917059209244672406785772941039183902938370259914763426208
    60227770347127284622014196711036661748664438248624199903291646930465819808206107
    61114553912457629056871715441781145804599711061214079531010911425330109353769558
    46968472027862111621651038566948841431577205653439458953568497215726466936106987
    10532637191281937572271124280626965745721019109293001052718542780643326771081515
    04006752545967084294661263575678223653440962072690396073719403030084127502228518
    02878688266803854950694780947377917198508844171806728120516777383430626588468447
    14636598106597198358146224571406012643514949285046100819825594183219665005954362
    96873763849684075336678384694025632858931603302717828117065569518707321654986285
    60631287075073161680435300197883664835116845497102427710526926289192051761978474
    53538318067401351484945689690036121788140028500597446246375698388215344187445892
    15171210876004427716967444725370068927068761090136734535149170813760536897654646
    62467974167478928155780915637500582552884055520168890433181633475325654172147625
    28677824184965933092166358079654660294983833955172986485918922290531239902244785
    30988065438532648432944148866243304765218387081396280942575918708176020230821789
    45390971662440958707650943487483746898161085016119950001603476913079398941004206
    12588251978291102879015010564553318365105290646119622988343461826528094024138248
    66279134087224911158487552829421567429756447360128242915589211639240902094053927
    15849483208240199228985112462418633777050099010585067292437563669480013959101954
    57884885809177349069074135371975983950306799112910609210677515786583153083963435
    56603578577501151522235863399363029411336220498966058976510390376515157819827179
    28934056975954487987165021948764388071177183774904798292352670689171694384173825
    66955444093210577278423918894511551358672905433905310401382566414169619805860026
    64600201968794575651778590566752090489064909395329889244823345042619652822816390
    92101775724305693295864450491906942712502246966893953599859331407683665289849384
    24028646131527124207273450205708948835565932664206072386534785354428463426891686
    32511574824968533969773499288020088930115424224732396060988195668998400290950661
    40513961466664418932893931925671924889366666032251869472581357613149368963673466
    17207227418430803762460655443595418840876506520825396460927848413149034764513650
    46542080629760217399988619705840372963813380362596128124872067656398790256614390
    32617319149194228539620117487797166539440285174523244172419551186664635281054635
    81012039364970249873272963498630554887026796309475967195714192655250359752322660
    52951553654029601737123796661124947109171299879264252933824882572612102142799840
    82490681449298422564330756073157069066478482694457609428189725611267023023163779
    17185709917136284959671179189866246098472854542680206921851769792311018562281466
    54246548621243196131719965190524776776641232833386961971435978579872978183858833
    54632062568863915033432692028804038462082222002584115302880701396387844761711094
    55565400408063372095694760042740976037196748959640657392618469671087167939998853
    56365349395411145943023788674740751649913695709776897638874836747681051314953312
    19416028506358710984442917626036041243027255003783816765038449161366803008836512
    16566162100855847075129406841342894374272974674305726177893479320857172155489934
    39143351477144139992043507914363332495763581424764441751402009668438771996802954
    66955079642704179018848005269580253290600112484650181289727356121433188831549223
    59876866622961559106965225499065368455257344362388768397670465822292087331336241
    08330700334347171474005635759122985824698424498354787707864341705979327144592017
    82030479100522773771534555119141944275707159512493919207019341314172553643024783
    36273205785509015306885425222680760772784357694454026134548068210257668540682659
    60396116380812298668287953275355696084152382962567152876901078363238059103516272
    05159895683964993946860352543147457849948132804507293009233775087820708125047618
    63737105318714695673256499836470481379371138572063391863945604003741147404681322
    02844623210738329012274916407523341043622572573516582282341244946544816710314425
    46871573407077762934553141093773342408916813236601425245999419034125973285407889
    57480869152538367361414245480369431249715351250775087381115580445418656415141437
    74078516306227421849612975289064137167535124876663304989281163173794330912597307
    47836555616107994065480908876166871221398192335591517980425857809846226427721626
    11153962161018497380494955188494098920966762094565952619497537372394268456915375
    03472029834471404470722946649391871310420523651910876484827574314297830159617233
    23752675711885171956282790007042799486960988389798703604068936608827130048833592
    46313014097858996162367339102940973521902818448310027330748097336830433487070240
    39993625535801688538110750245749433768430715199599265512563666027806444745894578
    66200776289094707619443999340228513701352157812233646931787242059228233190473927
    38990733780478181523930078442538334671511209079512668148478532510687296301519058
    31939492606929127629496039175867307892191708482222376469192646687678561009601411
    89409987881570160655213325038125014134984562649682940749060026954160483016678429
    77990778968905420615408498685408441719961129920278628649894059215432644581657456
    99880749127167767144275224837975682149145018689459594928572455097260002762367669
    86556127786451172953318429757975862589868535669979662756476609213182976749299811
    89887728391756981498027459474689047848618302257572438966322214842041068353390776
    10957562335272142394283635813827172131984974820883281624544902291446661007705053
    73193746347512522974054556634718381761982640605842224291568588986736678497440467
    25149651827270905701177798179278353188144325828499281031264782933389942456668910
    68376625652395534547302085997947706711528515499713565422511398427294067775561592
    52999724418237892485409668975844542081024793356737755698156320701648264950832747
    59909974031188234104483638653169702295102657206348578806092054815029303565155891
    99111910146394039580934202995394904200350652162173791988461324422574608372787402
    10031942821255870374300905932362240818507446645959101113415893472116643812138203
    07520589597809366214656448380437595891376301604129156190966710113240965871021124
    36736411590093200085905235234911264926216800400260955633772169970073864108136362
    34816265750050430086097335603647537688829919220027636084861567377881246411746279
    40456762431959533882411916763617287235016592489684765614645790296343555150739811
    07421551242495367783575580429876548167476916225501861505690088934411007927366686
    42448418296200742365659758922005963530373012724737711017783238999505577996929481
    46590064157441885454353164161881043727991450139016299352656923950855903891488907
    28389364692915540157121523867501257264930675452137347225041074358945839288290502
    57713268986113346743541017941927764575566785384488787751854542327692126797386227
    59826908724689036953572790572510893095633900185636015769604650067426301046673275
    92909588514050528436507074352495762677248694384276456907469017939787631591750309
    75389469858259927464825698773345562101320953715746875510297031277790333303440006
    33592756118715252417953598311343239897478324492112491477208077813681350616142474
    81146854888586018662682239082918142022371804097148232845517499414106762754277758
    01165482572392674753438251226617553202980147341970237230705061407756243205781717
    22660776340070169695538068985651037845921219949645025829611976020000626043698723
    42781787592560326292165258439639470859770375343288537708106588228441238196852286
    35817578104978829723469675703745877661144009425022879038252776165585186170275515
    36833703862262024688752975429331443996963881244386767583372165392419620649557937
    35613825843304762528669463546461172550951654213651981363884621739870577818861036
    10102230199553267220375437279518589122889000676388813973917214232159128944015738
    63756047306326293833650435854131587694213225981221297431625499907944441891895847
    14124440126547144863641067799530941128917956842023233551896240611208047726806220
    33384974550381692958712898690556656154162160613913732491765266321058163862539364
    24159837951792791852310294950663727351272251391802307893222925167278387109488499
    79256033392686669651313760283947884106457168728945605442967170737979423104520568
    95031266042872553303624165682655366934436581041530704155765327744872515409345550
    90487414011920100728659367975384619725129479873821334497735189444108763693630445
    70017286360417941761430383907038665161240713017960609745125722519699706994070684
    93470545140035969849322179931498537274111414603685454449387812030216724162805738
    48573314970886423305180403604162673085015912103797644113624114057197598739020724
    26251924943763841540140657732297515135995809641610774228266167496173481770678521
    86054805239917140316453200186015827329601614598906012439822409338566054597707660
    98102727954533554271880373645378158096471679241652978943800325449989020860826501
    30162208386164401896643504225380741414966336235446703466737246856673954225133477
    54105352125429758663399129007000139688260940993535398554709481764880913788599813
    28786784128919182335879076054712706903368642097493809586536146935928321135623339
    32667421746661151830223376586345453167336607616530914788562058066968300093879101
    73354308910539951514827828935232113928562371982148457087461181576284311864483905
    64721230938194875669331284881246579305458565738224058415748102470676040201877950
    74359249536381856045288138269533028256015602597439090488938700292874762843113463
    93465585442514194629349580885727338756116549003128509048187323366275280372517431
    96515131952703569170593290515662079136240837987262453516808060083844039356305389
    84487526765122169318944674024276466003523078209501234292267945300964204758464558
    92396003505408450860171984270537676733651788154450205975479260151554486522851481
    37613563642569035597251512620394486158929709190158305040901365136347900227707126
    04945924723166470283596665186711124311924459280494901379502201537385578207244303
    34016131607851552318413292153756353144863187722715295572606936918106111950681529
    52857422869690194538565419485139258518719623807935522965521063985744514437992308
    64752959971747620336905323437397500452828942286576255821719091010869128342246892
    60139993014317492529853546719784817357931981283896334358565346600040781212147254
    48661985211565871244314436298454871408171850617329974973479046257754547691414345
    11499675342931333975376287435491676335989066146723117812879140651022627041378946
    93674944856014435142695792641518929007591381809457092076446991678760946724131090
    79681419071675240093012398752785310263181914731702713952945288630575254587992928
    08936934701215617810707609335912533515859709801137858505444885576880619078322230
    87898789951235766461605515660691526253251326110603843050910337471629182536954571
    83938188112290189434206482504445819402391203337937552875366759908713506393224453
    17222356844655925544854078528114050618610849508288301104792255056313786697717008
    36675318869178889546728729407996557330447387822526030960508906228323825351268756
    86316927196290767674884639342201995981125222489780220617819681496634075341538326
    97663848333449470998385867351487598202912747143139175451117365839248273044597346
    87237328323720881278572559440890843903091559308960781397757803048034651420796386
    93983203792468651299227142668685112536675964342860014097357449225374807442653565
    19293033606300787302633528716239478195264079506002573283743086909601448841009048
    16592404702238904272087786125311311264630233521084963178182867537601073893559191
    12971769741448459933957617732285644142431819977760523123859773348560292052924304
    93905271875636491801931576397378458640218643946400806050055309157604108761691299
    34965887786554739036515057834379809560587985912385180460784856782739651527181853
    45836082382071402819833538075370511045567401145057833297717816326054417602038383
    07110772077663224570526164995296270802854474118981217030199621575074440666902380
    37492637159073395318437992771879115558265206061906479154469415497489889208860638
    49546058704716777792787497233034499103757956360856568735618650955696222439509381
    65201914597289903947792917825494238209663076641916741068878065437847277987336539
    98776659745383722721207988601159447709650263316398024373157203003170808331435181
    67827187548693375957038788945389083954501985991325905528670617404365319756236688
    44738378193281732198833640637104827546230294566845082416040902370407071677568808
    81943409442085893833501719039498459499169416496077302156192624046016149987132940
    59637515859583423038856249437131961670701353053659681720499485566433557641342283
    45271072439142200649775256397363175524130356204520698424522752327961737767330328
    51365745261584374222322090593220176056145689301955036099284438234306676851988471
    50707338472437776167527595277660602342463822735523462506953690429706232753101855
    58845262758667281467484939221230582634910974232701210874018340870320018067413530
    84550632318721230116646698079931558197269245547195386000889444336876644657431350
    55747683755635356182448358797404987867430997865025894928749107480582305792992544
    29017748347850957671637527751590343847736249507005291454759672284696345991761937
    66361025651027127971222619435853717326290819886195295959938359934310662249201299
    562149291526592554188417454309376

    Decimalna aritmetika pocita zlomky s lubovolnou presnostou, napr.:

    rslt = 1/6
    say "1/6 with" DIGITS() "digits precission:"
    rslt = 1/6
    say rslt
    say
    
    NUMERIC DIGITS 31
    rslt = 1/6
    say "1/6 with" DIGITS() "digits precission:"
    rslt = 1/6
    say rslt
    say
    
    NUMERIC DIGITS 66
    say "1/6 with" DIGITS() "digits precission:"
    rslt = 1/6
    say rslt

    da vysledok:

    c:\Work>rexx precision.rex
    1/6 with 9 digits precission:
    0.166666667
    
    1/6 with 31 digits precission:
    0.1666666666666666666666666666667
    
    1/6 with 66 digits precission:
    0.166666666666666666666666666666666666666666666666666666666666666667

    Dokaze toto aj Julia ? Ospravedlnujem sa - ale este som si ju neinstaloval:-)

    Mimochodom REXX nie je jazyk specializovany na matematiku, ale je to univerzalny skriptovaci jazyk.
    REXX ma jednu unikatnu vlastnost, ktoru som nenasiel pri ziadnom aktualnom skriptovacom jazyku a to je, ze vsetko co nie je prikatom REXXu odosle na aktualne nastaveny environment, co moze byt OS, databaza, alebo nejaky iny interpret prikazov. Takze spravis skript v REXXe, ktory sa iba prepina napriklad medzi environmentom OS a databazou a odosiela do OS systemove prikazy a do databazy SQL prikazy a vyhodnocuje vysledky a spracovava ich.

    Ja ho pouzivam napr. na spracovanie textu a ako glue-language medzi OS/400 a databazou DB2.
    Na Windows som ho pouzival tiez, pretoze Windows ma hrozne slaby prikazovy jazyk, ktory sa pouzitim REXXu stal pouzitelny.

  • 8. 6. 2016 11:32

    noname (neregistrovaný) ---.mameradirychlost.cz

    REXX je na tvoji platforme s nejvetsi pravdepodobnosti takova z nouze ctnost. Nebo se tam napr. ten Python (ktery podobne jako dalsi jine jazyky to, o cem mluvis, ma) da pustit?
    Ma REXX repl? recnicka

  • 27. 5. 2016 0:55

    mikrom (neregistrovaný) ---.dynamic.orange.sk

    Myslim, ze Julia nejaku prevratnu dieru do sveta nedokaze urobit.

    Matlab, Scilab, Octave su na numericke vypocty
    R je na statistiku
    Maple, Mathematica a Maxima su na symbolicke vypocty
    Co moze ponuknut Julia ?
    Asi nic nove, pretoze na glue language tu mame zauzivany uz Python (Numpy alebo SciPy)

    A aj tak ten, kto sa vazne chce zaoberat numerikou, musi vediet Fortran a/alebo pripadne C/C++.

  • 28. 5. 2016 0:05

    atarist (neregistrovaný) ---.tmcz.cz

    Prosim neplest do toho Maple ani Mathematicu, aspon ne tady na rootu :) Jako hlavne Mathematica je fajn, ale ne kazdy si to muze dovolit (a co jsem videl, mnohdy jsou to vyhozene penize, ano mluvim o statnich institucich, kde se toho nekdy nakoupi mraky a da se to snad kazde uklizecce :)

  • 28. 5. 2016 0:11

    MMN (neregistrovaný) ---.elisa-mobile.fi

    Tak pokud to lepidlo je kompilované, se statickým typováním, a tudíž dostatečně rychlé, a navíc paralelisovatelné, svoje místo na slunci si může najít – tohle zkrátka Python nenabízí a převod do Cythonu může být někdy pěkný oj*b.

  • 8. 6. 2016 10:56

    noname (neregistrovaný) ---.mameradirychlost.cz

    otazka je, jestli zrovna u lepidla/proto­typovaciho jazyka, co jen vola rychle rutiny napsane v necem jinem, je staticke typovani zadouci

  • 8. 6. 2016 11:00

    M. Prýmek

    Dobrý typový systém imho může umožnit, že to právě nebude _jenom_ lepidlo, ale semotamo v tom půjde napsat i nějaký výkonný kód a nebude to úplně pomalé.

    ...a to je právě zajímavý příslib, protože takový jazyk tady prostě není (uzpůsobený výpočtům a zároveň aspoň trochu rozumně rychlý).

  • 8. 6. 2016 11:50

    noname (neregistrovaný) ---.mameradirychlost.cz

    dobry typovy system v r. 2016 se pro me rovna funkcni type inference (a ted vubec nevim, zdali to Julia ma nebo nema)

  • 8. 6. 2016 11:59

    noname (neregistrovaný) ---.mameradirychlost.cz

    afaik Common Lisp ma neco jako volitelne type anotace, ktere pravdepodobne vyusti v rychlejsi kod z prekladace

  • 27. 5. 2016 19:04

    Pavel Tišnovský

    Ten nadpis je brany s nadsazkou, proto taky otaznik na konci ;-)
    Kolik lidi (navic v %) to pouziva se asi tezko zjisti, protoze se v Julii delaji mj. i kratke skriptiky, ktere navic nejsou OS, takze treba OpenHub to nezjisti (ostatne to plati i pro R/Matlab atd.). Navic jazyk s pouze ctyrletou historii to bude mit zpocatku tezke. Tento jazyk nema byt konkurenci k Fortranu, ale prave k Rku, Octave nebo Numpy a SciPy, tam to podle me dost dava smysl.

    PS: co se tyce penetrace, tak zrovna ja na ni moc nedam; vetsinou se snazim programovat v necem, co neni uplne mainstream (Forth, dneska nejvic Lua a Clojure) :-p

  • 7. 6. 2016 21:57

    ldx (neregistrovaný) ---.opera-mini.net

    Svět potřebuje nějaký jazyk pro 21. století, který nahradí to ZOO nestvůr, které tady máme v současnosti (tím myslím Javu, PHP, Python, Perl, Lisp, ASP/C# a další). Navíc idea bytekodu a (povinných) virtuálních strojů se podle mého názoru ukázala jako špatná - proto C/C++ stále kraluje a to asi není nejlepší vizitka.

    Má Julia smysl, vyřeší problémy současných jazyků?

  • 8. 6. 2016 10:58

    noname (neregistrovaný) ---.mameradirychlost.cz

    tak tak, jeden jazyk, ktery se konecne pouci z "chyb" vsech ostatnich jazyku a bude schopen nabidnout kladivko pro kazdy hrebik; oh, co kdyz ten problem nebude hrebik?