eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
  • X-Received: by 2002:a0c:b5da:: with SMTP id o26mr180433qvf.0.1546604999656; Fri, 04
    Jan 2019 04:29:59 -0800 (PST)
    X-Received: by 2002:a0c:b5da:: with SMTP id o26mr180433qvf.0.1546604999656; Fri, 04
    Jan 2019 04:29:59 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.
    stu.neva.ru!v55no1222574qtk.0!news-out.google.com!m21ni13559qta.0!nntp.google.c
    om!v55no1222563qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not
    -for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 4 Jan 2019 04:29:59 -0800 (PST)
    In-Reply-To: <q0mb6r$g1o$1@gioia.aioe.org>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.77.192;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 46.186.77.192
    References: <c...@g...com>
    <f...@g...com>
    <a...@g...com>
    <7...@g...com>
    <a...@g...com>
    <6...@g...com>
    <0...@g...com>
    <a...@g...com>
    <1...@g...com>
    <e...@g...com>
    <6...@g...com>
    <1...@g...com>
    <2...@g...com>
    <5...@g...com>
    <9...@g...com>
    <q0lcv9$abq$1@gioia.aioe.org>
    <1...@g...com>
    <4...@g...com>
    <q0mb6r$g1o$1@gioia.aioe.org>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <1...@g...com>
    Subject: Re: Jaki język polecić początkującemu? - komentarz do artykułu w
    Programista 9/2018
    From: g...@g...com
    Injection-Date: Fri, 04 Jan 2019 12:29:59 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:213165
    [ ukryj nagłówki ]

    W dniu piątek, 4 stycznia 2019 02:00:15 UTC+1 użytkownik AK napisał:
    > On 2019-01-03 21:51, fir wrote:
    > >
    > > w c taki programik nie wyglada zbyt tragicznie
    > >
    > >
    > > int PoliczSumeParuPoczatkowychLiczbPierwszych(int ilu)
    > > {
    > >
    > > int dodano_pierwszych =0;
    > > int suma = 0;
    > >
    > > for(int i=0;;i++)
    > > {
    > > if(jest_liczba_pierwsza(i))
    > > {
    > > suma+=i*i;
    > > dodano_pierwszych++;
    > > if(dodano_pierwszych==ilu) return suma;
    > > }
    > > }
    > > }
    > >
    >
    > Jakto nie? Koszmar po prostu.

    Szkoda czasu na dyskutowanie o gustach.

    > > to ze nie wydziela on etapow na podej pierwsze, podnies do kwadratu zsumuj wynika
    raczej z tego ze
    > > pisze sie to tak by dzialalo szybko.. jak ktos sie nie upiera by bylo tak szybko
    moze podzielic
    > > na te fazy
    >
    > Ciezki niereformowalny betonie (zakalo tej grupy):

    Chyba nie ma potrzeby zwracania się do siebie w taki sposób.
    Za coś takiego nie daję szacunku.

    > Wbij sobie do twego asemblerowatego lba ze mozna i szybko i z
    > eleganckim rozdzialem na etapy.
    > Oczywiscie w porzdiejzych jezykach od tego syfu C/C++.
    > W dodatku wcale nie funkcyjnych, bo to raczez nie stricte funkcyjnosc
    > jezyka jest zrodlem sukcesu, ale cos co w C++ nie wystepuje, a zwie
    > sie generateory/wyrazenia generatorowe.
    > Idea znana od dziesiecioleci (ale nie Ayatollahom C/C++).
    >
    > W Pythonie wyglada ona np tak (pisane "z palca" o 15 min:):

    Nawet w Pythonie została dodana dość późno.

    > from itertools import count, islice
    >
    > N = 15000
    >
    > pierwsze = []
    > def jest_pierwsza(liczba, pierwsze=pierwsze):
    > czy_pierwsza = all(liczba % pierwsza for pierwsza in pierwsze)
    > if czy_pierwsza: pierwsze.append(liczba)
    > return czy_pierwsza
    >
    > pierwsze = (liczba for liczba in count(2) if jest_pierwsza(liczba))
    > pierwszeN = (liczba for liczba in islice(pierwsze, N))
    > kwadraty = (liczba**2 for liczba in pierwszeN)
    > suma = sum(kwadraty)
    >
    > print(suma)

    w Haskellu chyba zwięźlej:

    sieve (first:rest) = first:(sieve [x | <- rest, x `mod` first /= 0])
    primes = sieve [2 ..]

    -- nie chcemy wypisać "primes", bo jest ich nieskończenie wiele,
    -- dlatego weźmiemy pierwszych 7:
    take 7 primes -- dostajemy [2,3,5,7,11,13,17]

    -- zaś cały przykład to będzie:
    foldr (+) 0 (map (^2) (take 7 primes))

    -- albo jak ktoś nie lubi nawiasów
    foldr (+) 0 $ map (^2) $ take 7 primes

    > No to teraz czekam palancie az usyskasz cos chocby zblizonego
    > w C (w C++ jest latwiej, ale bez zewnetrzych bibliotek
    > "metaprogramowania" sie nei obejdze, a i ta bedzie to potworek
    > w stosunku do w/w w Pythonie.
    >
    > PS: Od lat 90tych istnieje jezyk w ktorym w/w bedzie jeszcze
    > prostrze/czytelniejsze (o ktorym oczywiscie tez nie masz pojecia,
    > jak kazdy"zakochany" w bitach:) i ktory wcale nie jest funkcyjny,
    > ale jak najbardziej (jak i Python) imperatywny (zwal jak zwal).

    Jaki język masz na myśli?
    Ogólnie określenia "język funkcyjny" czy "język imperatywny"
    nie są zbyt użyteczne.
    W Haskellu można programować imperatywnie. W C można programować
    funkcyjnie. To nie język, ale to, w jaki sposób go używamy,
    jest kluczowe.

    (No może są wyjątki. Na przykład język szablonów C++ jest czysto funkcyjny,
    a asembler x86 jest czysto imperatywny)

    > Sam se napisz leniu i niedouku!

    Nie wiem co ma wynikać z rzucania tego rodzaju określeniami.

    Jak ktoś mówi, że chciałby coś zobaczyć, to pewnie adresuje
    swoją wypowiedź do kogoś, kto mu to może pokazać.

    W czym problem?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: