-
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
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-28 Upadłość i zwolnienia [w Diorze, która była pol prod. głośników - przyp. JMJ]
- 2025-06-28 Taśma izolacyjna do prac elektrycznych
- 2025-06-27 Recenzja 3.1A ;) w 6 gniazdach...
- 2025-06-27 Re: Recenzja 3.1A ;) w 6 gniazdach...
- 2025-06-27 Re: Recenzja 3.1A ;) w 6 gniazdach...
- 2025-06-27 Re: Recenzja 3.1A ;) w 6 gniazdach...
- 2025-06-28 China => Production Coordinator / Representant Product Dev <=
- 2025-06-28 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-06-28 Piaseczno => Developer .NET <=
- 2025-06-28 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-06-28 Warszawa => Recruiter 360 <=
- 2025-06-28 Warszawa => Sales Assistant <=
- 2025-06-28 Warszawa => PC Hardware Expert / Specjalista PC <=
- 2025-06-27 Warszawa => Fullstack PHP Developer <=
- 2025-06-27 Gdańsk => Programista Delphi <=