eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOptymalizacja struktur danych dla programów funkcyjnych › Re: Optymalizacja struktur danych dla programów funkcyjnych
  • X-Received: by 10.31.75.3 with SMTP id y3mr828720vka.11.1507222719809; Thu, 05 Oct
    2017 09:58:39 -0700 (PDT)
    X-Received: by 10.31.75.3 with SMTP id y3mr828720vka.11.1507222719809; Thu, 05 Oct
    2017 09:58:39 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-medi
    a.com!news.highwinds-media.com!6no1269821qtw.1!news-out.google.com!p42ni2778qtp
    .0!nntp.google.com!6no1269817qtw.1!postnews.google.com!glegroupsg2000goo.google
    groups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 5 Oct 2017 09:58:39 -0700 (PDT)
    In-Reply-To: <b...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.90.250;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 46.186.90.250
    References: <c...@g...com>
    <4...@g...com>
    <b...@g...com>
    <d...@g...com>
    <f...@g...com>
    <b...@g...com>
    <1...@g...com>
    <4...@g...com>
    <5...@g...com>
    <e...@g...com>
    <5...@g...com>
    <b...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <a...@g...com>
    Subject: Re: Optymalizacja struktur danych dla programów funkcyjnych
    From: g...@g...com
    Injection-Date: Thu, 05 Oct 2017 16:58:39 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Body-CRC: 3855605605
    X-Received-Bytes: 5153
    Xref: news-archive.icm.edu.pl pl.comp.programming:211570
    [ ukryj nagłówki ]

    W dniu czwartek, 5 października 2017 13:48:58 UTC+2 użytkownik Maciej Sobczak
    napisał:
    > > > Ale nie ustaliliśmy jeszcze, co to znaczy, że program jest czysto funkcyjny.
    > >
    > > Z tego co patrzę na historię tej rozmowy, ustaliliśmy to na dość
    > > wczesnym etapie.
    >
    > Bez przesady. Nawet nie podałeś definicji, tylko przykład, z którym ja się nie
    zgodziłem. To mi się nie kwalifikuje jako "ustaliliśmy".

    Pozwolę sobie wkleić:
    W dniu poniedziałek, 2 października 2017 14:20:39 UTC+2 użytkownik Maciej Sobczak
    napisał:
    > > (Warto zwrócić uwagę, że kompilator
    > > w istocie rzeczy jest programem czysto funkcyjnym,
    >
    > Nie, nie jest. I w ogóle co to miałoby znaczyć - "czysto funkcyjnym"?

    Miałoby znaczyć tyle, że dla danego wejścia daje zawsze to samo wyjście.

    (koniec cytatu)

    > Ogólnie, oodwoływanie się do takich pojęć jak "istota czegoś" jest trochę...
    nieinżynierskie.

    Owszem. Ale dlaczego miałoby to być problemem?

    > > Problem polega na tym, że mylisz w tej chwili istotę programu
    >
    > No i znowu ta istota. Z ciekawości wpisałem w wyszukiwarkę i... nic. Ani w
    wikipedii, ani nigdzie indziej. Po angielsku to pewnie "the essence of the program"
    i... znowu nic.
    >
    > Skoro to pojęcie nigdzie nie jest zdefiniowane i nikt go w branży nie używa, to
    chyba nie świadczy o mnie bardzo źle, że *nadal* nie rozumiem, o co konkretnie
    chodzi?

    Stwierdzenie, że kompilator jest w istocie programem czysto funkcyjnym
    oznacza tyle, że kompilacja jest rodzajem transformacji (przekształcenia).

    > > Owszem, każdy program można analizować przy pomocy pojęcia funkcji,
    > > albo przy pomocy pojęcia maszyny stanu, albo czegoś jeszcze innego.
    >
    > Tak. Dlatego pojęcie "czysto funkcyjny" nie ma sensu.

    Ma dokładnie taki sens, jak powiedziałem.

    > > Projektanci kompilatorów muszą zwracać
    > > uwagę na zupełnie inne rzeczy, niż projektanci gier komputerowych albo
    > > stron internetowych, po w pierwszym przypadku kluczowy jest wynik, a w
    > > pozostałych -- interakcja.
    >
    > Tak, i stosuje się różne metody do optymalizacji tych różnych celów. Ale nic nie
    jest "czyste", bo bez interakcji nie da się pobrać danych ani podać wyników a bez
    wyniku interakcja jest bezcelowa - a przez proste zmiany w formacie i sposobie
    uruchomienia można zmienić jeden rodzaj programu w drugi. I o braku tej "czystości"
    właśnie tu piszę.

    Piszesz błędnie.

    Jeżeli mamy np. program

    int square(int x) {
    return x*x;
    }

    void main(int argc, char *argv[]) {
    assert(argc > 1);
    int n = atoi(argv[1]);
    printf("kwadrat liczby %d wynosi %d\n", n, square(n));
    }

    to square jest czystą funkcją.

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: