В лингвисте это называется «устойчивые словосочетания-клише». Я, как истинный филолог, могу общаться, используя абсолютно разные регистры речи. И я осознал свою ошибку — больше не буду отвечать всем и каждому на один и те же вопросы, чтобы не быть обвиненным в использовании одинаковых конструкций :)
Это называется элементарная вежливость. Видимо, зря я подумал, что здесь будут образованные и мыслящие люди, которые воспримут такой стиль коммуникации за проявление уважения.
Я понял, больше не буду никого благодарить — всем от этого только плохо становится …
Однако, всё же поставлю лайк, за то что раскрыли мне глаза. Похоже, общаться здесь принято именно в пассивно-агрессивной манере.
Вы абсолютно точны в своих рассуждениях! На мой взгляд, мало кто сейчас задумывается над «замыслом» и «логикой». Особенно уж в эпоху LLM, которые зачастую допускают не синтаксические, а семантические ошибки (баги), где наиболее ярко прослеживается диссонанс между планом содержания (авторский замысел) и планом выражения (текст кода), и то, что программист намеревался выразить, онтологически расходится с тем, как это интерпретирует и исполняет машина.
Для формального анализатора, будь то компилятор или языковая модель, эта ошибка не существует, так как код может быть синтаксически безупречен. В этом и кроется фундаментальное ограничение сугубо формальных подходов, поскольку это «человеческое» семантическое измерение, где значение рождается из авторского намерения, по своей природе принципиально недоступно для них. Современные большие языковые модели, как и статические анализаторы, архитектурно ограничены операциональным планом. Они способны с высокой точностью распознавать и имитировать синтаксические паттерны, но остаются невосприимчивы к его концептуальному ядру — авторскому замыслу.
Да, Gibson бесспорно является титаном лингвистики, я видимо не заметил ссылки на него там. Здесь спорить бессмысленно. Тем не менее, как я кратко сформулировал, в тех работах фокус был на количественных, статистических и психологических аспектах, тогда как я пытался подойти к коду с инструментарием чистой лингвистики: семасиологии (учение о значении) и ономастики (изучение имени).
Кроме того, я фокусировался на отечественной традиции не потому, что она в целом «лучше», а потому, что для этой конкретной, узкой задачи — анализа именования через концепцию внутренней формы слова и теорию прозвищ — именно эта школа (в своей расширенной работе я использую мощнейший аппарат нашей отечественной филологии: Потебня+Виноградов+Суперанская) предоставляет самый точный и разработанный методологический инструментарий. Таким образом, этот выбор представляется наиболее целесообразным и подходящеим для конкретной работы.
Однако хочу сказать вам большое и искреннее спасибо! Многие комментарии (в частности, от вас) всё-таки показали слабые места в моей аргументации, и я обязательно скорректирую некоторые фрагменты в своей диссертации на основе всей предоставленной информации! В конечном счёте, я сюда за этим и пришел!
Просто отличное замечание! Вы попали в самую суть!
Цель филологического взгляда — не в том, чтобы придумать «новый продвинутый способ» и заставить всех писать монструозные имена. Ключевым здесь выступает ответ на вопрос «ПОЧЕМУ эти правила, которые интуитивно нащупали лучшие инженеры, работают именно так?»
Как вы правильно заметили, все решает контекст (scope). В лингвистике это называется прагматикой. Ваше наблюдение о том, что «достаточно, чтобы имя было уникальным и понятным в пределах этой функции» — это и есть главный закон коммуникативного акта. Вы интуитивно, как опытный носитель языка, используете ровно столько информации, сколько нужно собеседнику (читателю кода) в данном контексте, и не больше.
Так что филологический взгляд не предлагает «новый способ». Он предлагает систему для понимания тех гениальных интуитивных решений, к которым вы, как опытный инженер, уже пришли на практике.
P.S. Я, к сожалению, ещё не разобрался как здесь корректно вставлять цитаты из других комментариев для ответа на них, поэтому пока буду просто дублировать эти фразы :)
Прошу прощения, вы здесь правы: моя формулировка была не самой удачной, и я благодарен вам за возможность её прояснить.
Скорее, на этом примере мы можем наблюдать уникальное явление, которое я в своих исследованиях называю «семантическим уплотнением».
Один и тот же текстовый элемент ("ABANDON ALL HOPE...") одновременно выполняет три абсолютно разные функции на трех разных уровнях:
Операциональный (для машины): Это просто массив байтов, который служит ключом для алгоритма.
Прагматический (для инженера): Это прямое и недвусмысленное предупреждение об опасности использования данного режима шифрования.
Культурный (для эрудированного инженера): Это интертекстуальная аллюзия, которая апеллирует к общему культурному коду.
Именно в этом «уплотнении», в этой способности одного знака работать в трех измерениях сразу, и проявляется, на мой взгляд, вся сложность и богатство кода как языка.
Так что спасибо вам огромное за это уточнение! С технической точки зрения, эта строка, правда, является данными (ключом), а не исполняемым кодом.
Вы внимательно читали мою статью и те работы, что были предоставлены вами в качестве контр-аргумента? Во-первых, в их списке литературы нет ни одного известного лингвиста... Они разбирают и анализируют код чисто с формальной точки зрения.
А во-вторых, я использую методы и принципы отечественной языковедческой науки (при этом в каждом своём примере я с необходимостью ссылаюсь на великого филолога А.В Суперанскую). Так что да - я абсолютно точно уверен, что именно в таком ракурсе данное исследование проводится впервые :)
Насколько мне известно, это как раз тот случай, когда «музыка народная». Исходная, каноническая цитата принадлежит легендарному программисту Филу Карлтону и звучит именно так, как ее привел первый комментатор: «There are only two hard things in Computer Science: cache invalidation and naming things». А вот добавление про «ошибки на единицу» (off-by-one errors) — это уже блестящий пример IT-фольклора.
Знаете, это напомнило мне забавную параллель, с которой я столкнулся, когда работал над диссертацией. Я пытался найти, кто и когда впервые ввел сам термин «язык программирования». И оказалось, что у этого фундаментального для всей IT-индустрии понятия, как и у вышеупомянутого афоризма, нет одного-единственного, общепринятого автора. Он так же органически вырос из самого сообщества, став «народным».
На мой взгляд, это лучшее доказательство того, что мы имеем дело с живым, исторически эволюционирующим культурным феноменом, который развивается по законам естественного человеческого языка.
Благодарю, что указали на это! Получил огромное удовольствие :) Это идеальный пример того, как глубоко культурный код проникает в мышление, являясь хорошо узнаваемой аллюзией (отсылкой).
Примечательно, что иногда культурная аллюзия сама может становиться исполняемым кодом. В своих исследованиях я как раз анализировал пример, где для демонстрации небезопасного режима шифрования в качестве ключа используется строка:
cipher.key = "ABANDON ALL HOPE YE WHO USE ECB!"
Здесь цитата из Данте — это не просто метафора для человека. Это реальные данные, которые исполняет машина. Предупреждение и есть уязвимость, то есть цитата из литературного произведения становится частью самого алгоритма, который она описывает. В этом и усматривается основное различие естественного языка и языков программирования.
Спасибо вам ещё раз! Я как раз хотел бы более детально это продемонстрировать в своих следующих публикациях.
В самое ближайшее время я планирую выпустить следующую часть своего авторского цикла, а именно: статью про контекстуальную вариативность и идиоматитчность. Буду весьма признателен, если вы будете и дальше следить за следующими публикациями, чтобы убедиться в ясности и естетсвенности моих мыслей, абсолютно лишенных каких-либо признаков цифрового следа. Более того, в своей кандидатской диссертации я критикую современные большие языковые модели за их семантические ошибки, так что мне нет нужды прибегать к их использованию для таких простых обсуждений :)
Интересно, что невзирая на тот факт, что английский язык является так называемым основным языком-посредником для общения и взаимодействия с машиной посредством кода, никто и никогда не применял лингвистические принципы для его глубокого и детального сравнения и анализа в таком контексте. К тому же, многие до сих пор не согласны с неразрывностью связи языка и мышления в сфере программирования, поэтому это и может показаться неожиданным сравнением, на первый взгляд.
Вы пишете, что «ребята не писали умных статей, они это просто сделали». И это правда. Но кто были эти люди?) Кен Томпсон, Роб Пайк — специалисты с колоссальным, почти сверхчеловеческим опытом, чье интуитивное чувство «хорошего кода» формировалось десятилетиями.
Стиль gofmt не был выбран случайно: это кодификация интуиции гениев. Они инстинктивно выбрали те правила форматирования и стиля, которые, как они чувствовали, лучше всего работают для человеческого восприятия.
Как я уже неоднократно уточнял, моя работа — это попытка сделать именно эту интуицию явной. Дать ей систему и язык. Показать, что интуитивное чувство «хорошего стиля», которое есть у великих и высококомпететных инженеров, на самом деле подчиняется тем самым лингвистическим законам, которые моя статья пытается описать.
Более того, при сравнении gofmt и rustfmt можно увидеть, что это лучшее доказательство моего тезиса. Вы ведь сами описали не технический, а социолингвистический феномен!
Go — это «корпоративный диалект», созданный закрытой группой авторитетных носителей (Google) со своим, немного авторитарным взглядом.
Rust — это «lingua franca», язык, который вырабатывался открытым сообществом и поэтому вобрал в себя более популярные и привычные «речевые обороты» (узус) из мира C++.
Разумеется, конечная цель — это не найти «идеальный стиль», а прийти к общему стандарту; предложить общий язык, на котором программисты могли бы обсуждать и создавать такие стандарты не только на основе интуиции, но и на основе понимания фундаментальных принципов, не говоря уже об очевидной лингвистической природе.
P.S. И да, даже поверх жесткого стандарта форматирования gofmt все равно возникает следующий, более высокий уровень — идиоматичность. И это как раз будет темой моей следующей статьи! Так что — stay tuned, как говорится в цифровом мире :)
А разве программистам не интересно узнать о том, что они и так давно интуитивно применяют, но на уровне реального систематического знания?
Вся суть моей работы заключается не в том, чтобы вам «открыть Америку», но показать, что почти все принципы написания кода подчиняются законам и моделям естественного человеческого языка. При этом дело вовсе не в том, чтобы найти «идеальный стиль», а прийти к общему стандарту. Это и есть главная моя центральная идея. Однако инженеры неуклонно продолжают это отрицать :)
Напротив, мне очень приятно получить такой фидбек от профессиональных инженеров. Именно поэтому я стараюсь отвечать максимально детально, подробно и с уважением. И не забивайте, что я филолог, поэтому инженерам может быть непривычно видеть такой стиль письма :)
Какой блестящий и абсолютно неожиданный парадокс! Спасибо вам огромное, это, возможно, самое тонкое наблюдение во всей дискуссии.
Вы сейчас нащупали самый нерв всей проблемы. Ваш пример с center vs centre — это лучшее доказательство моего главного тезиса: программный код — это не английский язык. Это — совершенно другой, самостоятельный язык, который лишь заимствует лексику из английского, но подчиняет ее своей, абсолютно ригидной и формальной грамматике.
Именно поэтому нейтиву может быть даже сложнее! Его языковая интуиция, его чувство «живого» языка постоянно вступает в конфликт с неумолимой, прескриптивной нормой компилятора. Он ждет от слова const всего богатства коннотаций, а получает лишь формальный маркер.
По сути, вы сейчас описали то, что я в своей диссертации называю «онтологическим несоответствием» между естественным языком и кодом. Вы привели гениальный пример того, как носитель языка становится жертвой «ложных друзей переводчика» не между двумя иностранными языками, а между своим родным языком и «кодом».
Спасибо еще раз за этот взгляд с совершенно другой стороны. Это невероятно обогатило нашу дискуссию!
Спасибо за то, что подняли, возможно, самый фундаментальный вопрос в нашей профессии. Ваша позиция — «мы пишем для машин, и главное — корректность» — абсолютно понятна и имеет под собой десятилетия инженерной практики.
Именно из этой парадигмы выросла вся мощь современного IT. Но, как вы верно заметили, «люди придут и уйдут, а код останется». И вот тут, мне кажется, и начинается самое интересное. Код остается не для машины (ей все равно, она получит свой бинарник), а для следующего человека. Для того, кто придет через год и будет пытаться понять, что здесь происходит.
Именно об этом и говорили «отцы-основатели» нашей индустрии, которых вы, конечно, знаете. Дональд Кнут ещё в 80-х ввел понятие «литературного программирования», сказав, что программы должны писаться в первую очередь для людей. А Роберт Мартин («дядюшка Боб») в своей книге «Чистый код» посвятил целые главы тому, почему ясность и читаемость для человека — это самый прямой путь к надежности и долгосрочной корректности системы.
И здесь я хочу сказать огромное спасибо комментатору, который ответил вам ниже. Он сформулировал гениально:
Удивительным образом "хороший" код, понятный людям без подсказок в подавляющем большинстве случаев - корректный.
Это и есть квинтэссенция моей статьи. Я пытаюсь доказать не то, что нужно писать красиво вместо того, чтобы писать правильно. Я пытаюсь доказать, что ясность мысли, выраженная через точный язык (именование), — это и есть самый надежный путь к корректности.
Спасибо еще раз за то, что начали эту важнейшую дискуссию.
И насчет колдовства — вы попали в самую точку. Урсула Ле Гуин была гениальна. Знать истинное имя вещи — значит иметь над ней власть. И когда мы даем коду точное, честное имя, мы, по сути, и занимаемся этим «колдовством» — превращаем хаос в порядок и получаем власть над сложностью.
Спасибо всем еще раз за то, что заставили меня сформулировать эти мысли еще четче.
В лингвисте это называется «устойчивые словосочетания-клише». Я, как истинный филолог, могу общаться, используя абсолютно разные регистры речи. И я осознал свою ошибку — больше не буду отвечать всем и каждому на один и те же вопросы, чтобы не быть обвиненным в использовании одинаковых конструкций :)
Это называется элементарная вежливость. Видимо, зря я подумал, что здесь будут образованные и мыслящие люди, которые воспримут такой стиль коммуникации за проявление уважения.
Я понял, больше не буду никого благодарить — всем от этого только плохо становится …
Однако, всё же поставлю лайк, за то что раскрыли мне глаза. Похоже, общаться здесь принято именно в пассивно-агрессивной манере.
Вы абсолютно точны в своих рассуждениях! На мой взгляд, мало кто сейчас задумывается над «замыслом» и «логикой». Особенно уж в эпоху LLM, которые зачастую допускают не синтаксические, а семантические ошибки (баги), где наиболее ярко прослеживается диссонанс между планом содержания (авторский замысел) и планом выражения (текст кода), и то, что программист намеревался выразить, онтологически расходится с тем, как это интерпретирует и исполняет машина.
Для формального анализатора, будь то компилятор или языковая модель, эта ошибка не существует, так как код может быть синтаксически безупречен. В этом и кроется фундаментальное ограничение сугубо формальных подходов, поскольку это «человеческое» семантическое измерение, где значение рождается из авторского намерения, по своей природе принципиально недоступно для них. Современные большие языковые модели, как и статические анализаторы, архитектурно ограничены операциональным планом. Они способны с высокой точностью распознавать и имитировать синтаксические паттерны, но остаются невосприимчивы к его концептуальному ядру — авторскому замыслу.
Да, Gibson бесспорно является титаном лингвистики, я видимо не заметил ссылки на него там. Здесь спорить бессмысленно. Тем не менее, как я кратко сформулировал, в тех работах фокус был на количественных, статистических и психологических аспектах, тогда как я пытался подойти к коду с инструментарием чистой лингвистики: семасиологии (учение о значении) и ономастики (изучение имени).
Кроме того, я фокусировался на отечественной традиции не потому, что она в целом «лучше», а потому, что для этой конкретной, узкой задачи — анализа именования через концепцию внутренней формы слова и теорию прозвищ — именно эта школа (в своей расширенной работе я использую мощнейший аппарат нашей отечественной филологии: Потебня+Виноградов+Суперанская) предоставляет самый точный и разработанный методологический инструментарий. Таким образом, этот выбор представляется наиболее целесообразным и подходящеим для конкретной работы.
Однако хочу сказать вам большое и искреннее спасибо! Многие комментарии (в частности, от вас) всё-таки показали слабые места в моей аргументации, и я обязательно скорректирую некоторые фрагменты в своей диссертации на основе всей предоставленной информации! В конечном счёте, я сюда за этим и пришел!
Просто отличное замечание! Вы попали в самую суть!
Цель филологического взгляда — не в том, чтобы придумать «новый продвинутый способ» и заставить всех писать монструозные имена. Ключевым здесь выступает ответ на вопрос «ПОЧЕМУ эти правила, которые интуитивно нащупали лучшие инженеры, работают именно так?»
Как вы правильно заметили, все решает контекст (scope). В лингвистике это называется прагматикой. Ваше наблюдение о том, что «достаточно, чтобы имя было уникальным и понятным в пределах этой функции» — это и есть главный закон коммуникативного акта. Вы интуитивно, как опытный носитель языка, используете ровно столько информации, сколько нужно собеседнику (читателю кода) в данном контексте, и не больше.
Так что филологический взгляд не предлагает «новый способ». Он предлагает систему для понимания тех гениальных интуитивных решений, к которым вы, как опытный инженер, уже пришли на практике.
P.S. Я, к сожалению, ещё не разобрался как здесь корректно вставлять цитаты из других комментариев для ответа на них, поэтому пока буду просто дублировать эти фразы :)
:)
Прошу прощения, вы здесь правы: моя формулировка была не самой удачной, и я благодарен вам за возможность её прояснить.
Скорее, на этом примере мы можем наблюдать уникальное явление, которое я в своих исследованиях называю «семантическим уплотнением».
Один и тот же текстовый элемент (
"ABANDON ALL HOPE..."
) одновременно выполняет три абсолютно разные функции на трех разных уровнях:Операциональный (для машины): Это просто массив байтов, который служит ключом для алгоритма.
Прагматический (для инженера): Это прямое и недвусмысленное предупреждение об опасности использования данного режима шифрования.
Культурный (для эрудированного инженера): Это интертекстуальная аллюзия, которая апеллирует к общему культурному коду.
Именно в этом «уплотнении», в этой способности одного знака работать в трех измерениях сразу, и проявляется, на мой взгляд, вся сложность и богатство кода как языка.
Так что спасибо вам огромное за это уточнение! С технической точки зрения, эта строка, правда, является данными (ключом), а не исполняемым кодом.
Вы внимательно читали мою статью и те работы, что были предоставлены вами в качестве контр-аргумента? Во-первых, в их списке литературы нет ни одного известного лингвиста... Они разбирают и анализируют код чисто с формальной точки зрения.
А во-вторых, я использую методы и принципы отечественной языковедческой науки (при этом в каждом своём примере я с необходимостью ссылаюсь на великого филолога А.В Суперанскую). Так что да - я абсолютно точно уверен, что именно в таком ракурсе данное исследование проводится впервые :)
Насколько мне известно, это как раз тот случай, когда «музыка народная». Исходная, каноническая цитата принадлежит легендарному программисту Филу Карлтону и звучит именно так, как ее привел первый комментатор: «There are only two hard things in Computer Science: cache invalidation and naming things». А вот добавление про «ошибки на единицу» (off-by-one errors) — это уже блестящий пример IT-фольклора.
Знаете, это напомнило мне забавную параллель, с которой я столкнулся, когда работал над диссертацией. Я пытался найти, кто и когда впервые ввел сам термин «язык программирования». И оказалось, что у этого фундаментального для всей IT-индустрии понятия, как и у вышеупомянутого афоризма, нет одного-единственного, общепринятого автора. Он так же органически вырос из самого сообщества, став «народным».
На мой взгляд, это лучшее доказательство того, что мы имеем дело с живым, исторически эволюционирующим культурным феноменом, который развивается по законам естественного человеческого языка.
Да уж, это точно ещё одна большая сложность, о которой все знают не понаслышке. Вы абсолютно правы!
Отличное дополнение к канону! :)
Благодарю, что указали на это! Получил огромное удовольствие :) Это идеальный пример того, как глубоко культурный код проникает в мышление, являясь хорошо узнаваемой аллюзией (отсылкой).
Примечательно, что иногда культурная аллюзия сама может становиться исполняемым кодом. В своих исследованиях я как раз анализировал пример, где для демонстрации небезопасного режима шифрования в качестве ключа используется строка:
cipher.key = "ABANDON ALL HOPE YE WHO USE ECB!"
Здесь цитата из Данте — это не просто метафора для человека. Это реальные данные, которые исполняет машина. Предупреждение и есть уязвимость, то есть цитата из литературного произведения становится частью самого алгоритма, который она описывает. В этом и усматривается основное различие естественного языка и языков программирования.
Спасибо вам ещё раз! Я как раз хотел бы более детально это продемонстрировать в своих следующих публикациях.
В самое ближайшее время я планирую выпустить следующую часть своего авторского цикла, а именно: статью про контекстуальную вариативность и идиоматитчность. Буду весьма признателен, если вы будете и дальше следить за следующими публикациями, чтобы убедиться в ясности и естетсвенности моих мыслей, абсолютно лишенных каких-либо признаков цифрового следа. Более того, в своей кандидатской диссертации я критикую современные большие языковые модели за их семантические ошибки, так что мне нет нужды прибегать к их использованию для таких простых обсуждений :)
Интересно, что невзирая на тот факт, что английский язык является так называемым основным языком-посредником для общения и взаимодействия с машиной посредством кода, никто и никогда не применял лингвистические принципы для его глубокого и детального сравнения и анализа в таком контексте. К тому же, многие до сих пор не согласны с неразрывностью связи языка и мышления в сфере программирования, поэтому это и может показаться неожиданным сравнением, на первый взгляд.
Вы пишете, что «ребята не писали умных статей, они это просто сделали». И это правда. Но кто были эти люди?) Кен Томпсон, Роб Пайк — специалисты с колоссальным, почти сверхчеловеческим опытом, чье интуитивное чувство «хорошего кода» формировалось десятилетиями.
Стиль
gofmt
не был выбран случайно: это кодификация интуиции гениев. Они инстинктивно выбрали те правила форматирования и стиля, которые, как они чувствовали, лучше всего работают для человеческого восприятия.Как я уже неоднократно уточнял, моя работа — это попытка сделать именно эту интуицию явной. Дать ей систему и язык. Показать, что интуитивное чувство «хорошего стиля», которое есть у великих и высококомпететных инженеров, на самом деле подчиняется тем самым лингвистическим законам, которые моя статья пытается описать.
Более того, при сравнении
gofmt
иrustfmt
можно увидеть, что это лучшее доказательство моего тезиса. Вы ведь сами описали не технический, а социолингвистический феномен!Go — это «корпоративный диалект», созданный закрытой группой авторитетных носителей (Google) со своим, немного авторитарным взглядом.
Rust — это «lingua franca», язык, который вырабатывался открытым сообществом и поэтому вобрал в себя более популярные и привычные «речевые обороты» (узус) из мира C++.
Разумеется, конечная цель — это не найти «идеальный стиль», а прийти к общему стандарту; предложить общий язык, на котором программисты могли бы обсуждать и создавать такие стандарты не только на основе интуиции, но и на основе понимания фундаментальных принципов, не говоря уже об очевидной лингвистической природе.
P.S. И да, даже поверх жесткого стандарта форматирования
gofmt
все равно возникает следующий, более высокий уровень — идиоматичность. И это как раз будет темой моей следующей статьи! Так что — stay tuned, как говорится в цифровом мире :)А разве программистам не интересно узнать о том, что они и так давно интуитивно применяют, но на уровне реального систематического знания?
Вся суть моей работы заключается не в том, чтобы вам «открыть Америку», но показать, что почти все принципы написания кода подчиняются законам и моделям естественного человеческого языка. При этом дело вовсе не в том, чтобы найти «идеальный стиль», а прийти к общему стандарту. Это и есть главная моя центральная идея. Однако инженеры неуклонно продолжают это отрицать :)
Напротив, мне очень приятно получить такой фидбек от профессиональных инженеров. Именно поэтому я стараюсь отвечать максимально детально, подробно и с уважением. И не забивайте, что я филолог, поэтому инженерам может быть непривычно видеть такой стиль письма :)
Какой блестящий и абсолютно неожиданный парадокс! Спасибо вам огромное, это, возможно, самое тонкое наблюдение во всей дискуссии.
Вы сейчас нащупали самый нерв всей проблемы. Ваш пример с
center
vscentre
— это лучшее доказательство моего главного тезиса: программный код — это не английский язык. Это — совершенно другой, самостоятельный язык, который лишь заимствует лексику из английского, но подчиняет ее своей, абсолютно ригидной и формальной грамматике.Именно поэтому нейтиву может быть даже сложнее! Его языковая интуиция, его чувство «живого» языка постоянно вступает в конфликт с неумолимой, прескриптивной нормой компилятора. Он ждет от слова
const
всего богатства коннотаций, а получает лишь формальный маркер.По сути, вы сейчас описали то, что я в своей диссертации называю «онтологическим несоответствием» между естественным языком и кодом. Вы привели гениальный пример того, как носитель языка становится жертвой «ложных друзей переводчика» не между двумя иностранными языками, а между своим родным языком и «кодом».
Спасибо еще раз за этот взгляд с совершенно другой стороны. Это невероятно обогатило нашу дискуссию!
.
Спасибо за то, что подняли, возможно, самый фундаментальный вопрос в нашей профессии. Ваша позиция — «мы пишем для машин, и главное — корректность» — абсолютно понятна и имеет под собой десятилетия инженерной практики.
Именно из этой парадигмы выросла вся мощь современного IT. Но, как вы верно заметили, «люди придут и уйдут, а код останется». И вот тут, мне кажется, и начинается самое интересное. Код остается не для машины (ей все равно, она получит свой бинарник), а для следующего человека. Для того, кто придет через год и будет пытаться понять, что здесь происходит.
Именно об этом и говорили «отцы-основатели» нашей индустрии, которых вы, конечно, знаете. Дональд Кнут ещё в 80-х ввел понятие «литературного программирования», сказав, что программы должны писаться в первую очередь для людей. А Роберт Мартин («дядюшка Боб») в своей книге «Чистый код» посвятил целые главы тому, почему ясность и читаемость для человека — это самый прямой путь к надежности и долгосрочной корректности системы.
И здесь я хочу сказать огромное спасибо комментатору, который ответил вам ниже. Он сформулировал гениально:
Это и есть квинтэссенция моей статьи. Я пытаюсь доказать не то, что нужно писать красиво вместо того, чтобы писать правильно. Я пытаюсь доказать, что ясность мысли, выраженная через точный язык (именование), — это и есть самый надежный путь к корректности.
Спасибо еще раз за то, что начали эту важнейшую дискуссию.
И насчет колдовства — вы попали в самую точку. Урсула Ле Гуин была гениальна. Знать истинное имя вещи — значит иметь над ней власть. И когда мы даем коду точное, честное имя, мы, по сути, и занимаемся этим «колдовством» — превращаем хаос в порядок и получаем власть над сложностью.
Спасибо всем еще раз за то, что заставили меня сформулировать эти мысли еще четче.