Motto: "Prawdziwi programiści nie używają Pascala"

W dawnych, dobrych czasach, zwanych "Złotą Erą" komputerów, łatwo było odróżnić mężczyzn od chłopców (wtedy mówiło się "oddzielić prawdziwych mężczyzn od maminsynków"). W tym okresie prawdziwymi mężczyznami byli ci, którzy rozumieli programowanie komputerów, zaś maminsynkami - ci, którzy nie rozumieli. Prawdziwy programista mówił rzeczy typu: "DO 10 I=1,10" i "ABEND" (oni naprawdę mówili wielkimi literami!), a reszta świata mówiła "komputery są dla mnie zbyt skomplikowane" i "nie potrafię spoufalić się z komputerami - są zbyt bezosobowe". Prawdziwi mężczyźni nie "spoufalają się" z niczym i nie boją się bezosobowości!

Lecz, jak to zwykle bywa, czasy się zmieniają. Patrzymy dziś na świat, w którym starsze panie używają piecyków mikrofalowych wyposażonych w komputery, dwunastoletnie dzieciaki leją prawdziwych mężczyzn w grach typu "Asteroids" i "Pac-Man" i każdy może kupić, a nawet zrozumieć, swój własny komputer osobisty. Prawdziwym programistom zagraża wyparcie przez maturzystów z mikrokomputerami.

Jak widać, istnieje wyraźna potrzeba pokazania różnicy pomiędzy typowym graczem komputerowym z ogólniaka, a prawdziwym programistą. Kiedy różnica ta stanie się jasna, dzieciaki dostaną materiał do przemyślenia i wzór do naśladowania. Łatwiej także będzie wytłumaczyć pracodawcom prawdziwych programistów, dlaczego pomyłką jest zastępowanie tychże pac-manowymi championami, którym nie trzeba tyle płacić.

Języki

Najprostszą metodą oddzielenia prawdziwego programisty od tłumu jest zauważenie, jakiego języka programowania używa. Prawdziwi programiści stosują FORTRAN, maminsynki używają Pascala. Nicklaus Wirth, twórca Pascala, udzielił kiedyś wywiadu, podczas którego zapytano go jak wymawia swoje nazwisko. Odpowiedział, że są tu dwie możliwości - albo wymawia się je jak nazwisko, czyli wirt (w oryg. Veert - przyp. tłum.), albo jak wartość, czyli wert (w oryg. Worth - przyp. tłum.). Każdy może natychmiast sam domyślić się po tej replice, że Nicklaus Wirth jest maminsynkiem. Jedynym mechanizmem, jaki tolerują prawdziwi programiści jest taki, jaki zaimplementowano w kompilatorach FORTRAN-G i FORTRAN-H dla komputera IBM/370. Prawdziwi programiści nie potrzebują do wykonywania swojej pracy wszystkich tych wyszukanych mechanizmów - są naprawdę szczęśliwi, mając dziurkarkę kart, kompilator języka FORTRAN IV i puszkę piwa.

Jeżeli którejś z tych rzeczy nie możesz zrobić w języku FORTRAN, zrób ją w asemblerze, jeżeli zaś nie da się jej zrobić w asemblerze - oznacza to, że nie warto sobie nią zawracać głowy.

Programowanie strukturalne

W ciągu ostatnich kilku lat teoretycy informatyki doszli do czegoś, co nazwali "programowaniem strukturalnym". Twierdzą, że programy są o wiele bardziej zrozumiałe, jeżeli programista używa specjalnych konstrukcji językowych. Oczywiście, od dawna nie mogą dojść do porozumienia, o jakie konstrukcje im chodzi, więc przykłady, których używają, aby pokazać swój punkt widzenia, niezmiennie trafiają na łamy takich, czy innych czasopism, nikogo nie przekonując!

Kiedy skończyłem szkołę, myślałem, że jestem najlepszym programistą na świecie. Umiałem napisać program, który nie dawał się pokonać w grze w kółko i krzyżyk, używałem pięciu różnych języków programowania i potrafiłem napisać program o długości 1000 wierszy, który działał (naprawdę!). I wtedy wkroczyłem w prawdziwy świat. Moim pierwszym zadaniem było zapoznanie się z programem, napisanym w języku FORTRAN, który miał długość 200000 wierszy, zrozumienie go i przyspieszenie jego działania. Każdy prawdziwy programista powie, że całe programowanie strukturalne na świecie nie może pomóc w rozwiązaniu takiego problemu - potrzebny jest talent.

Kilka obserwacji związanych z prawdziwymi programistami i programowaniem strukturalnym:

