Pokazywanie postów oznaczonych etykietą java. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą java. Pokaż wszystkie posty

środa, 8 czerwca 2011

Java-Szkoły i kurs 6.001 (MIT)

Jakiś czas temu przeczytałem wpis Joel'a Spolsky'ego n/t "Java-Szkół". Tych, którzy chcą zapoznać się z wpisem odsyłam do oryginału [polskie tłumaczenie]. Blogosfera zawrzała - komentarze pod każdym z wpisów, wpisy typu "What if I went to a Java school, Joel?". Ale nie o tym wpis, nie będę (przynajmniej teraz) polemizował ze zdaniem Spolsky'ego.

Joel wychwala za to kurs 6.001 Structure and Interpretation of Computer Programs
This course introduces students to the principles of computation. Upon completion of 6.001, students should be able to explain and apply the basic methods from programming languages to analyze computational systems, and to generate computational solutions to abstract problems. Substantial weekly programming assignments are an integral part of the course. This course is worth 4 Engineering Design Points.
Kurs chociaż bardzo stary (pierwsze wydanie podręcznika - 1985) jest bardzo ciekawy i warty obejrzenia. Tak, obejrzenia. Dostępne są nagrania wideo całego kursu prowadzonego przez twórców języka Scheme Guy'a L. Steele'aGerald'a Jay Sussman'a. Co prawda sam Scheme nie jest dzisiaj szeroko używany, ale coraz popularniejszy staje się inny dialekt Lisp-a - Clojure (sam dzięki 6.001 zainteresowałem się Lispem i Clojure właśnie).








Download:

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?!