Yaroslav Bibaev

Субъективный блог

14 Feb 2021

Понятный код

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

Шли годы, железо становилось производительным, а размер и сложность запускаемых программ увеличились в разы. Теперь, когда в написании кода участвуют несколько человек, стало важно сокращать время на понимание того, за что отвечает каждая часть кода, и куда и как внести необходимые изменения так, чтобы все продолжало работать с учетом новых изменений. Для этого структура и код программы должны быть максимально простыми и ясными. Смысла мало от кода, даже корректно работающего, в котором никто не разбирается кроме автора, да и сам автор наверняка через пару месяцев уже все забудет. Такой код становится проще выкинуть и переписать заново, чем пытаться в нем хоть как-то разобраться, каждый раз тратя на это неимоверные усилия.

Чтобы начать писать понятный код, недостаточно выучить синтаксис языка программирования. По сути это требует некого навыка написания прозы, чтобы уметь держать ветвь повествования и доносить смысл на всем протяжении чтения программы. Это непросто, по этому программисты начали придумывать разные хаки, паттерны, инструменты и даже языки, специально для того, чтобы повысить читаемость. Например, в языке программирования Python, в котором привычные программистам операторы && и || заменены на and и or, а фигурные скобки, необходимые в других языках для определения тела функции, заменены отступами. Но самый интересный подход к написанию понятных программ — литературное программирование. Программа пишется в виде логически выстроенного литературного произведения, и только на этапе сборки произведение превращается в код. Тут даже комментарии не нужны! Все ради того, чтобы можно было проще донести смысл программы до человека.

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