← Wszystkie wpisy

Filozofia inżynierska: Leslie Lamport, myśl, zanim zaczniesz kodować

Leslie Lamport, informatyk i laureat Nagrody Turinga z 2013 roku

Najważniejsze wnioski

  • Myśl, zanim zaczniesz kodować, i zapisuj swoje myślenie. Specyfikacja jest programistycznym odpowiednikiem rysunku architektonicznego — „brak myślenia gwarantuje, że” popełnimy błędy.
  • Czas nie jest globalny; prawdziwa jest przyczynowość. Bez godnego zaufania wspólnego zegara przestajesz pytać, kiedy zdarzenie nastąpiło, a zaczynasz pytać, co spowodowało co.
  • Relacja „nastąpiło przed” i zegary logiczne nadają przyczynowości formę. Porządek częściowy Lamporta — oraz licznik przypisany każdemu procesowi, który go realizuje — jest zalążkiem zegarów wektorowych i nowoczesnego rozwiązywania konfliktów.
  • Najpierw precyzyjnie zdefiniuj poprawność, potem ją udowodnij. Bezpieczeństwo i żywotność, konsensus Paxos, odporność na błędy bizantyjskie i język specyfikacji TLA+ — wszystko to wyrasta z traktowania obliczeń rozproszonych jak matematyki, a nie folkloru.

Zasada

„System rozproszony to taki, w którym awaria komputera, o którego istnieniu nawet nie wiedziałeś, może uczynić twój własny komputer bezużytecznym.” — Leslie Lamport1

Zdanie to wysłał na tablicę ogłoszeń w swoim laboratorium w 1987 roku i jest to najczęściej cytowane zdanie w dziedzinie obliczeń rozproszonych, ponieważ nazywa to, w co intuicja odmawia uwierzyć.1 Wydaje ci się, że uruchamiasz program na swoim komputerze. Tak nie jest. Uruchamiasz go w obrębie całej populacji maszyn, których istnienia nie wyliczyłeś, których zegary się ze sobą nie zgadzają i z których każda może ulec awarii dokładnie w tej chwili, która ma znaczenie. System, który mieści ci się w głowie, i system, który faktycznie działa, to dwa różne systemy, a w przepaści między nimi mieszka każdy błąd systemów rozproszonych.

Dzieło życia Lamporta to odmowa zamaskowania tej przepaści optymizmem. Jego przekonanie głosi, że systemy współbieżne i rozproszone są zbyt subtelne, by rozumować o nich intuicyjnie, więc rozumuje się o nich za pomocą matematyki, na papierze, zanim napisze się choćby linijkę kodu. „Myślenie nie gwarantuje, że nie popełnimy błędów” — powiedział w 2013 roku magazynowi Wired. „Ale brak myślenia gwarantuje, że je popełnimy.”2 Myślenie trzeba zapisać, bo to właśnie pismo obnaża niechlujne myślenie: „Aby myśleć, trzeba pisać. Jeśli myślisz bez pisania, to tylko wydaje ci się, że myślisz.”3 Architekci kreślą rysunek, zanim położona zostanie pierwsza cegła; programistycznym odpowiednikiem jest specyfikacja, a Lamport spędził drugą połowę swojej kariery, dowodząc, że nasze systemy się psują właśnie dlatego, że ten krok pomijamy.4

Głębszy ruch dotyczy samego czasu. W świecie fizycznym nie istnieje globalny zegar, któremu można by zaufać przy porządkowaniu zdarzeń między maszynami — trzeba więc przestać pytać, kiedy coś nastąpiło, a zacząć pytać, co spowodowało co. Prawdziwą strukturą obliczeń rozproszonych jest przyczynowość, a nie zegar ścienny.5 Niemal wszystko, co Lamport zbudował, wynika z potraktowania tego jednego faktu poważnie, i jest to to samo przekonanie, które leży u podstaw bramki dowodowej: nie wolno zakładać porządku, który chciałbyś, żeby był prawdziwy; trzeba go ustalić.

