Śmiało można rzec, że paradygmat programowania obiektowego jest obecnie najpopularniejszym i najpowszechniej używanym. Większość języków głównego nurtu, jak chociażby C++, Java, Python, C# czy JavaScript, pozwala na tworzenie oprogramowania właśnie w sposób obiektowy. Co więcej, paradygmat ten ma już swoje lata, bowiem pierwszy język obiektowy powstał już ponad 50 lat temu (pisałem o tym w […]
Read MoreKategoria: Paradygmaty programowania
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 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 MoreMixiny w językach programowania
O ile takie pojęcia jak polimorfizm, dziedziczenie czy agregacja są doskonale znane adeptom programowania obiektowego, o tyle świadomość istnienia mixinów nie wydaje się być już tak powszechna. Spotykane niekiedy polskojęzyczne określenie to domieszka. Oryginalna nazwa wywodzi się od lodziarni działającej w amerykańskim Somerville, w której serwowano desery w dość oryginalny sposób – klientom oferowano kilka podstawowych smaków lodów, do których mogli oni […]
Read MoreOCaml: funkcje i ich sygnatury
Dla osób przybywających ze świata programowania imperatywnego zobaczenie jak wyglądają typy, które OCaml dedukuje dla definiowanych przez programistę funkcji, często rodzi pewne pytania i niejasności. Zawierająca strzałki notacja na pierwszy rzut oka nie wydaje się najbardziej oczywistym sposobem na wyrażenie np. faktu, że funkcja przyjmuje trzy argumenty typu int i zwraca zmienną tego samego typu. […]
Read MoreRelacje przechodnie w Prologu
W jednym z wcześniejszych wpisów poruszałem temat definiowania relacji symetrycznych w języku Prolog. Rozwiązaniem problemu okazało się tam zdefiniowanie relacji pomocniczej, dzięki której pozbywaliśmy się nieskończonej pętli wywołań. Podobnie jest i w tym przypadku, bowiem i tu definiowanie takiej relacji w sposób „naiwny” i „naturalny” nie zdaje egzaminu. Rozważmy taki oto przykład, w którym szeregujemy kraje […]
Read MoreRelacje symetryczne w Prologu
Jeśli potrzebujemy zdefiniować jakąś relację (dajmy na to małżeństwo) jako symetryczną, to posługując się językiem logiki matematycznej możemy ją zapisać mniej więcej tak:
Read MoreDeklaratywne wyzwanie na listopad: Prolog
Ze smutkiem muszę stwierdzić, że studia, które całkiem niedawno ukończyłem, chociaż przekazały mi całkiem sporo wiedzy związanej z różnymi działami informatyki, jej zastosowaniami oraz teoretycznymi podstawami, to w kwestii języków programowania ukazywały studentom jedynie bardzo wąski wycinek rzeczywistości. Nie mam tu na myśli tego, że uczelnia powinna organizować zajęcia z większej liczby technologii, że powinna […]
Read More