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
  • Data: 2019-01-04 02:00:08
    Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
    Od: AK <n...@n...net> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    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.

    > 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):
    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:):

    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)


    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).

    > chetnie bym zobaczyl taki kompletny progamik w tym lispie scheme czy co to tam jest

    Sam se napisz leniu i niedouku!

    AK

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: