Nie mów mi, co jest naturalne

2011-08-17 23:03

Powszechny stereotyp sugeruje, że programiści uwielbiają spierać się co do zalet i wad używanych przez siebie rozwiązań: języków, frameworków, bibliotek czy nawet narzędzi takich jak edytory. Zapewne jest w tym spore ziarno prawdy. Nie ma oczywiście nic złego w rzeczowej dyskusji, w której używane są racjonalne i mające podstawy argumenty. Z tym jednak nie zawsze jest tak różowo.

Jednym z często używanych, ogólnych i pasujących niemal wszędzie “argumentów” jest wspominanie o naturalności danego rozwiązania – lub o jej braku. Mam osobiście duży problem z określeniem zarysów jakichkolwiek użytecznych granic dla tego pojęcia. Nawet więcej: jest ono na tyle niedookreślone, że z niemal równym powodzeniem można by mu przypisać dwa dokładnie przeciwstawne znaczenia. Oba byłyby wprawdzie ścisłe i pozwalały jednoznacznie powiedzieć, czy coś faktycznie jest naturalne czy nie. Problem w tym, że dla wszystkich rozważanych rzeczy odpowiedź byłaby taka sama – a to już jest bezużyteczne. Predykat, który zwraca zawsze true lub zawsze false nie niesie ze sobą żadnej informacji.

Jak więc wyglądają te dwie przeciwstawne postacie?… Z jednej strony trudno zareagować inaczej niż śmiechem na wszelkie próby doszukiwania się pierwotnej Natury w takich zjawiskach jak języki programowania. Życzę powodzenia każdemu, kto próbowałby znaleźć paralele między alternatywą w rodzaju “pętla for czy funkcja map” a decyzjami, jakie musieli podejmować nasi przodkowie na afrykańskiej sawannie jakieś 200 tysięcy lat temu. Tak pojmowana naturalność wyklucza oczywiście wszystkie te rzeczy, o które tak przyjemnie jest się spierać. Pocieszmy się przynajmniej tym, że porażka w używaniu któregoś z nich nie oznacza skończenia jako posiłek dla lwa.
Z drugiej strony jednak nie widać powodu, dla którego dowolne wytwory człowieka nie miałyby być uważane za w pełni naturalnie, jeśli nie odmawiamy tego miana mrowiskom, gniazdom ptakom czy pajęczynom. To znów tworzy nam dobrze określony, jednoznaczny predykat… który jednak zawsze zwraca true, co redukuje jego przydatność do zera.

To wszystko jest oczywiście podejrzane. Jeśli pojęcie ‘naturalny’ nie służy do przekazania nawet jednego bitu użytecznej informacji, to nie powinno być w ogóle używane. Ale jest; to sugeruje, że jego cel jest inny. Może być nim na przykład ukrycie braku rzeczywistego argumentu i próba przemycenia subiektywnego punktu widzenia pod przykrywką obiektywnie brzmiącej etykiety. Słówko ‘naturalny’ brzmi bowiem lepiej niż nawet ‘intuicyjny’. Wydaje się być znacznie precyzyjniejsze (intuicje są przecież mgliste) i sprawia wrażenie odwoływania do pozornie uniwersalnych kryteriów (w przeciwieństwie do subiektywnych intuicji).
Zwykle jednak to tylko złudzenie, ukrywające brak dobrego uzasadnienia dla swoich twierdzeń. Zatem nie mów mi, co jest naturalne. Magiczne zaklęcia nie zastąpią braku rzetelnych argumentów.

Tags: , ,
Author: Xion, posted under Computer Science & IT, Thoughts »


