Paradoks Pythona
Sierpień 2004
W niedawnym wykładzie powiedziałem coś, co zdenerwowało wiele osób: że do projektu w Pythonie można zatrudnić mądrzejszych programistów niż do projektu w Javie.
Nie miałem przez to na myśli, że programiści Javy są głupi. Miałem na myśli, że programiści Pythona są mądrzy. Nauka nowego języka programowania to dużo pracy. A ludzie uczą się Pythona nie dlatego, że dzięki niemu zdobędą pracę; uczą się go, ponieważ naprawdę lubią programować i nie są zadowoleni z języków, które już znają.
Co czyni ich dokładnie tym rodzajem programistów, których firmy powinny chcieć zatrudnić. Stąd to, co na brak lepszej nazwy nazwę paradoksem Pythona: jeśli firma zdecyduje się pisać swoje oprogramowanie w stosunkowo ezoterycznym języku, będzie w stanie zatrudnić lepszych programistów, ponieważ przyciągnie tylko tych, którzy wystarczająco się postarali, aby go poznać. A dla programistów paradoks jest jeszcze bardziej wyraźny: językiem do nauki, jeśli chcesz zdobyć dobrą pracę, jest język, którego ludzie nie uczą się tylko po to, by zdobyć pracę.
Tylko kilka firm było na tyle mądrych, by to do tej pory zrozumieć. Ale tutaj też zachodzi pewien rodzaj selekcji: są to dokładnie te firmy, w których programiści najbardziej chcieliby pracować. Google, na przykład. Kiedy ogłaszają oferty pracy dla programistów Javy, chcą również doświadczenia w Pythonie.
Przyjaciel, który zna prawie wszystkie powszechnie używane języki, używa Pythona do większości swoich projektów. Mówi, że głównym powodem jest to, że podoba mu się wygląd kodu źródłowego. Może się to wydawać błahym powodem wyboru jednego języka nad drugim. Ale nie jest tak błahym, jak się wydaje: kiedy programujesz, spędzasz więcej czasu na czytaniu kodu niż na jego pisaniu. Przesuwasz fragmenty kodu źródłowego tak, jak rzeźbiarz przesuwa bryły gliny. Więc język, który sprawia, że kod źródłowy jest brzydki, jest doprowadzający do szału dla wymagającego programisty, tak jak glina pełna grudek byłaby dla rzeźbiarza.
Na wzmiankę o brzydkim kodzie źródłowym ludzie oczywiście pomyślą o Perlu. Ale powierzchowna brzydota Perla to nie ten rodzaj, o którym mówię. Prawdziwa brzydota to nie ostry wygląd składni, ale konieczność budowania programów z niewłaściwych koncepcji. Perl może wyglądać jak postać z kreskówki przeklinająca, ale istnieją przypadki, w których przewyższa Pythona koncepcyjnie.
Przynajmniej na razie. Oba języki są oczywiście ruchomymi celami. Ale dzielą, wraz z Ruby (i Icon, i Joy, i J, i Lisp, i Smalltalk) fakt, że są tworzone przez ludzi, którzy naprawdę dbają o programowanie, i używane przez nich. A ci mają tendencję do robienia tego dobrze.