А как решалось AI+Coding упражнение про парсер? (см описание тут) Да все просто и быстро. Самое главное - думать как опытный и ленивый специалист. То есть, свалить максимум работ на AI. Humans decide, AI does mundane work. Первый шаг - просим просмотреть требования и проанализировать задачу. Например, что-то вроде: ``` Help me to identify the most efficient and error-prone way to implement this parser. Don't code, just think and plan from the perspective of a very experienced pragmatic software engineer with 20 years of experience in shipping systems to production ``` Оно выдаст что-то годное: 1. Clarify Requirements and Edge Cases 2. Choose the Right Parsing Strategy 3. Clearly Define Parser Responsibilities 4. Implement Parsing in Phases (Iterative and Incremental) 5. Develop a Robust Testing Strategy. Tests are critical—write them first! 6. Error Handling and Reporting 7. Implementation Quality and Maintainability 8. Iterate with Feedback Подсветка моя. Дальше действуем по плану. Начнем с тестов. Если спросить у AI идеи про тесты (чтобы попроще и попрагматичнее), то оно укажет на такой абзац в тексте: ``` The document below describes a simple text format that can be deterministically parsed into JSON objects. This document is also a test suite! Code admonitions always come in pairs: first input and then json. ``` Нам даже не надо писать тесты (что сделал каждый участник экспериментальной группы), достаточно просто распарсить этот текст и достать пары input-expected. Поэтому, сначала подчистим текст в markdown, который любит любой AI: ``` Carefully read this spec. It lost its markdown formatting, please fix and return it. ``` Если LLM не осиливает весь объем сразу, то можно временно переключиться на модель с reasoning или просто спеку кусками вставлять. Кстати, а что еще нам AI советовал? Clarify Requirements and Edge Cases ``` Check this spec for any contradictions or mistakes. For each - suggest a fix. Use your best judgement ``` Вот тут AI и найдет грабли, про которые я предупреждал. Можно поправить, а можно оставить так. Ладно, читаемый текст в формате md есть, “пишем” тесты: ``` This is the spec that I have saved in file spec.md. Please write me python parser to read this spec and extract all code blocks. ``` Оно напишет извлекатор, который можно красиво обернуть вручную (Copilot) в тестер. Он будет доставать текст из файла, разбирать input и сравнивать его с ожидаемым результатом. Все. А потом финальный цикл разработки: ``` You are an experienced and pragmatic software engineer with two decades of experience. Write me a recursive descent parser that will implement function `def parse(input: str) → Block` and will follow this spec: ``` Вставляем результат в код и смотрим. Если вдруг какие-то тесты не проходят - кидаем код парсера, спек и текст ошибки в ChatGPT/Claude и просим поправить. У меня при проходе по этому workflow с ChatGPT все тесты стали зелеными за пару итераций. А у вас как быстро сходятся все тесты? Ваш, @llm_under_hood 🤗