Proces tworzenia prostych prologowych aplikacji przebiega zazwyczaj podobnie. Zaczynamy od stworzenia bazy wiedzy, definiujemy niezbędne predykaty (niekiedy również w tym samym pliku), a następnie odpalamy interpreter i pytamy o fakty oraz łączące je relacje. Czy oznacza to, że zdefiniowana na samym początku baza jest czymś niemodyfikowalnym z punktu widzenia programu? Czy możemy zmieniać fakty przy […]
Read MoreAlgebraiczne typy danych i haskellowe rekordy
Kiedy w językach obiektowych potrzebujemy struktury, opisującej jakieś dane, tworzymy po prostu klasę. W Haskellu mamy zaś… algebraiczne typy danych. Ale dlaczego algebraiczne? Czy kryje się tutaj jakaś czyhająca na nas komplikacja? Przyjrzyjmy się tej sprawie i rozwikłajmy zagadkę haskellowych ADT (ang. Algebraic Data Types). Dlaczego algebraiczne? Mając do dyspozycji garść podstawowych typów danych, takich […]
Read MorePrzetwarzanie dużych JSONów w Pythonie
Jak w Pythonie odczytać dane z pliku w formacie JSON? Użyć modułu json! – odpowie zapewne spora część pythonistów. I chociaż bardzo często odpowiedź taka jest wystarczająca, niekiedy na horyzoncie pojawiają się problemy, w których zdecydowanie lepiej skorzystać z innych rozwiązań. Jednym z nich jest ijson, czyli iteratywny (ang. iterative) parser plików JSON. Na czym polega […]
Read MoreDSL vs DSML: czym są języki dziedzinowe i języki modelowania dziedzinowego?
Z pojęciem języków dziedzinowych (ang. DSL – Domain-Specific Languages) spotkałem się już dość dawno i znaczenie tego pojęcia było dla mnie w miarę zrozumiałe. Chodzi po prostu o języki zaprojektowane do użycia w konkretnych dziedzinach i dostosowane do nich swoją składnią oraz semantyką. Kiedy jednak pewnego razu natknąłem się na skrót DSML, rozwijany jako Domain-Specific Modeling Languages (języki […]
Read Moreagregator.dev, czyli zobacz moje zakładki
Starając się być na bieżąco w branży, mam w zwyczaju regularnie przeczesywać Sieć w poszukiwaniu interesujących tematów, nowych narzędzi i inspirujących artykułów. Część ze znalezionych treści to kandydaci do blogowych wpisów, część po prostu czytam, wchłaniając zawartą w nich wiedzę. Niestety są też takie materiały, które giną pośród setek przeglądarkowych zakładek, zapisywanych „na później”. Niby […]
Read MoreRekrutacja programistów przy pomocy Geektastic
Tym razem artykuł pozbawiony technicznego „mięska”, a skierowany bardziej do rekruterów IT, managerów i wszystkich tych, którzy uczestniczą w procesie pozyskiwania nowych programistów do swoich firm. Na początek proponuję odpowiedzieć sobie na kilka pytań: Czy stosowany przez Ciebie sposób weryfikacji umiejętności kandydatów jest wydajny? Ile czasu poświęcane jest na sprawdzenie ich wiedzy technicznej? Czy istnieje […]
Read MoreGuietta – sposób na proste GUI w Pythonie
W swoim programistycznym życiu napisałem przy użyciu frameworka Qt tysiące linii kodu. Przygodę z nim zacząłem od jego naturalnego środowiska, jakim jest język C++. Później zaś, gdy przerzuciłem się na Pythona, miałem okazję stworzyć całkiem sporo aplikacji, wykorzystując do tego PyQt. Używając zwrotu „napisałem w Qt” mam na myśli nie tylko posługiwanie się najróżniejszymi klasami, […]
Read MoreWikilambda i Abstrakcyjna Wikipedia – nowe projekty Wikimedii
Kilka dni temu, 2 lipca 2020, Wikimedia Foundation oficjalnie ogłosiła początek dwóch nowych, niezwykle interesujących projektów [1]. Wikilambda oraz Abstrakcyjna Wikipedia – bowiem tak brzmią ich wstępne nazwy – to pomysły ambitne i związane ze sobą w dość ciekawy sposób. Intrygują mnie one nie tylko jako programistę, ale również jako niegdyś aktywnego Wikipedystę (a nawet, […]
Read More