Wiele pisało się ostatnio także o strukturach danych. Abstrakcyjne typy, struktury, wskaźniki, listy i łańcuchy stały się popularne w pewnych kręgach. Wirth (wspomniany już maminsynek) napisał nawet książkę, w której usiłuje nas przekonać, że można napisać program oparty na strukturach danych. Jak wiadomo, jedyną pożyteczną strukturą jest tablica. Łańcuchy, listy, rekordy i zbiory są tylko szczególnymi przypadkami tablic i powinny być tak właśnie traktowane, bez zaśmiecania języka programowania wszelkiego rodzaju bzdurami. We wszystkich tych śmiesznych typach danych najgorsze jest to, że musi się je deklarować; w każdym prawdziwym języku programowania typ zmiennej oznacza się pierwszą literą jej sześcioznakowej nazwy.

Systemy operacyjne

Prawdziwi programiści nie używają systemu CP/M, który jest raczej zabawką, niż prawdziwym systemem operacyjnym. Nawet starsze panie i dzieci z podstawówki mogą zrozumieć zasady używania CP/M.

Unix jest oczywiście bardziej skomplikowany - typowy użytkownik systemu nigdy nie może spamiętać, jaką komendę wyświetlania wywołać w tym tygodniu, ale szczerze mówiąc, Unix to raczej rodzaj gry komputerowej. Nikt nie wykonuje prawdziwej pracy pod kontrolą Unix-a; robi się tylko kawały w sieci UUCP i pisze gry tekstowe oraz prace naukowe.

Nie, prawdziwy programista używa systemu OS/370. Dobry programista znajduje opis błędu IJK3051 w podręczniku użytkownika JCL. Wybitny programista potrafi napisać program bez zaglądania do podręcznika użytkownika systemu. Genialny programista znajduje błąd w sześciomegabajtowym, szesnastkowym wydruku pamięci, bez używania kalkulatora.

OS to niezapomniany system operacyjny. Można np. zniszczyć efekty wielu dni pracy przez umieszczenie jednej spacji w złym miejscu. Najlepiej kontaktować się z systemem przez dziurkarkę kart. Niektórzy ludzie zarzekają się, że na OS/370 działa system z podziałem czasu, ale po dogłębnej analizie problemu doszedłem do przekonania, że są w błędzie.

Narzędzia programistyczne

W teorii prawdziwy programista może uruchamiać swoje programy po zakodowaniu ich na płycie czołowej komputera. Kiedyś, gdy komputery miały jeszcze płyty czołowe, czasem tak się robiło. Typowy prawdziwy programista wprowadza do pamięci procedury ładowania, gdy zdarzyło się, że program zniszczył kawałek systemu operacyjnego. Legenda głosi, że Seymore Cray, twórca superkomputera Cray I i większości komputerów firmy Control Data, osobiście wstukał pierwszy system operacyjny dla komputera CDC7600. Nie trzeba chyba wyjaśniać, że Seymore jest prawdziwym programistą.

W niektórych firmach przetwarzanie tekstu nie wymaga już dziesięciu inżynierów obsługujących dziurkarkę 029. Dzisiaj prawdziwi programiści wykonują swoją pracę przy pomocy "edytorów tekstu". Wielu ludzi uważa, że najlepsze edytory tekstu powstają w centrum badawczym firmy Xerox w Palo Alto dla komputerów Alto i Dorado. Niestety, żaden prawdziwy programista nie będzie używał komputera z systemem operacyjnym, zwanym SmallTalk i rozmawiał (ang. talk oznacza rozmawiać - przyp. tłum.) z komputerem za pomocą myszy.

Kłopot z takimi edytorami polega na tym, że prawdziwi programiści uważają zasadę "widziały gały, co brały" (w niektórych pismach nazywaną WYSIWYG) za niesłuszną, podobnie, jak w stosunku do kobiet. Nie, prawdziwy programista potrzebuje edytora, pracującego w oparciu o inną zasadę: "sam się o to prosiłeś", edytora skomplikowanego, tajemniczego, wszechmocnego, złośliwego i niebezpiecznego.

Prawdziwi programiści wolą w większości wypadków bezpośrednie wprowadzanie kodu binarnego, niż robienie poprawek w tekście źródłowym programu. Robią to tak często, że większość programów ma niewiele wspólnego z tekstem początkowym. W wielu przypadkach tak mało, że można powiedzieć, iż tekst źródłowy nie istnieje. Kiedy trzeba poprawić taki produkt, nikt nie odważy się zlecić tej pracy komuś, kto nie jest prawdziwym programistą - żaden maminsynek nie wiedziałby nawet, od czego zacząć. Tę technikę nazywamy utajnianiem naszej pracy.

Oto kilka narzędzi programistycznych NIE używanych przez prawdziwych programistów:

Prawdziwy programista przy pracy

Żaden prawdziwy programista nie chciałby zostać znaleziony martwy nad programem obliczeniowym w języku COBOL. Prawdziwy programista lubi zadania najwyższej ważności.

