Poznaj sztukę programowania w dziesięć lat

Peter Norvig
Tłumaczenie: Jakub Piotr Nowak
Last revised 2006.04.08

Dlaczego wszyscy są w takim pośpiechu?

Wejdź do obojętnie jakiej księgarni, a przekonasz się, że można poznać język Java w 24 godziny (Teach Yourself Java in 7 Days), wśród innych równie zachęcających pozycji, które oferują naukę języka Visual Basic, systemu Windows czy Internetu w ciągu kilku godzin bądź kilku dni. Przeprowadziłem takie oto zaawansowane wyszukiwanie na Amazon.com:

pubdate: after 1992 and title: days and (title: learn or title: teach yourself)

i jako wynik dostałem 248 trafień. Pierwsze 78 dotyczyło książek z dziedziny informatyki (pozycja 79 to "Poznaj język Bengali w 30 dni"). Zaminiłem słowo "dni" na słowo "godzin" (hours) i dostałem uderzająco podobny wynik: 253 pozycje, spośród których 77 było informatycznych, a tytuł kolejnej 78 pozycji brzmiał: "Poznaj gramatykę i styl pisania w 24 godziny". W ogólności, spośród pierwszych dwustu książek, 96% stanowiły książki informatyczne.

Wniosek z tego taki, że albo ludzie muszą szybko zgłębić tajniki informatyki albo sama informatyka jest, jakimś dziwnym sposobem, znacznie łatwiejsza do poznania niż inne dziedziny. Nie ma książek, jak poznać w kilka dni utwory Beethovena, fizykę kwantową czy sposób wyczesywania psa.

Poznaj sztukę programowania w dziesięć lat

Naukowcy (Hayes, Bloom) pokazali, że potrzeba około dziesięciu lat, aby rozwinąć umiejętność oceny w jakiejkolwiek dziedzinie, włączając w to grę w szachy, komponowanie muzyki, malowanie, grę na pianinie, pływanie, grę w tenisa, badania w dziedzinie neuropsychologii czy topologii. Zdaje się, że nie ma żadnych wyjątków od tej zasady: nawet Mozartowi, który wykazywał niezwykłe zdolności muzyczne już w wieku czterech lat, zabrało dodatkowe trzynaście lat nim zaczął tworzyć utwory światowej klasy. Weźmy inny rodzaj muzyki, wydawało się, że zespół The Beatles pojawił się na scenie muzycznej i w Show Eda Sullivana z dnia na dzień. Grali oni jednakże już od 1957 w małych klubach w Liverpoolu i w Hamburgu i ich pierwszy, wspaniały sukces, Sgt. Peppers, zostały wydany w 1967.

Mając to wszystko na względzie, widać, że gruntowane poznanie sztuki programowanie ucząć się tylko z książek stoi pod znakiem zapytania. Zanim urodziło się moje pierwsze dziecko, czytałem wszystkie poradniki i nadal czułem, że nie mam o niczym najmniejszego pojęcia. Po 30 miesiącach, kiedy moje drugie dziecko było w drodze, nie wróciłem już do tych książek. Zamiast tego, postanowiłem polegać na swoim własnym doświadczeniu, które okazało się być znacznie bardziej użyteczne i sprawiało, że miałem mniejsze obawy niż po przeczytaniu tysięcy stron napisanych przez ekspertów.

Bibliografia

Odpowiedzi

Przybliżony czas dla różnych operacji na typowym PC (1GHz) w lecie 2001:
wykonanie jednej instrukcji1nsec = (1/1,000,000,000) sec
pobranie słowa z pamięci podręcznej typu L12nsec
pobranie słowa z pamięci głównej10nsec
pobranie słow z dysku twardego znajdującego się tuż za wczytanym200 nsec
pobranie dowolnego słowa z dysku twardego8,000,000nsec = 8msec

Dodatek: Wybór języka programowania

Kilka osób zapytało mnie jakiego języka powinni oni nauczyć się w pierwszej kolejności. Nie ma na to jednoznacznej odpowiedzi, ale warto rozważyć następujące sugestie:

Mając na uwadze powyższe trzy zasady, wybrałbym na pierwszy język programowania język Pythona albo Scheme. Ale okoliczności w Twiom wypadku mogą być inne i przez to inne są, możliwości wyboru. Jeśli Twój wiek, to liczba jednocyfrowa, mógłbyś spróbować języka Alice. Ważne jest to, abyś wybrał i zaczął.

Dodatek: Książki i inne zasoby

Kilka osób zapytało mnie o książki i strony internetowe, które powinni wybrać do nauki. Powtarzam, że sama "książkowa nauka" jest niewystarczająca, ale mogę polecić następujące rzeczy:

Peter Norvig (Copyright 2001)