Wiele z dzisiejszych programiści – przepraszam, oprogramowanie inżynierowie—uważają się za „twórców”. W pewnym sensie artyści. Są one przekazywane ostentacyjnym stronom internetowym ze sprytnie ukrytymi pisankami i przewijaniem paralaksowym; nadają sobie wieloznaczne tytuły zawodowe („były inżynier-inwestor-autor Amazona”) i obrzucają swoje laptopy winylowymi naklejkami sygnalizującymi tożsamość. Niektórzy uważają się za wyrafinowanych literatów. Weź pod uwagę odniesienia do niektórych nazw produktów: Apache Kafka, ScyllaDB, Claude 3.5 Sonnet.
Wiele z tego, przyznaję, dotyczy mnie. Różnica jest taka, że trochę brakuje mi talentu do dzielenia wyrazów, a moje projekty zabawek – o nazwach takich jak „Nabokov” (wiem, wiem) – lepiej, żeby pozostały na moim laptopie. Wszedłem do tego świata praktycznie w chwili, gdy inżynieria oprogramowania wyprzedziła bankowość jako najbardziej znienawidzony zawód. Jest mnóstwo nienawiści i nienawiści do samego siebie, z którymi trzeba się zmagać.
Być może dlatego postrzegam etos stojący za językiem programowania Go zarówno jako naganę, jak i potencjalną korektę dla mojego pokolenia ambitnych osób. Jego twórcy pochodzą z epoki, kiedy programiści mieli mniejsze ego i mniejsze ambicje komercyjne, i jak dla mnie jest to najważniejszy język ogólnego przeznaczenia nowego tysiąclecia — nie najlepszy w jednej rzeczy, ale prawie najlepszy we wszystkim . Model na nasze błyskotliwe czasy.
Gdybym był aby sklasyfikować języki programowania takie jak ruchy artystyczne, można wyróżnić utylitaryzm połowy stulecia (Fortran, COBOL), formalizm wysokich teorii (Haskell, Agda), pragmatyzm amerykańskich korporacji (C#, Java), oddolny komunitaryzm (Python, Ruby) i ezoteryczny hedonizm (Befunge, Brainfuck). Powiedziałbym, że Go, często określane jako „C XXI wieku”, reprezentuje neoklasycyzm: nie tyle rewolucję, ile powrót do przeszłości.
W 2007 roku trzech programistów w Google zebrało się wokół wspólnego przekonania, że standardowe języki, takie jak C++ i Java, stały się trudne w użyciu i słabo przystosowane do obecnego, bardziej zorientowanego na chmurę środowiska obliczeniowego. Jednym z nich był Ken Thompson, poprzednio pracownik Bell Labs i zdobywca nagrody Turinga za pracę nad Uniksem, mitochondrialną Ewą systemów operacyjnych. (Obecnie ludzie zajmujący się systemami operacyjnymi nie bawią się językami programowania — posługiwanie się obydwoma przypomina olimpijskiego skoczka wzwyż kwalifikującego się do maratonu). Dołączył do niego Rob Pike, kolejny absolwent Bell Labs, który wraz z Thompsonem stworzył kodowanie Unicode standardowy UTF-8. Możesz im podziękować za swoje emoji.
Oglądanie tych programistów tworzących Go było jak zobaczenie, jak Scorsese, De Niro i Pesci spotykają się ponownie Irlandczyk. Nawet jego nonszalancką nazwę nieprzyjazną SEO można wybaczyć. Mam na myśli czystą bezczelność. Posunięcie, na które odważyłby się tylko panujący król wyszukiwarek.
Język szybko zyskał na popularności. Prestiż Google musiał pomóc, ale przypuszczam, że istniał niezaspokojony głód nowości. W roku 2009, roku debiutu Go, najmłodsze języki głównego nurtu w większości pochodziły z roku 1995 — prawdziwy annus mirabilis, kiedy wyszły Ruby, PHP, Java i JavaScript.
Nie oznaczało to, że postęp w projektowaniu języków programowania utknął w martwym punkcie. Projektanci języków to niezwykle bystrzy ludzie, a wielu z nich ma reformistyczny zapał do obalenia status quo. Ale to, co ostatecznie zbudują, może czasami przypominać cudo projektu starchitektu, które okazuje się mieć problemy z drenażem. Większość nowych języków nigdy nie rozwiązuje podstawowych problemów z wydajnością.
Ale od samego początku Go był (przepraszam) gotowy do pracy. Kiedyś napisałem w Pythonie małą wyszukiwarkę do przeglądania notatek i dokumentów, ale działała ona wyjątkowo powolnie. Przepisany w Go, mój żałosny wąż urósł i wzbił się w powietrze, biegnąc 30 razy szybciej. Jak niektórzy wnikliwi czytelnicy mogli się domyślić, ten program był moim „Nabokovem”.