Эссе о разработке игр, мышлении и книгах

Пара слов о GitHub Сopilot

DALL-E: "Vrubel style painting of pair programming Robot + Human. An robot is writing code, a human is reviewing code".

DALL-E: "Vrubel style painting of pair programming Robot + Human. An robot is writing code, a human is reviewing code".

Последние несколько недель использовал GitHub Сopilot, благо для Emacs есть плагин. Поделюсь впечатлениями.

Для справки, я уже лет 15 осознанно не использовал умное автодополнение. Всё моё автодополнение — это DynamicAbbreviations, по сути — дополнение написанного слова на основе словаря из открытых исходников.

Причина отказа такая: используя «умное» автодополнение (например, подсказку аттрибутов/методов объекта) перестаёшь понимать проект. Начинаешь на автомате брать предлагаемые варианты методов/переменных, не разбираясь что они конкретно делают и есть ли альтернатинвые варианты.

В краткосрочной перспективе отказ от автодополнения повышает нагрузку на человека (особенно на память) и замедляет работу, но в доглосрочной даёт глубокое понимание проекта, возможнсоть крутить его в голове как угодно, что с лихвой окупает потери на скорости в моменте. А поскольку я работаю только над долгими проектами, долгосрочная выгода важнее.

С Copilot я, похоже, вернуcь к умному автодополнению, в его более правильном варианте.

Итак, давайте посмотрим чего умеет и не умеет Copilot.

Далее

ИИ нас всех не(?) заменит

Автопилот [Ийона Тихого](https://ru.wikipedia.org/wiki/%D0%98%D0%B9%D0%BE%D0%BD_%D0%A2%D0%B8%D1%85%D0%B8%D0%B9) готовится делать человеческую работу в 3 лица.
(с) сериал [Ijon Tichy: Space Pilot](https://en.wikipedia.org/wiki/Ijon_Tichy:_Space_Pilot)

Автопилот Ийона Тихого готовится делать человеческую работу в 3 лица.
(с) сериал Ijon Tichy: Space Pilot

GitHub в прошлом месяце выпустил ИИ напарника для программистов, который умеет дописывать код. В догонку OpenAI опубликовали видео с возможностями технологии. Например, демонстрацию разработки игры на JavaScript.

Справедливости ради отмечу, что «игра» откровенно убогая. Но процесс создания впечатляет всё равно.

Одновременно с этим роботы занимаются паркуром, автомобили ездят без водителя, маркетинговые алгоритмы и ленты социальных сетей во всю управляют нашим поведением и даже мыслями.

Время поговорить о замене нас железными мозгами перспективах машинного обучения в его текущем виде.

Для краткости, вместо машинного обучения, нейронных сетей, feature programming и аналогичных вещей далее буду использовать аббревиатуру ИИ — Искусственный Интеллект. Кто знает на какой конкретно технологии всё остановится, но для её пиара гарантировано будут использовать затычку из двух «И».

Эссе включает:

  1. Оценку возможности прогнозирования.
  2. Описание факторов, которые влияют на развитие и внедрение ИИ.
  3. Три классических прогноза: пессимистичный, реалистичный и оптимистичный.

В первой и второй частях я уверен, а вот в прогнозах у меня получается жутковатая картина. В то же время основной проблемой прогнозов я считаю оценку сроков, а не качественных изменений.

Далее

Feature Programming

Эссе по итогам нырка в Deep Learning, но не о DL и даже не совсем о Machine Learning, а о новой парадигме программирования, которая рождается из него.

Собственно, нейронные сети я смотрел не потому, что интересуюсь именно ими, а потому что они сейчас демонстрируют наибольший прогресс и характерные черты этой парадигмы.

В следствие выбранной темы, эссе получилось футурологическим и абстрактным. Например, я не буду перечислять области применения DL и достигнутые в них результаты — этим итак всё инфопространство забито.

Оговорка раз: я определённо не эксперт в машинном обучении. Эссе в большей степени отражает мой опыт и картину мира, нежели знания и понимание ML и DL.

Оговорка два: термины «признак», «feature» будут использоваться достаточно вольно.

Далее

Минидрама: Python, C, Rust, криптография и Gentoo

Новость с деталями.

  1. Часть кода популярной Python криптобиблиотеки переписали на Rust.
  2. Сломалось CI у кучи людей.
  3. Дополнительно сломалось чегой-то в пакетном менеджере Gentoo.
  4. Изменения незаметили, так как… ну кто следит за криптолибами? Их просто ставят.
  5. Все думали, что cryptography следует semantic versioning, оказалось, что нет :-D

В итоге:

  • Разработчики сказали, что откатывать Rust взад не будут — это более кошерный язык для криптографии, чем C.
  • Gentoo оказалась не так уж и поломана — зависимость оказалась ненужной, но осадочек остался.
  • Люди с CI поплакали, но донастроили что надо было донастроить, и вернулись к своим делам.

Соль драмы в том, Gentoo поддерживает часть архитектур, которые не умеют в Rust. Одновременно Gentoo сильно зависит от Python. В этот раз пуля пролетела мимо, но возникли опасения, что Rust будет всё активнее использоваться к инфраструктуре Python. и в какой-то момент станет необходимой зависимостью. Что в этом случае случится с поддержкой минорных архитектур не ясно.

Далее

Процедурную генерацию в массы!

Пример процедурной генерации.

Пример процедурной генерации.

Google выпустил экспериментальную нейронку, которая создаёт изображения новых существ «по чертежу». «Пример чертежа» на заглавной картинке.

То есть на генерации аватарок развитие нейронок не остановилось и даже не запнулось. Грядут большие перемены, как минимум, на рынке мультимедиа.

Но одна вещь меня пугает: что дозволено Юпитеру, не дозволено быку. Нейронки и процедурная генерация способны очень на многое, но насколько эти технологии будут доступны рядовым разработчикам?

Далее