Lista lektur
W mojej karierze przeczytałem wiele książek — to są te podstawowe: tytuły, które ukształtowały moje myślenie o komputerach, kodzie i systemach leżących u ich podstaw.
- Computer Systems: A Programmer's Perspective
Jak programy faktycznie działają na sprzęcie — bity i reprezentacja numeryczna, kod maszynowy, hierarchia pamięci, łączenie, pamięć wirtualna i współbieżność. Książka, która dla mnie zamieniła „magię” w mechanikę.
- The Elements of Computing Systems: Building a Modern Computer from First Principles
Buduje działający komputer z bramek NAND w górę: logika, ALU, procesor, asembler, VM, kompilator, system operacyjny. Praktyczny towarzysz CS:APP — nie tylko czytasz o stosie, ale go budujesz.
- Code: The Hidden Language of Computer Hardware and Software
Petzold przechodzi od alfabetu Morse’a i sygnałów latarki, przez przekaźniki i bramki logiczne, aż do działającego procesora – każdy krok jest motywowany, zanim się pojawi. Najłagodniejszy krok w kierunku faktycznego działania komputerów.
- The Information: A History, a Theory, a Flood
Gleick opowiada historię samej informacji – afrykańskich gadających bębnów, telegrafu, Babbage’a i Lovelace’a, a następnie Shannon, która uczyniła „informację” mierzalną ilością w bitach. Prehistoria wszystkiego na tej liście: entropia, kompresja i korekcja błędów jako pomysły, zanim zaczęto je projektować.
- Code Complete
Tysiąc stron konkretnych porad na temat rzemiosła pisania kodu: nazewnictwo, procedury, przepływ sterowania, programowanie defensywne, debugowanie, refaktoryzacja. Gęsta, ale czytelna – to rodzaj książki, po którą sięga się latami.
- Designing Data-Intensive Applications
Kleppmann odwzorowuje krajobraz nowoczesnych systemów danych: silniki pamięci masowej, replikacja, partycjonowanie, transakcje, konsensus, przetwarzanie wsadowe i strumieniowe. Wyjaśnia kompromisy stojące za każdą decyzją dotyczącą bazy danych i kolejki komunikatów, jaką kiedykolwiek podejmiesz.
- A Brief History of Intelligence: Evolution, AI, and the Five Breakthroughs That Made Our Brains
Bennett opisuje 600 milionów lat ewolucji mózgu jako pięć przełomów – sterowanie, wzmacnianie, symulowanie, mentalizowanie i mówienie – i przy każdym z nich zadaje sobie pytanie, jaki był równoważny ruch w sztucznej inteligencji. Najjaśniejszy opis, jaki znam, wyjaśniający, dlaczego uczenie się przez wzmacnianie, modele świata i język okazały się trudnymi problemami.
- Why Machines Learn: The Elegant Math Behind Modern AI
Ananthaswamy śledzi idee matematyczne — od perceptronu, poprzez opadanie gradientowe, jądra i propagację wsteczną — które po cichu leżą u podstaw współczesnego uczenia maszynowego. Czytelny pomost pomiędzy ręcznie falowaną historią pop-science a prawdziwym podręcznikiem.
- An Introduction to Statistical Learning: with Applications in Python
James, Witten, Hastie, Tibshirani i Taylor omawiają klasyczny zestaw narzędzi do uczenia maszynowego — regresję liniową i logistyczną, walidację krzyżową i pasek startowy, grzbiet i lasso, splajny i GAM, drzewa i zespoły, SVM, PCA i klastrowanie — z matematyką dostosowaną do potrzeb i laboratorium Pythona po każdym rozdziale. Prawdziwy podręcznik, na który wciąż wskazują źródła pop-nauki.
- Deep Learning with Python, Third Edition
Praktyczna wycieczka Cholleta po nowoczesnym głębokim uczeniu się w Keras — od gęstych sieci i sieci konwekcyjnych po transformatory i modele generatywne. Praktyczne, oparte na opiniach i napisane przez osobę, która zbudowała framework.
- High Performance Browser Networking
Grigorik rozpakowuje stos sieciowy, z którego faktycznie korzysta przeglądarka: TCP, TLS, HTTP/1.1, HTTP/2, WebSocket, WebRTC i znajdującą się pod nim warstwę radia mobilnego. Jeśli wysyłasz cokolwiek drogą bezprzewodową, wyjaśnia to, dlaczego Twoja strona działa wolno.
- Fluent Python: Clear, Concise, and Effective Programming
Ramalho przechodzi obok składni do modelu danych Pythona: jak metody dundera, deskryptory, iteratory, współprogramy i maszyneria asynchroniczna faktycznie do siebie pasują. Książka, która zmienia użytkownika Pythona w programistę Pythona.
- JavaScript: The Definitive Guide
Encyklopedyczne odniesienie Flanagana do języka: typy, obiekty, zamknięcia, klasy, moduły, asynchronia i pełna biblioteka standardowa. Gruba, precyzyjna i jedyna w swoim rodzaju książka, jeśli chcesz mieć cały język w jednym miejscu.
- Pro Git
Bezpłatna, oficjalna książka Chacona i Strauba o Gicie: od codziennego przepływu pracy, przez rozgałęzianie, łączenie i zmianę bazy, aż do modelu obiektowego i poleceń hydraulicznych. Najjaśniejsze wyjaśnienie tego, co faktycznie robi Git, gdy wpiszesz `git`.
- Seven Concurrency Models in Seven Weeks
Butcher omawia wątki i blokady, programowanie funkcjonalne, podział tożsamości/stanu Clojure, aktorów, CSP, równoległość danych na GPU i architekturę lambda — jeden paradygmat tygodniowo. Książka, która sprawia, że „wybierz odpowiedni model współbieżności” to prawdziwy wybór, a nie slogan.