W mocnym języku programuje się trudno

2010-10-13

Zauważyłem, że przy programowaniu w takim języku jak Clojure okazuje się, że nie ma łatwych problemów. Nie można usiąść byle gdzie i na szybko naklepać kodu. Tak bogaty język usuwa niemal wszystkie powtarzalne elementy, zostaje więc tylko esencja, bardzo bliska samej dziedzinie problemu. Nie pisze się funkcji typu get/set, „fabryk” (tu ukłon w stronę Javy), nie wypełnia szablonów, nie tworzy konfiguracji w XML. Zostaje tylko to, co musi, a co z natury jest trudne: dziedzina problemu.

Z jednej strony to dobrze, bo im mniej kodu trzeba pisać, tym lepiej, a obciążanie programistów pracą, którą mogą wykonać komputery (pisanie metod get/set), jest bez sensu. Z drugiej jednak strony oznacza to, że ciężko się czasem zabrać do pracy — wszystko czego się człowiek dotknie jest trudne!


Komentarze

Och, jak ja rozumiem Twój ból :) Sam doświadczam go ostatnio z monadami. Ale jeśli teraz boli, to później już nie będzie.

Jacek Laskowski2010-10-13

Clojure jest tak zajebisty, że aż nie mam motywacji żeby dokończyć projekt w PHP, który muszę dokończyć ;(

Pomyk2010-10-13

Jacek: a z monadami to jest ciekawie. Bardzo długo nie byłem w stanie zrozumieć o co w nich chodzi. A jak w końcu zrozumiałem, to się okazało, że nijak nie są naturalnym narzędziem. Owszem, w języku czysto funkcyjnym jest się na nie skazanym, ale gdzie indziej już nie.

Każdy kod, który napisałem z użyciem monad, przepisywałem potem na ładniejszy, czytelniejszy, prostszy i bardziej zrozumiały bez nich.

Nie jestem więc wcale przekonany, czy gra jest warta świeczki.

Jan Rychter2010-10-14

Warto też zauważyć, że z drugiej strony programowanie w języku takim jak Clojure jest ułatwione (w porównaniu np. z Javą, chociaż można używać JRebel) przez jego interaktywność w postaci min. REPL czy swank. Od razu widać efekty tego, co się robi, a dobrze napisany kod można testować "po kawałku", zgodnie z zasadami bottom-up programming.

Czasami wychodzi to nawet tak, że docelowy program jest tylko efektem ubocznym czy też demonstracją możliwości zbudowanych narzędzi :)

Tomek Lipski2010-10-25