TGTGInsightаналитика telegramLIVE / telegram public index
← AI-Driven Development. Родион Мостовой
AI-Driven Development. Родион Мостовой avatar

TGINSIGHT POST

Post #15

@ai_driven

AI-Driven Development. Родион Мостовой

Просмотры785Количество просмотров
Опубликован18 мая18.05.2024, 18:36
Содержимое поста

Содержимое

Строго типизированные языки программирования могут стать популярнее благодаря LLM Есть такой подкаст «Бреслав и Ложечкин». Андрей Бреслав - фактически, основатель языка Kotlin. Во-первых, мне нравится Kotlin (когда-то мы делали мобильное приложения на нем), во-вторых, мне нравится как мыслит сам Бреслав, поэтому я стараюсь следить за его творчеством. Я думаю, что осмысленно слушая умных людей, мы сами становимся умнее. В своем канале я пишу на разные темы, которые мне интересны, и сегодня речь снова пойдет про AI, только на этот раз в более глобальном, а может даже и философском ключе. Собственно, не так давно ребята поговорили на тему "Про AI, LLM, AGI, ChatGPT, сингулярность и про то, заменит ли это всё программистов". У них получился совершенно великолепный разговор в тему программисты + AI. Рекомендую к просмотру. Я выделю здесь несколько ключевых тезисов из подкаста, которые мне показались наиболее интересными: 1) Языки программирования с динамической типизацией (Python, Javascript) хорошо подходят для обучения программированию и для быстрой разработки, но для крупных проектов вред от динамической типизации начинает перевешивать пользу от скорости разработки. На ЯП с динамической типизацией проще писать код, но сложнее читать (просто потому, что далеко не всегда понятно с чем мы вообще работаем сейчас). Так вот, Бреслав предполагает, что поскольку для LLM тоже лучше, когда код написан более явно (с указанием типов), может случится так, что ЯП с динамической типизацией могут начать терять свою популярность и уступать языкам со строгой, статической типизацией. Идея интересная и весьма контринтуитивная, с учетом того, что сейчас, насколько мне известно, LLM наоборот могут давать лучшие решения именно на Python и JavaScript просто потому, что кода на этих языках было больше в обучающей выборке. Тем не менее, это хороший повод задуматься о том, чтобы использовать везде явную типизацию просто потому, что для LLM так понятнее. И хочу еще отметить неочевидную вещь. В языках со статической типизацией мы часто используем var (это называется "вывод типа", Rider даже обычно предлагает использовать var вместо явного указания типа по умолчанию). Идея в том, что на месте var компилятор автоматически определит тип и подставит правильный. В общем, даже несмотря на то, что var в C#, конечно, же не является динамической типизацией, используя var мы можем слегка усложнять LLMке задачу, ведь она не компилятор и не умеет нормально в вывод типов (особенно в том случае, когда в отправленном контексте просто отсутствует код объявления вызываемых методов). Речь, конечно, о подобных вызовах: var bonus = GetBonus(); // что тут за тип: CutomerBonus, EmployeeBonus или еще какой-то третий? непонятно. var result = Init(); // а вот тут что есть result в принципе догадаться очень сложно (да, в т. ч. и из-за нейминга) Короче, вероятно, будет предусмотрительнее уже сейчас опцию csharp_style_var_elsewhere в вашем .editorconfig задать в false. В этом состоянии она активирует необходимость указывать тип явно в случае когда тип переменной не явный (например, в не new случаях). Скорее всего, LLMкам будет проще обрабатывать такой код, а результат на выходе будет качественнее. Ну, и про nullable/non-nullable аннотации, конечно, тоже не стоит забывать (?). Еще интересные тезисы из подкаста и свои размышления о них запощу чуть позже, а то итак много получилось) — Пробелов.NET. Спасибо, что читаете :)