Умение программировать постепенно превращается в навык, который пригодится любому профессионалу. Об этом математик Илья Щуров рассказал в лекции «Программирование как новый английский» в рамках проекта «Университет, открытый городу: лекции молодых ученых „Вышки“ в Культурном центре ЗИЛ».

Илья Щуров —

кандидат физико-математических наук, доцент кафедры высшей математики, преподаватель Центра непрерывного образования НИУ ВШЭ.

Уметь программировать — это как уметь водить машину. Можно провести аналогию между общественным транспортом и существующими программами. Конечно, вы можете пользоваться автобусом или метро, чтобы попасть в нужную точку. Но машина — это свобода. Можно приехать туда, где никто не был, где нет инфраструктуры. Это возможность делать то, что хочется именно тебе.

В 99% случаев вы будете пользоваться готовыми программами. Но всегда есть задачи, которые никто до вас не решал. Есть исключительно ваши задачи. Умение программировать позволяет решать их эффективнее. Или ставить перед собой такие задачи, которые вы до этого не ставили.

Программировать — это приятно

Программирование бывает двух видов: для других — вы пишете программу, которой будет пользоваться кто-то другой, — и для себя. Профессиональное программирование — это как раз для других. И это не самое приятное занятие.

Допустим, вы написали программу. Ее скачали 1000 человек. У 800 заработало. У 100 человек что-то не пошло, они начинают писать вам. Независимо от того, заплатили они за нее или нет, вам будут предъявлять претензии. И их будет много.

А вот программирование для себя — это очень приятное занятие. У вашей программы единственный пользователь, он хорошо знает разработчика, хорошо к нему относится.

Есть такая статистика: 81% профессиональных программистов также программируют в качестве хобби. Представьте: человек сидит в банке и консультирует клиентов, приходит домой и начинает консультировать клиентов для собственного удовольствия. А у программистов именно так и происходит.

Когда ты пишешь программы сам, ты по-другому взаимодействуешь с компьютером. Это похоже на укрощение дикого жеребца. Пишешь код — компьютер выдает ошибку. Смотришь — правда, точку с запятой забыл. Запускаешь заново, компьютер говорит: закрой скобку. Закрываешь скобку, через несколько операций программа начинает работать правильно. И тут ты показываешь, кто в доме хозяин.

Другой аспект: творчество. Вместо повторения рутинных действий вы решаете интеллектуальные задачи. Можно потратить час на то, чтобы написать программу, а можно за полчаса все сделать вручную. Но постепенно вы будете понимать, что можете решать все более сложные задачи.

Вы начнете автоматически «думать кодом»: какую программу мне тут написать, чтобы она сделала все за меня.

Есть и еще один аспект — уходит страх перед технологиями, появляется уверенность, что все проблемы можно решить. Ты понимаешь: если что-то не работает, в 99% случаев для этого есть рациональные причины. То есть рано или поздно вы докопаетесь до причин и все наладите.

Практическая польза

Во-первых, вы получаете экстремальный опыт руководства. Вы учитесь управлять подчиненным, который по сравнению с людьми очень глуп. Если вы освоили это, скорее всего, справитесь с любым руководством любыми людьми.

Во-вторых, вы немного по-другому начинаете смотреть на потоки информации. Однажды я организовывал конференцию, и надо было делать приглашения для участников из-за рубежа. О лице, которое приглашается, нужно было сообщить определенную информацию.

В прошлый раз мои коллеги просто рассылали по почте файл, который нужно было заполнить в свободной форме. В итоге они получили уйму ответов, которые приходилось обрабатывать вручную.

Я сразу сказал: такого у нас не будет. Мы сделали форму, которую люди должны были заполнить, а данные обрабатывались автоматически. Если у вас большая организация, вы просто не сможете эффективно работать с информацией, если ее не контролировать. Умение программировать экономит время и помогает отлаживать рутинные процессы.

Путь к пониманию

У вас появляется понимание. Во-первых, понимание программистов. Я как-то участвовал в проекте, где нужно было написать сценарий для компьютерной игры. Мне нужно было описать для программиста, как должна работать игровая механика: если персонаж делает то-то, его деньги меняются так-то. Я начал писать его просто на русском, а потом понял, что проще писать на Python (один из языков программирования. — ЧТД).

Потому что на русском нужно подбирать слова, и тебя еще могут неправильно понять. А на языке программ кто угодно поймет.

Во-вторых, появляется понимание, как устроен мир высоких технологий. Ваш контакт с компьютером становится более близким. Вы начинаете общаться без посредников. Люди учат иностранный язык, чтобы понять чужую культуру. Язык программирования — это тоже про понимание другой (незнакомой вам) культуры.

