Programowanie to dziedzina na wskroś przesiąknięta językiem angielskim. Nazwy słów kluczowych, funkcji wbudowanych i wszelkich bytów definiowanych przez użytkownika zazwyczaj zapisuje się właśnie w tym języku. Niektórzy żartują, że porządnie napisany kod powinno czytać się tak jak dobrą książkę. I chyba wszyscy wiemy, że chodzi o książkę właśnie po angielsku. Oczywiście tu również zdarzają się […]
Read MoreMiesiąc: grudzień 2019
Pięć sposobów na… silnię w Haskellu!
Jak zaimplementować w Haskellu funkcję, obliczającą silnię? Każdy, kto chociaż zetknął się z tym językiem, będzie na pewno wiedział, że do gry powinna wkroczyć rekurencja. Chcąc wyliczyć n! dla n>0 będziemy liczyć n * (n-1)!, a warunkiem kończącym naszą rekurencję będzie zwrócenie wartości 1 dla 0!. Wielu początkujących ma jednak problem z tym, której konstrukcji […]
Read MoreNSIS, czyli jak w prosty sposób stworzyć instalator pod Windowsa
Jeśli tworzenie aplikacji desktopowych nie jest Ci obce, to z pewnością wiesz, że w toku rozwoju tego typu oprogramowania wcześniej lub później przychodzi moment, w którym trzeba zastanowić się nad sposobem jego dystrybucji. Wiele zależy tu od użytych technologii oraz środowiska, na które kierujemy swoje programy. Na przykład jeśli korzystamy z Javy, to jedną z […]
Read MoreOAuth 2.0 – implementacja serwera i klienta
Całkiem niedawno miałem okazję zmierzyć się z dość ciekawym wyzwaniem technicznym (aka zadaniem rekrutacyjnym). Chociaż to, co było do zrobienia, opisać można w kilku słowach, to implementacja nie jest już wcale taka trywialna i dostarczyła mi sporo zabawy oraz możliwości nauczenia się paru nowych rzeczy. Z tego też powodu uznałem, że jest to zadanie, z gatunku […]
Read MoreSimula – narodziny programowania obiektowego
Jakiś czas temu pisałem o historii wyjątków, która swój początek miała w pierwszej połowie lat 60. Dziś znów powrócimy do tej samej dekady i porozmawiamy sobie o języku, który wprowadził do programowania paradygmat obiektowy. Języku, w którym po raz pierwszy pojawiły się dobrze nam dziś znane klasy i obiekty, a także dziedziczenie i metody wirtualne. […]
Read More