Kontekst

Leslie Lamport urodził się 7 lutego 1941 roku w Nowym Jorku.6 Tytuł licencjata z matematyki uzyskał na MIT w 1960 roku, a następnie tytuł magistra i — w 1972 roku — doktorat z matematyki na Brandeis, z rozprawą o osobliwościach w równaniach różniczkowych cząstkowych.6 Nie kształcił się na informatyka. Kształcił się na matematyka i nigdy nie przestał zachowywać się jak matematyk. Cechą definiującą jego karierę jest to, że wniósł standardy matematyki — precyzyjne definicje, jawnie podane założenia, dowody zamiast testów — do dziedziny, która w większości polegała na programowaniu na wyczucie.

Praca toczyła się w czterech instytucjach. W Massachusetts Computer Associates w latach 70. wykonał fundamentalną pracę myślową nad porządkowaniem zdarzeń. W SRI International (1977–1985) powstała praca o generałach bizantyjskich. W Systems Research Center należącym do Digital Equipment Corporation (od 1985, przez przejęcie przez Compaq aż do 2001) napisał Paxos i rozpoczął prace nad specyfikacją. Od 2001 roku aż do przejścia na emeryturę na początku 2025 roku pracował w Microsoft Research.6 Przez cały ten czas metoda pozostawała niezmienna: znaleźć w obliczeniach rozproszonych lub współbieżnych problem, który wszyscy traktowali jak folklor, zdefiniować go na tyle precyzyjnie, by dało się sformułować twierdzenie, a następnie to twierdzenie udowodnić.

Przemawiający Leslie Lamport

Dzieło

Czas, zegary i relacja „nastąpiło przed”

Praca „Time, Clocks, and the Ordering of Events in a Distributed System” ukazała się w Communications of the ACM w 1978 roku i należy do najczęściej cytowanych prac w całej informatyce — w 2000 roku zdobyła Nagrodę Dijkstry za najbardziej wpływowe dzieło w dziedzinie obliczeń rozproszonych.56 Jej spostrzeżenie jest zwodniczo niewielkie. W systemie rozproszonym nie istnieje wspólny, godny zaufania zegar, nie da się więc uporządkować dwóch zdarzeń, porównując znaczniki czasu. To, co można wiedzieć, to czy jedno zdarzenie mogło spowodować drugie: zdarzenie A nastąpiło przed zdarzeniem B, jeśli A i B należą do tego samego procesu, przy czym A jest pierwsze, albo jeśli A jest wysłaniem komunikatu, a B jego odebraniem. Połącz takie zależności w łańcuch, a otrzymasz relację „nastąpiło przed” — sformalizowaną przyczynowość.5

Kluczowa, sprzeczna z intuicją konsekwencja jest taka, że „nastąpiło przed” jest jedynie porządkiem częściowym, a nie liniowym. Dwa zdarzenia w różnych procesach, między którymi nie ma żadnego łańcucha komunikatów, są naprawdę współbieżne: nie istnieje żaden fakt rozstrzygający, które było pierwsze, a każdy system, który udaje, że jest inaczej, wymyśla porządek, który nie istnieje.5 Lamport podał następnie algorytm znany dziś powszechnie jako zegar Lamporta: każdy proces utrzymuje licznik, zwiększa go przy każdym zdarzeniu i opatruje nim każdy wychodzący komunikat; odbiorca ustawia swój licznik na wartość o jeden większą niż większa z dwóch wartości — jego własnej i znacznika czasu z komunikatu.7 Ta prosta reguła wytwarza znaczniki czasu spójne z przyczynowością i stanowi zalążek zegarów wektorowych, wektorów wersji oraz całej maszynerii rozwiązywania konfliktów w nowoczesnych rozproszonych bazach danych.

