eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingsortowanieRe: sortowanie
  • Data: 2012-10-14 01:19:06
    Temat: Re: sortowanie
    Od: Edek Pienkowski <e...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Dnia Sat, 13 Oct 2012 21:25:41 +0200, Michoo napisal:

    > On 13.10.2012 14:46, Edek Pienkowski wrote:
    >> Dnia Sat, 13 Oct 2012 13:52:31 +0200, Michoo napisal:
    >>
    >>> 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.
    > Na _początek_? Może wybiję cię ze złudzeń, które też miałem idąc na
    > studia - na informatykę nie idzie banda geeków i nerdów, którzy
    > hackowali amigi, atmegi, czy inne zabawki. Większość ludzi swój pierwszy
    > program napisze na zajęciach. Ich trzeba nauczyć "co to jest algorytm".

    Heh, pewnym podejściem selekcji studentów pomimo akceptowania matury
    byłyby na wstępie ćwiczenia "napisz peephole, mając struktury danych,
    język funkcyjny, który przez ostani tydzień wyłożyliśmy i parę przykładów.
    Najlpiej, jakby działał w ogólnym przypadku, ocena 5 tego wymaga". Ale
    wtedy skończyłoby się narzekanie na poziom studentów, a na coś trzeba
    zwalić. <niepolityczne uwagi over/>

    Wbrew pozorom, niektórzy uczyli powyższego jakieś lata temu, z tym
    że bandy ludzi, którzy sobie postawili znak przy przejściu dla pieszych
    o nazwie "Nerd X-ing". Użyj googla, fajny znak, mieli zacięcie do detali.
    Przedmiot był jak najbardziej wstępny i nie wymagał niczego poza "general
    aptitude and pre-calculus high school maths" [1]. Jak widać albo rybki
    albo akwarium, albo się zakłada częściowe znerdzenie (pol: kujonizm)
    albo się nie robi nawet oprogramowania do pralek nie mówiąc o kalkulatorach
    (smartfony pominę). <ok, niepolityczne uwagi naprawdę over/>

    Inaczej mówiąc, uważam pisanie optymalizacji używając modelu
    sekwencyjnego procesora w języku funkcyjnym za coś, co można robić
    _przed_ algorytmiką, żeby wszyscy wiedzieli, co to jest procesor i umieli
    napisać, zrozumieć i poprawić kilka prostych struktur danych. No i
    cudów nie ma, nie wszystkim to się uda - z tym że na części uczelni
    na świecie nie ma polityki "mamy straszny poziom i robimi 10
    egzaminów poprawkowych", tylko "ok, w miarę ci poszło", bo nikt
    cudów nie oczekuje. Ważna jest idea, którą jednak warto załapać,
    jeżeli chce się specjalizować w tym akurat kierunku. Przypuszczam,
    że rozwija myślenie w innym kierunku niż przysłowiowe całki.

    >> Nie zaczynałbym edukacji od "zobacz, na ile możliwości można zrobić coś
    >> tak banalnego jak sortowanie, jakie piękne metody".
    >>
    > Raczej - coś tak banalnego jak sortowanie można zrobić tak, tak i tak.
    > Naucz się pokazywać różnice między tymi podejściami zanim przejdziemy dalej.

    No i robi się i tak i tak. Różnica pomiędzy podejściami polega na tym,
    że u studentów przede wszystkim należy rozwinąć myślenie. Nie polega to na
    wpychaniu wiedzy, bo wiedzę (pamięć faktualną) kążdy ma jaką ma,
    pamięta z czym się zetknął (czytając, słuchając robiąc). Pamięć
    proceduralną rozwija się inaczej (to ta pamięć odpowiedzialna za między
    innymi jazdę na rowerze, z dodatkiem ruchowej - sam wiedza jak się to robi
    to za mało), rozwija się ją zderzając z problemami. Trzeba je rozwiązać,
    albo polec próbując, bo inaczej nie da się nauczyć "jazdy na rowerze" i
    nie da się nauczyć programowania bez rozwalania samemu prostych w sumie
    problemów od samego początku.

    Biorąc pod uwagę powyższe, implementowanie peephole samemu bez
    wystarczających instrukcji danych zanim ktoś zrozumie w ogóle problem
    rozwija lepiej niż wykłady,
    na których wymienia się sorty i obwieszcza, co to jest złożoność.
    Oczywiście, można to samo zrobić z sortem: masz tu tablicę intów (właśnie
    ci powiedzieliśmy, co to jest tablica, prawda?) i je posortuj,
    czyli ułóż od najmniejszych do największych. I tylko pomagać, jak się ktoś
    spyta. Ktoś tak robi? Dawno nie byłem na uczelni.

    Potem można wyłoązyć teorię dopiero, bo jak ktoś faktcznie tak jak mówisz
    nie wie co to RAM a co to procesor, nie sądzę, żeby w ogóle był w stanie
    zrozumieć coś tak prostego jak problemy z sortowaniem. My mamy to już
    dawno za sobą, ale ja też kiedyś nie wiedziałem, co to jest program
    komputerowy. Z mojego doświadczenia lepiej się przyswaja wiedzę, gdy ma
    się za sobą trochę prób, nawet skończonych niepowodzeniem,
    bo wtedy się lepiej rozumie temat. Ba, nawet lepiej próbować rzeczy dużo
    za trudnych dużo za wcześnie, bo potem wszystko jest prostsze,
    fragmenty prawie wpadają w miejsca na brakujące elementy układanki.
    Jedynie trzeba zmienić właśnie podejście, zaakceptować niepowodzenia,
    przestać udawać że ktoś kto nie wie co to jest program zrozumie
    quick-sorta (poza odnotowaniem, że chyba się wie jak to działa)
    i ze to jest uczenie algorytmiki.

    Z tymi constraints to jest tak, że to tylko pewna struktura poznawcza,
    każdy programista ją ma ("jeżeli w kodzie obok a to zawsze b plus
    dodatnie x, to y/(a-b) nie będzie dzieleniem przez zero"), ale trzeba ją
    wykształcić. Dodatkowo, pomaga pewien wgląd w proces. Dlatego istnieją
    takie przedmioty na niektórych uczelniach jak "Jak się uczyć?" czy
    bardziej wyspecjalizowane "Street Fighting Maths" (uczy szybkiego
    szacowania i paru innych). Ludzie mogą z nich polewać, ale te przedmioty
    mają swoje skutki i przyczyny. Tak samo programy uczelni nie powinny uczyć
    tylko tego, co się przyda, ale też wykształcić odpowiednio właśnie taką
    pamięć w naszych durnych mózgach jak pamięć proceduralna.
    Nie mówiąc już o budowaniu abstrakcji, bo ludzki mózg na raz jest w stanie
    trzymać w ręku około 5-8 pojęć, choć da się rozwinąć pojemność o kilka
    ćwiczeniami na jakiś czas przynajmniej. Ale nie 10 tys. linii kodu na
    raz.
    Tych właściwości "hardware" nikt nie przeskoczy, trzeba mieć do tego
    narzędzia, część narzędzi to nie jest wiedza to umiejętność posługiwania
    się niektórymi pojęciami, którą da się nauczyć tylko robiąc - stąd takie
    pojęcie, praktykowane, jak "Learning by doing", w dowolnej postaci, może
    być lab, mogą być staże.

    Powyższe to w zasadzie tło. Ja po prostu nie widzę większego sensu w
    zaczynaniu od algorytmów typu sortowanie, jeżeli ktoś praktycznie nie
    próbował poradzić sobie ze strukturami danych,
    nie rozumie ani reguł ani ograniczeń ani nie posiada odpowiednich
    struktur, które mają naturę qualia [3]. To, czy samą algorytmikę zacznie
    się od sorta czy od analizy polegającej na wyłożeniu co to jest złożoność
    (to drugie przeczy naturalnym własnościom mózgu niestety), najpierw trzeba
    mieć inne narzędzia, i w tym procesie nie ma znaczenia, w ramach jakiego
    przedmiotu te umiejętności się dostarczy - ok, nie musi to być w
    przedmiocie o nazwie algorytmika, ale musi być w wymaganych przed. A
    jeżeli sort ma być wykładany jako coś, co ludzie później uzupełnią wiedzą
    praktyczną, to sorka,
    ale to się nadaje do programowania pralek (dokładnie tak jak w tym
    dowcipie o programistkach, zaprogramuj sobie pralkę [2]).

    [1] Można znaleźć wszystko używając wyszukiwarki, ze zwróceniem
    uwagi na lata wykładanego przedmiotu. Aktualny program jest na Mitx,
    zdaje się "wstęp do programowania" lub jakoś podobnie.

    [2] Też może być fajne. Gość w ramach demo wyjął kawałek pralki,
    dodał trochę prostej elektroniki i to generowało obrazki i dźwięk.
    Co kto lubi, ale nie robił tego w ramach profesji. Nerd p..y ;)

    [3] Zdaje się są inne dla każdego człowieka, nie da się o nich
    tak wprost rozmawiać. Chyba że mi walniesz strumień świadomości
    czegoś prostego, jak myślisz o jakimś prostym problemie,
    zczynając od "na co po kolei na ekranie nastawiasz gałkę oczną".

    PS. Chyba żem się rozpisał...


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