Всем стоит пробовать

Есть один подход, который говорит: программировать просто. За три дня освоить основные команды — и все, ты программист. Но дальше начинаются трудности. Опечатка в одном символе — программа уже не будет работать. Или будет работать не так, как нужно. Чем выше ожидания — тем больше разочарование. Человек решает, что программировать — это «не его». Или что его обманывают.

Я не люблю убеждать людей, что учиться программировать — это просто. Если вы не занимаетесь этим долго, возникают трудности. И даже если занимаетесь — тоже.

Есть и другой подход, пессимистичный: если вы не пишете программы со школьных лет, то ничего не получится. Нечего и браться. Я с этим категорически не согласен.

Я часто учу программировать людей разных возрастов. И чаще всего получается. Требует усилий, но получается. Вход не закрыт, даже если вы никогда этим не занимались и не задумывались. Стоит попробовать. Хотя бы сделать несколько шагов.

Почему не нужно бояться

20 лет назад все было просто. Было два языка — Assembler и Basic. Но во всем нужно было разбираться самому. Можно было, конечно, с кем-то посоветоваться, но все-таки было чувство, что ты один на белом свете.

Сегодня все устроено по-другому. Мир стал сложнее. Это уже не один компьютер, это огромное количество систем, форматов файлов, с которыми надо взаимодействовать.

С другой стороны, огромное количество кода уже написано. Чаще всего не нужно изобретать велосипед. Если вы столкнулись с какой-то задачей, скорее всего, кто-то уже про нее подумал и уже есть библиотека на этот случай. Есть StackOverflow — сайт, где программисты делятся опытом.

Что можно сделать с помощью программирования

1. Выйти замуж. Это реальная история моей коллеги, которая искала свадебного фотографа. В интернете крутится огромное количество объявлений: «Я за столько-то часов возьму столько-то денег».

Просмотреть все — долго и нудно. А нужно просто выбрать лучшее соотношение цена-качество. И коллега написала скрипт, который зашел на все нужные сайты, поделил часы на деньги и вывел оптимальный вариант.

2. Узнать о важном. Одни мой друг ждал, когда ВАК вывесит объявление, что ему присвоили ученую степень. А ВАК об этом напрямую не сообщает, только публикует сообщения на сайте. Мой приятель написал скрипт, который заходил на сайт ВАК каждый день и проверял. Когда объявление появилось, программа тут же об этом сообщила.

3. Построить маршрут. Например, оценить эффективность МЦК (Московского центрального кольца. — ЧТД). Мой коллега, лингвист Александр Пиперски, писал об этом. В Google Maps есть интерфейс, с помощью которого можно понять, как оптимально добраться из точки А в точку Б.

Пиперски создал программу, которая выяснила, как удобнее добираться внутри Москвы из одной точки в другую. Если удобнее через МЦК — точка закрашивалась в один цвет, если нет — в другой. В итоге получилось где-то 12% закрашенных точек для МЦК. То есть 12% — это и есть эффективность МЦК.

4. Проанализировать эпос. С помощью программ можно изучить, как связаны между собой разные персонажи в древних сюжетах. Если имена персонажей встречаются близко в тексте, они считаются связанными. Далее программа строит график, на котором отображаются все связи. Это полезный инструмент для историка или литературоведа.

Как научиться?

Здесь все индивидуально. Кому-то достаточно прочесть руководство и посмотреть на несколько примеров, чтобы понять. Кому-то удобнее двигаться под руководством наставника, который бы мог ответить на вопросы, остановить, поправить.

Если выбираете онлайн-курс — смотрите отзывы, ориентируйтесь на сложность и входные требования (для новичков, для продвинутых). Учтите: первый язык выучить трудно, но зато в любом другом вы разберетесь примерно за две недели. В этой связи есть пара советов.

1. Найдите основу. Самый лучший способ что-то понять — найти работающий кусок кода и начать его модифицировать. Подгонять под свои задачи и просто экспериментировать. Смотреть, что получится. Но это уже после того, как вы разобрались с базовыми вещами.


2. Не спешите. Если вы только учитесь, не нужно сразу писать строки кода в больших объемах. Пока вы не можете объяснить очень четко, чего вы хотите от компьютера, бессмысленно замахиваться на большие задачи. Двигайтесь маленькими шажками.

Бывает, человек начинает перебирать варианты, почему не работает код: а давай попробуем так, а давай так. Какой-то вариант в итоге срабатывает — но в другом месте что-то ломается. Лучше не экспериментировать вслепую. Или экспериментировать, но так, чтобы эксперименты всегда заканчивались пониманием.