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