Powód, dla którego ta praca znaczy więcej niż sam jej algorytm, jest taki, że zmieniła pytanie. Przed Lamportem zakładano, że na pytanie „o której to się stało?” da się w systemie rozproszonym odpowiedzieć. Po Lamporcie uczciwą odpowiedzią było: „złe pytanie — zapytaj, co to spowodowało”. To właśnie ta zmiana ujęcia sprawia, że przypisuje mu się uczynienie z obliczeń rozproszonych nauki, a nie rzemiosła.

Paxos, konsensus i replikowane maszyny stanowe

Skoro nie ma globalnego zegara, a maszyny ulegają awariom, w jaki sposób grupa komputerów w ogóle uzgadnia cokolwiek — która transakcja została zatwierdzona, kto trzyma blokadę, jaki jest następny wpis w dzienniku? To pytanie jest problemem konsensusu, a odpowiedzią Lamporta jest Paxos, algorytm leżący w sercu niemal każdego odpornego na awarie systemu zbudowanego od tamtej pory. Połączył go z podejściem replikowanej maszyny stanowej: jeśli każda replika startuje w tym samym stanie i stosuje tę samą sekwencję poleceń w tej samej kolejności, repliki pozostają identyczne — cały problem utrzymania spójności systemu rozproszonego sprowadza się więc do uzgodnienia kolejności poleceń, a to właśnie zapewnia Paxos.6

Historia tego, jak Paxos został opublikowany, to najsłynniejsza przestroga w tej dziedzinie. Lamport spisał go jako „The Part-Time Parliament”, przedstawiając algorytm jako procedurę legislacyjną fikcyjnej, starożytnej greckiej wyspy o nazwie Paxos, wraz z ustawodawcami noszącymi pseudogreckie transliteracje nazwisk jego współpracowników.8 Żart okazał się katastrofą. Recenzenci sądzili, że autor nie mówi poważnie; pracę odrzucono jako mało znaczącą; osoby, które przyszły na jego wykłady, zapamiętywały oprawę rodem z Indiany Jonesa, a nie algorytm.8 Tekst leżał nieopublikowany przez lata. Redaktor Communications of the ACM opublikował go ostatecznie w ACM Transactions on Computer Systems w 1998 roku — wciąż owinięty w przypowieść.8 Gdy dziedzina nadal go ignorowała, Lamport w końcu skapitulował i w 2001 roku napisał „Paxos Made Simple”, zdejmując grecką oprawę, by odsłonić to, co — jak utrzymywał — kryło się pod spodem jako naprawdę prosty algorytm.8 Wniosek, jaki z tego wyciągnął, nie brzmiał „ludzie są głupi”. Brzmiał: nawet poprawna, ważna idea ponosi porażkę, jeśli przesłonisz myślenie — sposób przedstawienia jest częścią pracy, nie czymś od niej odrębnym.

Problem generałów bizantyjskich

Leslie Lamport

W 1982 roku, wspólnie z Robertem Shostakiem i Marshallem Pease’em, Lamport opublikował „The Byzantine Generals Problem”, który dał tej dziedzinie język na opisanie najtrudniejszego rodzaju awarii.6 Komponent, który uległ awarii, jest łatwy w porównaniu z komponentem bizantyjskim — takim, który nie zatrzymuje się, lecz kłamie, wysyłając różnym sąsiadom różne, sprzeczne informacje, czy to wskutek błędu, uszkodzenia danych, czy złej woli. Oprawa zaproponowana w pracy: dywizje armii, każda dowodzona przez generała, muszą uzgodnić jeden plan — atakować czy się wycofać — za pośrednictwem posłańców, podczas gdy nieznany podzbiór generałów to zdrajcy aktywnie usiłujący uniemożliwić porozumienie. Lamport udowodnił dokładny próg tego, ilu zdrajców system jest w stanie tolerować, wciąż osiągając porozumienie, zamieniając „a co, jeśli węzeł kłamie?” z mglistego niepokoju w twierdzenie z określoną granicą.