5 comments for post “Nie mów mi, co jest naturalne”.
  1. SebaS86:
    August 18th, 2011 o 0:12

    Po prostu źle postrzegasz naturalność. Dla lepszego zobrazowania, często mówi się “nienaturalne” na zjawiska jak najbardziej naturalne (występujące w przyrodzie) jednak o zakresie i skutkach jakich człowiek nigdy wcześniej nie doświadczył. Można wywnioskować z tego, że ludzie używają terminu “naturalny” do określania dobrze znanych im zasad, zjawisk, przedmiotów, itd.

    Dla tego też dla programistów C/C++ naturalnym jest używanie nawiasów klamrowych do wydzielania bloków – po prostu są do tego przyzwyczajeni i np. JSON może być naturalnym wyborem (ale nie musi, wszystko zależy od konkretnego egzemplarza) jako format przechowywania danych.

    W sporach oczywiście ma to trochę wypaczony sens. Ale gdyby zastanowić się chwilę to po prostu musisz czytać taki argument w trochę inny sposób uwzględniając lokalność i preferencje danej osoby lub grupy.

  2. MSM:
    August 18th, 2011 o 21:41

    @up – tak, ale dla programistów C++ dla oznaczania bloków naturalne są nawiasy klamrowe ‘{‘ ‘}’, dla programistów Lispu, nawiasy okrągłe ‘(‘ ‘)’ a dla programistów Pythona, spacje. W ten sposób tak czy inaczej określenie ‘naturalny’ w sporze między C++owcem a Pythonowcem nie niesie żadnej informacji.

  3. gemGreg:
    August 18th, 2011 o 21:54

    Dość zawile tego newsa napisałeś. Omal nie zrozumiałem o co ci chodzi :)

  4. brodny:
    August 18th, 2011 o 22:50

    “Naturalność” jest czysto subiektywnym odczuciem konkretnego użytkownika. Ale szczerze mówiąc – tak jest z wieloma przymiotnikami, które opisują kod – elegancki, naturalny, zrozumiały, czytelny, wygodny w zastosowaniu etc. Większość z nich sprowadza się do tego, czy dana osoba uważa rozwiązanie za np. eleganckie. Moim zdaniem może to być wyciągnięte w dyskusji nt. wyboru rozwiązania, ale niekoniecznie jako argument, a na pewno nie jako argument dominujący – dla Iksińskiego i Igrekowskiego wygodne będzie X, ale Zetowski stwierdzi, że wygodniejsze jest Y. Dlatego moim zdaniem szkoda czasu na dyskusję przeciwko zdaniu, które jest poparte wyłącznie takimi argumentami :)

  5. Hilary Jendrasiak:
    September 16th, 2011 o 2:11

    Dla każdego naturalne jest trochę co innego.
    Jednak tylko trochę. Czy naturalne będzie dla Ciebie, że program piszesz w taki sposób, iż wykonywana jest co piąta linia, a kiedy kończy się plik- wykonywana jest co piąta licząc od pierwszej niewykonanej ani razu?
    Przekładając na zwięzłe: odliczanie w php ma się wyświetlić wedle właściwej kolejności, jeśli zastosujemy tę konwencję programowania:

    echo 0
    echo 4
    echo 8
    echo 12
    echo 13
    echo 1
    echo 5
    echo 9
    echo 14
    echo 16
    echo 2
    echo 6
    echo 10
    echo 15
    echo 17
    echo 3
    echo 7
    echo 11

    Przykład od czapy… i właśnie o to chodzi! jest od czapy, jest nienaturalny.
    Podobnież, jak nienaturalne jest, by w menu kontekstowym wklej to było wytnij, kopiuj to było wklej, a wytnij to było kopiuj. To jest dla nas nielogiczne, a człowiek dąży do rozwiązań logicznych, jak choćby niegotowanie w kiblu, kiedy ktoś wyje w nim nogi.

    Można rozprawiać o naturalności i nienaturalności. Można śmiało stwierdzić, iż coś nie jest naturalne, jednak dla mnie będzie nienaturalne tylko, jeśli będzie nielogiczne.
    Inny przykłąd. Program konsolowy i mamy takie komendy
    -qf quit force, bez zapisywania
    -qs z savem
    -qss selektywny save- tylko tam, gdzie nie tworzy nowych plików, by zapisać
    -qc wyświetla puszystego kotka w ASCII grafice

    To nie jest logiczne, bowiem jest niekonsekwentne. Czy Wy też myśleliście, że to będzie coś związanego z wyjściem z programu? Ja bym tak pomyślał- tak, więc jest to napisane w sposób nienaturalny, niekonsekwentny, nieprzystępny.

    Nie ma jednak co dywagować na temat wyższości programu półkonsolowego nad konsolowym, dla jednego wygodniej (a, więc i naturalniej- lub też tak się nauczył… ale wielu nie może się tego nauczyć przecież!) jest wpisać komendę krótką jak czas odwalannia dobrej roboty przez polityków, a dla innego wygodniej jest obserwować poruszający się kursor. Ktoś jest wzrokowcem, a ktoś słuchowcem- któryś jest nienaturalny?
    Rzecz w konsekwencji i ułatwieniu użytkownikowi. Jeśli coś jest nieergonomiczne, bo trzeba wykonać niepotrzebne i nielogiczne akcje by dojść do celu- jest to nienaturalne.
    Trzeba jednak szanować to słowo, a to mało kto robi. Można coś nazwać NIEPRZYSTĘPNYM, ale mówimy wtedy o pewnej grupie osób. Dla kogoś innego może to być idealne rozwiązanie.

Comments are disabled.
 


© 2017 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.