Сергей Дегтярев – Экономический субъект. Том III. Цифровая экономика (страница 6)
Вдумайтесь, прошу вас. Это не техническая проблема. Это не вопрос выбора языка программирования, редактора или операционной системы. Это этический выбор. Выбор между уважением и эгоизмом, между заботой и безразличием, между ладом и хаосом.
Выбор в пользу эгоизма против уважения — каждый раз, когда ты называешь переменную «а» вместо «ИдентификаторПокупателя». Выбор в пользу хаоса против порядка — каждый раз, когда ты вставляешь очередной костыль, вместо того чтобы переписать кривое место. Выбор в пользу одиночества против сообщества — каждый раз, когда ты думаешь «моя работа — написать, а читать и отлаживать будут другие, и это уже их проблемы».
И вот что получается. Код становится зеркалом души пишущего. Если душа стремится к ладу, если она помнит о том, кто придёт следом, если она уважает время и силы другого — код выходит красивым, понятным, этичным. Если же душа глуха к другому, если она занята только собой и своим сиюминутным удобством — код выходит безобразным, запутанным, порочным.
Аристотель с его калокагатией, Кант с его императивом, Гегель с его абсолютным духом — все они искали этику и эстетику где-то высоко, в небесах, в трансценденции. А они — вот они. В отступе. В имени переменной. В решении не полениться и переписать функцию. В скромном комментарии, который спасёт чей-то час. В красивом коде, который говорит: «Ты не один. Я думал о тебе. Я сделал так, чтобы тебе было легче».
Это и есть лад. В действии. В отношении. В выборе, который каждый из нас делает — не раз в жизни, а каждый день, каждый час, каждую строчку. Выбор между хаосом и порядком. Между одиночеством и сообществом. Между злом и добром, которое на поверку оказывается просто — красотой.
Сообщество программистов — это экономика. Не та, первая, где собиратель приносит добычу, и не третья, где крестьянин возделывает землю. Не четвертая, где ремесленник точит деталь. Нет. Сообщество программистов — это пятая экономика. Та самая, где отладка стала ведущей деятельностью, где алгоритмы — основной и самый драгоценный запас, где код не пишут для галочки, а читают, отлаживают, передают из рук в руки, как скрижали завета.
И в этой экономике, важно понять, некрасивый код — это не просто ошибка вкуса. Не просто небрежность. Это нарушение присяги. Не перед богом, хотя и перед ним тоже, ибо бог, как известно, любит порядок. Но в первую очередь — перед коллегой. Перед тем, кто сядет за клавиатуру после тебя, кто будет всматриваться в твои строки, кто будет сражаться с твоей небрежностью. Ты дал молчаливую клятву, когда взялся писать код для других. Клятву, что не сделаешь их жизнь сложнее, чем она есть. И некрасивый код — это клятвопреступление. Чистой воды.
Позвольте же мне явить вам две функции. Два мира. Две этики. Две красоты.
Функция А. Смотрите на неё, ибо она — портрет небрежности, этот молчаливый крик эгоизма:
def f(a,b): c=[]
for i in range(len(a)): if a[i]>b:
c.append(a[i]*2) return c
Что делает эта функция? Остановитесь. Подумайте. Расшифруйте эти иероглифы. Вспомните, что «f» означает, вероятно, filter — но уверены ли вы? Что «a» — это array, а «b» — bound, но откуда вам это знать? Догадайтесь, что «c» — это результат, но почему именно «c», а не что-то осмысленное? Понимание, о, какое мучительное понимание требует усилий. Лишних. Ненужных. Тех, которых можно было бы избежать, если бы автор потратил лишние десять секунд, чтобы подобрать имена.
Функция Б. А теперь — вот она, красота, обретшая форму:
//Функция возвращает список, содержащий удвоенные элементы исходного списка, которые превышают заданный порог.
ФУНКЦИЯ отобрать_удвоенные(список, порог)
результат = пустой масссив[]
ДЛЯ КАЖДОГО элемент ИЗ список ЦИКЛ
ЕСЛИ элемент > порог ТОГДА
результат.добавить(элемент * 2)
КОНЕЦЕСЛИ
КОНЕЦЦИКЛА
ВЕРНУТЬ результат
КОНЕЦФУНКЦИИ
Что делает эта функция? Ясно с первого взгляда, даже если вы не программист. Не надо гадать, что такое «a» и «b». Не надо вспоминать, что «f» должно означать. Не надо перечитывать дважды, а то и трижды, мучительно шевеля губами. Всё сказано. В имени функции — действие. В имени параметров — их суть. В комментарии — замысел. В каждой переменной — человеческий язык, а не математический ребус.
Обе функции работают одинаково. Алгоритм их неотличим, как две капли воды. Но функция Б — красива. И я утверждаю это не как эстет, любующийся отступами и строчными буквами. Она красива потому, что написана для другого. Потому что её можно читать — как книгу, как письмо от друга. Потому что её можно отлаживать, не тратя драгоценное время на расшифровку чужого шифра.
Функция А — некрасива. И здесь самое важное. Это не эстетическая оценка в том поверхностном смысле, который вкладывают в неё музейные смотрители. Нет. Это этическая оценка. Суровая, беспощадная, заслуженная.
Автор функции А, сам того не осознавая или осознавая, но предпочитая не думать, сказал: «Моё время важнее твоего». Моя минута, сэкономленная на том, чтобы не придумывать нормальные имена, дороже твоего часа, который ты потратишь на расшифровку. Моё удобство священно, а твоя боль — не моя забота. Я сделал, и мне плевать, что будет дальше.
Автор функции Б, напротив, сказал: «Мы вместе в этом проекте. Я помогу тебе». Я знаю, что ты будешь читать мой код. Я знаю, что ты устал, что у тебя горят глаза, что дедлайн давит на плечи. Я не хочу добавлять тебе ещё одну проблему. Я хочу, чтобы, открыв мою функцию, ты вздохнул с облегчением, а не застонал от отчаяния. Я написал её так, чтобы она была понятной. Не потому, что меня заставят, а потому что я уважаю тебя и твоё время.
И вот где смыкаются этика и эстетика. В этом простом, каждодневном, незаметном подвиге. Автор красивой функции — этичен. Не потому, что он прочитал Канта или выучил десять заповедей. А потому что он помнит о другом. Потому что он возвращает лад в ту путаницу, которую неизбежно порождает любая совместная работа. Потому что он отлаживает не только код, но и человеческие отношения.
Аристотель искал добродетельного человека — и, возможно, не узнал бы его в программисте, пишущем красивый код. Но добродетель, она не меняется с веками. Она всё та же: уважение к другому, забота об общем деле, готовность потратить лишнюю минуту, чтобы сэкономить час товарищу. Только вместо меча и колесницы — теперь у нас клавиатура и компилятор. Вместо полиса — сообщество разработчиков. Вместо героя — тот, кто называет переменную не «х», а «порог».
Такова этика, ставшая красотой. И красота, ставшая этикой.
Пятая экономика, ещё раз, ибо это важно, — это экономика универсальных полуфабрикатов. Код в ней — не просто строки, не просто инструкции для бездушной машины. Код в ней есть основной, самый драгоценный, самый текучий запас универсальных полуфабрикатов. Код читают — как читают письмена древних мудрецов, вчитываясь в каждый знак. Код отлаживают — как настраивают тончайший музыкальный инструмент, добиваясь чистоты звучания. Код передают — как передают факел в эстафете, как завещают потомкам семейную реликвию. Код — это присяга. Торжественная, молчаливая, нерушимая. Ибо красота здесь — не украшение, а этический императив.
Тот, кто это понял — кто прочувствовал до костей, кто принял в сердце, кто превратил в привычку, — тот уже не просто программист. Тот — субъект пятой экономики. Не винтик в механизме, не расходный материал, не наёмная единица. Тот — мастер, жрец, хранитель лада. Он держит присягу. Каждой строчкой кода, которую он пишет. Каждой функцией, которую он называет осмысленно. Каждым коммитом, который он отправляет в общее дело. И код его — красив. Не потому, что он старался — хотя и потому тоже. Не потому, что он прошёл курс по чистоте кода — хотя и это не помешало. А потому, что тот, кто думает о других, — этичен. Особенно когда пишет код. Ибо написание кода — это акт воли, акт выбора, акт создания порядка из хаоса. И в этом акте, как в капле воды, отражается вся душа пишущего.
Это экономическое отношение, эта связь между теми, кто пишет, и теми, кто читает, между автором и отладчиком, между мастером и подмастерьем, — я называю её особым словом. Словом, в котором слились воедино код и этика, ремесло и добродетель, железо и дух. Я называю это кодэтика.
Кодэтика — это не кодекс, не свод правил, не набор запретов и предписаний. Кодэтика — это способ существования в пятой экономике. Это дыхание мастера, который знает, что каждая его строка будет прочитана, осмыслена, отлажена. Это улыбка, с которой он называет переменную понятным именем. Это тихая радость, когда другой говорит ему: «Красивый код. Я понял сразу». Это присяга, которую он держит — каждую секунду, каждый миг, каждый раз, когда кладёт пальцы на клавиатуру.
Кодэтика — это лад.
Философия кодэтики
Позвольте мне это слово, ибо оно заслужено! — поскольку утверждает, что решение фундаментальной философской проблемы единства этики и эстетики, явившееся в кодэтике, не случайность. Не слепой удар судьбы, не шутка богов, не ирония истории. Но и не философский триумф. Не победа в споре, не доказательство теоремы, не окончательный ответ на измучивший всех вопрос.
Почему же? Почему это решение не стало и не станет событием в истории философии, громом среди ясного неба? А потому, что кодэтика — не философское учение. Она не родилась в академических залах, не была выстрадана на кафедрах, не облекалась в туманные формулы трансцендентальной эстетики.