blog Daniela Janusa
Posty w kategorii: programowanie
Jak zostałem programistą
Nazywam się Daniel Janus, mam 38 lat i od 31 lat jestem programistą.
Czasem się tak przedstawiam i czasem budzi to zaciekawienie, powątpiewanie albo jedno i drugie naraz. Wracam więc myślą do samych początków.
Kod giętki
Ludzie dziwnie na mnie patrzą, kiedy powiadam, że programowanie i poezja mają ze sobą wiele wspólnego. A jednak uważam, że tak właśnie jest, i to co najmniej na kilku poziomach.
Jaki jest cel poezji? Na ten temat napisano morze: parafrazując stary dowcip – gdzie dwóch poetów, tam co najmniej trzy odpowiedzi na to pytanie. Spróbuję jednak uogólnić: poezja ma za zadanie wzbudzić w odbiorcy określone emocje lub przemyślenia, używając do tego celu słów.
O książkach technologicznych i ich tłumaczeniach
Trudna rzecz jest jeden język drugim językiem dostatecznie wyrznąć.
-- Jan Leopolita (1523--1572)
Rodzaje książek informatycznych
Mam zasadę dotyczącą książek informatycznych: nie kupuję niczego, co ma w tytule nazwę konkretnej technologii. (Purystów z góry przepraszam za użycie tego słowa, mając świadomość jego pretensjonalności; ale nie znam innego polskiego określenia, które by zbiorczo obejmowało konkretne języki programowania, systemy operacyjne, platformy wykonawcze, serwery aplikacji, architektury itd.) Po pierwsze, technologie pojawiają się i znikają, wciąż ukazują się ich nowe wersje, i w efekcie czas życia książki opisującej, dajmy na to, konkretną implementację jakiegoś języka programowania na ogół bywa nie dłuższy niż kilka lat. Można wręcz mówić o „okresie półtrwania”, po którym połowa informacji zawartej w książce jest już nieaktualna. Po drugie, i może ważniejsze, tego typu publikacje często wnoszą niewielką wartość dodaną w porównaniu do dokumentacji: od książki oczekuję, że nie tylko przekaże mi suche instrukcje, ale także idee, które w jakiś sposób wzbogacą mój warsztat i zostaną ze mną na dłużej. Dlatego do poduszki wolę poczytać o uczeniu maszynowym za pomocą metod jądrowych niż o bebechach serwera aplikacyjnego.
O jaskiniach, programowaniu i poezji
Emil w swojej ostatniej notce wspomina, że jego marzeniem jest napisanie przygodówki tekstowej. Moim też! Z tej okazji przypomniał mi się eseik, który wysłałem pięć lat temu na jedną z grup usenetowych; publikuję tu bez zmian, dodając tylko odnośniki i poprawiając literówki. Odnotuję też, że większość materiału historycznego jest zaczerpnięta z „Inform Designer's Manual” Nelsona (1997), a programik, który cytuję na końcu, nie kompiluje się już ostatnimi wersjami I7, choć pewnie wymaga niewielkich przeróbek z zachowaniem formy.
Perfekcyjna niedoskonałość USOS-a
Rzeczpospolita pisze o problemach z USOS-em:
– Poprawki oprogramowania nie są potrzebne, bo oprogramowania lepiej nie da się napisać – tłumaczy dr Janina Mincer-Daszkiewicz, kierownik Komisji ds. USOS z Uniwersytetu Warszawskiego. Jej zdaniem problem tkwi w liczbie logowań. – Jeśli w ciągu pierwszych pięciu minut trwania rejestracji na serwery uczelniane rzuca się 5 czy 10 tysięcy studentów, to i najlepszy komputer nie pomoże -- dodaje.
Praktyczne użycie monady state
Wreszcie rozumiem monady!
Pierwszy raz zetknąłem się z nimi dobrych osiem lat temu, przy okazji nauki Haskella; wtedy jednak nie starczyło mi cierpliwości, aby zaznajomić się z podstawami teoretycznymi. Sprawy nie ułatwiał fakt, że trudno o naprawdę przystępne i zrozumiałe wprowadzenie do tego tematu: wygląda na to, że każdy adept Haskella, zrozumiawszy monady, pisze na ten temat własny tutorial. Ja się powstrzymam od tego naturalnego odruchu i po prostu odeślę do niesamowicie szczegółowego, ośmioczęściowego cyklu artykułów autorstwa Mike'a Vaniera, który -- wreszcie! – sprawił, że coś mi „zaskoczyło” w umyśle. Zamiast tego w tym wpisie wynotuję najważniejsze spostrzeżenia, jakie zapamiętałem, a potem pokażę dwie wersje pewnego kodu operującego na sekwencjach bitów: niemonadyczną i napisaną z użyciem monady state.
ClojureScript
Rich Hickey, autor Clojure, wyrasta na Steve'a Jobsa nowoczesnych języków programowania – przynajmniej jeśli idzie o sposób prezentacji swoich dzieł. Oto kilka dni temu na grupie dyskusyjnej Clojure pojawiło się ogłoszenie, że Rich wystąpi na najbliższym spotkaniu nowojorskiej grupy użytkowników Clojure, że strumień wideo z wystąpienia będzie nadawany na żywo i że zaprezentowane zostanie „coś nowego”.
Smyrna
Dziś chciałbym zaprezentować kolejny stworzony przeze mnie przykład wykorzystania Clojure w praktyce – program Smyrna. To proste narzędzie do przeszukiwania korpusów: umożliwia łatwe zindeksowanie zbioru dokumentów w formacie HTML, wyszukanie wystąpień interesującego nas leksemu i stworzenie listy frekwencyjnej słów.
Clojure: czyszczenie dowiązań lokalnych
O jednej z nowych cech Clojure 1.2 dowiedziałem się dopiero niedawno, bo jej wprowadzenie przeszło właściwie bez echa. Może dlatego, że to optymalizacja niewidoczna na zewnątrz; jednak rozwiązuje ważny problem i dlatego warto mieć świadomość jej istnienia. Chodzi o locals clearing, które tłumaczę na polski jako „czyszczenie lokalnych dowiązań”.
Pokoloruj sobie Europę!
To jest druga część minicyklu zapoczątkowanego artykułem o zipperach. Temat ten zaprezentowałem również podczas wystąpienia na spotkaniu Warszawa JUG. Dostępne są slajdy z tej prezentacji (uwaga: slajdy mają postać oskryptowanego HTML; należy je oglądać w Firefoksie lub którejś przeglądarce WebKitowej). Można również obejrzeć nagranie wideo wystąpienia, niestety ze słabą jakością dźwięku.