🎙 На CodeFest я не только был в команде ПК, но ещё и немножко выступил сам — поучаствовал в публичных дебатах на интересную тему:
Есть ли будущее у языков программирования в том виде, в котором мы их знаем?(
видео дебатов)
Самое забавное, что по жребию мне досталась защита позиции
«да, языки останутся примерно такими же»
Хотя моя настоящая позиция почти противоположная. Я уже писал об этом отдельный провокационный
пост и
статьюНо дебаты хороши тем, что заставляют честно сыграть иногда и за противоположную сторону. И аргументы пришлось приводить вполне себе настоящие:
1️⃣. Всё, что сейчас умеют LLM, — это в огромной степени наш человеческий опыт.
Они обучены на нашем коде, библиотеках, паттернах, ошибках и костылях. Они пишут на Python, C# и JavaScript не потому, что это «правильные» языки, а потому что на них человечество накопило огромный слой опыта.
Текущие языки программирования — не только синтаксис. Это архив инженерной культуры. Пока LLM питается этим архивом, модель будет писать на том, на чём её учили.
2️⃣. Ответственность.
Если нейронка написала код, который я не могу прочитать, то как я беру за него ответственность?
Одно дело — сгенерировать CRUD. Другое — автопилот, ракета, АЭС или любая система, где ошибка проявляется не красным логом в CI, а железом в реальном мире.
Тесты и симуляции — хорошо. Но если под капотом лежит нечитаемая лапша, которую никто не понимает, то в какой-то момент мы просто верим, что оно работает.. вера — так себе метод.
На дебатах я сформулировал это чуть грубее: будет серия катастроф, а потом мы вернёмся к Python :)
___________
В целом, я пытался высказаться, что спор не про Python, Java или очередной модный язык. Новые языки появлялись всегда и будут появляться дальше.
Вопрос, на мой взгляд, в другом:
язык программирования будущего будет человеческим или нет?Повторю свой давний тезис:
Языки программирования появились как инструмент для людей. Чтобы человек мог объяснить машине, что он хочет, и потом хотя бы примерно понять, что она делает.
Но если программировать начинает не человек, а ИИ-агент — то зачем этому агенту язык, оптимизированный под человека?
Зачем ему(ей) человекочитаемый синтаксис, красивые имена переменных и вся эта церемония, если основной потребитель слоя кодирования — уже не человек?
Вопрос из зала про XML и protobuf очень хорошо подсветил. Человекочитаемый формат удобен человеку, но не всегда эффективен для машины.
У AI тоже есть ресурс: токены, контекст, вычисления. И человекочитаемый код может оказаться таким же избыточным форматом, как XML там, где нужен компактный бинарный протокол.
Python будущего может быть не «любимым языком ИИ», а дорогой промежуточной упаковкой для нас. Чтобы мы видели знакомые слова и думали, что всё ещё контролируем процесс. Так зачем тратить лишние токены на написание кода на Python? 🤩
Хорошая аналогия — Google Translate. Когда перевод идёт через внутреннее представление модели, качество может резко вырасти. Внутренний язык не обязан быть красивым. Ему нужно быть эффективным.
Похожая история с AlphaZero: пока система училась на человеческих шахтматных партиях, она наследовала и человеческие ограничения. Когда её отпустили от этого слоя, произошёл скачок.
Сейчас у нас примерно так:
задача → человеческий язык → Python/Java/C# → машинный кодНо это может оказаться переходной стадией.
А может стать так:
цель → внутреннее представление модели → исполняемая системаА привычный код останется рядом. Как слой аудита, отладки и верификации. Как ассемблер, в который иногда всё ещё нужно уметь смотреть.
Это главное уточнение к старому тезису.
Я всё ещё думаю, что языки программирования в текущем виде будут уходить из центра разработки. Но дебаты хорошо подсветили, почему человекочитаемый слой ещё долго будет нужен именно нам, а не ИИ. Как слой ответственности, аудита и верификации.
Код перестаёт быть центром профессии.
А проверка, смысл, контекст и ответственность — наоборот, становятся ещё важнее.
Полное видео дебатов:
https://rutube.ru/video/a857f6892d4c005ece54508387c2e396