All streams
Search
Write a publication
Pull to refresh
5
27.8
Артем Лакомов @art_lak

Филолог-лингвист

Send message

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

Это называется элементарная вежливость. Видимо, зря я подумал, что здесь будут образованные и мыслящие люди, которые воспримут такой стиль коммуникации за проявление уважения.

Я понял, больше не буду никого благодарить — всем от этого только плохо становится …

Однако, всё же поставлю лайк, за то что раскрыли мне глаза. Похоже, общаться здесь принято именно в пассивно-агрессивной манере.

Вы абсолютно точны в своих рассуждениях! На мой взгляд, мало кто сейчас задумывается над «замыслом» и «логикой». Особенно уж в эпоху LLM, которые зачастую допускают не синтаксические, а семантические ошибки (баги), где наиболее ярко прослеживается диссонанс между планом содержания (авторский замысел) и планом выражения (текст кода), и то, что программист намеревался выразить, онтологически расходится с тем, как это интерпретирует и исполняет машина. 

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

Да, Gibson бесспорно является титаном лингвистики, я видимо не заметил ссылки на него там. Здесь спорить бессмысленно. Тем не менее, как я кратко сформулировал, в тех работах фокус был на количественных, статистических и психологических аспектах, тогда как я пытался подойти к коду с инструментарием чистой лингвистики: семасиологии (учение о значении) и ономастики (изучение имени).

Кроме того, я фокусировался на отечественной традиции не потому, что она в целом «лучше», а потому, что для этой конкретной, узкой задачи — анализа именования через концепцию внутренней формы слова и теорию прозвищ — именно эта школа (в своей расширенной работе я использую мощнейший аппарат нашей отечественной филологии: Потебня+Виноградов+Суперанская) предоставляет самый точный и разработанный методологический инструментарий. Таким образом, этот выбор представляется наиболее целесообразным и подходящеим для конкретной работы.

Однако хочу сказать вам большое и искреннее спасибо! Многие комментарии (в частности, от вас) всё-таки показали слабые места в моей аргументации, и я обязательно скорректирую некоторые фрагменты в своей диссертации на основе всей предоставленной информации! В конечном счёте, я сюда за этим и пришел!

Просто отличное замечание! Вы попали в самую суть!

Цель филологического взгляда — не в том, чтобы придумать «новый продвинутый способ» и заставить всех писать монструозные имена. Ключевым здесь выступает ответ на вопрос «ПОЧЕМУ эти правила, которые интуитивно нащупали лучшие инженеры, работают именно так?»

Как вы правильно заметили, все решает контекст (scope). В лингвистике это называется прагматикой. Ваше наблюдение о том, что «достаточно, чтобы имя было уникальным и понятным в пределах этой функции» — это и есть главный закон коммуникативного акта. Вы интуитивно, как опытный носитель языка, используете ровно столько информации, сколько нужно собеседнику (читателю кода) в данном контексте, и не больше.

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

P.S. Я, к сожалению, ещё не разобрался как здесь корректно вставлять цитаты из других комментариев для ответа на них, поэтому пока буду просто дублировать эти фразы :)

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

Скорее, на этом примере мы можем наблюдать уникальное явление, которое я в своих исследованиях называю «семантическим уплотнением».

Один и тот же текстовый элемент ("ABANDON ALL HOPE...") одновременно выполняет три абсолютно разные функции на трех разных уровнях:

  1. Операциональный (для машины): Это просто массив байтов, который служит ключом для алгоритма.

  2. Прагматический (для инженера): Это прямое и недвусмысленное предупреждение об опасности использования данного режима шифрования.

  3. Культурный (для эрудированного инженера): Это интертекстуальная аллюзия, которая апеллирует к общему культурному коду.

Именно в этом «уплотнении», в этой способности одного знака работать в трех измерениях сразу, и проявляется, на мой взгляд, вся сложность и богатство кода как языка.

Так что спасибо вам огромное за это уточнение! С технической точки зрения, эта строка, правда, является данными (ключом), а не исполняемым кодом.

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

А во-вторых, я использую методы и принципы отечественной языковедческой науки (при этом в каждом своём примере я с необходимостью ссылаюсь на великого филолога А.В Суперанскую). Так что да - я абсолютно точно уверен, что именно в таком ракурсе данное исследование проводится впервые :)

Насколько мне известно, это как раз тот случай, когда «музыка народная». Исходная, каноническая цитата принадлежит легендарному программисту Филу Карлтону и звучит именно так, как ее привел первый комментатор: «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-х ввел понятие «литературного программирования», сказав, что программы должны писаться в первую очередь для людей. А Роберт Мартин («дядюшка Боб») в своей книге «Чистый код» посвятил целые главы тому, почему ясность и читаемость для человека — это самый прямой путь к надежности и долгосрочной корректности системы.

И здесь я хочу сказать огромное спасибо комментатору, который ответил вам ниже. Он сформулировал гениально:

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

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

Спасибо еще раз за то, что начали эту важнейшую дискуссию.

И насчет колдовства — вы попали в самую точку. Урсула Ле Гуин была гениальна. Знать истинное имя вещи — значит иметь над ней власть. И когда мы даем коду точное, честное имя, мы, по сути, и занимаемся этим «колдовством» — превращаем хаос в порядок и получаем власть над сложностью.

Спасибо всем еще раз за то, что заставили меня сформулировать эти мысли еще четче.

Information

Rating
259-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Content Writer
English
Python
OOP
Git