Żyjemy dzisiaj w takich dziwnych czasach, w których wielu ludziom wydaje się, że cały dorobek wiedzy wypracowany przez pokolenia jest poszatkowany na dziesiątki różnych, niepowiązanych i kompletnie niezależnych dziedzin. Tymczasem sprawa, według mnie, wygląda trochę inaczej. I na pewno nie jestem jedyną osobą, która tak myśli.
Rozmawiając ostatnio z przemiłą panią filozof, kolejny raz wyłożyłam swoją teorię o tym, że programowanie to w gruncie rzeczy to samo, co uprawianie filozofii i kolejny raz zobaczyłam to samo zdziwienie, które malowało się na twarzy moich uczelnianych kolegów, adeptów „nauk informatycznych”, gdy mówiłam im, że studiowałam wcześniej „humana” i chwalę to sobie jako doskonały fundament jakiegokowiek rozwoju. Oni dziwili się, że jestem w stanie książki czytać i znajduję w nich coś ciekawego, ona zaskoczona była tym, że nauki humanistyczne w mojej ocenie wymagają tej samej ścisłości co informatyka.
W filozofii starasz się dociec istoty rzeczy. Filozof obserwuje świat, a potem go opisuje. Dba o dokładność i ścisłość zapisu – nie ma rzucania słów na wiatr, nie ma przypadkowości ani niedopowiedzeń. Dokładnie tak samo robimy, gdy tworzymy jakąś aplikację: obserwujemy świat, szukamy zależności, chcemy wiedzieć jak coś działa, a potem to zaobserwowane „jak” przekładamy na język zrozumiały dla komputera. Przekładamy w sposób ścisły i dokładny. Potrzebujemy do tego wiedzy na temat danego języka programowania tak samo, jak filozof musi bardzo sprawnie posługiwać się swoim jezykiem, i musi mieć szerszy zasób słów niż potocznie używamy, żeby móc wyrazić zauważone prawidłowości.
Ja zdaję sobie sprawę z tego, że zarówno filozofia jak i programowanie są dla większości ludzi bardzo odległymi galaktykami. Tak odległymi, że nawet nie próbują słuchać co się o tym mówi, a już na pewno nie będą próbować się tego nauczyć, poczytać, coś zrozumieć. Wielu z nas bardzo nisko ocenia swoje możliwości intelektualne, przez co nawet nie próbujemy postawić sobie w głowie czegoś, co wymaga myślenia abstrakcyjnego. Zupełnie, zupełnie niesłusznie. Wystarczy tylko zmienić podejście i przyjąć za pewnik taką oto teorię, o słuszności której jestem szczerze przekonana: Każdy, absolutnie każdy może uprawiać filozofię i rozumieć filozofów; każdy, absolutnie każdy może rozumieć programowae i sam programować. Różnimy się ilością czasu, jakiego potrzebujemy, by przyswoić sobie to czy inne zagadnienie. Ta ilość czasu to pewna sprawność, której nabywamy w miarę próbowania swoich sił. Mózgi ćwiczą się dokładnie tak samo jak mięśnie – od używania, warto więc używać głowy.
Gdyby maturzysta miał podstawową wiedzę filozoficzną, opowiedzenie mu o relacyjnych bazach danych sprowadziłoby się do przywołania pojęć bytu i atrybutów, i przełożenia ich na konkret bazodanowy. Podobnie programowanie obiektowe wystarczy porównać do platonowskich idei i już wiemy czemu klasa i obiekt to nie to samo. Dlatego zachęcam – sięgnijcie do filozofów. Zobaczcie co nam zostawili starożytni. Poczytajcie o Talesie, Platonie, Sokratesie, próbując wejść w ich świat i ich sposób myślenia. To jest dopiero przygoda! A potem można z tego płynnie przejść w robienie internetów.
A w przyszłym tygodniu płynnie przejdziemy w nieco bardziej techniczne zagadanienie i wyjasnimy pojęcie algorytmu. Proste to będzie o tyle, że w zasadzie każda pani domu tworzy i wykonuje algorytmy codziennie – prowadzenie domu to forma programowania. A dom wielodzietny to już w ogóle programowanie non stop.
PS. pralkę używam nie programuję.
Zgadzam się.