Август 2004
В недавней беседе я сказал то, что расстроило большое количество людей: «Вы можете найти более сообразительных программистов для работы над проектом на Python’е, чем для работы над Java проектом».
Я не имел в виду, что программисты на Java тупые. Я имел в виду, что программисты на Python’е сообразительнее. Ведь это огромная работа выучить новый язык программирования. Люди учат Python не потому, что он даст им возможность получить работу. Эти люди учат новый язык, потому что они искренне любят программировать и не удовлетворены теми языками, которые уже знают.
Это делает их как раз теми, кого компании по разработке ПО следует хотеть нанять. Именно поэтому, из-за отсутствия лучшего названия, я назову это «парадоксом Python’а»: если компания хочет написать своё ПО на относительно эзотерическом языке, то она наймет лучших программистов, потому что она привлечёт только тех, кто позаботился выучить его. Для программистов парадокс можно перефразировать так: язык, который нужно выучить, чтобы получить хорошую работу, это тот язык, который люди учат не только чтобы получить работу.
Не много компаний достаточно мудры, чтобы осознать это. Но и здесь происходить выбор: это как раз те компании, в которых программисты захотят работать. Например, Google. Когда они нанимают java программистов, они также хотят увидеть опыт программирования на Python.
Мой друг, который знает большинство распространенных языков, использует Python для большинства своих проектов. Он говорит, что основная причина, это то как выглядит исходный код. Это может показаться несерьезной причиной выбора языка. Но это намного важнее, чем кажется: когда ты пишешь программу, ты тратишь больше времени на чтение, чем на написание кода. Ты добавляешь куски исходного кода также, как скульптор добавляет куски глины. Язык, который делает исходный код уродливым, сводит с ума придирчивого программиста, как глина с комьями скульптора.
При упоминании уродливого кода, люди конечно подумают о Perl. Но внешнее уродство Perl не из этого разряда. Настоящее уродство не грубо выглядящий синтаксис, а неизбежность построения программ на не правильных концепциях. Perl может выглядеть как нелепый персонаж мультфильма, но в некоторых случаях он концептуально превосходит Python.
До сих пор, не смотря ни на что, оба языка являются «движущимися мишенями». Тем не менее их объединяет с Ruby(и Icon, и J, и Lisp, и Smalltalk) тот факт, что они создавались и использовались людьми, которые действительно интересуются программированием. И тот велик, кто делает это хорошо.