czwartek, 15 stycznia 2009

Dlaczego statyczne typowanie jest bez sensu

Dzisiaj będzie trochę dziwny post. Temat niby techniczny, ale nie mam zamiaru pokazywać tu kodu źródłowego, benchmarków itp.

Swoją przygodę z programowaniem zacząłem od wysokopoziomowych, dynamicznie typowanych języków (php, python, (trochę) ruby itd.). Czy to dobrze czy źle, trudno mi powiedzieć. Na dzień dzisiejszy wiem jednak, że nie wierzę w przyszłość kompilowanych, statycznie typowanych języków (jak c czy c++). Dlaczego? Ponieważ uważam, że niedługo system operacyjny oraz programy przez nas uruchamiane zmienią się diametralnie. Nie będziemy instalować programów na dysku, ale uruchamiać je w przeglądarce. System operacyjny będzie tylko łączył się z internetem oraz udostępniał przeglądarkę. Tam, czyli w aplikacjach webowych, używanie języków takich jak c++ jest kompletnie bez sensu (chociaż widziałem framework webowy dla c++ o.O). Temat ten rozwinę w innym poście, dzisiaj miało być o statycznym typowaniu :)

Teraz potrzebne będzie trochę wyobraźni (mówiłem, że dzisiejszy post będzie nietypowy, prawda?).
Wyobraźmy sobie szafę, w której mamy szuflady. W niektórych mamy bieliznę, w innych spodnie, w jeszcze innych koszule itd. Jeżeli chcemy wiedzieć co się w danej szufladzie znajduje, po prostu zaglądamy do niej. Z czasem nie musimy już zaglądać do każdej szuflady, pamiętamy już co znajduje się w każdej z nich.

Podobnie jest ze zmiennymi. Jeżeli chcemy wiedzieć co się w niej znajduje po prostu do niej zaglądamy ( zmienna = "costam" - o! ta zmienna zawiera string!). Dzięki odpowiednim nazwom, pamiętamy też co się w danej zmiennej znajduje ( lista_artykulow = ['jedzenie', 'picie', 'proszek do prania'])! Nie potrzebna jest więc nikomu informacja o typie zmiennej!

Tak wiem, że typujemy zmienne nie dla siebie, ale dla komputera. Dlaczego jednak twórcy niektórych języków programowania bardziej martwią się o dobro komputera niż o dobro programisty?!