Pull to refresh

Воображение, как у Эсмеральды

Reading time 4 min
Views 23K
Original author: Rob Pike
(От переводчика: этот текст появился в блоге одного из разработчиков языка Go в новогоднюю ночь 2012. Текст ничуть не утратил актуальности за два минувших года; более того, вместо Go в тексте вполне мог бы стоять любой другой немейнстримовый язык. Собственно, именно об этом текст и повествует.)

Одна моя знакомая актриса — назовём её Эсмеральдой — как-то сказала, «Я всегда знала, что стану актрисой. Даже представить не могу, чтобы я была кем-то ещё!» Кто-то парировал: «Какая же тогда из тебя актриса?»

Я вспомнил об этой беседе, прочитав отзыв о языке Go: «Даже представить не могу, как можно программировать на языке без дженериков!» Мне так и хотелось парировать: «Какой же тогда из тебя программист?»

Эта заметка не о дженериках — против них я ничего не имею: возможно, однажды они в Go появятся, а возможно, нет. Эта заметка о воображении, или по крайней мере о том, что программисты обычно выдают за воображение: претензии. Один мой друг отметил, что самый распространённый ныне способ проводить свободное время — сотрясать воздух Сети своими жалобами. Для жалобщиков это умиротворяющая разрядка; но адресатов неиссякающего потока жалоб это весьма угнетает. На меня жаловались столько, что теперь мне самому стала нужна разрядка. Что я для этого делаю? правильно, пишу возмущённый пост в свой блог.



Не так давно программистом считался тот, кто пишет программы. Теперь же программисту меньше всего охота тратить время на программирование. Программист сегодня — это тот, кто сидит и возмущается, если для его задачи нет готового решения, помещающегося в одну строчку кода. (С точки зрения разработчика языков, критерий успешности для языка — чтобы любую программу можно было сократить до единственной строчки кода. Пример APL так никого ничему и не научил.)



Более широкое определение современного программиста: это тот, кто пытается любую задачу решить одним и тем же способом, и если ему не удаётся — то возмущается несовершенством своих инструментов.

Когда программист вынужден программировать, или даже хотя бы включить голову на время написания кода — то он делится своим негодованием с подписчиками своего блога, твиттера, и с соседями по офису. Стены текста, пропитанного искренним возмущением по поводу того, что для решения задачи Х на неком языке требуется напечатать лишний десяток символов. Как они не замечают абсурда в том, что на свои возмущённые посты тратят тысячи лишних символов? Если бы то же самое время они потратили на решение задачи Х, она бы уже десять раз как была решена. Но разве ж они станут тратить своё драгоценное время на программирование?!

Два года назад вышел Go, в этом году — Dart. У этих языков разные группы разработчиков, и они ставили перед собой разные цели: вряд ли между Go и Dart есть хоть что-то общее, кроме того, что оба выпущены Google. Но меня поразило, как многие первые отзывы о Dart почти буквально повторяли первые отзывы, которые мы получали после выхода Go — лишь с заменой названия «Go» на «Dart». Совершенно необязательно пытаться что-либо написать на Go или на Dart перед публикацией своих претензий к новому языку; напротив, важно не пытаться программировать — тогда ваш отзыв будет «непредвзятым»!

В обоих случаях было много громких и выразительно составленных отзывов, но все они не выражают ничего о том языке, про который написаны. Это обычная реакция современного программиста на нечто новое и незнакомое. Бессодержательные придирки, служащие лишь для удовлетворения желания автора на что-нибудь пожаловаться. Для этого не слишком-то приходится утруждаться: одни и те же придирки подходят к бесконечному множеству языков («Даже представить не могу, как можно программировать на языке без ХХХ!») и, в отличие от кода, придирки не проверяются компилятором на отсутствие ошибок.

Через какое-то время после выхода Go тональность отзывов немного поменялась: некоторые люди всё-таки попытались на нём программировать. Теперь проблема была в том, что у них — как и у того комментатора, с рассказа о котором этот пост начался, — недоставало воображения. Go — это язык для программирования на Go, а не новый синтаксис для Java, для Haskell, или для других существующих языков. Чтобы написать хорошую программу на Go, нужно мыслить по-другому, чем при программировании на Java. Вместо этого современные программисты сокращают путь: берут готовый код, и переписывают его на Go. Код на Go при этом, действительно, порой выходит неуклюжим. Но дело не в Go: если бы эту же программу с самого начала писали на Go, используя другие подходы — более естественные для Go и менее применимые в той же Java — то код бы получался более живой и яркий. Но чтобы научиться мыслить по-другому, нужно затратить время и силы — больше, чем критики Go могут себе позволить. Насколько проницательных отзывов о Go вы могли бы ожидать от человека с десятью годами опыта на Java и десятью минутами опыта на Go? Тем не менее, такие отзывы публикуются и увлечённо обсуждаются программистами. Ещё бы: что может увлечь современных программистов сильнее, чем онлайн-жалобы?

Конечно, я сгущаю краски. За два года достаточно программистов нашли время научиться правильно пользоваться Go, и многие из них остались довольны результатами, которых добились. Растущее сообщество программистов на Go создало кучу замечательных программ, и ко мне вернулась надежда на то, что в мире до сих пор есть настоящие программисты. Программисты, которым ясно: чтобы научиться правильно пользоваться любым языком программирования, нужно время, нужно воображение, и нужна практика программирования на этом языке; все эти затраты окупятся достигнутыми результатами.

Но бессодержательной критики Go на просторах Интернета по-прежнему предостаточно. Поэтому я хочу начать новый 2012 год с такого заявления: «В любой жалобе я увижу в первую очередь свидетельство о характере жалобщика, а не о предмете жалобы. Чтобы заслужить авторитет среди программистов, нужны не жалобы, а опыт и проницательность, и для этого понадобится воображение. Немного практики программирования тоже не помешает.»
Tags:
Hubs:
+55
Comments 49
Comments Comments 49

Articles