-
Data: 2012-10-13 14:46:27
Temat: Re: sortowanie
Od: Edek Pienkowski <e...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
Następne wpisy z tego wątku
- 13.10.12 14:49 Edek Pienkowski
- 13.10.12 15:13 bartekltg
- 13.10.12 15:13 PK
- 13.10.12 15:26 kenobi
- 13.10.12 15:32 Edek Pienkowski
- 13.10.12 15:36 Edek Pienkowski
- 13.10.12 15:39 bartekltg
- 13.10.12 15:53 kenobi
- 13.10.12 15:58 PK
- 13.10.12 15:58 identyfikator: 20040501
- 13.10.12 16:13 Edek Pienkowski
- 13.10.12 16:13 bartekltg
- 13.10.12 16:58 Edek Pienkowski
- 13.10.12 16:58 Edek Pienkowski
- 13.10.12 18:49 kenobi
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=
- 2025-01-31 Warszawa => Data Engineer (Tech Leader) <=
- 2025-01-31 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-31 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-31 Warszawa => Full Stack .Net Engineer <=
- 2025-01-31 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-31 Gdańsk => Programista Full Stack .Net <=