To twierdzenie jest intelektualnym korzeniem każdego systemu, który musi działać dalej, mimo że część jego uczestników jest wroga — i właśnie dlatego, dekady później, słowo bizantyjski tkwi w samym centrum konsensusu w technologii blockchain. Lamport nie zamierzał umożliwiać powstania kryptowalut; zamierzał dokładnie zdefiniować, co znaczy odporność na błędy, gdy „błąd” obejmuje zdradę.

TLA+ i specyfikacja (oraz, owszem, LaTeX)

Nicią przewodnią kariery Lamporta jest przekonanie, że trzeba specyfikować przed kodowaniem, a TLA+ to przekonanie wbudowane w narzędzie. Temporal Logic of Actions to język do pisania precyzyjnego, matematycznego opisu tego, co system ma robić — jego stanów, kroków między nimi oraz własności, które musi zawsze spełniać (bezpieczeństwo: nigdy nie dzieje się nic złego) i ostatecznie osiągnąć (żywotność: w końcu dzieje się coś dobrego) — dwóch pojęć, które sformalizował.6 Piszesz specyfikację, a weryfikator modelowy przeszukuje przestrzeń stanów, by znaleźć ten subtelny przeplot, który łamie twój niezmiennik — błąd, którego nigdy nie znalazłbyś, testując, bo pojawia się tylko wtedy, gdy trzy maszyny robią trzy rzeczy w kolejności, jakiej nigdy sobie nie wyobraziłeś. Jego argument to rysunek architekta: kreślisz budynek, zanim wylejesz beton, a specyfikacja oprogramowania jest tym samym rysunkiem, zapisanym w języku matematyki, bo matematyka jest najprecyzyjniejszym językiem, jaki mamy.4

Istnieje też cichszy pomnik. Na początku lat 80., w oparciu o TeX Donalda Knutha, Lamport napisał LaTeX — system makr, który stał się domyślnym sposobem składania dokumentów przez naukowców i matematyków, powodem, dla którego całe pokolenie prac i rozpraw wygląda tak, jak wygląda.6 To charakterystyczny dla Lamporta wytwór: potrzebował precyzyjnie zapisać własną pracę, więc zbudował narzędzie, które pozwoliło to robić wszystkim. Ten sam instynkt, który dał TLA+ — notację wymuszającą precyzję — dał też LaTeX.

Metoda

Metoda to jedna idea stosowana bezustannie przez pięćdziesiąt lat: myślenie jest pracą, a myślenie trzeba zapisać, zanim powstanie kod.

Rozumuj o przyczynowości, nie o czasie. Nie ma globalnego zegara, któremu można zaufać, przestań więc porządkować zdarzenia według tego, kiedy nastąpiły, a porządkuj je według tego, co spowodowało co. Prawdziwą strukturą jest relacja „nastąpiło przed”, a nie zegar ścienny — i przyjęcie, że dwa zdarzenia są naprawdę współbieżne, jest uczciwsze niż wymyślanie porządku.5

Specyfikuj przed kodowaniem. Dla wszystkiego, co nie ma ustalonego rozwiązania, zatrzymaj się i najpierw pomyśl, a myślenie jest niezależne od kodowania. Napisz rysunek — specyfikację — w języku matematyki, bo matematyka jest prosta i precyzyjna tam, gdzie proza jest mglista.4 „Brak myślenia gwarantuje, że” popełnimy błędy.2

Pisz, aby się przekonać, czy w ogóle myślisz. Pisanie jest sprawdzianem tego, czy myśl jest realna. „Jeśli myślisz bez pisania, to tylko wydaje ci się, że myślisz.”3 Specyfikacja, której nie potrafisz zapisać, to idea, której tak naprawdę jeszcze nie masz.

Zdefiniuj awarię dokładnie. „A co, jeśli węzeł kłamie?” pozostaje folklorem, dopóki nie sformułujesz tego jako problemu generałów bizantyjskich i nie udowodnisz granicy tolerancji. Precyzyjne definicje zamieniają niepokoje w twierdzenia.6

