February 25, 2021

Язык (читателя | писателя)

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

Однако, программирование как таковое составляет малую часть работы (по разным оценкам от 15 до 35 процентов от жизненного цикла программы). Остальное время мы работаем с кодом не как писатели, а, скорее, как читатели. И регулярно наблюдаем, что имеющиеся инструменты не особо помогают в этой работе.

Есть масса инструментов в языках, помогающих писателю. Это всевозможное сокращение кода, как то:

  • Перегрузка операторов
  • Переопределение операторов (привет, Scala)
  • Мнемонические операторы (привет, Perl Regexp)
  • Поведение по-умолчанию (привет, Kotlin)

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

Однако, инструментов, упрощающих работу читателя, значительно меньше.

Первое, что приходит на ум - это IDE. Прекрасный инструмент, пока вы находитесь на своем рабочем месте. Однако, стоит переместить код в непривычную обстановку и IDE становится бессильной либо требует нетривиальной настройки для работы с кодом. За примером далеко ходить не надо. Настройте сборочный конвейер на Jenkins (написан на Groovy). Окошко внутри web-страницы без подсказок и, возможно, подсветки синтаксиса. Возможно на момент написания публикации ситуация изменилась и стало сильно удобнее, но было очень сложно разбираться в скриптах.

Подсветка синтаксиса также хорошо помогает разобраться в коде. Однако, попробуйте добраться до кода через пару SSH-туннелей и вся подсветка кончится. Или посмотрите на код сквозь дельты Git или SVN и все, подсветка кончилась...

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

Для успешной работы разработчика программного обеспечения, конечно, очень важно знать инструменты (языки, IDE, системы контроля версий), нужно уметь правильно гуглить и пользоваться копипастой. Но не менее важна и насмотренность, начитанность, умение разбираться в чужом коде. А для этого его нужно читать, и читать много.