Ага

Feb. 10th, 2026 06:10 am
birdwatcher: (Default)
[personal profile] birdwatcher
Я всегда говорил - пусть искусственный интеллект напишет компилятор, тогда и поговорим. И вот, действительно, сотрудник Антропика написал с помощью Клод Опуса компилятор С. Антропик Клод, как я слышал, наиболее подходящий спамогенератор для программирования. Компилятор имеется в виду именно С (не C++) и неоптимизирующий. Написан на расте. Он почти работает, только генерирует код в сотни раз медленнее настоящего неоптимизированного кода (gcc -O0).
Тут надо сказать, что я сам в устройстве компиляторов ничего не понимаю, поэтому мне во всей этой истории показалось самым интересным, что неоптимизирующий компилятор С это настолько сложная вещь.
Так или иначе, вот исходная статья: https://www.anthropic.com/engineering/building-c-compiler
И вот интересная рецензия: https://harshanu.space/en/tech/ccc-vs-gcc/
Методологически, это не совсем такой искусственный интеллект, как я имел в виду. Я хотел, чтобы входными данными были все тексты на С и результаты их компиляции, а функциональность компилятора была бы сосредоточена в коэффициентах модели. Здесь подход другой: возьмём составленные людьми юнит-тесты настоящего компилятора, и методами искусственного интеллекта подберём такой код на расте, который проходит наибольшее их количество. Оказалось, что это возможно, и в результате получается почти что работающий компилятор C.
Насколько я понял, автор посчитал дальнейшее развитие такого компилятора бесперспективным:

Claude will work autonomously to solve whatever problem I give it. So it’s important that the task verifier is nearly perfect, otherwise Claude will solve the wrong problem. Improving the testing harness required finding high-quality compiler test suites, writing verifiers and build scripts for open-source software packages, and watching for mistakes Claude was making, then designing new tests as I identified those failure modes.
For example, near the end of the project, Claude started to frequently break existing functionality each time it implemented a new feature. To address this, I built a continuous integration pipeline and implemented stricter enforcement that allowed Claude to better test its work so that new commits can’t break existing code.
[...]
The resulting compiler has nearly reached the limits of Opus’s abilities. I tried (hard!) to fix several of the above limitations but wasn’t fully successful. New features and bugfixes frequently broke existing functionality.

ОК!
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org