Sposób przedstawienia jest częścią poprawności. Paxos był poprawny przez lata, zanim ktokolwiek mógł go użyć, ponieważ grecka przypowieść pogrzebała ideę. Poprawny wynik, którego nikt nie potrafi zrozumieć, nie został jeszcze do końca zaprojektowany.8

Łańcuch wpływów

Kto go ukształtował

Sama matematyka. Lamport wykształcił się jako doktor matematyki, nie informatyki, a cały kształt jego wkładu polega na zaszczepieniu standardów matematycznych — definicji, aksjomatów, dowodów — w dziedzinie, która programowała na wyczucie.6 (Wpływ formacyjny)

Problemy odporności na awarie w rzeczywistych systemach lat 70. Praca SRI nad niezawodnymi systemami dla statków powietrznych oraz praktyczny koszmar maszyn ulegających awarii w środku protokołu dały mu konkretne problemy — błędy bizantyjskie, konsensus — które domagały się formalnego ujęcia, do którego był stworzony.6 (Wpływ bezpośredni)

Edsger Dijkstra. Przekonanie, że poprawność ustala się dowodem, a nie testowaniem, i że o programach współbieżnych trzeba rozumować formalnie, należy do Dijkstry, zanim stało się własnością Lamporta. Nagroda, którą Lamport otrzymał za pracę o zegarach, nosi imię Dijkstry. (Wpływ bezpośredni)

Kogo ukształtował on

Każdą rozproszoną bazę danych, platformę chmurową i blockchain. Zegary logiczne leżą u podstaw rozwiązywania konfliktów w rozproszonych magazynach danych; Paxos (i jego potomek Raft) jest rdzeniem konsensusu w Chubby i Spanner od Google, w ZooKeeperze, etcd oraz w warstwie koordynacji praktycznie każdej chmury. Wynik o generałach bizantyjskich stanowi teoretyczną podstawę Bitcoina i każdego odpornego na awarie protokołu konsensusu od tamtej pory.

Metody formalne w przemyśle. Amazon Web Services słynie z używania TLA+ do specyfikowania i sprawdzania S3, DynamoDB oraz innych kluczowych usług przed ich wdrożeniem — wykrywając subtelne błędy w projekcie, a nie na produkcji. Argument Lamporta o rysunku przeszedł od herezji do praktyki.

Słownictwo tej dziedziny. „Nastąpiło przed”, bezpieczeństwo i żywotność, replikowane maszyny stanowe, spójność sekwencyjna, błąd bizantyjski — to nie są wkłady Lamporta do języka systemów rozproszonych; one w dużej mierze tym językiem.

Nić przewodnia

Edsger Dijkstra dowodził, że poprawność programu uzasadnia się rozumowaniem, zanim się go uruchomi — że testowanie pokazuje obecność błędów, nigdy ich brak — a Lamport jest bezpośrednim spadkobiercą, przenosząc zasadę „dowód przed wykonaniem” z programów sekwencyjnych do znacznie trudniejszego świata współbieżności, gdzie błąd, którego nie da się przetestować, jest regułą, a nie wyjątkiem. Barbara Liskov uczyniła z formalnego rozumowania o zachowaniu programu działający fundament dzięki abstrakcji danych i podstawialności; Lamport uczynił standardem formalne rozumowanie o zachowaniu systemu w czasie, specyfikując nie to, co gwarantuje pojedynczy obiekt, lecz to, co cały system współbieżny musi zawsze i ostatecznie robić. A Donald Knuth wniósł matematyczną rygorystyczność do analizy algorytmów i, niemal na marginesie, zbudował TeX, by pracę dało się precyzyjnie zapisać — niemal dokładny rym z Lamportem, który w tym samym celu zbudował na nim LaTeX i uczynił z samej specyfikacji akt matematyczny. Trzej matematycy, którzy nie godzili się, by „chyba działa” liczyło się jako wiedza. (Pomost serii)

Co z tego biorę dla siebie

Lekcja, którą zachowuję, brzmi: myślenie jest pracą, a myślenie nie jest realne, dopóki nie zostanie zapisane. Argument Lamporta o rysunku jest niewygodny, bo jest słuszny: powodem, dla którego system psuje się na produkcji, niemal nigdy nie jest błędnie wpisany kod — to fakt, że nikt nie wyspecyfikował, co system miał właściwie robić w warunkach współbieżności i awarii, więc nie istniało żadne sformułowanie, względem którego można by sprawdzić kod. Dyscyplina polega na tym, by napisać specyfikację przed implementacją, w języku na tyle precyzyjnym, by jego sprzeczności stały się widoczne. To ten sam standard, co jakość jako jedyna zmienna: pytanie nigdy nie brzmi „czy to przechodzi ścieżkę optymistyczną?”, lecz „czy sformułowałem dokładnie, co musi być zawsze prawdą — i czy udowodniłem, że projekt to honoruje?”. Dlatego tak mocno opieram się na pisaniu PRD przed kodem; PRD to specyfikacja Lamporta w roboczym ubraniu.

W świecie, w którym dziś buduję — agenci, pętle narzędziowe, systemy wieloagentowe — lekcja Lamporta jest tą, którą niemal każdy pomija i za którą płaci. System agentowy jest systemem rozproszonym: niezależne procesy, brak globalnego zegara, komunikaty docierające nie po kolei albo wcale i komponenty, które ulegają awarii po cichu lub, co gorsza, kłamią. Błędy nigdy nie tkwią w samym prompcie; tkwią w kolejności — dwaj agenci działający na nieaktualnym stanie, wywołanie narzędzia, którego wynik dociera już po decyzji, która go potrzebowała, „współbieżna” para zdarzeń, którą orkiestrator udał, że uporządkował. Dyscyplina Lamporta polega na tym, by przestać ufać intuicji zegara ściennego, rozumować wprost o przyczynowości i awariach oraz zapisać, co musi być zawsze prawdą, zanim cokolwiek się ze sobą połączy. Przekonanie, że specyfikuje się przed budowaniem, że rozumuje się o systemie, zamiast w niego dłubać — to nić przewodnia łącząca pracę o zegarach z 1978 roku z agentowym mechanizmem z 2026, i właśnie dlatego traktuję wydajność i poprawność systemu jako własność, którą się projektuje, nigdy taką, którą ma się nadzieję później wydebugować z powrotem.

FAQ

Na czym polega filozofia inżynierska Leslie Lamporta?

Przekonanie Lamporta głosi, że systemy współbieżne i rozproszone są zbyt subtelne, by rozumować o nich intuicyjnie, więc trzeba myśleć za pomocą matematyki, na papierze, zanim napisze się kod — tak jak architekt kreśli rysunek, zanim położona zostanie pierwsza cegła. Programistycznym rysunkiem jest specyfikacja, zapisana w języku matematyki, bo matematyka jest najprecyzyjniejszym dostępnym językiem.4 Pod tym kryje się postawa wobec czasu: w systemie rozproszonym nie ma globalnego zegara, któremu można zaufać, więc prawdziwą strukturą obliczeń jest przyczynowość — co spowodowało co — a nie to, kiedy rzeczy nastąpiły.5 „Myślenie nie gwarantuje, że nie popełnimy błędów” — powiedział — „ale brak myślenia gwarantuje, że je popełnimy.”2

Czym jest zegar Lamporta i relacja „nastąpiło przed”?

Relacja „nastąpiło przed” to Lamportowska formalizacja przyczynowości w systemie rozproszonym: zdarzenie A nastąpiło przed zdarzeniem B, jeśli należą do tego samego procesu, przy czym A jest pierwsze, albo jeśli A wysyła komunikat, a B go odbiera, albo poprzez łączenie takich zależności w łańcuch.5 Jest to jedynie porządek częściowy — dwa zdarzenia w różnych procesach, których nie łączy żaden komunikat, są naprawdę współbieżne i żaden poprawny system nie może twierdzić, że jedno było pierwsze.5 Zegar Lamporta realizuje to za pomocą licznika na każdy proces: zwiększaj go przy każdym zdarzeniu, opatruj nim każdy wychodzący komunikat, a przy odbiorze ustaw swój licznik na wartość o jeden większą niż większa z dwóch — twojej własnej i znacznika czasu z komunikatu.7 Wynikiem jest zbiór znaczników czasu spójnych z przyczynowością — fundament zegarów wektorowych i nowoczesnego rozwiązywania konfliktów w systemach rozproszonych.

Czym są Paxos i problem generałów bizantyjskich?

Paxos to Lamportowski algorytm konsensusu — doprowadzenia grupy zawodnych, być może ulegających awariom maszyn do uzgodnienia jednej wartości, takiej jak następne polecenie w replikowanym dzienniku — i stanowi podstawę warstwy koordynacji niemal każdego nowoczesnego systemu rozproszonego. Co znamienne, najpierw opublikował go jako przypowieść o fikcyjnym greckim parlamencie („The Part-Time Parliament”, ACM TOCS 1998); żart tak dalece przesłonił ideę, że w końcu przepisał ją jako „Paxos Made Simple” w 2001 roku.8 Problem generałów bizantyjskich (Lamport, Shostak i Pease, 1982) definiuje najtrudniejszy tryb awarii — komponenty, które nie tylko ulegają awarii, lecz kłamią, wysyłając sprzeczne informacje — jako generałów próbujących uzgodnić plan, podczas gdy zdrajcy w ich szeregach sabotują porozumienie, i dowodzi, ilu zdrajców system jest w stanie tolerować.6 Jest to teoretyczny korzeń konsensusu w technologii blockchain.

Dlaczego Leslie Lamport otrzymał Nagrodę Turinga?

ACM przyznało Lamportowi Nagrodę Turinga A.M. za 2013 rok „za fundamentalny wkład w teorię i praktykę systemów rozproszonych i współbieżnych, w szczególności za wynalezienie pojęć takich jak przyczynowość i zegary logiczne, bezpieczeństwo i żywotność, replikowane maszyny stanowe oraz spójność sekwencyjna”.6 Uzasadnienie oddaje rozległość jego pracy: zamienił obliczenia rozproszone z folkloru w naukę o precyzyjnych definicjach i dowodach, dał tej dziedzinie znaczną część jej słownictwa, stworzył język specyfikacji TLA+, by uczynić z zasady „specyfikuj przed kodowaniem” praktyczną dyscyplinę, oraz — w oparciu o TeX Knutha — napisał LaTeX, system składu tekstu, który stał się standardem w nauce i matematyce.6


