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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 23
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 781 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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

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

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: 36 | 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
Pevne verim, ze zkusenejsi uzivatele me s mymi napady usmerni a poslou tam, kam tyto napady patri...
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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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: 71 | 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.