На сцену пригласили парня, который показывает как GPT-5 по одному промту создаёт веб-приложение по изучению французского языка для его подруги.
Ведущий секции презентации для оживления разговора говорит (примерно 19:20):
Да, фронтенд-код - это очень сложно. Стоит что-то упустить и ничего не работает.
И тот парень ему отвечает:
Именно. Но хорошая новость: сейчас тебе не нужно в этом разбираться.
Ничёсе! ))
Т.е., теперь программисту не обязательно разбираться в коде? И это говорят профильные программисты, которые пишут код с утра до вечера!
Воистину будущее уже здесь.
А кто-то ещё сомневается, что профессия программиста меняется.
P.S. Кстати, здесь можно посмотреть ту же презентацию на русском. Как сказано в описании данного видео, оно “дублировано на русский язык с помощью бота дубляжа”, который тоже использует ИИ. Голос этого бота - это отдельное что-то))
Не так давно компания OpenAI заявила, что добавила память в свои LLM модели. Эта новость не произвела какого-то особенного фурора, как, например, нынешний запуск 5-х моделей.
Тем не менее, тема довольно интересная и нужная, потому что все так или иначе сталкиваются с контекстными окнами, размером чата, правилами и т.д.
И есть очень большой соблазн поручить модели создать общие правила, чтобы не повторять их в каждом чате. Т.е., пройтись по уже имеющимся чатам, проанализировать их, выделить общие моменты и сформулировать эти самые общие правила.
Но реальность гораздо более многомерная, чем мы можем предполагать. Вот некоторые подробности о том, может ли он решить такую задачу.
Ответ ChatGPT на вопрос о наличии такой памяти:
У меня действительно есть память, но это не значит, что я автоматически помню всё содержание всех чатов.
Итак, первый вывод - ChatGPT (GPT5), не помнит содержание всех чатов!
Но не все так плохо. Кое-что всё-таки есть. А именно, есть 2 вида памяти:
Обычная память чата - в пределах текущего разговора.
Так называемая долгосрочная память. Цитирую: “я могу запомнить отдельные факты о тебе или твоих проектах, но только если ты прямо скажешь что-то вроде «Запомни, что…”
Т.е., всё-таки есть второй вид памяти и она долгосрочная.
Но информацию в эту память ChatGPT внесёт только, если ему прямо сказать об этом.
И далее, что важно, именно эту информацию нейронка будет помнить в будущих диалогах и использовать при ответах на вопросы и задания.
Т.е., по сути дела, мы можем составлять те же общие правила, аналогично User Rules.
Получается такой полуавтоматизированный процесс: вместо анализа содержания всех чатов и формулировки текста правил со стороны LLM, пользователь сам в ручном режиме по ходу указывает какие именно блоки информации сохранять в долгосрочной памяти.
И в заключение небольшая шпаргалка с промтами для управления памятью:
В двух, приложенных к этому посту файлах (здесь и здесь), показан код для решения одной и той же задачи в мобильном приложении. А именно: запустить обратный отсчёт перед началом игры.
В одном файле эта задача реализована в архитектуре BPN (Business Process Notation), о которой рассказывал раньше здесь. А во втором файле тот же код организован по архитектуре MVVM.
Код и в том, и в другом файле написан с помощью Claude Sonnet. В случае с BPN структурировал код вручную, следуя бизнес-процессам. А во втором случае попросил Клода сделать рефакторинг, используя традиционный современный подход и он выбрал MVVM.
Что можно сказать в итоге, сравнивая архитектуру в том, и другом случае.
Объём кода
В BPN варианте 270 строки кода с комментариями, в MVVM - 524.
Т.е., в MVVM случае кода практически в 2 раза больше.
MVVM - вью и модель, анимация и аудио как сервисы, роутер, отдельная структура для хранения значений свойств и т.д.
Что лучше
Как всегда, каждый из подходов имеет свои плюсы и минусы.
В BPN нравится, что можно видеть модель процесса, в данном случае модель одной из задач приложения.
Что такое “Модель”
Наиболее традиционны 2 понимания термина “модель”.
В одном случае, это структура данных, модель объекта.
Например:
struct Person {
let firstName: String
let lastName: String
var age: Int
}
В другом случае, под моделью понимается всё, что не относится к интерфейсу.
Но есть и третье понимание модели - это модель приложения, или модель отдельных процессов внутри приложения. Т.е., составные части приложения (процесса) и их последовательность.
В BPN файле такая модель проступает наглядно:
Модель процесса "Обратный отсчет"
Здесь Обратный отсчёт складывается из таких блоков как подготовка, собственно выполнение, анимация, звук и закрытие экрана. Внутри каждого этапа видны его составляющие - методы и необходимые свойства.
В файале MVVM блоков кода гораздо больше и нужно несколько раз проскоролить чтобы увидеть их в выпадающем меню. И увидеть целостную модель здесь сложнее.
Conclusion
На относительно небольших проектах архитектура MVVM может быть избыточна. Здесь могут использоваться более простые варианты.
BPN позволяет видеть целостную модель задачи (процесса, приложения).
У этого ИИ, который хвалят за хорошие скилы в написании кода, сегодня появилась новая опция.
А именно, теперь в окне проекта (проекты у них были уже довольно давно, в них можно объединять нужные чаты) появилась новая опция под названием Project knowledge.
Project knowledge option в Claude 4
Состоит она из двух частей:
В проект можно добавить информацию из стороннего источника. Например, просто написать текст здесь же, или загрузить со своего устройства, из GitHub, Google Drive.
Во второй части этой опции можно добавить в проект определённые инструкции.
Provide Claude with relevant instructions and information for chats within (имя проекта). This will work alongside user preferences and the selected style in a chat.
На мой взгляд, это реакция разработчиков Claude на то, что на днях в ChatGPT появилась память, которая хранит информацию из разных чатов.
Клоды решили, возможно по-быстрому, на время до большого решения, пойти другим путём - предоставлять пользователю самому возможность вносить информацию в определённый проект и тогда она может быть использована в разных чатах внутри этого проекта.
В целом, судя по последним событиям в мире ИИ, тема памяти будет одним из фундаментальных направлений дальнейшего развития.
Императивное, декларативное и генеративное программирование.
Создатели фреймворка SwiftUI всегда подчёркивают, что он создан на основе парадигмы декларативного программирования. В отличие от предыдущего фреймворка UIKit, который характеризуется как пример императивного программирования.
Когда речь заходит о том, чем императивное программирование отличается от декларативного, то объяснение чаще всего сводится к тому, что при декларативном программировании разработчику нужно просто сказать, что ему нужно и SwiftUI это сделает. А если используется UIKit, то здесь типа надо все сделать самому.
Честно говоря, не очень внятное объяснение, поэтому попробую описать это различие сам на одном примере.
Итак, если в UIKit нам нужно вывести на экран список элементов, то мы используем TableView или CollectionView, которые уже подписаны на 2 протокола, а затем должны реализовать 3 метода: количество секций, количество строк в секциях, и в третьем методе скомпоновать ячейку и прописать загрузку в неё данных.
Та же задача в SwiftUI решается следующим образом:
Т.е., меньше кода, меньше времени тратится на реализацию задачи.
Можно, конечно, называть это декларативным программированием. Но можно считать это и следующим этапом развития высокоуровневого программирования. Когда-то программисты писали машинный код, потом языки программирования становились все более высокоуровневыми, все более понятными человеку. И вот теперь наступил новый этап, когда программирование стало ещё более высокоуровневым. Уже можно использовать более короткие высокоуровневые инструкции.
Наконец, самое интересное, что с этой же точки зрения можно рассматривать и программирование с помощью ИИ. Т.е., в тех же UIKit и SwiftUI, и в других языках программирования, разработчик пишет инструкции техническим языком, которые понятны в основном ему как человеку, но не очень понятны обычным людям. А теперь, в промтах, можно использовать уже и не технические инструкции.
Например, уже даже не надо писать команду List и т.д., а достаточно сказать ИИ "сделай список из таких-то элементов".
Таким образом, получается, что использование ИИ при написании кода - это следующий этап развития высокоуровневого программирования.
И поскольку ИИ везде называют генеративным, а его действия по написанию текстов, кода, созданию изображений и т.д., как генерация, то этот этап высокоуровневого программирования тоже можно назвать генеративным.
Опыт использования Claude для написания готового приложения
Ну вот и я сподобился - написал приложение полностью на Claude.
Приложение на SwiftUI, не enterprise, но достаточно сложное, из категории Favorite.
Начал на Claude Sonnet 3.7, потом вышел 4, закончил на нем.
Всего 1156 строк кода и без ошибок!
Естественно было несколько итераций. Причём практически все - это уточнение промта.
Кода он наворотил много, по мне так можно было и проще. Но он уж развернулся по полной - структуры, классы, вью, перечисления, состояния, published, state и т.д. и т.п.
Как оно там внутри вертится крутится даже не смотрел. Главное - работает и этого достаточно.
В общем, впечатлён. Не ожидал. Предполагал, что будут ошибки, заторы, что придётся с ними разбираться. Ан нет, все зашло без глюков, с первого раза.
Рынок обучения программированию рухнет в ближайшее время
Сейчас много говорят о том, что ИИ оставят без работы программистов. Но на самом деле более печальная участь ожидает рынок обучения программированию.
Действительно, зачем тратить пять лет на обучение в универе, платить деньги за курсы и искать ментора, если все это быстро и бесплатно можно получить от того же ChatGPT ?
Я не говорю о написанию готовых программ, а например, о том, что можно мгновенно получить справку о методе, паттерне, да и практически о любом блоке кода.
Зачем искать книги, гуглить и спрашивать на форумах, многие из которых еще до сих пор токсичны, если ChatGPT тебе вежливо и дружелюбно расскажет и что такое ООП, как чинить утечки памяти, и предложит заменить map на более понятный for in. Заодно он тебе и роадмап нарисует, и посоветует какой язык программирования выбрать, и много чего еще.
В универах и на курсах до сих пор практикуется написание программ обучения. Это занимает как минимум несколько месяцев, а обычно полгода. За это время то, что преподаватель напишет, уже заметно устаревает. В итоге, студенты на деле уже знают больше, чем преподаватель, который рассказывает им о том, что сам узнал полгода назад.
Но и это еще не все. Как вы думаете, через какое время преподаватели универов обновляют свои курсы? Через год, два, три?
На коммерческих курсах, конечно, полегче. Но и там это такое не простое дело вносить обновления в учебные курсы.
Написание курсов и программ - это вообще больная тема для обучения. Особенно это чувствительно именно для обучения программированию, потому что нынче языки программирования развиваются с космической скоростью.
Так что, думаю, не надо быть большим Нострадамусом, чтобы понять, что рынок обучения программированию ждет большая катастрофа.
Что-то конечно останется, но это будет как с пленочными фотоаппаратами. Кто-то ими пользуется до сих пор, но их немного. Так и обучение программированию уйдет в раритетный формат.
ChatGPT помогает с математикой: Я силен в математике - Тогда сколько будет 750 умножить на 1920, - 230. - Но это даже и не близко! - Но зато быстро!
Ну что, народ, что называется "тащусь" от новой сегодняшней версии ChatGPT CodeCopilot.
Там теперь появились три окна. Слева знакомый чат, в центре код, причём теперь уже с возможностью редактировать прямо здесь. А справа ещё менюшка с несколькими опциями. Там и комментарии, и логи, и борьба с багами и др. В целом, стало даже немного похоже на Xcode.
Мне же особенно понравилась опция Code Review. Это круто! Типа он проходит по коду и даёт рекомендации.
For example:
I've reviewed the code and suggested improvements for logical consistency, potential crash prevention, layout calculations, and readability. Let me know if you need further refinements! 🚀