Interface
Abstrakcja w Haskellu, czyli klasy typów
Po Hermetyzacji pora na Abstrakcje. Abstrakcja ma w programowaniu wiele znaczeń. Jednak w tym artykule będzie mi chodzić o abstrakcję spotykaną w OOP, czyli interfejsy (w Javie), traity (w Scali) czy klasy czysto abstrakcyjne (w C++). Czy Haskell ma odpowiednik interfejsów/traitów? Tak są to klasy typów (ang. Type Classy). Dzięki nim możemy wybierać implementację podczas działania programu.
Sześć rodzajów polimorfizmu - polimorfizm jakiego nie znamy z OOP
Wydawałoby się, że trzy rodzaje polimorfizmu, jakie są spotykane w obiektowych językach programowania i które opiswałem w artykule Sześć rodzajów polimorfizmu - polimorfizm jaki znamy z OOP, są wszystkim czego potrzebujemy do szczęścia, żeby pisać zwięzły kod. Czasem pojawi się tylko jakiś zgrzyt, gdzie trzeba zaimplementować wzorzec wizytator lub fakrykę.
Sześć rodzajów polimorfizmu - polimorfizm jaki znamy z OOP
Gdy dociera do mnie informacja o kolejnym wspaniałym języku programowania, którego warto się nauczyć, to pierwsze co robię to sprawdzam jak wygląda polimorfizm w tym języku programowania.
java.util vs vavr - problem z typami generycznymi w metodzie Collection::remove
Niedawno na 4programers.net pojawiło się pytanie, gdzie ostatecznie problemem była niedoskonałość metody Collection<E>::remove(Object) ze standardowej biblioteki Javy.
Biblioteki do logowania dla języka Java i platformy JVM
W artykule Konfiguracja fabryki loggerów z biblioteki Slogging w Scali autorytarnie stwierdziłem, że Logback dla JVM jest najlepszym silnikiem do logowania. Czytając artykuł Programowanie w Rust: The Good, The Bad and The Ugly zszokowała mnie informacja, że programista nie wie która biblioteka logowania dla Javy jest najlepsza. Prawdziwa klęska urodzaju. I programista nie wie co wybrać
Krótki opis konstrukcji kompilatorów GCC, LLVM i Clang
W dawnych czasach każdy dobry programista chciał napisać swój własny kompilator języka C. Co prawda te czasy już minęły i dziś większość z nas programuje w językach o wiele bardziej złożonych niż C. Dzięki czemu jesteśmy w stanie pisać szybciej kod. Ale nadal warto znać podstawy budowy kompilatorów. Na szczęście konstrukcja kompilatora jest prosta jak konstrukcja dzidy bojowej. Dzida bojowa składa się z: przeddzidzia dzidy bojowej śróddzidzia dzidy bojowej zadzidzia dzidy bojowej.
Biblioteki do parsowania dla języka Scala
Co to jest parser?