eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingsortowanie › Re: sortowanie
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!no
    t-for-mail
    From: Edek Pienkowski <e...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: sortowanie
    Date: Sat, 13 Oct 2012 12:46:27 +0000 (UTC)
    Organization: Netia S.A.
    Lines: 63
    Message-ID: <k5bnr3$n79$1@mx1.internetia.pl>
    References: <k59gbj$be7$1@node2.news.atman.pl>
    <6...@g...com>
    <k59jgh$mb7$1@mx1.internetia.pl> <k59jvr$360$1@node1.news.atman.pl>
    <k59q5n$np3$1@mx1.internetia.pl> <k5bc6k$4ea$1@mx1.internetia.pl>
    <k5bkvg$jtk$1@mx1.internetia.pl>
    NNTP-Posting-Host: as4-251.poleczki.dialup.inetia.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1350132387 23785 195.114.165.251 (13 Oct 2012 12:46:27
    GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sat, 13 Oct 2012 12:46:27 +0000 (UTC)
    X-Tech-Contact: u...@i...pl
    User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 30dc37b
    master)
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.comp.programming:199796
    [ ukryj nagłówki ]

    Dnia Sat, 13 Oct 2012 13:52:31 +0200, Michoo napisal:

    > On 13.10.2012 11:27, Edek Pienkowski wrote:
    >> Dnia Fri, 12 Oct 2012 21:08:36 +0200, Michoo napisal:
    >>
    >>> Nie wiedzieć czemu w edukacji stosuje się bąble do nauczania na samym
    >>> poczatku, mimo, że zasada działania jest świetnym przykładem "jak nie
    >>> projektować algorytmów". A potem licealiści/studenci na pytanie o
    >>> najprostszy algorytm sortowania odpowiadają "bąbelki"...
    >>
    >> Nie wiedzieć czemu w edukacji stosuje się sortowanie do nauczania
    >> algorytmów. Poza złożonością obliczeniową sortowanie nie nadaje się
    >> na przykład czegokolwiek.
    >>
    > Dlaczego? Mamy dane wejściowe, mamy predykat do spełnienia na wyjściu,
    > mamy opis operacji, czyli algorytm. Łatwe do zrozumienia, łatwe do
    > prezentacji, łatwe do sprawdzenia poprawności.
    >
    > Co Ty byś proponował do nauki algorytmów?

    Coś co ma "contraints" do spełnienia [1], najlepiej nietrywialne [2]; może
    być wykres Gannta z zadań, ale niektóre uczelnie preferują np. peephole.
    Budowanie wykresu Gannta czy raczej samego przypisania może mieć
    nietrywialne raguły typu "jeden z programistów, taki Edek [3], rzyga na
    widok sortowania, więc niektóre zadania trzeba przypisać innej osobie".
    Peephole natomiast uświadomiłoby niektórym "dzieciom Javy po studiach", że
    JVM opiera się na modelu (trudne słowo przed nami, ech) procesora i że
    tak, Java jest interpretowana.
    Dodatkowym wnioskiem z zastosowania "constraints" jest uświadomienie sobie
    różnicy pomiędzy "zawsze możliwym", "czasami możliwym"
    i "niemożliwym" i odwrotności - spotkałem programistów, którzy tej logiki
    w zaawansowanym umysłowo wieku jeszcze nie rozpracowało, przez co nie
    rozumie zdania "to niemożliwe", albo "w niektórych przypadkach to nie
    zadziała, pomimo tego że w testowanych działa", albo "do tego fragmentu
    nie potrzeba unit testów, bo masz dowód" połączone z "nawet jeżeli
    napisane testy przejdą, po każdej zmianie trzeba od nowa przeprowadzić
    dowód". To ostatnie stosuje się m.in. do algorytmów wielowątkowych, ale
    tak naprawdę takie potoczne programistyczne "rozpatrzenie wszystkich
    możliwości" jak i na przykład refactoring opierają się na logice
    constraints, trzeba umieć je składać, negować itd. .

    Nie zaczynałbym edukacji od "zobacz, na ile możliwości można zrobić coś
    tak banalnego jak sortowanie, jakie piękne metody".

    [1] Gdyby ktoś mi zapodał polskie słowo będę wdzięczny,
    ja mam tylko "ograniczenia". Constraints to moje ulubione podejście do
    pisania programów w ogólności, _w pewnym sensie_ spełnienie wymagań,
    zachowanie integralności sprzętu i inne takie oczywistości jak czas
    implementacji można widzieć jako "constraints" - pisanie oprogramowania ma
    je wszystkie spełniać i to jest pełna definicja jeżeli mamy dane wszystkie
    "constraints".

    [2] Stabilność sortowania - trywialne, w sensie mało złożone, pomijam
    fakt, że algorytm może zmienić nietrywialnie

    [3] Udało mi się do dziś uniknąć znajomości quick-sorta. Jak ktoś
    chce z tego faktu wyciągać daleko idące wnioski na temat mojego
    zrozumienia algorytmów - proszę bardzo. Po pierwsze, mi się
    nie chce, po drugie, ja wciąż potrafię znaleźć szukanie O(n)
    mediany znając tylko wybrane właściwości quick-sorta.

    --
    Edek

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: