Alan Kay, twórca OOP, o rozwoju, Lisp i OOP

Alan Kay, twórca OOP, o rozwoju, Lisp i OOP

Jeśli nigdy nie słyszałeś o Alanie Kaya, przynajmniej słyszałeś jego słynne cytaty. Na przykład ten cytat z 1971 roku:

Najlepszym sposobem przewidywania przyszłości jest jej wymyślanie.
Najlepszym sposobem na przewidzenie przyszłości jest jej wymyślenie.

Alan ma bardzo barwną karierę w informatyce. Otrzymał Nagroda z Kioto и Nagroda Turinga za pracę nad paradygmatem programowania obiektowego. Był jednym z pionierów w dziedzinie komputerów osobistych i opracowanych przez siebie interfejsów graficznych Pogawędka to jeden z pierwszych najbardziej wpływowych języków programowania wszechczasów.

Mamy w Hexlete, szczególnie w czacie, nieustannie pojawia się pytanie „czym jest OOP” i „co tak naprawdę miał na myśli Alan Kay”. W tym poście znajdują się ciekawe cytaty Alana na temat stanu współczesnego rozwoju, OOP i języka Lisp.

O tworzeniu oprogramowania

Alan Kay uważa, że ​​rewolucja komputerowa dopiero nadchodzi (Prawdziwa rewolucja komputerowa jeszcze się nie wydarzyła), a rozwój oprogramowania rozwija się w odwrotnej proporcji do prawa Moore'a: sprzęt poprawia się co roku, ale oprogramowanie staje się niepotrzebnie rozdęte:

problemem są słabe, słabo skalowalne pomysły i narzędzia, lenistwo, brak wiedzy itp.

Dobrze opisuje tę sytuację krótki żart:

Co Andy daje, Bill zabiera
Andy dał, Bill wziął

Andy Grove, dyrektor generalny Intela i Bill Gates, ówczesny dyrektor generalny Microsoftu.

Celem projektu badawczego była poprawa obecnego stanu rozwoju KROKI W kierunku ponownego wynalezienia programowania (pdf). Celem jest osiągnięcie „prawa Moore'a” w zakresie wyrazistości poprzez „zmniejszenie ilości wymaganego kodu o 100, 1000, 10000 XNUMX lub więcej razy”.

W swoim otwierającym oczy raporcie Programowanie i skalowanie (wideo) Temat ten został omówiony bardziej szczegółowo. Według Alana inżynieria oprogramowania utknęła w martwym punkcie i staje się nauką zapomnianą, która nie nadąża za sprzętem oraz innymi naukami i dyscyplinami inżynieryjnymi. Duże projekty stały się zrzutami kodu i osiągnęły punkt, w którym żaden nie jest w stanie zrozumieć 100 milionów linii kodu MS Vista lub MS Word. Ale w rzeczywistości w takich projektach powinno być o rząd wielkości mniej kodu.

Alan bierze pod uwagę Internet, protokoły TCP/IP, interpretery LISP, Nile (Matematyka DSL dla grafiki wektorowej) i OMeta (OO PEG) (PDF) przykłady eleganckiego oprogramowania z minimalnym kodem.

Nazywa Internet (TCP/IP) jednym z niewielu wielkoskalowych projektów oprogramowania, który został poprawnie zaprojektowany, a jego poziom złożoności jest równoważony poziomem złożoności (komplikacja kontra złożoność). Projekt, składający się z mniej niż 20 1969 linii kodu, działa jak żywy, dynamiczny system zdolny do obsługi miliardów węzłów i nigdy nie przeszedł w tryb offline od czasu jego pierwszego uruchomienia we wrześniu XNUMX r. Po prostu przestaliśmy uważać Internet za normalny projekt oprogramowania tworzony przez ludzi:

Internet jest tak dobrze rozwinięty, że wiele osób traktuje go jak zasób naturalny, taki jak Ocean Spokojny, a nie produkt ludzkiej pracy. Kiedy ostatni raz widzieliśmy tak stabilną, przejrzystą i bezbłędną technologię? Dla porównania, Internet to nonsens. Sieć została stworzona przez amatorów.

O programowaniu obiektowym

Pierwszą rzeczą, która mnie zainteresowała, był jego Inicjał Wizja OOP. Jego doświadczenie w mikrobiologii odegrało ważną rolę:

Myślałem o obiektach jak o komórkach biologicznych i/lub o pojedynczych komputerach w sieci, które mogą komunikować się jedynie za pomocą wiadomości.

i doświadczenie w matematyce:

Moje doświadczenie z matematyką uświadomiło mi, że każdy obiekt może mieć kilka algebr, można je łączyć w rodziny, a to może być bardzo przydatne.

Pomysły na późne wiązanie i potężne meta-funkcje LISPa:

Druga faza to zrozumienie LISPa i wykorzystanie tego zrozumienia do stworzenia łatwiejszych, mniejszych, potężniejszych struktur i późniejszego wiązania.

Wkrótce Alan zaczął popierać pogląd, że języki są dynamiczne przyszłość tworzenia oprogramowania (pdf). Ważna jest dla niego szczególnie łatwość zmian:

Późne wiązanie pozwala na włączenie do projektu pomysłów, które pojawiły się później w procesie programowania, przy mniejszym wysiłku (w porównaniu z wcześniejszymi systemami związanymi, takimi jak C, C++, Java itp.).

Oraz potencjał zmian na bieżąco i szybszych iteracji:

Jedną z kluczowych idei jest to, że system powinien kontynuować pracę podczas testowania, zwłaszcza podczas wprowadzania zmian. Nawet większe zmiany powinny być stopniowe i trwać nie dłużej niż ułamek sekundy.

którego brakuje w języki z typem statycznym:

Jeśli używasz języków wcześnie wiążących, jak robi to większość ludzi, zamykasz się w tym, co już napisałeś. Nie będzie już możliwe łatwe jego przeformułowanie.

Co zaskakujące, jego przemyślenia na temat OOP ograniczały się do tego:

Dla mnie OOP to wiadomości, lokalne przechowywanie i ochrona, ukrywanie stanu i późne wiązanie wszystkiego. Można to zrobić w Smalltalk i LISP.

I nic o dziedziczeniu. To nie jest OOP które znamy dzisiaj:

Żałuję, że dawno temu nie użyłem terminu „obiekt” na określenie tego tematu, ponieważ powoduje to, że wiele osób skupia się na mniejszych pomysłach.

Wielka idea, której brakuje współczesnym językom OO ze statycznym typem:

Najważniejszym pomysłem są „wiadomości”

Wierzy w skupianie się na komunikatach, luźnych powiązaniach i interakcjach modułów, a nie na wnętrzu obiektu:

Kluczem do stworzenia dobrych, skalowalnych systemów jest wypracowanie mechanizmów komunikacji pomiędzy modułami, a nie rozpracowywanie ich wewnętrznych właściwości i zachowania.

Wydaje mu się, że języki są statycznie pisane wadliwy:

Nie jestem przeciwny typom, ale nie znam żadnego systemu typów, który nie powoduje bólu. Dlatego nadal lubię dynamiczne pisanie.

Niektóre popularne obecnie języki korzystają z pomysłów przekazywania wiadomości Smalltalk, późnego wiązania i nie rozumieInwokacja do przodu в Objective-Cbrak_metody в Rubin и nieTakaMetoda w Google'u Strzałka.

Zniszcz wszystko i stwórz coś lepszego

Alan ma ciekawą teorię na temat rozwoju informatyki:

Wydaje mi się, że istnieje tylko jeden rodzaj informatyki i że nauka jest jak budowanie mostów. Ktoś buduje mosty, a ktoś je niszczy i tworzy nowe teorie. Musimy nadal budować mosty.

O LISP-ie

Alan Kay wierzy w Lisp

najlepszy język programowania wszechczasów

I że każdy absolwent informatyki powinien się tego uczyć:

Większość ludzi zdobywających stopnie naukowe w CS nie rozumie znaczenia Lisp. Lisp jest najważniejszą ideą w informatyce.

O odpowiedniej atmosferze i kontekście

Często wspomina niepowtarzalną atmosferę panującą w Xerox PARK и ARPA, gdzie „wizja jest ważniejsza niż cele” i „finansowanie ludzi, a nie projektów”.

Punkt widzenia jest wart 80 punktów IQ.

Alan Kay mówi:

Historia ARPA/PARC pokazuje, jak połączenie wizji, skromnych funduszy, odpowiedniego kontekstu i procesu może w magiczny sposób narodzić nowe technologie, które nie tylko wpływają na cywilizację, ale także tworzą ogromną wartość dla społeczeństwa.

I to prawda. Spójrz na imponującą listę wynalazków PARC, z których wiele odegrało bardzo ważną rolę w rozwoju naszego świata. Na przykład:

  • Drukarki laserowe
  • Programowanie obiektowe / Smalltalk
  • Komputery osobiste
  • Ethernet / przetwarzanie rozproszone
  • GUI / mysz komputerowa / WYSIWYG

Oraz w ARPA stworzyłem ARPANET, który stał się protoplastą Internetu.

PS Alan Kay odpowiada na pytania społeczności Hacker News.

Źródło: www.habr.com

Dodaj komentarz