W przyjaźni z maszyną – podsumowanie warsztatów z Martinem Thompsonem
Dawno nie dane mi było uczestniczyć w warsztatach, które były by tak wymagające. Miejsce na warsztatach z Martinem Thompsonem, autorem bloga Mechanical Sympathy udało mi się zarezerwować w ostatnim momencie. Wydałem na nie masę wifecoinów, ale było warto.
Nie będę rozwodził się nad przykładami, bo te bez solidnego wprowadzenia teoretycznego nie będą wiele warte. Wprowadzenie takie to w sumie całe warsztaty, a te trwały prawie 10 godzin. Chciałbym jednak napisać kilka słów o filozoficznej części spotkania.
Po pierwsze, jak piszemy kod nawet w Javie, która jest mocno odseparowana od krzemu, to warto przemyśleć to jak będzie on działać na poziomie procesora. Dobrze widać czemu musimy to zrobić na poziomie rozwiązywania konfliktu ArrayList kontra LinkedList. Obie te kolekcje mają swoją filozofię i przeznaczenie. Tak samo jest z hardwarem. Procesory są projektowane pod konkretne zastosowania. Nawet jak są to rozwiązania w rodzaju x86, które mają spełniać zachcianki różnego rodzaju klientów to twórcy, kierując się względami marketingowymi, będą preferować pewnego rodzaju kod. W przypadku x86 będzie to kod „liczący”, bo taki najczęściej jest spotykany w grach, a jak wiadomo głównymi odbiorcami topowego sprzętu są gracze.
Po drugie, wiele elementów w normalnej pracy programisty podlega tym samym zasadom co kod współbieżny. Jeżeli będziemy potrafili zastosować te zasady w naszej pracy to ułatwimy sobie życie. Nawet najprostsza praca z narzędziami typu git, jeżeli jest zorganizowana tak jak bylibyśmy osobnymi wątkami będzie wydajniejsza niż radosny chaos obecny w wielu zespołach.
Po trzecie warto na warsztatach wymieniać się wiedzą z innymi uczestnikami. Dzięki temu odkryłem narzędzie i7z, które na spółkę z htop świetnie się uzupełniają w temacie śledzenia tego co dzieje się w krzemie.
Podsumowując. Jutro konferencyjna część CodeForward, która też zapowiada się całkiem zacnie.