abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 6
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 2
    včera 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 739 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Nalezení všech dělitelů čísla C++

    17.5.2009 12:26 Hlavson
    Nalezení všech dělitelů čísla C++
    Přečteno: 5031×

    Ahoj všichni. Potřeboval bych vyrobit algoritmus na zjištění všech dělitelů zadného čísla... Pokud máte nějaké nápady, sem s tím.

    Např. číslo 10 ... (10/5/2/1)

    Děkuju moc.

    Odpovědi

    17.5.2009 12:37 jirkamailto | skóre: 31
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Nevim jak to chces, ale primarne budes zjistovat zbytky po deleni, tak ja bych to resil forcyklem od 1 do cisla, ktere mas zadane a iteroval bych po 1. Dale pokud by byl zbytek po deleni 0, tak bych cislo, ktere je v iteraci aktualni, nasypal do pole nebo vypsal na obrazovku, jak chces. Pote nakonec bych to pole prosel a vypsal vsechny jeho prvky.

    17.5.2009 12:45 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    forcyklem od 1 do cisla, ktere mas zadane
    Zbytecne dlouhe. Staci od 2 (kazde cislo je delitelne 1 a samo sebou) do SQRT(cislo) (do druhe odmocniny - SQRT(cislo) * SQRT(cislo)= cislo) a ukladat delitele i vysledek.

    Dejv
    Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
    mess avatar 17.5.2009 12:38 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Nejprve bych si našel všechna prvočísla do např. 10 (pokud hledáš dělitele 10) - viz Erathostenovo síto. Až budeš mít ta prvočísla, tak je ber od největšího a zkoušej celočíselné dělení.
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
    18.5.2009 06:50 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Prvočísla to jen zkomplikují.
    In Ada the typical infinite loop would normally be terminated by detonation.
    18.5.2009 13:32 Tomáš
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Nikoliv prvočísla jsou klíčem. Protože pokud se vám číslo N podaří rozložit na prvočísla a_i, v následující notaci:

    N= a_1 × a_2 × ...;

    Pak každá vlastní podmnožina množiny s prvky a_i odpovídá právě jednomu děliteli.Hodnota dělitele je rovna součinu prvků této podmnožiny.

    Postupoval bych tak, že bych získal na internetu zeznam prvočísel (pole P). Algoritmus by pak byl následující (neodladěný nástin algoritmu).

     

    /* pole A - provočísla v N. pole B kardinalita prvočísla v rozkladu 
    na začátku je pole B vynulováno*/
    k=0;
    l=0;
    count=0;
    while ( N > 1) {
     if N mod P[k] == 0 {
        A[l] = P[k];
        B[l]++;
        N=N/B[k];
        count++;
     } else {
        k++;
        if B[l]>0 {
          l++;
        }	
     }
    }
    /* V poli A máme rozklad na prvočísla. Ted jeste pronasobit. 
    Místní validátor mrší kód a podruhé to psát nebudu.
    Tak to budete muset vymyslet samostatně.*/
    
    18.5.2009 14:12 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Seznam prvočísel je zbytečný, stačí si vytvořit sezman prvočíselných dělitelů. Navíc zapomínáte na to, že N může být dělitelné i vyšší mocninou některého prvočísla. Takže začnu s p=2 a budu zkoušet dělitelnost. Když narazím na dělitele, zapíšu si ho do pomocné struktury a zjistím maximální mocninu p, která dělí N (a poznamenám si ji k tomu děliteli). N vydělím touto mocninou (to se udělá jako vedlejší produkt v průběhu jejího zjišťování) a pokračuji dál. Končím v okamžiku, kdy p^2 > N. Je-li v tu chvíli N>1, je to poslední prvočíselný dělitel.

    Výsledkem je pole, kde mám prvočíselný rozklad (prvočísla p_i a mocniny a_i). Zbývá vygenerovat seznam dělitelů, což je ekvivalentní všem možnostem, jak jednotlivým prvočíslům p_i přiřadit mocniny od nuly do a[i]. To už si laskavý čtenář udělá za cvičení, aby si ten zápočet aspoň nějak zasloužil. :-)

    Technická poznámka: pokud by to náhodou nebyl úkol a ten program se měl použít v praxi, tak takhle komplikovaně to má smysl dělat jen pro velká N, pro menší je daleko jednodušší (a nezřídka i rychlejší) použít nějaký hrubonásilný přístup.

    18.5.2009 16:57 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Ve výsledku stejně projdete čísla od 1 do sqrt(N), tak to už je pomalu jednodušší zkoušet dělit rovnou. Při jednoduchém cyklu dostanu pole dělitelů - výsledek, při testování prvočísel je ještě budu navíc muset netriviálně kombinovat.
    In Ada the typical infinite loop would normally be terminated by detonation.
    18.5.2009 17:18 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Jenže u mého algoritmu to N průběžně klesá. Když vezmu extrémní případ, pro N = 2^k dostanete výsledek v čase sqrt(N) = 2^(k-1), u mne to bude k = log_2 N. V opačném extrému (N je prvočíslo) na tom budeme oba stejně.
    18.5.2009 17:25 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Samozřejmě tam mělo být sqrt(N) = 2^(k/2), ale na principu to nic nemění.
    19.5.2009 08:57 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Jo, to je vlastně pravda.
    In Ada the typical infinite loop would normally be terminated by detonation.
    20.5.2009 17:30 František Jahoda
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Příloha:

    algoritmus je opravdu pro cislo N slozene z vice prvocisel podstatne rychlejsi.
    predpoklad N = product(i=1..k, p_i ^ alpha_i)

    analyza prvocisel cca sqrt(N)
    vycisleni ruznych permutaci product(i=1..k, alpha) << N odhadoval bych cca O( ln N )
    vycisleni delitele pomoci permutace k

    takze celkem bych ocekaval slozitost O(sqrt(N)). to bude plati i pro N prvocislo

    20.5.2009 17:52 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    IMO lepší je čas. složitost udávat jako funkci závislou na délce vstupu

    18.5.2009 09:04 kulik
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    pouzij hlavu Hlavsone, toto je ukol zhruba tak pro ctvrtou tridu zakladni skoly

    18.5.2009 12:06 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Dovolím si tipnout, že to je domácí úkol, i když asi ne zrovna pro čtvrtou třídu ZŠ.
    19.5.2009 16:55 kulik
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    No na ten trivialni algoritmus "zkusim vsechna mensi cisla, zda jsou delitelem" by podle mne melo prijit i hodne male dite, urcite na prvnim stupni ZS. Omezeni na cisla <=  odmocnina bych videl tak na sestou tridu u deti co je zajima matematika, nejake vylepseni pres prvocinitele pak treba osma trida (bez dukazu slozitosti apod.). Samozrejme inplementace v C++ je neco jineho, ne kazdy zna C++, ale myslenkove to opravdu neni nic extra sloziteho. Narazel jsem puvodne hlavne na to, ze zakladni reseni by pravdepodobne bylo hotove v dobe zhruba srovnatelne s napsanim dotazu do poradny...

    19.5.2009 17:17 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Narazel jsem puvodne hlavne na to, ze zakladni reseni by pravdepodobne bylo hotove v dobe zhruba srovnatelne s napsanim dotazu do poradny...

    Řekl bych, že toho, pro koho tohle platí, vůbec nenapadne sem takový dotaz dát. Dá-li ho sem někdo, pak to nejspíš bude ten, kdo tu úlohu není schopen vyřešit vůbec. Otázkou ovšem je, jestli je vhodné, aby takový člověk studoval školu, kde po něm podbné věci chtějí…

    20.5.2009 23:35 Hlavson
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Tak tady to je....

     

    prev>>a;

    b=a;

        for(;b>0;b--)
        {
            if(a%b==0)
            {

    vypis....

            }
        }

    Asi nejsrozumitelnější řešení... ;-)

    21.5.2009 14:39 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    To jste napsal takový méně přehledný zápis
    for(b=a; b<0; b--) {
      if(a%b == 0) {
        výpis
      }
    }
    no nic proti hrubé síle, když na to máte dost času...
    21.5.2009 14:40 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    prohozeno <>
    19.5.2009 18:31 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    hmm, pýtať sa na jeden riadok (vygoogliteľný k tomu) :-)

    perl -le 'print for grep ! ($ARGV[0] % $_), 1 .. $ARGV[0]' 10000
    19.5.2009 18:56 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Ještě na tom bude potřeba zapracovat:

    mike@unicorn:~/tmp> g++ -c x.cc
    x.cc:1:10: warning: character constant too long for its type
    x.cc:1: error: expected constructor, destructor, or type conversion before ‘-’ token
    

    :-)

    20.5.2009 07:38 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Aneb klasický příklad toho, že hlášky překladačů C jsou úplně mimo.
    In Ada the typical infinite loop would normally be terminated by detonation.
    20.5.2009 07:54 l4m4
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Zejména, když jim někdo předloží kód v perlu...
    20.5.2009 10:33 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    A co by podle vás měl napsat? "Jsi blbec, tohle je perl!" ? :-)
    20.5.2009 13:35 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    V podstatě ano. Porovnejte s:
    $ cat x.adb
    perl -le 'print for grep ! ($ARGV[0] % $_), 1 .. $ARGV[0]' 10000 
    $ gnat make x 
    gcc -c x.adb
    x.adb:1:01: compilation unit expected
    gnatmake: "x.adb" compilation error
    
    In Ada the typical infinite loop would normally be terminated by detonation.
    20.5.2009 13:33 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    mike@unicorn?

    To je skryta reklama nebo antireklama? :)))
    Překladač ti nikdy neřekne: "budeme kamarádi"
    20.5.2009 14:10 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Proč reklama? To je prostě jméno počítače (druhý se jmenuje lion, třetí walrus a čtvrtý bude nejspíš carpenter :-) ). Ono dneska najít slovo, které by nebylo použito jako název nějaké firmy, je asi docela problém…
    20.5.2009 08:41 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Koukam že C++ od mejch mladejch let nějak pokročilo :D
    19.5.2009 20:28 asdf
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    primitivne, v paskale, a bez zaruky:)
    program delitel;
    
    type
      TPole= array[0..0] of integer;
      PPole= ^TPole;
    
    var
      n, i: integer;
      P: PPole;
      x: integer= 0;
    
    begin
      read(n);
      GetMem(P, n*SizeOf(integer));
      
      for i:=1 to n do 
        if n mod i = 0 then 
         begin
           P^[x]:=1;
           inc(x);
         end; 
         
      for i:=0 to x do write(' ', P^[i]);
    
    end;
    19.5.2009 20:34 asdf
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    teda P^[x]:=i;
    19.5.2009 20:53 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Pro prirozena cisla a v Haskellu :-):

    delitele x = filter ((== 0) . mod x) [1..x]

    20.5.2009 10:42 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    A co z toho plyne? Takhle "efektivně" to zvládnu i v tom C++:

      for (i=1;i<=N;i++) if (!(N%i)) s << i << "\n";
    

    Dokonce i ta délka je přibližně stejná. Kdybych si pamatoval prioritu operátorů, možná bych ušetřil ještě dvě závorky.

    20.5.2009 12:08 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Takhle "efektivně" to zvládnu i v tom C++:

    Já nikde netvrdím, že ne.

    Mj. podívejte se na kód v Haskellu, je mnohem přehlednější než ten váš, protože používá standardní funkci (dalo by se říci: návrhový vzor) filter.

    20.5.2009 12:21 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    je mnohem přehlednější než ten váš, protože používá standardní funkci (dalo by se říci: návrhový vzor) filter.

    Tomuto argumentu nerozumím. Já snad v tom kódu používám něco nestandardního? Co se přehlednosti týká, zkuste si to upravit aspoň tak, abyste necyklil do N ale jen do odmocniny a hned se vám to trochu zkomplikuje. Kdyby mi šlo o přehlednost, zvolil bych samozřejmě jiné formátování.

    Ale nenechte se odradit mou skepsí, já jsem prostě starý bručoun, který neochotně podléhá módním vlnám a bere s rezervou podobné ukázky toho, jak se v těch revolučních jazycích třeskutě elegantně (a často zoufale neefektivně) řeší pečlivě vybrané (a většinou velmi umělé) úlohy.

    20.5.2009 12:51 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Tou přehledností jsem měl na mysli spíše to, že v imperativních jazycích se zatím běžně používájí konstrukce for, if atd. Problém je, že tyto konstrukce jsou velmi obecné, zatímco ve funkcionálních jazycích se používají konstrukce s funkcemi map, filter, foldl, což jsou méně obecné konstrukce a osobně, když vidím třeba map f l, hned vím, že výsledekm je seznam stejně dlouhý jako seznam l a také vím, jaký typ mají prvky uvnitř seznamu (to určím z typu funkce f).

    Jinak řečeno, když vidím standardní funkci map, filter anebo foldl, tak už tuším, co bude kód dělat. Zatímco, když vidím for cyklus, tak toho moc nevím. Mj. podobné věci se stále více objevují i v běžně používaných jazycích.

    Nebojte, odradit se nenechám ;-) Ale uvažte, že tyto, jak říkáte módní jazyky, jsou zdrojem nových featur pro ty běžně používané jazyky. A možná i díky jazykům jako je Haskell se dočkáme rozšíření trochu pokročilejších typových systémů do běžné praxe.

    20.5.2009 12:56 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Podívejte se třeba, jak pěkně lze v Haskellu napsat parser pro escape sekvenci:

    -- | Parses escape sequence.
    escape :: Parsec String st Char
    escape = backslash *> (p_char <|> p_num <|> p_any) <?> "escape sequence"
      where
        -- Parses single-character escape sequence (from table @chars@).
        p_char = lookup' chars <$> (oneOf . fst . unzip $ chars)
        -- Parses numeric escape sequence. Numeric escape sequence starts
        -- with @x@ or @u@.
        p_num = toEnum . fst . head . readHex
                  <$> (try (oneOf "xu" >>
                            between (char '{') (char '}') (many1 hexDigit))
                         <|> char 'x' *> count 2 hexDigit
                         <|> char 'u' *> count 4 hexDigit)
        -- Parses other escape sequences.
        p_any = anyChar
        chars = zip escapeCodes escapeChars
    
    20.5.2009 14:16 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Někomu to sice možná připadá pěkné, ale zase to o kvalitě a praktické použitelnosti jazyka vůbec nic neříká. V takovém lexu to bude ještě jednodušší a ještě přehlednější, ale co z toho? Síla C a C++ je v jejich univerzalitě, ne v tom, že napíšu konkrétní šikovně vybranou úlohu o řádek kratšeji a a s hezčím zdrojákem, abych dělal dojem v diskusi.
    20.5.2009 15:10 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Ano, v lexu by toto bylo přehlednější a kratší. Ale lex/bison je nemodulární řešení -- já tento parser (nebo lexer, ale obecně s knihovnou Parsec mohu udělat parser LL gramatiky) mohu složit s jinými a poskládáním menších parserů mohu vytvořit jeden velký parser. Navíc s knihovnou Parsec mohu ovlivnit chybová hlášení, která parser zobrazí uživateli.

    Síla C a C++ je v jejich univerzalitě, ne v tom, že napíšu konkrétní šikovně vybranou úlohu o řádek kratšeji a a s hezčím zdrojákem, abych dělal dojem v diskusi.

    Haskell není jazyk zaměřený na jednu vybranou úlohu viz třeba HackageDB.

    20.5.2009 16:00 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Haskell není jazyk zaměřený na jednu vybranou úlohu viz třeba HackageDB.

    Ale no tak… Předpokládám, že není nutné, abych to porovnával s tím, kolik knihoven a frameworků je k dispozici pro C a C++. Není vyloučeno, že časem Haskell dospěje do podoby jazyka pro široké spektrum uplatnění a že se bude opravdu široce používat. Ale zatím je podle mne jásání a předhazování Haskellu jako léku na neduhy C/C++ a budoucnosti programování předčasné. V tomhle jsem prostě skeptik. Zažil jsem vlny nadšení z Prologu, Lispu, Forthu, dnes je v módě Haskell, ale vždycky to byly a vždy to zůstaly spíš akademické záležitosti. Chlebem programátorského světa jsou už po desítky let procedurální jazyky a zatím mne nic nepřesvědčilo, že se to v dohledné době zásadním způsobem změní.

    20.5.2009 16:08 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Ten odkaz jsem dal proto, aby bylo vidět, že se v Haskellu řeší různorodé problémy.

    20.5.2009 16:15 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    IMO funkcionální programování se stále více a více prosazuje, důkazem toho může být třeba F#, což je upravený OCaml. Já neříkám, že se bude programovat čistě funkcionálně (tj. tak jako v Haskellu), ale myslím si, že mnoho prvků z těchto jazyků se postupně objeví v mainstreamových jazycích.

    20.5.2009 16:32 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Já asi chápu, o co kolegovi jde. Chlebem programátorského světa, jak tomu hezky říkáte :-), dnes nejsou procedurální jazyky, ale jazyky objektové. Jenže zatímco typové systémy procedurálních jazyků jsou dnes velmi pokročilé (Ada), typové systémy běžných objektových jazyků jsou prakticky zoufale impotentní. A s tím významně souvisí vyjadřovací schopnost těchto jazyků a produktivita jejich uživatelů. Proto se někteří lidé utíkají k funkcionálním jazykům. A je pravda, že některé jejich vlastnosti pomalu prosakují do mainstreamu (C#).
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    20.5.2009 17:45 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    nejsou procedurální jazyky, ale jazyky objektové

    Pominu-li různé specialitky, není ve filosofii mezi klasickými procedurálními a objektově orientovanými jazyky zase až tak zásadní rozdíl. Tedy aspoň ne z pohledu diskuse, kde je na jedné straně C/C++ a na druhé Prolog, Lisp nebo Haskell.

    20.5.2009 19:45 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Na to mame v C++ spirit.
    20.5.2009 20:13 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Díky, je to docela pěkné.

    Ale nevýhoda C++ je, že máte jen omezený počet operátorů s předem danými prioritami. Výhodou Haskellu je lazy evaluation. Mj. našel jsem sbírku podobných knihoven jako je Parsec.

    20.5.2009 13:07 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    A dovolím si ještě jednu poznámku. Kdyby nebylo takovýchto jazyků, tak bychom třeba ani neuměli derivovat datové struktury nebo bychom pro to neměli praktické uplatnění.

    20.5.2009 14:18 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    nebo bychom pro to neměli praktické uplatnění.

    Jinak řečeno: nebýt takových jazyků, neuměli bychom to, ale bylo by nám to jedno, protože bychom to vlastně ani nepotřebovali. :-)

    20.5.2009 14:20 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++
    Ta předchozí odpověď byla samozřejmě myšlena jako vtip, ale propagátoři těch módních jazyků si o to sami říkají tím, jak jejich přednosti v mnoha případech demonstrují na umělých úlohách, které jsou okatě vymýšleny právě za tím účelem, aby v daném jazyce šly řešit elegantně. Jenže s takovými úlohami se programátor v běžné praxi setkává jen zřídka.
    21.5.2009 10:28 Ivan
    Rozbalit Rozbalit vše Re: Nalezení všech dělitelů čísla C++

    Hledej na google: quadratic sieve, Kod urcite nebude tak elegantni jako jedna radka v haskelu, ale rozhodne to bude "pouzitelnejsi".

    Založit nové vláknoNahoru

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

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