Языки программирования - это костыли для LLM
👁 402💬 8
Недавно услышал провокационный тезис: языки программирования не нужны. Точнее, не нужны для генерации кода с AI.
И я задумался.
Зачем нужны языки программирования?
Языки программирования существуют потому что человек не может держать в голове миллионы нулей и единиц.
Нам нужны абстракции:
- Assembler -> понятнее чем машинный код
- C -> понятнее чем Assembler
- Python -> понятнее чем C
Каждый уровень абстракции - это для человека, не для машины. LLMке всё это не нужно.
Для нейросети абсолютно без разницы генерить:
- Go код
- Assembler
- Машинный код
- Вообще бинарник напрямую
Она не "думает" в абстракциях. Она предсказывает токены.
Возможно, языки программирования замедляют LLM
Вот почему:
- Лишний слой трансляции
Сейчас:
Промт -> LLM -> Go код -> компилятор -> машинный код
А могло бы быть:
Промт -> LLM -> машинный код
Зачем этот промежуточный шаг?
- Есть еще ограничения синтаксиса
LLM должна следовать правилам языка: Синтаксис Go, Типы данных, Структура кода
А что если бы могла генерить сразу оптимальные инструкции процессора?
- Человеко-читаемость как overhead
Мы требуем от LLM: Читаемые имена переменных, Комментарии, Отступы, Структуру
Всё это для человека. Машине не нужно.
- Потеря оптимизации
Компилятор оптимизирует код.
Но LLM могла бы сразу генерить оптимальный машинный код. Без промежуточных потерь.
И так, зачем промежуточный Go код?
Ответ: для человека.
Но если человек не читает код (а с вайб-кодингом всё больше так), то всё таки зачем?
Я попытался немного придумать контраругментов, но предлагаю в комментариях придумать еще варианты:
1. "Нам нужно понимать что делает код"
Правда?
Я на самом деле не понимаю на 100% как работает:
Компилятор Go, Linux kernel, Процессор
Я просто доверяю абстракциям.
Почему тогда я не могу доверить LLM?
2. "Но а как же debugging"
Сейчас мы дебажим текстовый код.
В будущем LLM сама может дебажить:
Например: "Тут что-то крашнулось" -> LLM анализирует машинный код -> Фиксит -> Генерит новый бинарник
Получается, что нам не нужно читать ни Go, ни ассемблер.
3. "Может быть обучение"
Да, программистам нужно понимать как работают компьютеры.
Но для продакшн разработки с вайб-кодингом может быть уже не нужно?
Например:
Раньше программисты писали на перфокартах.
Потом появились текстовые редакторы.
Потом IDE с автодополнением.
Перфокарты казались необходимыми. Но сейчас от них отказались.
Может быть текстовый код - это тоже временное решение?
Реальность сегодня
Copilot, Cursor, Claude генерят текстовый код. Почему? Да потому что мы ещё читаем его. Но всё больше людей кодят не читая что генерит AI. Вопрос времени когда промежуточный слой станет не нужен.
Вывод: Языки программирования = интерфейс для человека LLM этот интерфейс не нужен.Вопрос на подумать: Готовы ли мы к миру где код не читается человеком, где мы доверяем LLM генерить бинарники напрямую? Мне кажется - это неизбежно. Просто вопрос времени. Языки программирования нужны пока есть хоть кто-то кто их читает. Как те кто когда-то использовал перфокарты. Что думаете? 11/100 Telegram
16
Кирилл Гаврилов
Подписаться