Programowanie tradycyjnie kojarzone jest z matematyką. W Polsce wydziały informatyki są najczęściej połączone z wydziałami matematyki (np. Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego, Wydział Matematyki i Informatyki Uniwersytetu Jagiellońskiego, Instytut Informatyki Uniwersytetu Wrocławskiego). Czy jednak informatyka to aby na pewno dziedzina matematyki?
Uniwersytety takie jak Harvard podeszły do tematu nieco inaczej… Stanford ma osobny wydział: Stanford University – Computer Science Department. MIT łączy informatykę z elektrotechniką, ich wydział to: Electrical Engineering & Computer Science. W przypadku Harvardu mamy Harvard Computer Science department, tak samo zresztą UCLA. Być może nie wynika to z uznania informatyki za dziedzinę od matematyki odrębną, a ze skali i budżetów tych akademii. Może jednak coś jest na rzeczy z tym, że informatyka nie jest tylko matematyką stosowaną?
Multidyscyplinarna i praktyczna
Pierwsze co nasuwa się, kiedy pomyśleć o informatyce to, że jest dziedziną multidyscyplinarną. W dużej, w ogromnej mierze czerpie z matematyki, jednak nie tylko z niej. Przeplata się również z fizyką – bez maszyn, na których wykonywane są jej teoretyczne konstrukty jest niczym. Matematykę można uprawiać na kartce. Informatyka uprawiana na tablicy jest tym mniej więcej, co teoretyzowanie o produkcji tkanin bez budowania tkalni.
Sztuczna inteligencja czerpie inspirację z biologii. Można domniemywać, że aby przybliżyć się do ludzkiego poziomu sprytu i rozumu, będzie się ta dziedzina z neurobiologią i naukami kognitywnymi przelatać jeszcze bardziej.
Informatyka łączy się także z lingwistyką. Teoria automatów to języki i gramatyki formalne, a znaczący wkład w jej rozwój wniósł lingwistyk: Noam Chomsky.
Kreatywna, eksperymentalna, dynamiczna
Matematyka jest abstrakcyjną, intelektualną dziedziną. Myśli się w niej dużo oraz intensywnie, konieczne jest wysokie IQ, dobra pamięć, szczególnie krótkotrwała, by pomieścić wiele tymczasowych informacji w umyśle. Jest jednak matematyka nauką dość stabilną. Rewolucje, przełomy zdarzają się raczej rzadko. Nowe gałęzie pojawiają się, o ile mi wiadomo, nieczesto.
Tymczasem informatyka, choć podobna, w tym sensie, że posługująca się na poziomie teoretycznym aparatem matematycznym, jest jednak inna. Najpewniej z uwagi na swój młody wiek, jest dynamiczna. Nowe dziedziny rozkwitają w niej – by użyć grafomańskiego porównania – jak pąki na wiosennej łące. Nie pojawiły się w wielu miejscach rozstrzygnięcia ostateczne, a inżynieria oprogramowania szczególnie labilna jest jeśli chodzi o reguły i zasady, bo co dekadę niemal uczy się nas programować nieco inaczej, wedle innych zasad i prawideł…
Informatyka jest też o wiele bardziej eksperymentalna od innych dziedzin. W matematyce eksperymentu nie ma w ogóle, jest dowód. Rzecz trudna do wykonania, a do zweryfikowania kosztowna, przynajmniej intelektualnie. W fizyce eksperymenty są coraz droższe, spektakularne, niektóre już stają się (jak LHC choćby) przedsięwzięciami międzynarodowymi i rozpisanymi na dekady. Póki co natomiast informatyka jest polem eksperymentów dość prostych i raczej tanich. Dlatego też elektronik – jak sądzę – zastanowi się dziesięć razy zanim zacznie lutować, natomiast programista często szybciej napisze prototyp, niż zdołałby go w głowie obrócić i oszlifować (z tej cechy wyrastają zresztą w pewnym stopniu metodyki zwinne).
Co programista musi?
Programista musi być cierpliwy i dość bystry, musi lubić się uczyć i mieć umysł otwarty na nowe rozwiązania. Powinien być kreatywny. Koniecznie musi znać angielski. Jeśli chodzi o inteligencję nie trzeba mu IQ matematyka, czy fizyka teoretycznego, ale potrzebna jest jednak jasność umysłu, pewien zmysł logiki. Dobrze jest, gdy programista jest pragmatykiem, a nie idealistą – w programowaniu często trzeba iść na kompromisy.
Matematyka, czy fizyka – przynajmniej teoretyczne – potrzebne są programiście najczęściej na studiach, rzadko natomiast w praktyce zawodowej.
Wbrew pozorom – programista powinien umieć rozmawiać z ludźmi. Programowanie nie polega jedynie na pisaniu kodu i wymyślaniu rozwiązań technicznych, ale również na zrozumieniu potrzeb biznesu, przyszłych użytkowników. Co więcej skala projektów rozrosła się na tyle, że tworzy się je zespołowo, a bycie samotnym geniuszem nie jest już receptą na sukces w branży.
Reasumując – programista nie jest jedynie matematykiem stosowanym. W pewnym stopniu matematyki potrzebuje, ale raczej matematycznego, logicznego stylu myślenia, umiejętności pracy nad abstrakcyjnymi strukturami, niż aparatu matematycznego i znajomości konkretnych działów królowej nauk.
Comments