Źródła


  1. Leslie Lamport, “distributed-system.txt” (jego własna witryna z publikacjami). Powiedzonko „System rozproszony to taki, w którym awaria komputera, o którego istnieniu nawet nie wiedziałeś, może uczynić twój własny komputer bezużytecznym” zostało wysłane na tablicę ogłoszeń w Systems Research Center (SRC) firmy DEC 28 maja 1987 roku. Zebrane w Wikiquote, „Leslie Lamport.” 

  2. Leslie Lamport, cytowany w: Klint Finley, “Why We Should Build Software Like We Build Houses,” Wired, 25 stycznia 2013. „Myślenie nie gwarantuje, że nie popełnimy błędów. Ale brak myślenia gwarantuje, że je popełnimy.” Również zebrane w Wikiquote. 

  3. „Aby myśleć, trzeba pisać. Jeśli myślisz bez pisania, to tylko wydaje ci się, że myślisz.” Przypisywane Leslie Lamportowi (zdanie, które spopularyzował, adaptując słowa rysownika Dicka Guindona: „Pisanie to sposób, w jaki natura daje ci znać, jak niechlujne jest twoje myślenie”); szeroko cytowane w jego wykładach i materiałach o TLA+. Zob. zebrane przypisanie w igvita quotes oraz dyskusję w Goodreads. 

  4. Leslie Lamport, “Thinking Above the Code,” Microsoft Research, wykład główny na Faculty Summit 2014. Argument o rysunku/specyfikacji: architekci kreślą szczegółowe rysunki przed budową; programistycznym rysunkiem jest specyfikacja; dla każdego zadania bez ustalonego rozwiązania „trzeba zatrzymać się i pomyśleć, zanim zacznie się kodować”, a matematyka (zbiory, funkcje, prosta logika) jest najlepszym językiem do bycia prostym i precyzyjnym. Zob. także Quanta Magazine, „Computing Expert Says Programmers Need More Math.” 

  5. Leslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System,” Communications of the ACM 21(7), lipiec 1978. Wprowadza relację „nastąpiło przed” (porządek częściowy ujmujący przyczynowość), pojęcie zdarzeń współbieżnych oraz zegary logiczne. Zdobywca Nagrody Dijkstry z 2000 roku; jedna z najczęściej cytowanych prac w informatyce. 

  6. “Leslie Lamport,” Wikipedia, oraz strona laureata Nagrody Turinga A.M. ACM. Urodzony 7 lutego 1941 roku w Nowym Jorku; licencjat z matematyki MIT (1960); magister i doktorat z matematyki Brandeis (1972); Massachusetts Computer Associates, SRI International, Systems Research Center DEC/Compaq, Microsoft Research. Uzasadnienie Nagrody Turinga z 2013 roku: „za fundamentalny wkład w teorię i praktykę systemów rozproszonych i współbieżnych, w szczególności za wynalezienie pojęć takich jak przyczynowość i zegary logiczne, bezpieczeństwo i żywotność, replikowane maszyny stanowe oraz spójność sekwencyjna”. Obejmuje generałów bizantyjskich (z Shostakiem i Pease’em, 1982), Paxos / „The Part-Time Parliament” (TOCS 1998), TLA+ oraz LaTeX (zbudowany na TeX Knutha, początek lat 80.). Zob. także Britannica, „Leslie Lamport.” 

  7. “Lamport timestamp,” Wikipedia. Algorytm zegara logicznego z pracy z 1978 roku: licznik na każdy proces, zwiększany przed każdym zdarzeniem; wychodzące komunikaty niosą wartość licznika; przy odbiorze licznik ustawiany jest na maksimum z jego bieżącej wartości i otrzymanego znacznika czasu, a następnie zwiększany. Wytwarza znaczniki czasu spójne z relacją „nastąpiło przed”; podstawa zegarów wektorowych. 

  8. Leslie Lamport, “The Part-Time Parliament,” ACM Transactions on Computer Systems 16(2), 1998, oraz “Paxos Made Simple” (2001). Przypowieść o greckim parlamencie przesłoniła algorytm; recenzenci uznali ją za żart i początkowo została odrzucona, co skłoniło do przepisania prostym językiem. Historia streszczona w Microsoft Research, „The Part-Time Parliament” oraz “The Strange Story of the Paxos Algorithm,” Towards Data Science. 

Powiązane artykuły

Filozofia inżynierska: Barbara Liskov, kontrakt jest typem

Barbara Liskov uczyniła abstrakcję danych prymitywem programistycznym: typ to kontrakt, którego dotrzymuje, a podtyp mus…

15 min czytania

Filozofia inżynierii: Werner Vogels

Werner Vogels, CTO Amazona, zbudował chmurę na jednym założeniu: wszystko zawodzi nieustannie. Projektuj z myślą o awari…

18 min czytania

The Shader Gallery That Lied: Debugging 216 WebGL Presets

A user said the shader playground looked broken. Pixel-readback testing found 30 dead presets, 11 that never compiled, a…

11 min czytania