abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:33 | Nová verze

    Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Zajímavý článek

    Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.

    karkar | Komentářů: 0
    včera 12:11 | Humor

    Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).

    Ladislav Hagara | Komentářů: 2
    včera 10:44 | IT novinky

    Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.

    Ladislav Hagara | Komentářů: 22
    včera 09:55 | IT novinky

    Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.

    Ladislav Hagara | Komentářů: 2
    včera 09:33 | IT novinky

    Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.

    Ladislav Hagara | Komentářů: 0
    včera 08:11 | Nová verze

    Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    29.4. 20:55 | Nová verze

    Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.

    Ladislav Hagara | Komentářů: 0
    29.4. 16:22 | Nová verze

    Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    29.4. 15:55 | Pozvánky

    Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 2
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (9%)
     (22%)
     (4%)
     (1%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 493 hlasů
     Komentářů: 19, poslední včera 11:32
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Test vašeho programovacího jazyka

    9.2.2007 10:41 | Přečteno: 1894×

    Malý testík vašeho oblíbeného programovacího jazyka zaměřený na jeho vysokoúrovňovost a míru abstrackce.


    Lze zjišťovat a ošetřovat přetečení při počítání s celými čisly?

    Jaká bude hodnota proměnné a v kódu odpovídajícím následujícímu:

      a = 0;
      b = 1/3;
      for (i=0; i<30000; i++)
        a += b

    Jaký je součet všech číslic ve faktoriálu čísla 5000?

    Má automatickou správu paměti?

    Lze při definování funkce pracovat s jejím neznámým výsledkem? (Pozn.: Nevím, jestli je tato otázka položena úplně správně, funkcionální programátoři snad pochopí její smyl. Není tím myšlena rekurze.)

    Má multimetody?

    Dokážete zpaměti výjmenovat všechna jeho klíčová slova?

    Má jmenné prostory nebo jejich obdobu?

    Má podporu regulárních výrazů?

    Lze za běhu vyhodnotit kód v něm napsaný?

    Lze skládat entity sdíleného chování a struktury z více nezávislých entit? (nějaká obdoba násobné dědičnosti)

    Lze za běhu modifikovat entity definující sdílené chování a strukturu (typy, třídy apod.)?

    Lze za běhu modifikovat příslušnost proměnné/objektu k entitě definující sdílené chování a strukturu?

    Lze za běhu modifikovat strukturu proměnné/objektu nezávisle na její sdílené struktuře (např. přídání instanční proměnné jen pro jeden objekt)?

    Má uzávěry?

    Má skutečné nezávislé uzávěry?

    Lze používat libovolné národní znaky v řetězcích?

    Lze používat libovolné národní znaky v identifikátorech?

    Podporuje výjimky?

    Lze při zpracování výjimky vyhodnotit znovu celý ošetřovaný blok kódu?

    Lze při zpracování výjimky pokračovat v provádění kódu s alternativní hodnotou chybného výrazu?

    Máte přístup k zásobníku volání a možnost ho měnit?

    Lze ze zásobníku volání získávat údaje, jako je jméno funkce, její parametry, jména a hodnoty proměnných? Jde tyto hodnoty upravovat?

    Má podporu paralelních výpočtů?


    Hodnocení:

    0 a více bodů: Váš jazyk je nejlepší!

    Další vhodné otázky směle uveďte v diskusi.

           

    Hodnocení: 60 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    9.2.2007 10:57 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    S tím faktoriálem jsi mi nasadil brouka do hlavy. :-) irb(main):014:0> (1..5000).inject(1){|a,b| a*b}.to_s.split(//).inject(0){|a,b| a+b.to_i}
    => 67698
    Asi bych si měl rozšířit knihovnu standardních helper metod. :-) Jak by to bylo ve Smalltalku? Neříkej, že jsem ve Squeaku přehlédnul metodu, která k celému číslu vrátí pole jeho číslic. :-)
    9.2.2007 11:17 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Já se s tím taky neštval ;-)
    5000 factorial asString inject: 0 into: [:sum :char | 
      sum + char asString asInteger]
    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 11:29 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Jo tak, Collection>>inject:into: pro aString, už chápu. :-) Hmm, Ruby by fakt v něčem potřebovalo trošku dotáhnout do konce, to je pravda. :-)
    9.2.2007 15:54 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Tak jsem vykouomal kratší verzi ;-)

    (5000 factorial asString asByteArray - 48) sum
    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 16:06 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mno jo, líp už to nepůjde. :-D Taky mně totiž ex post napadlo rubí řešení v tomhle stylu. ;-) Tohle je taky úplně zbytečná pakárna, ale naprosto k sežrání: :-D
    (5000 factorial asString asByteArray - 48) asBag valuesAndCounts
    9.2.2007 16:11 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mimochodem, Ruby definuje, že znaková sada je vždy nadmnožina ASCII? :-)
    9.2.2007 16:14 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mno většina lidí používá řetězce buď v ASCII, nebo v nějakém zpětně kompatibilním kódování. ;-) Zatím mají řetězce v Ruby jen málo sémantiky vyšší, než jakou má pole bajtů, počínaje 1.9.1 by součástí řetězce měla být informace o kódování obsahu. ;-)
    9.2.2007 16:23 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    No právě, proto odčítat 48 není zrovna košer ;-)
    9.2.2007 16:30 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    irb(main):004:0> 273016.to_s.each_byte{|x| puts x-48}
    2
    7
    3
    0
    1
    6
    Prozatím to funguje a ještě nějakou dobu bude. ;-)
    9.2.2007 11:08 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Studie dokonalosti X zadana vyrobcem/naruzivym uzivatelem X (kde X_'Smalltalk'.)?
    9.2.2007 11:28 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Snad ne. Smalltalk by zdaleka plného počtu bodů nedosáhl a test jde možná spíše na ruku Ruby.
    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 11:44 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mimochodem, jak to vypadá s aktualizací té vývojářské verze Squeaku, co máš na stránkách? :-) Bude nějaká? Je to moc fajn věc, ale to, na čem staví, už je dnes trošku zastaralé, zvláště po vší té internacionalizaci – nebo jsem to tak aspoň pochopil. Nechtělo se mi prozatím moc replikovat námahu, kterou pravděpodobně už podstoupil někdo jiný, kdo se v tom prostředí vyzná lépe.
    9.2.2007 12:00 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ona je už v podstatě zbytečná, protože existuje aktualizovaný balík ImageForDevelopers. Počeštění je tady.
    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 12:13 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Takže to se importuje do standardního 3.9kového image? Bezva, teď ještě binding na Xapian a slušnou databázi a budu spokojený. :-D Rád bych dělal v Seaside, ale přijde mi, že s backendy je to trošku tristní. Netušíš, v čem vlastně ukládá data Bryant v tom svém online vynálezu? Předpokládám, že do image se mu všichni ti lidé nevejdou. ;-)
    9.2.2007 12:25 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Takže to se importuje do standardního 3.9kového image?

    Přesně tak.

    Avi dřív používal Goods, ale pokud vím, tak momentálně preferuje prostou image persistency. Ale asi mu taky přestává vyhovovat, protože se nedávno sháněl po někom, kdo by mu pomohl s implementací ImageSegmentů mimo hlavní image.

    Zkus se podívat na Magmu, třeba ti bude vyhovovat.

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 12:30 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Chápu, že image persistence je ta nejlepší věc od vynálezu ohně, humanistické antikvy a krájeného chleba. :-D Nicméně zkusím driver pro PostgreSQL: Mám v plánu jednu aplikaci, u které bych byl rád, aby její datový zdroj byl přístupný i odjinud (třeba přes ODBC). Jsem sice těžký firebirdista a nestydím se za to, ale pokud by ta webovka měla být v Seaside, musel bych si napsat driver a zrovna wire protokol Firebirdu není dvakrát srandovní :-(, takže ovladač není a já si na to moc netroufám. Přeci jen myšlenka na neplacenou metapráci se mi moc nelíbí.
    9.2.2007 11:22 marbu | skóre: 31 | blog: hromada | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Jaký je součet všech číslic ve faktoriálu čísla 5000?

    další kód, tentokrát v Haskellu :)
    fact :: Integer -> Integer
    fact n = product [1..n]
    
    numc :: Integral a => a -> a
    numc 0 = 0
    numc a = (a `mod` 10) +  numc (a `div` 10)
    
    pak  v interpretu:
    Main> ( numc . fact ) 5000
    67698
    
    There is no point in being so cool in a cold world.
    9.2.2007 12:35 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    $ python
    >>> reduce(lambda a,b: int(a)+int(b), str(reduce(lambda a,b: a*b, range(2, 5001))))
    67698
    
    Táto, ty de byl? V práci, já debil.
    9.2.2007 12:40 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    ždibec času by ušetřilo xrange místo range, ale v tomhle se to ztratí. Tady má perl co závidět v rychlosti.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    9.2.2007 13:01 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Se mi tam nelíbí ty lambdy, šlo by použít type(0).__add__ a type(0L).__mul__, jenže tyhle wrappery nedělají auto konverzi na long, ty longové zase neakceptují int, a range nejde přinutit dělat longy, takže by to bylo krapet rychlejší ale na zápis delší.
    Táto, ty de byl? V práci, já debil.
    9.2.2007 15:46 miro | skóre: 19 | blog: miro
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ma to cosi do seba, pisat taky kod na par riadkov.
    Holt, javisti to maju tazsie :(
    BigInteger fact = BigInteger.ONE;
    for(int k=1;k<=5000;k++)
    	fact = fact.multiply(BigInteger.valueOf(k));
    
    int digitSum = 0;
    BigInteger ten = BigInteger.valueOf(10);
    while(!fact.equals(BigInteger.ZERO))
    {
    	digitSum += fact.mod(ten).intValue();
    	fact = fact.divide(ten);
    }
    
    System.out.println(digitSum);
    
    9.2.2007 14:54 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    I Haskell dokáže být jazykem hravých one-linerů :-)

    (foldl1 (+) . map (\s -> (read [s])::Int) . show . product) [1..5000]
    9.2.2007 14:56 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Tedy (sum . map (\s -> (read [s])::Int) . show . product) [1..5000], samozřejmě :)
    9.2.2007 15:38 marbu | skóre: 31 | blog: hromada | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    map (\s -> (read [s])::Int) . show
    ja si rikal ze to musi jit mnohem elegantneji :-)
    There is no point in being so cool in a cold world.
    9.2.2007 12:33 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Perl ad1)

    $ perl -le '$b=1/3; for($i=0; $i<30000; $i++) {$a +=$b} print $a;' 
    10000.0000000003
    
    Až jsem byl sám překvapen. Jinak typově (netransparentně) a pomalu:
    perl -mMath::BigRat -le '$b=new Math::BigRat "1/3"; for($i=0; $i<30000; $i++) {$a +=$b} print $a;'
    10000

    ad2)

    perl -mMath::BigInt -le '$a=new Math::BigInt 1; for($i=2; $i<=5000; $i++) {$a *= $i}; $b=0; $b+=$_ for split "", $a; print $b'
    67698
    Nesplněno, musí se otypovat.

    ad3) Samozřejmě

    ad4) Nerozumím otázce, alo co bych si pod tím představil, tak to určitě ne.

    Dál je to celkem nuda, většinu z toho levou zadní.

    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    9.2.2007 12:40 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Docela by mě zajímaly perlovské odpovědi na otázky:
    Máte přístup k zásobníku volání a možnost ho měnit?

    Lze ze zásobníku volání získávat údaje, jako je jméno funkce, její parametry, jména a hodnoty proměnných? Jde tyto hodnoty upravovat?
    9.2.2007 12:58 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Máte přístup k zásobníku volání a možnost ho měnit?
    Čtení ano, měnit ne. Jestli jsem teda dobře pochopil otázku, tak by se jednalo o změnu návratové adresy ze sub. Dobrej joke, ale až to někdy budu potřebovat, tak si na to udělám nějakej modul :-)
    Lze ze zásobníku volání získávat údaje, jako je jméno funkce, její parametry, jména a hodnoty proměnných? Jde tyto hodnoty upravovat?
    Lze získat jméno funkce, a zjistit všechny globální proměnné a měnit je, modifikovat lexikální proměnné nejde a ani zjišťovat jejich jména.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    9.2.2007 15:20 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Čtení ano, měnit ne. Jestli jsem teda dobře pochopil otázku, tak by se jednalo o změnu návratové adresy ze sub. Dobrej joke, ale až to někdy budu potřebovat, tak si na to udělám nějakej modul

    Primárně bylo myšleno ho část stornovat, vyvolat návrat v dané hloubce s určenou hodnotou, serializovat ho apod., takže užitečné operace pro vytváření debuggeru, kontinuací apod.

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 13:05 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Dokážete zpaměti výjmenovat všechna jeho klíčová slova?
    Nevím (to bych si musel otestovat), ale zpaměti vím, jak je zjistit:
    python -c 'import keyword; print keyword.kwlist'
    
    To se taky počítá? :-D

    BTW: vcelku hezký test. Existuje jazyk, který dostane plný počet bodů?
    When your hammer is C++, everything begins to look like a thumb.
    9.2.2007 13:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Existuje jazyk, který dostane plný počet bodů?“
    Tipuju, že se bude jmenovat Eintopf++ … :-D
    9.2.2007 13:13 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Dnes spíše Eintopf#, nebo Eintopf.NET ;-)
    When your hammer is C++, everything begins to look like a thumb.
    9.2.2007 15:30 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    To se taky počítá?

    Nejsem proti :-)

    Existuje jazyk, který dostane plný počet bodů

    Asi libovolný přirozený ;-)

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 15:34 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Asi libovolný přirozený ;-)
    Pichi bude rád, že jeho Perl vyhrál. :-D A já budu rád za Englisc Spræc. :-D
    9.2.2007 13:57 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Test článek je moc hezký, ale zapomněl si položit základní otázku ve vesmíru, a to :

    K čemu chceme ten jazyk používat a jaký problém chceme řešit.

    Všechny ty body v článku jsou pak plus mínus nepodstatná omáčka.

    9.2.2007 14:26 ondracch | skóre: 19 | blog: Mozková kreč
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    To je pravda. Ve VHDL je pro moje účely funkce faktorial úplně zbytečná.
    Proč myslíš, že nemůžeš žít jinak? Pořád Tvořím...
    9.2.2007 15:32 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    To je ovšem otázka směřovaná na neomezenou aritmetiku, ne na faktoriál jako takový.

    I'm sure it crashed in the most type-safe way possible.
    Josef Kufner avatar 9.2.2007 15:53 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ale to na věci vůbec nic nemění ;-)
    Hello world ! Segmentation fault (core dumped)
    9.2.2007 15:39 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ten testík je jen podpůrný prostředek k tomuto rozhodnutí. Potřebuji přesné výpočty, neomezenou aritmetiku, kontinuace, komplexní zpracování výjimek, parelelismus atd.?
    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 16:14 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ten testík je silně zaujatý - je z něj jasně vidět politická orientace autora a jeho módní názory na to co je pro něj in, ale vůbec nic to neříká o výběru jazyka.

    Já třeba bych do výběru jazyka zahrnul především tyto vlastnosti:

    Má jazyk stabilní normu - ať už de jure, nebo de facto?

    Dodržuje a hodlá dodržovat jazyk zpětnou kompatibilitu - a nebo už předem deklaruje, že na ní bude kašlat a tím mě nutit neustále přepisovat všechno pořád dokola (nápověda - nevyhoví Python)

    Jak moc je jazyk podporován a na kolika platformách - mohu se spolehnout, že na platformách, které budu potřebovat v nejbližších x letech bude k dispozici dobrý kompilátor/intepretr/runtime pro tento jazyk

    Jak moc kvalitní knihovny a moc kvalitní dokumentace k tomu je.

    Je jazyk navržet čistě teoreticky, a nebo jej navrhoval i praktik.

    Atd.. Tyto body jsou pro mě při výběru jazyka důležitost číslo jedna. A jsem ochoten zamhouřit oči nad nějakou chybějící featurkou, pokud výše zmíněné body vyjdou v super provedení.
    9.2.2007 16:17 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Myslím, že autorův oblíbený jazyk celkem s přehledem vyhoví i těmto požadavkům. ;-) Ono taky třicet let existence se už dá za stabilitu docela považovat.
    9.2.2007 16:40 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Autorův oblíbený jazyk jim možná vyhoví, ale to co napsal do zápisku je děs a hrůza. Autor asi opravdu déle neudržoval něco většího v praxi. Půlka jeho požadavků mě osobně je zcela u zadnice jestli jí jazyk má, nebo nemá, natož abych se podle toho nějak rozhodoval (uznávám, že je to subjektivní). Skoro mě přijde, že je to takové výběrové řízení po českém stylu - je předem známo jaký má být vítěz a podle toho se upraví podmínky. Já jen doufám, že takto si někdo jazyk nevybírá podle toho testu a pokud ano, tak bych si přál, aby si to ten dotyčný vyžral sám. Omlouvám se za drsnost.
    9.2.2007 16:44 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Viz http://www.robweir.com/blog/2006/01/how-to-hire-guillaume-portes.html. ;-) You want to hire a new programmer and you have the perfect candidate in mind, your old college roommate, Guillaume Portes. Unfortunately you can't just go out and offer him the job. That would get you in trouble with your corporate HR policies which require that you first create a job description, advertise the position, interview and rate candidates and choose the most qualified person. So much paperwork! But you really want Guillaume and only Guillaume. So what can you do? The solution is simple. Create a job description that is written specifically to your friend's background and skills. The more specific and longer you make the job description, the fewer candidates will be eligible. Ideally you would write a job description that no one else in the world except Guillaume could possibly match. Don't describe the job requirements. Describe the person you want. That's the trick. So you end up with something like this: * 5 years experience with Java, J2EE and web development, PHP, XSLT
    * Fluency in French and Corsican
    * Experience with the Llama farming industry
    * Mole on left shoulder
    * Sister named Bridgette
    :-D :-D
    9.2.2007 19:15 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Copak podle hodnocení váš jazkyk neskončil nejlepší?

    Pro pořádek, můj favorit není Smalltalk, zde jsou jeho výsledky:

    1) Smalltalku nepotřebuje, Java nelze, C# lze

    2) test na přesnou aritmetiku se zlomky, ANO

    3) test na neomezenou aritmetiku, ANO

    4) přítomnost GC, ANO

    5) NE

    6) NE

    7) test jednoduchosti. Jednoduších jazyků je celá řada

    8) NE

    9) ANO

    10) částečně

    11) ANO

    12) NE

    13) NE

    14) "Programovací jazyk bez closures není programovací jazyk!" -- Ladicek. ANO

    15) záleží na implementaci, Squeak ne

    16) záleží na implementaci

    17) záleží na implementaci

    18) ANO

    19) 20) pokročilé zpracování výjimek, ANO

    21) 22) pokročilá reflexe, pro Smalltalk zásadní vlastnost

    23) ANO, snadná automatická paralelizace ne

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 19:51 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Já jen doufám, že takto si někdo jazyk nevybírá podle toho testu a pokud ano, tak bych si přál, aby si to ten dotyčný vyžral sám.

    Podle vseho se vybirani jazyka podobnym zpusobem jako v tomto blogu muze obcas velice vyplatit, Paul Graham je toho dukazem :-)
    ^D
    9.2.2007 16:49 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ještě je potřeba přidat tyto podmínky, které považuji za důležité při výběru jazyka:

    Je zdrojový kód jazyka snadno udržovatelný?

    Je zdrojový kód jazyka snadno pochopitelný, nebo lze jej takovým učinit?

    Je to jazyk, kde se věci zapisují přímo, a nebo je nutné ďábelské trikování a psaní přes ruku?

    Umožňuje jazyk bezproblémový běh bez toho, aniž by se musel distribuovat zdrojový kód? (jak jsem zjistil je to slabina víc jazyků, než jsem tušil)

    Lze ten jazyk solidně použít i mimo akademické, nebo nadšenecké kruhy?

    Jazyk, který má příliš málo klíčových slov a je nutné řadu běžný věcí "opisovat" - má u mě mínus, a zpravidla se i hůře udržuje, chápe a leckdy je nutné zbytečně trikovat.
    9.2.2007 17:04 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Viděl bych to i takhle. :-) Ale následující otázka

    „Je to jazyk, kde se věci zapisují přímo, a nebo je nutné ďábelské trikování a psaní přes ruku?“

    mi přijde dost subjektivní. :-D Pro mě třeba od objevu funkcí vyššího řádu přestal být přímým zápisem Cčkovký for cyklus – přesunul se pro mě do kategorie „psaní přes ruku“.
    9.2.2007 22:34 thingie
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Céčkový for je hnus. Teda, v cčku ne, ale v Javě třeba, to už je výsměch...
    10.2.2007 09:55 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    No jo no, jenže praxe je holt jiná -- zákazníci vyžadují kompatibilitu s 1.4kou. A tak je to se vším. Sneste se na zem...
    9.2.2007 17:29 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Co na to říct, snad jen citaci z textu:

    Malý testík vašeho oblíbeného programovacího jazyka zaměřený na jeho vysokoúrovňovost a míru abstrackce.

    Proto nic neříká o výběru jazyka.

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 18:50 Miloslav Ponkrác | blog: miloslavponkrac
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Takže jako ošetření přetečení při počítání s celými čísly je vysokoúrovňost. Aha tak sorry. Já myslel, že high level jazyk mě s takovými věcmi otravovat nebude.

    Stejně tak nechápu co používání libovolných národních znaků v identifikátorech má společného s vysokoúrovňovostí třeba.

    Atd..
    9.2.2007 18:53 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    No přece to, že na screenshotech to vypadá hrozně sexy. :-D
    9.2.2007 19:33 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Takže jako ošetření přetečení při počítání s celými čísly je vysokoúrovňost. Aha tak sorry. Já myslel, že high level jazyk mě s takovými věcmi otravovat nebude.

    Nebude, ale pro hodně jazyků to samozřejmost není.

    Stejně tak nechápu co používání libovolných národních znaků v identifikátorech má společného s vysokoúrovňovostí třeba.

    Vypovídá to o obecnosti internacionalizace.

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 21:33 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Abych tuhle lehkou konfrontaci trochu odlehčil, tak jsem pro vás vymyslel vtip, ve kterém byste se mohl najít ;-)

    Smalltalk má velice úsporné běhové prostředí. Například na mém počítači nezabírá ani bajt místa.

    I'm sure it crashed in the most type-safe way possible.
    9.2.2007 14:29 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Po pravdě řečeno, daleko důležitější mi přijde otázka "Jak dlouhý a složitý bude v takovém jazyce Hello world?" :-)

    Spousta dnešních "moderních" jazyků totiž má spoustu sofistikovaných featurek, ale jejich autoři jaksi zapomněli na to, že jednoduché věci by měly jít napsat jednoduše. A to je v životě často daleko důležitější než vícenásobná dědičnost či multimetody.
    9.2.2007 14:38 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    A proto v Ruby miluju zkratku a = `cat file.txt`. :-D
    9.2.2007 14:54 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Kdysi jsem našel "Hello, world" v C, Fortranu, BASHi a SH. Naráz.
    cat /*dev/null; echo "Hello world"\!
    cat <<c*/ /dev/null | cat > /dev/null
    c */ () {} /*
    c */ main()( cat(); printf("Hello world\n"); } /*
    17  format(  'Happy New Year!')
        write (6, 17)
        stop
        end
    o Vadim Antonov, avg@hq.demos.su
    */
    Akorát se mi zdá, že tam chybí #include <stdio.h>, ale ten by možná mohl být na začátku (podle toho, jak se Fortran staví ke znaku #)
    Quando omni flunkus moritati
    9.2.2007 14:57 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    To je nějaké zvláštní Céčko, že v něm jde "cat /dev/null" ;-)
    9.2.2007 15:20 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Nepochopil.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    9.2.2007 15:48 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Kdo že? :-)
    9.2.2007 16:39 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    No, "cat /dev/null" asi moc dobře nepůjde, ale když se podíváš pořádně, tak tam taky nic takovýho není ;-)
    Quando omni flunkus moritati
    9.2.2007 17:14 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Céčko naparsuje cat, pak začne komentář, skončí na následujícím řádku a hned za ním je /dev/null. Přehlédl jsem něco? Pokud ano, tak i preprocesor od GCC ;-)
    9.2.2007 17:48 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Njn, tak můžeš tomu chlapíkovat, co to vymyslel, poslat bugreport ;-)

    Zkusil jsem to předělat, takže to teď zbaští jak gcc, tak bash. Ale nevim, co na to Fortran. Není mezi přítomnými fortranista?
    cat /*dev/null; echo "Hello, world"\!
    cat <<c*/ /*dev/null | cat > /dev/null
    c / () {} /*
    c */ ;main(){ printf("Hello, world!\n"); } /*
    17  format(  'Hello, world!')
        write (6, 17)
        stop
        end
    o Vadim Antonov, avg@hq.demos.su
    */
    Quando omni flunkus moritati
    9.2.2007 17:54 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Nojo, jsou tam chyby. Takže doplnit jedno písmenko a opravit další a C a shell by nám fungoval:
    $ gcc -o hello hello.c 
    hello.c: In function 'main':
    hello.c:1: warning: incompatible implicit declaration of built-in function 'printf'
    $ ./hello
    Hello world
    $ sh hello.c
    Hello world!
    $ cat hello.c
    cat /*dev/null; echo "Hello world"\!
    cat <<c*/ /*dev/null | cat > /dev/null
    c */ () {} /*
    c */ main(){ cat(); printf("Hello world\n"); } /*
    17 format(  'Happy New Year!')
     write (6, 17)
     stop
     end
    o Vadim Antonov, avg@hq.demos.su
    */
    
    Teď ještě nějaký fortranista aby rozchodil tu fortranovou čáast.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    9.2.2007 18:11 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Fortranu stačí opravit indentaci a "o" na předposledním řádku změnit na "c":
    cat /*dev/null; echo "Hello world"\!
    cat <<c*/ /*dev/null | cat > /dev/null
    c */ () {} /*
    c */ main(){ cat(); printf("Hello world\n"); } /*
     17   format('Happy New Year!')
          write (6, 17)
          stop
          end
    c Vadim Antonov, avg@hq.demos.su
    */
    
    9.2.2007 15:24 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Jo, to je ženiální. Ještě že se komentáře píšou všude trochu jinak.
    Táto, ty de byl? V práci, já debil.
    9.2.2007 15:32 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Lze zjišťovat a ošetřovat přetečení při počítání s celými čisly?

    Ehm? Copak celá čísla přetékají?

    http://www.lisp.org/HyperSpec/Body/syscla_integer.html: An integer is a mathematical integer. There is no limit on the magnitude of an integer.

    Ale jinak hezký test...

    BTW,
    (loop for i = (fact 5000) then (truncate i 10)
          for n = (mod i 10)
          sum n
          until(zerop i))
    67698
    
    nebo
    (reduce #'+ (format nil "~D" (fact 5000))
              :key (lambda (n) (- (char-code n) (char-code #\0))))
    67698
    (Common Lisp)
    9.2.2007 17:00 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Není lepší tohle?
    (reduce #'+ (format nil "~D" (fact 5000))
              :key #'(lambda (n) (parse-integer (string n))))
    Přijde mi to přenositelnější. :-) Přinejmenším mám pocit, že podle CLHS ani kódování standardních znaků nemusí být nutně ASCII.
    9.2.2007 17:46 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    O parse-integer jsem taky uvažoval, ale zase se musí převádět na řetězec :(

    Ad přenositelnost, měl jsem za to, že je zaručeno, že znaky sice nemusí být ascii, ale že musí jít za sebou - teď to ale nikde nevidím, a možná to bylo v jiném jazyce :)

    Taky by šlo přenositelně
    (position n "0123456789")
    9.2.2007 18:03 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Aha, tak já to vidím. :-) Takže máš asi pravdu. Jen si nejsem jist, jestli „the numeric characters as a group are not interleaved with alphabetic characters“ dává záruku, že nebudou promíchané s něčím jiným…i když to by asi byla velmi bizarní implementace. :-)
    9.2.2007 20:37 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    U druhé otázky je trochu problém, co znamená „odpovídající“. Je 1.0 nebo 1f odpovídající, pokud daný jazyk takhle zapisuje desetinná čísla?

    A vzhledem ke dvěma otázkám na closures a tomu, že se closures vehementně derou do Javy 7 – může mi někdo vysvětlit, k čemu je to dobré? Zatím všechny příklady, které jsem viděl, se dají stejně dobře nahradit virtuální třídou s jednou metodou (v Javě nejspíš anonymní třída implementující interface). A obdoba closures v JavaScriptu, kdy stejný kód můžete volat i jako funkci i jako metodu mi připadá jako nejhorší věc na tomhle skriptovacím jazyku. Existuje tedy takové využití closures, které opravňuje zavedení nové konstrukce do jazyka?
    9.2.2007 21:01 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Some people just don't get it. :-D Vypozoroval jsem, že že čím je nějaká konstukce jazyka v zápisu úspornější, tím víc se používá. Věř tomu nebo ne, ale spoustě lidí vadí že místo
    (lambda (x) (* 2 x))
    nebo nedejbože
    [:x | 2*x]
    musejí psát
    new IUnaryOpFloatFloat {
        float compute(float z) {
            2*z
        }
    }
    nebo jak že to musíte psát v Kafi. To asi bude důvod, proč „abstrakce“ přes třídu spoustu lidí štve.

    Existuje taková hypotéza, kterou mají na svědomí pánové Sapir a Whorf. Ta říká, že myšlení člověka je ovlivňováno jazykem, kterým se vyjadřuje. (Orwell se toho taky pěkně chytil. ;-)) Když to řeknu jinak, pokud budou lidé vyrůstat v prostředí omezeného jazyka, stanou se z nich…no, Orwellovi omezenci. Prostě je nikdy nenapadnou některé věci, které by člověka mluvícího jiným jazykem napadly třeba i přirozeně. V kontextu programování si třeba dost dobře nedokážu představit, že by javista dokázal vynalézt MapReduce. To musel v Googlu vymyslet nějaký lisper. :-)

    Představ si, že by se jiný Filip Jirsák, známý to programátor v BASICu :-D, ptal, k čemu že jsou ty místní proměnné, pojmenované procedury (a dokonce i funkce), k čemu je rekurze a OOP. A že to nechápe. Určitě by ses ho zeptal, jak on bez toho může žít. :-D Taky jsem před patnácti lety po BASICu objevil Pascal a taky jsem zprvu nechápal. No, ale dnes mi nezbývá, než se Tě zeptat: Jak jsi mohl dodnes přežít bez uzávěrů? ;-)
    9.2.2007 21:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    A vůbec, jestli Ti záleži na vlastním mozku, mazej se vzdělat! ;-) A žádné řeči o závorkách, nebo Tě s jednou přetáhnu po zadku! :-) Je to zadarmo a lidem to stejně nevoní. :-)
    9.2.2007 22:35 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ale také čím úspornější je nějaká konstrukce, tím více je write-only. Že je Java poměrně ukecaná jsem vždycky považoval za její přednost, a myslel jsem, že nejsem sám.

    Souhlasím, že myšlení je omezené výrazovými prostředky jazyka. Ale zmnožování možností jazyka ještě nevede k lepšímu přemýšlení. Viz třeba současné umění – je v něm povolené už cokoliv, za umělecké dílo je možné prohlásit bílé plátno nebo kýbl s vodou a hadr, ale že by nějak vzrostla kvalita umění…

    Chápu užitečnost closures a zkrácených zápisů pro skriptovací jazyky, ve kterých se píšou krátké skripty nebo prototypy. Ale pro velké aplikace mi to připadá spíš škodlivé. Samozřejmě vím, že je možné psát velké aplikace i v Perlu nebo Pythonu – ale to už pak stejně je nutné dodržovat nějakou štábní kulturu. No a Java už má tu štábní kulturu přímo v definici jazyka, takže si programátor sice nemůže vybírat, na druhou stranu mohou s tou štábní kulturou počítat i vývojářské nástroje. Mně vyhovuje takový jazyk, kde mám sice omezené výrazové možnosti, ale zase mám při psaní velkou podporu IDE. Někdo zase radši píše zhuštěné konstrukce, i když je musí psát z hlavy a nemůže je tolik refaktorovat nebo využít tolik různých statických analýz kódu. Ale nemyslím si, že by se Java měla snažit vyhovět všem. Jedno PHP myslím stačí :-)
    9.2.2007 23:01 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    IMHO je to zcela naopak: co dela ono \x -> 2*x (dalsi varianta do sbirky) je videt na prvni pohled do zdrojaku, ale nez nekdo prelouska ten javovsky nesmysl, tak se osype - mnohem vic write-only mi proto prijde ta Java. Nehlede na produktivitu prace, vzdyt ten kus Javy, at uz dela cokoliv, je skoro desetkrat tak dlouhy...

    Pokud si o sobe nekdo mysli, ze je prase, a proto bude psat v Jave, ktera ho donuti psat stejne jako vsechny ostatni... pak dobre mu tak. My ostatni umime psat pekne a jeste se pri tom citit pohodlne :-)

    A kdyz si nekdo vybere Javu proto, ze si mysli, ze jeho zamestnanci jsou prasata... tak taky dobre mu tak, ale pro takoveho bych delat nechtela. :-)

    A vubec... proste v zasade souhlasim s timhle.
    ^D
    10.2.2007 11:39 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ten javovský kód je přesný popis algoritmu výpočtu n! a spočítání součtu číslic. Když půjdete řádek po řádku a budete popisovat, co ten řádek dělá, dostanete zpět popis toho algoritmu v přirozeném jazyce. Produktivita práce myslím delším kódem nijak neutrpěla, protože ten kód je prostě přepsaný algoritmus, nebylo nad čím přemýšlet. Už jenom z toho, že se zde sešlo několik postupně vylepšovaných příkladů z jednoho skriptovacího jazyka je zřejmé, že ty konstrukce je nutné promýšlet, ověřovat si, jak se chovají které operace, zda to nebude mít nějaké vedlejší efekty…

    Původně programovalo pár hackerů, kteří měli na to vymýšlet velice optimalizované programy. Dnes jsou ale daleko větší požadavky na velké množství kódu, ale opravdových hackerů je pořád stejně. Takže logicky vyvstane požadavek na programovací jazyk pro masy těch, kteří dokáží psát průměrný kód. A takovým jazykem je právě třeba Java. Samozřejmě je pak nutné, aby u každého projektu byl někdo, kdo rozpozná, které části v programu nemohou být napsány průměrným programátorem, ale které musí napsat hacker.

    Takhle je to se vším. Většina lidí se třeba přepravuje osobními auty, přestože ta umí jenom jezdit z místa na místo. Ale pokud je potřeba nějaká speciální věc, použije se nákladní auto, traktor, jeřáb… A nikoho nenapadne do práce jezdit bagrem, přestože ten jej umí také přepravit z místa na místo, ale pro městský provoz je zkrátka nevhodný. A stejně tak nikoho nenapadne pokoušet se dělat výkop felicií.

    Jsem docela rád, že průměrní programátoři píší weby a informační systémy v PHP a v Javě, a ovládací software jaderných elektráren, letadel nebo vlaků píšou hackeři. Pokud by všichni psali v asembleru a vývoj software pro jadernou elektrárnu by jednou připadl na hackera a podruhé na průměrného programátora, necítil bych se zrovna bezpečně.

    Prasit se dá samozřejmě v libovolném programovacím jazyce, tomu nezabrání nic. Poměrně častý způsob prasení v Javě je, že v tom někdo píše jako by to bylo C nebo C++. Ale to zase už záleží na programátorském týmu – pokud na nějaký zprasený kód narazím, opravím ho a autorovi se pokusím vysvětlit, co udělal špatně a jak to příště udělat lépe.
    9.2.2007 23:04 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Ale také čím úspornější je nějaká konstrukce, tím více je write-only.“

    Mno, to není vždy nezbytné, já myslím, že smalltalkovské bloky jsou zrovna fíčura z těch zároveň mocných a zároveň čitelných. ;-) (A to úplně pomíjím skutečnost, jak zásadní jsou z teoretického pohledu.) Ono s tím dodržováním štábní kultury…věř mi, že si blbec cestu najde. Kamarád dělal cosi v bance a povídal takové věci, že jsem se nestačil divit. Spíš mám pocit, že Java některým lidem umožní tou „vnější štábní kulturou“ ve skutečnosti jen zakrýt nulovou programátorskou kompetenci. :-( Java umožňuje vyrovnat masy kodŕů do latě, nebo se tak aspoň tváří, ale z šedi prostředka se nikdy žádná historie moc nepsala. K pokrokům dochází na okrajích. :-)

    A ohledně ukecanosti…pokud existují tuny statistických důkazů, že počet chyb v SW na tisíc řádků je v podstatě nezávislý na jazyku, opravdu chceš psát co nejdelší programy? Aby v nich bylo co nejvích chyb? To mi nějak uniká…
    10.2.2007 12:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    A ohledně ukecanosti…pokud existují tuny statistických důkazů, že počet chyb v SW na tisíc řádků je v podstatě nezávislý na jazyku, opravdu chceš psát co nejdelší programy? Aby v nich bylo co nejvích chyb? To mi nějak uniká…
    To by pak stačilo chyby v programu opravovat tím, že by se odstranily konce řádků. Takže bych výrok o počtu řádků poupravil, že počet chyb v SW na tisíc programových instrukcí je v podstatě nezávislý na jazyku, čímž se ony úsporné zápisy na jeden řádek hned natáhnout, protože tam je instrukcí zpravidla několik. No a ne každá instrukce je stejně složitá, takže by se jim měla přidat ještě nějaká váha (instrukce přičti číslo je rozhodně jednodušší než instrukce pro každý prvek seznamu proveď následující kód) – čímž se dostaneme k závěru, že počet chyb na tisíc vážených instrukcí je vpodstatě nezávislý na jazyku.

    Já taky před pár lety napsal parser bez omáčky okolo na 7 řádků, ale když jsem to pak musel upravovat, došlo mi, že tudy cesta nevede.
    do {
      $REcount = ($text =~ s/\?\{([^}:]*)\}/&_nahraditGlobals($1)/ge);
      $REcount += ($text =~ s/\?\{([^}:]*):([^{}]*(?:(?:\$|\*)\{[^{}]*(?:\*\{[^}]*\}[^{}]*)*[^{}]*\}[^{}]*)*[^{}]*)\}/&_nahraditGlobalsParametr($1,$2,$blok)/ge);
    } while ($REcount > 0);
    $text =~ s/\$\{([^}:\|]*)(?:\|[^\}]*)?\}/$lokalniPromenne{$1}/ge;
    $text =~ s/\$\{([^}:\|]*):([^{}]*(?:\*\{[^}]*\}[^{}]*)*[^{}]*)(?:\|[^}]*)?\}/&_nahraditLokalniPromenne($1,$2)/ge;
    $text =~ s/\*\{([^}:]*)(?:\|[^\}]*)?\}/_odkaz($1)/ge;
    $text =~ s/\*\{([^}:]*):([^}]*)(?:\|[^\}]*)?\}/&_odkazSParametrem($1,$2)/ge;
    return $text;
    
    Java umožňuje vyrovnat masy kodŕů do latě, nebo se tak aspoň tváří, ale z šedi prostředka se nikdy žádná historie moc nepsala. K pokrokům dochází na okrajích. :-)
    Souhlas, ale tu šeď prostředka také potřebujeme, nemůžeme mít pouze okraje. Ale samozřejmě je důležité rozpoznat, kde už průměr nestačí a je potřeba nějaké lepší řešení. Ono i při programování v Javě narazí programátor na problémy, nad kterými je nutné přemýšlet a nedokáže je správně napsat každý. Jenže pokud je někdo napíše špatně, nebere se to u Javy jako problém programátora, ale problém platformy. Třeba pokud má někdo utkvělou představu, že konstrukce objektu je atomická operace, a napíše celý článek o tom, jak se to chová špatně. A najde se spousta lidí, kteří mu na to skočí :-)
    9.2.2007 23:46 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka

    Jestli jsi ho ještě neviděl, podívej se na tohle video poměrně detailně a velice hezky popisující IDE Smalltalku z přelomu sedmdesátých a osmdásátých let (napsané samozřejmě také ve Smalltalku).

    Smalltalk totiž není jen jazyk, je to komplexní objektový systém včetně vývojových nástrojů a musí se brát jako celek. Nemusí používat složité statické analýzy kódu k tomu, aby měl efektivní IDE. Tam, kde Java musí používat složité berličky, Smalltalk nabízí jednoduchý uniformní přístup a absolutní otevřenost (i právě díky uzávěrům). http://www.squeak.org/

    I'm sure it crashed in the most type-safe way possible.
    10.2.2007 17:27 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ale také čím úspornější je nějaká konstrukce, tím více je write-only.
    S tím si dovoluji nesouhlasit. Důležité je, nakolik se v daném jazyce dá programovat přímočaře. Řekněme, že chci zjistit maximum posloupnosti čísel. To je operace, kterou většina z nás považuje za něco elementárního, nad čím není potřeba dál přemýšlet (když vymýšlím algoritmus, řeknu si "a teď z těch čísel najdu maximum" a hned je jasné, co to znamená). Takže dává velice dobrý smysl chtít po programovacím jazyku, aby v něm taková operace šla také přímočaře napsat.

    Tím "přímočaře" myslím, aby nebylo nutné psát několik řádků popisujících do posledního detailu, co se má přesně stát, nad kterýmiž řádky pak bude každý, kdo vám kouká přes rameno, několik sekund přemýšlet, než mu dojde, že to je opravdu nalezení maxima. A takový ukecaný jazyk rozhodně nezachrání, když bude mít na hledání minima kdovíjakou knihovní funkci, protože si ji sotva mezi tisícovkami funkcí budete pamatovat a ani ji okamžitě nepozná čtenář. Jistě, můžete namítnout, že existují nástroje, které Vám pomohou funkci najít nebo když ji vidíte, vysvětlit, co znamená, ale to jsou pouze berličky snažící se problém zmírnit.

    Mnohem lepší je jazyk, který má dostatečně silný repertoár základních operací, na jednu stranu tak malý, že si jej každý může pamatovat, na druhou stranu tak bohatý, aby pomocí něj vše, co si představujeme jako snadné, šlo také snadno napsat. Tomu je Java na hony vzdálena, blíží se spíš Haskell a některé další, obvykle také funkcionální jazyky.

    V takovém jazyku lze pak psát daleko přehledněji, už proto, že nad tím, co se vejde na obrazovku, se daleko snáz přemýšlí. A (pokud zrovna neprogramujete něco strašlivě rozsáhlého) sotva budete potřebovat statický analyzátor sofistikovanější než grep :-)
    10.2.2007 17:34 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    10.2.2007 18:50 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Otázka je, co jsou ty základní operace, které by měly být implementovány jako operátory, a co jsou další operace, které už budou implementovány jako knihovní funkce. Protože těch elementárních operací každý člověk zná desítky tisíc, a tolik operátorů asi těžko budeme mít.

    Strukturované programování bylo vynalezeno již celkem dávno, a od té doby je legitimní mít funkci pro výpočet maxima, která je někde jinde implementována. Takže ten, kdo čte zdrojový kód, vidí max() a může se rozhodnout, zda chce vidět i detaily implementace, nebo se spokojí s tím, že to bude chápat jako elementární operaci.

    Programátor si nemusí knihovní funkci pamatovat, stačí, když ví, že nějaká taková knihovní funkce existuje, nebo dokonce mu stačí podle struktury knihoven tušit, že taková funkce by mohla existovat. Pak má dokumentaci, která není žádnou berličkou, ale zásadní součástí vývoje softwaru. Navíc dokumentace je potřeba úplně stejně, pokud by ten prvek byl elementární součástí jazyka. Programovat bez dokumentace lze pouze v případě, že znám detailně implementaci – a to pak už není nic přímočarého, protože už nemám žádnou operaci maximum posloupnosti čísel, ale musím vědět, jak je tato operace implementována.

    Otázka je, co počítáte do repertoáru základních operací, standardní knihovny Javy do něj podle mne patří, a to je repertoár velmi bohatý. Požadavek na to, aby si repertoár základních operací mohl každý pamatovat neberu, moc operací si pamatovat nechci, ale nevidím jediný důvod, proč všechno co si nepamatuju, mám implementovat znova – daleko lepší je, pokud si umím najít již hotovou spolehlivou a ověřenou implementaci.

    S tím, že popis nějaké operace by se měl vejít na jednu obrazovku souhlasím, v Javě s tím nemám problém. Programovat s grepem je sice hezké, ale efektivita vůbec nejde srovnávat s tím, pokud máte plnou podporu vývojového prostředí, které neustále analyzuje kód, vypisuje varování, nabízí možnosti a umožňuje procházet kódem dle jeho struktury.
    10.2.2007 19:11 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Otázka je, co jsou ty základní operace, které by měly být implementovány jako operátory, a co jsou další operace, které už budou implementovány jako knihovní funkce. Protože těch elementárních operací každý člověk zná desítky tisíc, a tolik operátorů asi těžko budeme mít.“

    Myslím, že elementárních operací stačí desítky. Kolik procent průměrných javistů si uvědomuje, jak hluboký vztah (když se to aspoň nepřesně pokusím přiblížit) je mezi deklarací (a přiřazením do) proměnné a voláním funkce? Kolik z nich by dokázalo napsat příslušnou syntaktickou transformaci? Aha. Ovšem já mnohem radši budu mít v jazyku foldl než max. Je prostě užitečnější mít nástroje, které (nejlépe ortogonálně) spolupracují, než mít kupu specializovaných funkcí. V tomhle ohledu Java připomíná Windows (+ software ze serveru typu slunecnice.cz, prostě kupa jednoúčelových nástrojů), zatímco inteligentnější jazyky (povětšinou ty funkcionální) připomínají Unix.

    Je ostatně prokázáno, že jazyk může být extrémně kompaktní a přitom je stále použitelný, je-li zachována možnost provádět syntaktické transformace. Ano, „průmysl“ si libuje v stavění na zkamenělých výdobytcích předchozích generací. Skutečnost, že je velikost motorů raketoplánu odvozena od prdele koně starořímského plemene, není ve světle této skutečnosti až tak překvapivá, jak jsem si myslel, když jsem to původně zjistil.
    10.2.2007 20:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Myslím, že elementárních operací stačí desítky.
    Pokud maximum ze seznamu patří k takovým operacím, budou těch operací přinejmenším stovky, ne-li tisíce. Software nejsou jen vědecké výpočty nebo automatizace a řízení. Software je třeba také to, co stojí v pozadí „informační společnosti“ – tedy nejrůznější informační systémy. A tam jsou vám elementární operace typu maximum ze seznamu hodnot k ničemu, protože se tam žádné takové operace neprovádějí. To samé s jinými operacemi nad seznamem, než je vkládání a odebírání prvků, průchod seznamem a vyhledání prvku. I takovéhle systémy bankovní aplikace, vyhledávání jízdních řádů, informační kiosek, podnikové účetnictví) ale musí někdo naprogramovat a je dobré, pokud k tomu má vhodné nástroje.
    Kolik procent průměrných javistů si uvědomuje, jak hluboký vztah (když se to aspoň nepřesně pokusím přiblížit) je mezi deklarací (a přiřazením do) proměnné a voláním funkce?
    Vzhledem ke snaze prosadit nějaký zjednodušený zápis properties se tím možná budou muset i průměrní javisté začít zabývat.
    Je prostě užitečnější mít nástroje, které (nejlépe ortogonálně) spolupracují, než mít kupu specializovaných funkcí. V tomhle ohledu Java připomíná Windows (+ software ze serveru typu slunecnice.cz, prostě kupa jednoúčelových nástrojů), zatímco inteligentnější jazyky (povětšinou ty funkcionální) připomínají Unix.
    Hezký způsob, jak dát najevo, že o Javě nevíte vůbec nic. Můžu pak věřit tomu, co píšete o Pythonu nebo Smalltalku, když je s klidem srovnáváte s něčím, o čem skoro nic nevíte?
    10.2.2007 20:39 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Přečtěte si, prosím, můj příspěvek ještě jednou. Právě o maximu ze seznamu mluvím jako o operaci, která je myšlenkově elementární, ale v programovacím jazyku je to přesně kandidát na složení ze dvou operací elementárnějších, takže nepatří ani do knihovny, ani rozepsat.
    10.2.2007 20:49 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ovšem to složení není zrovna intuitivní, takže je nutné si ještě pamatovat, jak že se to má dělat. Děkuji, nechci, radši jako knihovní funkci.

    Že jsme se ale dostali daleko od původního čistě věcného dotazu, zda mohou být closures v Javě užitečné ještě něčím jiným, než ušetřením jednoho řádku…
    10.2.2007 20:56 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ovšem to složení není zrovna intuitivní, takže je nutné si ještě pamatovat, jak že se to má dělat. Děkuji, nechci, radši jako knihovní funkci.

    IMHO rozhodne prijemnejsi, nez si pamatovat, jak se jmenuje knihovni funkce. Ale... my mame mozna dost odlisne predstavy o tom, co je to programovani... verim, ze programator ma vedet, jak se veci *delaji* - jinak to neni programator, ale proste jen lepic kodu. A proto mi prijde prirozenejsi mit funkci, pomoci ktere si na dva radky behem par vterin napisu sto dalsich funkci, nez je po jedne hledat v dokumentaci... (a pak pri cteni kodu zas muzu bud hned videt, nebo dlouho hledat).
    ^D
    10.2.2007 21:36 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Na to, aby se vyprodukovalo takové množství kódu, který je dnes ve světě potřeba, není na téhle planetě dost programátorů-hackerů. A na psaní většiny toho kódu nejsou hackeři ani potřeba – lepiči kódu bohatě stačí. A pro ně je lepší, pokud mají v knihovně ověřenou funkci, kterou v té knihovně díky IDE během pár vteřin najdou. Protože jakmile začne nějaký průměrný lepič kódu tu funkci implementovat sám v nějaké kritické části kódu, použije nejspíš nějaký naprosto nevhodný postup, dost možná neošetří různé podmínky typu přetečení a zaručeně napíše implementaci nepoužitelnou ve vícevláknovém programu.

    Pro spoustu lidí holt program není hodnota sama o sobě, ale prostě jenom potřebují přinutit počítač, aby vzal nějakou hromadu dat, profiltroval je, přepočítal a zase někam vyplivnul – a programovací jazyk je docela dobrý způsob, jak počítači vysvětlit, co konkrétně s těmi daty má udělat. Já vím, že to není nic krásného, ale počítače jsou dnes převážně spotřební elektronika a tak se pro ně píšou spotřební programy.

    Pokud někdo chce napsat internetový portál, měl by rozumět databázím, měl by vědět, jak dělat webové stránky, a potřebuje umět k tomu napsat nějaký kód, který to poslepuje dohromady. Ale z hlediska algoritmů na tom nic není, opravdu je nutné pouze vzít pár knihoven a poslepovat to dohromady. Protože ten člověk chce dělat především něco jiného, to programování je jenom nástroj. A je dobré mít pro takovéhle programování odpovídající nástroj, který už ze své podstaty svádí spíš k doslovnému přepisu algoritmu než k nějaké optimalizaci. Samozřejmě že takový nástroj svou lehkostí použití svádí k tomu, že se pak lepič kódu pouští na tenký led. Pak je potřeba aby i ten lepič kódu poznal, že jde do tuhého, a zeptal se nějakého zkušenějšího lepiče.
    10.2.2007 21:43 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Jestli je to takhle jednoduché, ptám se sám sebe, proč za těžké peníze někde neprgám. :-D Tohle je v příkrém konstrastu s nároky, které vidím kladené na uchazeče o prgání. Tohle by měl zvládnout středoškolák s trochou praxe a oni chtějí absolventy univerzitní CS… Chápu, že takhle je to levnější…nebo aspoň se to zdá být levnější. (Docela by mně zajímalo, jaké nákladové kalkulace měli v Orbitzu. A jaké měl Paul Graham.)
    10.2.2007 22:25 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Podle inzerátů se nesmíte řídit. To je samé sháníme 18letou sekretářku s 30letou praxí ;-) Ono se to nezdá levnější, ono je to jediná možná cesta. Hackerů není nazbyt a ti, kteří jsou, musí psát Linuxové jádro a podobné věci. Pohyby skladových zásob klidně může psát někdo jiný. A aby to nevyznělo negativně vůči těm, kteří jsou zde v diskuzi nazváni slepovači kódu – ono to třeba taky znamená kromě toho průměrného programování ještě aspoň trochu rozumět třeba tomu účetnictví, které ten člověk programuje (nebo lepí).
    10.2.2007 22:29 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mno jo, já to znám jinak: Hledáme pracovníka. Požadavek: Věk nejvýše osmnáct let, alespoň 20 let praxe a dva doktoráty. :-D Nebo tak nějak to bylo. ;-)
    10.2.2007 21:59 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Není-li řeč o programování, ale lepení kódu, pak je otázka, co vás komentář dělá v diskusi o programovacích jazycích ;-)

    Podobně jako se na stavbu paneláku používají o hodně jiné nástroje než když stavíte katedrálu, i na ty softwarové paneláky se často hodí spíš různá klikátka a pseudojazyky než ty, ve kterých se programuje doopravdy.

    A i webovou aplikaci někdy stojí za to napsat pořádně, jestli nevěříte, přečtěte si Hackers and Painters od Paula Grahama.
    10.2.2007 20:59 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ovšem to složení není zrovna intuitivní, takže je nutné si ještě pamatovat, jak že se to má dělat.
    Neintuitivní přijde spíš jen lidem zkaženým imperativními jazyky :-) Těm, kdo aspoň pár hodin programovali v čemkoliv funkcionálním (což může znamenat třeba i APL), takové konstrukce obvykle přicházejí naprosto přímočaré.
    10.2.2007 20:52 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Pokud maximum ze seznamu patří k takovým operacím, budou těch operací přinejmenším stovky, ne-li tisíce. … A tam jsou vám elementární operace typu maximum ze seznamu hodnot k ničemu, protože se tam žádné takové operace neprovádějí.“
    No právě, proto to píšu. A přesto Java v java.utils.Collections takovou operaci má. :-) A tisíce dalších podobných de facto specializovaných věcí. ;-)
    „Hezký způsob, jak dát najevo, že o Javě nevíte vůbec nic. Můžu pak věřit tomu, co píšete o Pythonu nebo Smalltalku, když je s klidem srovnáváte s něčím, o čem skoro nic nevíte?“
    Dobře, co přesně nevím a přehlédl jsem? Funkcí vyššího řádu jsem tam moc nenašel, a když jo, bylo to hóódně přes ruku, hodně zamotané do rozhraní a nepoužitelné na malé věci typu „aplikuj „plus 1“ na všechny prvky“. A jak už jsem psal, nepohodlné konstrukce se nepoužívají, protože jsou nepohodlné, i když teoreticky jdou, a myšlení uživatelů pak zakrňuje. Upřímně, o Javu jsem ztratil zájem někdy kolem verze 1.0.8 nebo 1.1. Nadšení z appletů a „internetového Cčka s bajtkódem“ ve mně tehdy pominulo a pár inkrementálních vylepšení v 1.2 a dalších to už zachránit nedokázalo. Naštěstí se prgáním neživím a tak nemusím dělat něco, co musí většina kodérů z povolání a co by mi bylo nepříjemné. :-D
    10.2.2007 22:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Pokud maximum ze seznamu patří k takovým operacím, budou těch operací přinejmenším stovky, ne-li tisíce. … A tam jsou vám elementární operace typu maximum ze seznamu hodnot k ničemu, protože se tam žádné takové operace neprovádějí.“
    No právě, proto to píšu. A přesto Java v java.utils.Collections takovou operaci má. :-) A tisíce dalších podobných de facto specializovaných věcí. ;-)
    Ano, ale v tom je právě ten vtip. Elementární operace jsou sčítání, odčítání, násobení a dělení, vytvoření objektu a volání metody, ošetření výjimek, podmíněné příkazy. Všechno ostatní jsou knihovní funkce, tady je programátore máš, stačí si vybrat. Není to jediný možný nebo správný přístup, ale je to legitimní přístup.
    „Hezký způsob, jak dát najevo, že o Javě nevíte vůbec nic. Můžu pak věřit tomu, co píšete o Pythonu nebo Smalltalku, když je s klidem srovnáváte s něčím, o čem skoro nic nevíte?“
    Dobře, co přesně nevím a přehlédl jsem? Funkcí vyššího řádu jsem tam moc nenašel, a když jo, bylo to hóódně přes ruku, hodně zamotané do rozhraní a nepoužitelné na malé věci typu „aplikuj „plus 1“ na všechny prvky“. A jak už jsem psal, nepohodlné konstrukce se nepoužívají, protože jsou nepohodlné, i když teoreticky jdou, a myšlení uživatelů pak zakrňuje. Upřímně, o Javu jsem ztratil zájem někdy kolem verze 1.0.8 nebo 1.1. Nadšení z appletů a „internetového Cčka s bajtkódem“ ve mně tehdy pominulo a pár inkrementálních vylepšení v 1.2 a dalších to už zachránit nedokázalo. Naštěstí se prgáním neživím a tak nemusím dělat něco, co musí většina kodérů z povolání a co by mi bylo nepříjemné. :-D
    „aplikuj „plus 1“ na všechny prvky“ je ale už řečeno hodně „programátorsky“. V přirozeném jazyce člověk řekne spíš „všechny prvky zvětši o jedničku“. Pokud člověk zjistí, že počítač s „všechny prvky“ neumí pracovat, přeformuluje to na „každý prvek zvětši o jedničku“. A to už jde přímo přepsat – „každý prvek“ je for cyklus, „zvětši o jedničku“ je sčítání. Je to jednoduché, odpovídá to věcem, které známe z reálného světa.

    Ony kolekce „zamotané do rozhraní“ právě díky těm rozhraním umožňují pracovat s čímkoli – přesně v duchu Unixové koncepce se poskládají jednotlivé jednoduché díly. Java 1.4 je oproti 1.0 nebo 1.1 dost výrazný rozdíl, generiky, které skoro odstranily problém s netypovostí kolekcí jsou až v Javě 5. Zrovna kolekce jsou myslím silnou stránkou Javy, protože jsou to jednoduché stavební kameny, se kterými se toho ale dá hodně udělat. Šablony v C++ jsou sice určitě efektivnější, ale taky mnohem náročnější na pochopení – a už to není onen Unixový styl jednoduchých jednoúčelových nástrojů, ale spíš je to továrna na ty nástroje. Uzávěry nebo konstrukce, které s kolekcemi nebo mapami umožňují provádět třeba Python nebo Perl by samozřejmě taky byly hezké – ale jímá mne hrůza při představě, co by s tím páchali programátoři, kteří skládají Stringy po částech a to tak, že to kompilátor nemůže optimalizovat, kteří klidně do konstruktoru objektu napíšou čtení a parsování XML souboru, kteří mají hrůzu z regulárních výrazů nebo když už je pochopí, používají je i tam, kde můžou použít indexovaný přístup k pár znakům…

    Ano, nepíšu tady o programátorské elitě ale o lidech, kteří píší programy proto, že jinak si ten počítač nenechá vysvětlit, co má dělat. Vím, že to znamená, že je spousta neefektivních programů, spousta programů, které se občas náhodně hroutí, protože programátor poslepoval nějaký kód aniž by mu bylo zcela jasné, jak funguje. Ale to je holt daň za to, že máme těch programůlačných počítačů všude tolik.
    10.2.2007 23:10 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Elementární operace jsou sčítání, odčítání, násobení a dělení, vytvoření objektu a volání metody, ošetření výjimek, podmíněné příkazy.
    To je silně subjektivní. Třeba objekty jsou pro mně už odvozená konstrukce, zatímco kompozice funkcí nebo iterace funkce přes seznam daleko základnější.
    V přirozeném jazyce člověk řekne spíš „všechny prvky zvětši o jedničku“. Pokud člověk zjistí, že počítač s „všechny prvky“ neumí pracovat, přeformuluje to na „každý prvek zvětši o jedničku“.
    Jenže tady jde právě o to, že s "všechny prvky" počítač umí pracovat bez problémů, jen Java jaksi ne :-)

    Všimněte si, že "aplikuj funkci +1 na všechny prvky seznamu" je tomu přirozenému jazyku daleko blíž než nějaký for-cyklus.
    10.2.2007 23:22 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    „Všimněte si, že "aplikuj funkci +1 na všechny prvky seznamu" je tomu přirozenému jazyku daleko blíž než nějaký for-cyklus.“
    (mapcar #'1+ seznam)
    :-D

    On for cyklus vlastně nedokáže říct „aplikuj funkci na všechny prvky“. On dokáže říct jen: „Přiřaď do proměnné počáteční hodnotu. Pak proveď nějaký kus kódu. Ten kód může provést s tou proměnnou cokoliv, přesto ji pak aktualizuj ještě podle výrazu. Pak proveď test dalším výrazem, jestli to smíš celé zopakovat znovu.“ V první řadě to není jediná věta ani akce, z pohledu jazyka. A navíc, těžký low-level – prostě kapotovaný assembler. Není divu, že se pak dodatečně vývojáři Intelu a GCC moří s psaním autovektorizéru aspoň pro základní příkazy, aby aspoň nějak ty SSE instrukce šly využít z jazyka, aniž by člověk musel zabředávat do assembleru. Otázka je, co tohle v Javě (nebo jakémkoli jazyku, co si dělá nároky na označení „vyšší jazyk“) dělá? (Já vím, když jsem v druhé polovině 80. let začínal programovat, znamenalo „vyšší jazyk“ totéž, co „strojově nezávislý“, takže v podstatě i Cčko – stačí jen dbát na velikosti datových typů.)
    11.2.2007 00:01 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Otázka je, co tohle v Javě (nebo jakémkoli jazyku, co si dělá nároky na označení „vyšší jazyk“) dělá?
    Není to náhodou důsledek faktu, že byla vyvíjená pro embeded zařízení? Ze stejného soudku bude i trojice int, Integer a BigInteger, což by vysokoúrovňový jazyk vůbec neměl mít (ovšem daleko víc nechápu, proč je to v C#. Ono na těch vtipech, že na .NETu 1.0 vykonalo nejvíc práce oddělení pro přejmenování Javy, asi něco bude :-)).
    When your hammer is C++, everything begins to look like a thumb.
    11.2.2007 00:05 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Však ta otázka taky byla spíš řečnická… :-)
    11.2.2007 10:39 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    assert seznam instanceof Iterable;
    for (Prvek prvek: seznam) {
      prvek.aplikujFunkci();
    }
    
    :-)

    Jak píše Michal Vyskočil, původně byla Java myšlena i jako platforma třeba pro řízení mikrovlnné trouby, proto má i klasický Cčkový for cyklus. Ostatně mikročipy s podporou Javy se vyrábějí. Ale je pravda, že by bylo fajn, kdyby bylo možné kompilátor instruovat, aby u některých konstrukcí dával varování. Třeba takový autoboxing měl taky zakrýt pozůstatky po zaměření Javy na embeded zařízení (rozdíl mezi int a Integer), bohužel je z něj víc škody než užitku.
    11.2.2007 10:55 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Čipy s Javou? Vřele doporučuju přečíst tohle. :-D A přečíst, ne jen odfrknout. A to byl, prosím, rok 1979.
    11.2.2007 10:48 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    java? preco sa bavite o niecom, co nema overload operatorov?

    sablony su tazke na pochopenie? to moze povedat len samouk.

    jímá mne hrůza při představě, co by s tím páchali programátoři
    prave ste vyjadrili zakladnu myslienku navrhu javy :-))
    11.2.2007 11:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    jímá mne hrůza při představě, co by s tím páchali programátoři
    prave ste vyjadrili zakladnu myslienku navrhu javy :-))
    A je na tom snad něco špatného? Pro práci v Linuxu se taky všude doporučuje nepracovat neustále pod rootem, ale pod běžným uživatelem – aby toho člověk nemohl moc napáchat. A na roota se přepnu teprve v okamžiku, když potřebuju opravdu udělat něco s rootovskými právy. Vzhledem k tomu, že jazyků s rootovskými právy k počítači už zda bylo dost (assembler, C, C++), mohli se tvůrci Javy klidně soustředit na vývoj jazyka s uživatelskými právy – každý má možnost, pokud je to potřeba, přepnout třeba do C nebo C++. A o tom je celá tahle diskuze. Někdo tvrdí root je ten nejlepší uživatel, který může všechno, nic jiného není potřeba. A já tvrdím, že je dobře, že roota máme, ale někdy se hodí mít i jiného uživatele, se kterým se nemusím tolik bát, že si špatným příkazem smažu celý harddisk. A stejně jako je nemálo těch uživatelů, kteří mají na počítači roota ale zároveň na něm běžně pracují pod jiným účtem, je jistě i nemálo těch programátorů v Javě, kteří, když je to potřeba, se mohou vydat i do „nebezpečných“ míst programování – ať už s Javou, nebo s nějakým jiným jazykem.
    11.2.2007 17:27 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ano, je to spatne.
    Vase prirovnanie (praca pod rootom) pokrivkava, Tam kde C++ pouziva vyjadrenie "vstup sa nedoporucuje", java pouziva "vztup zakazany".

    Ono, skor si myslim, ze java bola navrhnuta stylom "zoberieme C++ a vypustime, comu nerozumieme". To nie je len overload-ovanie operatorov, to je aj viacnasobna dedicnost, abstraktne triedy (v jazyku javy: interface s implementovanou metodou). Sablony uz pochopili :-)

    to, comu vravite "programator v jave", tomu je lepsie vraviet (ako v tejto diskusii odznelo) "lepic kodu". Typicky americky styl, "nepouzivaj rozum, konzumuj". Ale netreba zufat, este tak 10-20 rokov studia a snad sa z javy stane objektovy jazyk pre programatorov, nielen pre managerov. :-D
    Hmm, a kde v tom case bude Larry, to si radsej ani netrufam predstavovat :-D

    11.2.2007 18:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Vase prirovnanie (praca pod rootom) pokrivkava, Tam kde C++ pouziva vyjadrenie "vstup sa nedoporucuje", java pouziva "vztup zakazany".
    Já když pod běžným uživatelem zkusím spustit rm -rf /etc tak mi to nenapíše hlášku, že mi rm nedoporučuje to dělat, ale neumožní mi to udělat.
    Ono, skor si myslim, ze java bola navrhnuta stylom "zoberieme C++ a vypustime, comu nerozumieme". To nie je len overload-ovanie operatorov, to je aj viacnasobna dedicnost, abstraktne triedy (v jazyku javy: interface s implementovanou metodou). Sablony uz pochopili :-)
    Jestli potřebujete přetížené operátory nebo vícenásobnou dědičnost, nepoužívejte Javu. Javistům to evidentně nechybí. V čem se liší javovské abstraktní třídy od těch z C++?

    Hmm, a kde v tom case bude Larry, to si radsej ani netrufam predstavovat :-D
    Dokáže jako program interpretovat už opravdu libovolný výstup z /dev/random? :-)
    11.2.2007 12:50 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    sablony su tazke na pochopenie? to moze povedat len samouk.
    Šablony jsou proklatě těžké na pochopení, pokud jimi zkusíte zapsat něco netriviálního (ostatně pochybuji, že kdyby byly snadné, potřebovala by norma C++ 70 stránek na jejich definici :-) ). Často je to horší, než když na totéž použijete Céčkový preprocesor. (Obojí je mimochodem samo o sobě turingovsky úplné.)
    10.2.2007 20:59 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Hezký způsob, jak dát najevo, že o Javě nevíte vůbec nic. Můžu pak věřit tomu, co píšete o Pythonu nebo Smalltalku, když je s klidem srovnáváte s něčím, o čem skoro nic nevíte?

    Docela by me zajimal protiargument :-) Tohle mi zatim pripada, rekneme, jako dobry pokus jak zakryt, ze zadny neni...

    ...protoze si myslim, ze Kyosuke ma pravdu. (Prestoze jsem v Jave psala vic nez malicko naposledy pred nekolika lety a nejradsi bych na to zapomnela...)
    ^D
    10.2.2007 19:12 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Samozřejmě, že můžete mít funkci pro výpočet maxima posloupnosti, která je někde implementovaná (v nějaké knihovně či jinde ve Vašem programu). Jenže ještě daleko přehlednější je, když takovou funkci nemáte, protože ji vůbec nepotřebujete. To například tehdy, když ji můžete triviálně složit z operace "maximum ze dvou prvků" (která je triviální a zná ji každý) a podobně triviální operace, které se většinou říká redukce seznamu. Pak není co si pamatovat a není co dokumentovat.

    Vy mluvíte o desítkách tisíc operací a rozsáhlých standardních knihovnách, já tvrdím, že většina z nich jsou pouze triviální složení několika málo (řekněme desítek až stovek) vhodně zvolených operací.

    Co se vývojového prostředí týče: jistě je to užitečná věc, ale pomůže vám hlavně v případě, že píšete desítky tisíc řádků nejrůznější otročiny. Jenže to také obvykle znamená, že autor zvolil dost nevhodnou úroveň abstrakce. Pokud programujete něco, co je doopravdy složité (myšlenkově, ne jen rozsahem implementace), sebelepší prostředí Vás nezachrání. Jediné, co v takových případech funguje, je popsat problém dostatečně abstraktně, aby se "vešel do mysli". A když už o něm takto dokážete uvažovat, pak je dokonale přirozené ho tak i naprogramovat.
    10.2.2007 19:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Co se vývojového prostředí týče: jistě je to užitečná věc, ale pomůže vám hlavně v případě, že píšete desítky tisíc řádků nejrůznější otročiny.
    Pomůže to už pro případ, kdy projekt sestává z více než několika málo souborů. Třeba zorientovat se ve zdrojácích Samby a najít to správné místo pro úpravu je s grepem otázka třeba dvou tří hodin. Pokud bych používal pro C++ nějaké vývojové prostředí, byla by to otázka třeba dvaceti minut. A to je podstatný rozdíl.

    Dnešní programy nejsou myšlenkově složité, ale jsou rozsáhlé, musejí implementovat nejrůznější standardy atd. Kolik je třeba i v jádru Linuxu myšlenkově složitých částí, a kolik je všeho toho kódu, který zajišťuje modularitu, abstrakci, kompatibilitu, jednotlivé ovladače zařízení…
    10.2.2007 20:03 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Pomůže to už pro případ, kdy projekt sestává z více než několika málo souborů.
    Proto jsem také radil grep a ne search v ${EDITOR}u.
    Třeba zorientovat se ve zdrojácích Samby a najít to správné místo pro úpravu je s grepem otázka třeba dvou tří hodin. Pokud bych používal pro C++ nějaké vývojové prostředí, byla by to otázka třeba dvaceti minut. A to je podstatný rozdíl.
    Inu, proti gustu žádný dišputát. Ale proč mi přijde, že takřka v čemkoliv se mi to s grepem daří za řádově minuty? :-)
    Dnešní programy nejsou myšlenkově složité, ale jsou rozsáhlé, musejí implementovat nejrůznější standardy atd.
    To musí, samozřejmě, ale i tak je divné, když implementace standardu zabere řádově víc místa než standard sám :-)
    10.2.2007 20:06 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Nemůžu si nerýpnout, kvůli nedávnému objevu. :-D Docela se proslavil jeden citát Phila Greenspuna, takzvané Greenspunovo desáté pravidlo programování:
    „Jakýkoli dostatečně složitý program v C nebo ve Fortranu obsahuje ad-hoc vytvořenou, formálně nespecifikovanou a chybami prolezlou polovinu Common Lispu.“
    To už patří skoro k folklóru. ;-) Nedávno jsem ale objevil perličku, tzv. Seibelův důsledek Greenspunova pravidla:
    „Jakýkoli dostatečně složitý program v Javě, který neobsahuje vlastní implementaci poloviny Common Lispu, ke svému vytvoření vyžaduje programovatelné IDE, které ji bude suplovat.“
    :-D :-D
    10.2.2007 20:30 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Mám pocit, že složitost programů vzniká právě tím, když se programátor rozhodne něco implementovat po svém (zpravidla proto, aby to bylo jednoduché, nebo rychlé). Bohužel asi nejznámější knihovna javovských knihoven – Jakarta – obsahuje spoustu odstrašujících případů tohoto typu. Všechno možné implementují po svém, spousta knihoven je pro Javu z větší části zbytečných, spousta je sice napsána v Javě, ale absolutně popírají principy programování v Javě. A je pravda, že tyhle knihovny se asi často používají. A pokud se podle nich někdo učí chápat Javu… Ale berte to prosím s rezervou, po fázích „je to Apache Founadtion, to zřejmě bude dobré“ jsem přes poněkud odtažité „hm, Jakarta, a nebylo by tam něco jiného“ dospěl do fáze „Jakarta? Jedině pokud jiné implementace opravdu neexistuje a pokud mne nikdo nebude nutit podívat se tomu na zdrojáky“. Ale i pro Javu existují dobré a dobře napsané knihovny, které dělají to a právě jen to, co dělat mají. Třeba větší část JRE (pravda, struktura je docela dobrá, implementace už je místy horší) :-)
    10.2.2007 20:49 anicka | blog: ze_zivota
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Pomůže to už pro případ, kdy projekt sestává z více než několika málo souborů. Třeba zorientovat se ve zdrojácích Samby a najít to správné místo pro úpravu je s grepem otázka třeba dvou tří hodin. Pokud bych používal pro C++ nějaké vývojové prostředí, byla by to otázka třeba dvaceti minut. A to je podstatný rozdíl.

    No, nevim... je nas v tymu deset lidi, co se zivime krome jineho debugovanim (i) velkych open source projektu, ktere minimalne na zacatku vubec nezname. Pokud vim, vsichni si vystacime s grepem... a mne zatim hledani spravneho mista nikdy nezabralo vic nez cca 15 minut (jako priklad si predstavte rekneme me oblibene portable openssh roztahane po cca 300 souborech). A opravdu nemyslim, ze bychom byli nejak vyjimecne sikovni :-)

    Jedine, co vim, je to, ze kdyby to bylo v Jave, musela bych pri debugovani precist asi tak petkrat vic kodu a upadla by mi z toho hlava :-) Nastesti muzu javovsky software prenechat svym trpelivejsim kolegum...
    ^D
    10.2.2007 22:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Uznávám, že na C/C++ budu naopak asi já výjimečně nešikovný, tyhle jazyky mi nikdy nesedly a v oněch několika případech, kdy jsem musel něco v těchto jazycích upravovat, považoval jsem za úspěch už jenom to, když to po mém zásahu šlo zkompilovat. A možná to taky procházím tak dlouho proto, že si chci být opravdu jistý, že ten kód funguje jak si myslím, protože mám hrůzu z toho, že do serveru nebo systémové knihovny (byť jen na vlastním serveru) dopíšu nějaký memory leak nebo se naopak pokusím zapsat do &null.

    Java kódu, kde je 5× víc kódu, než by bylo rozumné, je samozřejmě hodně, ale kupodivu jsou to vždy věci, které nejsou programovány zrovna javovským stylem.
    9.2.2007 21:03 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    A s tím Javascriptem si tady dej majzla, je zčásti inspirovaný Selfem a Pavel Křivánek jistě číhá s kyjem za rohem. :-D :-D ;-)
    9.2.2007 22:42 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Nemám nic proti JavaScriptu obecně :-) Jenom mi v objektovém programovacím jazyce připadá poněkud ujetý ten koncept, že v this může být cokoliv.
    10.2.2007 18:16 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    [K] čemu je to dobré? Zatím všechny příklady, které jsem viděl, se dají stejně dobře nahradit virtuální třídou [...] Existuje tedy takové využití closures, které opravňuje zavedení nové konstrukce do jazyka?
    A jsme u jádra pudla. V zásadě kterákoliv pokročilejší konstrukce se dá docela snadno nahradit těmi jednoduššími. Cokoliv naprogramujete v Javě, napíšete s daleko jednoduššími prostředky Céčka také. A cokoliv zvládnete v Céčku, půjde provést i na Turingově stroji. Jen to dá o trochu více práce a člověk se pak občas cítí jako příslovečný mořený osel.

    Takže closures nejsou nic převratného, jen je to další způsob, jak některé věci zapisovat elegantněji. Stejně jako objekty. Kdybych si měl vybrat mezi těmi dvěma, jistě zvítězí closures :-)

    (Mimochodem, když už jsme u objektů, ono se dá docela pěkně objektově programovat i v obyčejném Céčku (tak jsou například udělané některé kusy Linuxového jádra). Jak říkal Alan Cox: "Object orientation is in the mind, not in the compiler." Samozřejmě, objektová syntaxe vám někdy může ulehčit práci, ale jak už to bývá, někdy také ztížit, když váš jazyk má objekty slabší, než jaké potřebujete.)
    10.2.2007 18:32 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Takže closures nejsou nic převratného, jen je to další způsob, jak některé věci zapisovat elegantněji. Stejně jako objekty. Kdybych si měl vybrat mezi těmi dvěma, jistě zvítězí closures :-)

    Closure je přece jen pouhá syntaktická zkratka pro zápis dvou objektů... ;-)

    I'm sure it crashed in the most type-safe way possible.
    10.2.2007 18:36 MJ | Tady a teď
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Stejně jako pomocí closure můžete vytvořit objekt ;-)
    10.2.2007 18:45 Pavel Křivánek | skóre: 29 | blog: Kvičet nezávaznou konverzaci
    Rozbalit Rozbalit vše Re: Test vašeho programovacího jazyka
    Ještě dvě iterace a bude to na úrovni složitosti v současné Javě ;-)
    I'm sure it crashed in the most type-safe way possible.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.