Wielu prawdziwych programistów pracuje dla rządu Stanów Zjednoczonych, jednak ostatnio nad horyzontem zaczęła się formować czarna chmura. Wygląda na to, że jakieś wysoko postawione maminsynki z Departamentu Obrony zdecydowały, że wszystkie programy wojskowe powinny być pisane w zunifikowanym języku, zwanym ADA. Początkowo wyglądało na to, że jest to oręż wymierzony w prawdziwych programistów - język strukturalny, z typami danych itd. Na szczęście, po pewnej adaptacji, stał się wystarczająco atrakcyjny, bardzo zwięzły, wyposażony w mechanizmy dostępu do pamięci i możliwość modyfikacji systemu operacyjnego. Poza tym Edgar Dijkstra go nie lubi! (jak zapewne wiecie napisał on książkę pt. "Szkodliwe GOTO", będącą kamieniem milowym w metodologii programowania). A w ogóle, to zdeterminowany prawdziwy programista może napisać programy fortranowe w dowolnym języku.

Prawdziwy programista może pójść na kompromis ze swoimi zasadami i pracować nad czymś bardziej trywialnym, niż sposoby niszczenia życia, o ile praca ta przynosi odpowiednie zarobki. Paru prawdziwych programistów pracuje w firmie ATARI, tworząc gry komputerowe (oczywiście nie grają w nie - prawdziwy programista zawsze umie pokonać maszynę - gdzie tu więc współzawodnictwo?). Kilku innych zajmuje się grafiką komputerową, chociaż nie znajduje ona większego zainteresowania. Dobrą stroną tej pracy jest to, że wykonuje się ją w FORTRAN-ie, można więc uniknąć obrzydliwego COBOL-a…

Środowisko naturalne prawdziwego programisty

Typowy prawdziwy programista żyje przed terminalem komputera. Wokół terminala znaleźć można:

Prawdziwy programista jest w stanie pracować 30, 40 a nawet 50 godzin bez przerwy. W rzeczywistości nawet woli pracować w taki sposób. Jeśli nie gonią go terminy, przejawia tendencje do rozważania wielu aspektów jakiegoś niewielkiego problemu przez pierwsze 9 tygodni pracy, a potem kończy całość projektu w ostatnim tygodniu, podczas 50-godzinnego maratonu. To nie tylko robi wrażenie na jego agencie, który prawie załamał się, nie widząc postępów w pracach, ale także jest dobrym wytłumaczeniem dla nienapisania dokumentacji. Ogólnie:

Przyszłość

Ostatnia generacja programistów bardzo różni się od swoich poprzedników. Większość młodych programistów nigdy nie widziała dużego komputera, wielu z nich nie potrafi nawet liczyć w systemie szesnastkowym bez pomocy kalkulatora. Absolwenci szkół są chronieni przed realiami programowania przez debuggery symboliczne, edytory tekstu, które liczą nawiasy i "przyjazne dla użytkownika" systemy operacyjne. Najgorsze jest to, że wielu młodych naukowców robi kariery w dziedzinie informatyki, nie znając nawet języka FORTRAN. Czyżby nadchodziła era użytkowników UNIX-a i programistów pascalowych?

Z własnego doświadczenia mogę powiedzieć, że przyszłość maluje się w jasnych barwach. Ani OS/370 ani FORTRAN nie wykazują najmniejszych oznak wymierania (mimo wszystkich wysiłków maminsynków na całym świecie!). Nawet najbardziej podstępne sztuczki - jak wprowadzenie programowania strukturalnego do języka FORTRAN - zawiodły! Jasne, niektórzy producenci oferują kompilatory FORTRAN-a 77, ale każdy z nich ma możliwość powrotu do oryginalnego FORTRAN-a 66, żeby kompilować pętle DO, jak w piśmie stoi!

Nawet Unix nie musi być tak straszny, jak mogłoby się wydawać. Ostatnia jego wersja ma zalety systemu operacyjnego godnego prawdziwego programisty. Dwa różne i podstępnie niekompatybilne interfejsy użytkownika, bardzo skomplikowany i tajemniczy sterownik wyświetlania, pamięć wirtualna… Jeśli się pominie jego strukturalność, to nawet język C może być niezły! Nie ma kontroli typów danych, nazwy zmiennych są siedmio- (dziesięcio-?, ośmio-?) znakowe, no i te wskaźniki… Mniam! To tak, jakby najlepsze fragmenty FORTRAN-a i asemblera w jednym miejscu!

Nie, przyszłość nie będzie taka zła. Przez ostatnie kilka lat prasa pisze o tych komputerowych magikach, opuszczających mury uniwersytetu Stanford, czy też M.I.T. i wchodzących w prawdziwy świat. Ponad wszelką wątpliwość, duch Prawdziwego Programisty żyje w tych młodych mężczyznach i kobietach. Dopóki będą istnieć głupie zadania, kretyńskie błędy i nierealistyczne plany - będą prawdziwi programiści gotowi wskoczyć i rozwiązać problem, zostawiając dokumentację na później.

Niech żyje FORTRAN!

Annon. Wersja skrócona: John Wilson i SonOfMotorola

Autorem powyższego tekstu jest anonimowy amerykański programista. Tekst przetłumaczony na język polski został opublikowany w czasopiśmie "Tajemnice Atari" nr 4/1992.