Search
Write a publication
Pull to refresh
3
-8.4
Максим Савостьянов @AppCrafter

Мобильные iOS приложения.

Send message

Сейчас тебе не нужно в этом разбираться

OpenAI выложила на YouTube запись презентации GPT-5, которая состоялась 7 августа.

Там по ходу есть один интересный момент:

На сцену пригласили парня, который показывает как GPT-5 по одному промту создаёт веб-приложение по изучению французского языка для его подруги.

Ведущий секции презентации для оживления разговора говорит (примерно 19:20):

Да, фронтенд-код - это очень сложно. Стоит что-то упустить и ничего не работает.

И тот парень ему отвечает:

Именно. Но хорошая новость: сейчас тебе не нужно в этом разбираться.

Ничёсе! ))

Т.е., теперь программисту не обязательно разбираться в коде? И это говорят профильные программисты, которые пишут код с утра до вечера!

Воистину будущее уже здесь.

А кто-то ещё сомневается, что профессия программиста меняется.

P.S. Кстати, здесь можно посмотреть ту же презентацию на русском. Как сказано в описании данного видео, оно “дублировано на русский язык с помощью бота дубляжа”, который тоже использует ИИ. Голос этого бота - это отдельное что-то))

Tags:
-1
Comments14

Долгосрочная память в ChatGPT

Не так давно компания OpenAI заявила, что добавила память в свои LLM модели. Эта новость не произвела какого-то особенного фурора, как, например, нынешний запуск 5-х моделей.

Тем не менее, тема довольно интересная и нужная, потому что все так или иначе сталкиваются с контекстными окнами, размером чата, правилами и т.д.

И есть очень большой соблазн поручить модели создать общие правила, чтобы не повторять их в каждом чате. Т.е., пройтись по уже имеющимся чатам, проанализировать их, выделить общие моменты и сформулировать эти самые общие правила.

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

Ответ ChatGPT на вопрос о наличии такой памяти:

У меня действительно есть память, но это не значит, что я автоматически помню всё содержание всех чатов.

Итак, первый вывод - ChatGPT (GPT5), не помнит содержание всех чатов!

Но не все так плохо. Кое-что всё-таки есть. А именно, есть 2 вида памяти:

  • Обычная память чата - в пределах текущего разговора.

  • Так называемая долгосрочная память. Цитирую: “я могу запомнить отдельные факты о тебе или твоих проектах, но только если ты прямо скажешь что-то вроде «Запомни, что…”

Т.е., всё-таки есть второй вид памяти и она долгосрочная.

Но информацию в эту память ChatGPT внесёт только, если ему прямо сказать об этом.

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

Т.е., по сути дела, мы можем составлять те же общие правила, аналогично User Rules.

Получается такой полуавтоматизированный процесс: вместо анализа содержания всех чатов и формулировки текста правил со стороны LLM, пользователь сам в ручном режиме по ходу указывает какие именно блоки информации сохранять в долгосрочной памяти.

И в заключение небольшая шпаргалка с промтами для управления памятью:

Как добавить что-то в память

Запомни, что…

Сохрани в памяти…

Помни, что…

Как посмотреть память

Что ты обо мне помнишь?

Покажи, что у тебя в памяти.

Как удалить что-то из памяти

Забудь, что…

Удалить из памяти…

Как изменить запись в памяти

Измени запись в памяти про…

Tags:
+1
Comments4

Предсказания сбываются

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

Просто небольшой фрагмент из августовского чата одних известных курсов:

Вопрос: Подскажите, а когда новый курс стартует?

Ответ: Напишу вам в личку.

Раньше о курсах заявлялось громогласно, с рекламными объявлениями, сроками, ценами и контактами для связи.

А теперь - в личку. Скромно так.

В общем, ИИ уже здесь и от этого никуда не деться.

Tags:
-7
Comments4

BPN vs MVM

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

В одном файле эта задача реализована в архитектуре BPN (Business Process Notation), о которой рассказывал раньше здесь. А во втором файле тот же код организован по архитектуре MVVM.

Код и в том, и в другом файле написан с помощью Claude Sonnet. В случае с BPN структурировал код вручную, следуя бизнес-процессам. А во втором случае попросил Клода сделать рефакторинг, используя традиционный современный подход и он выбрал MVVM.

Что можно сказать в итоге, сравнивая архитектуру в том, и другом случае. 

Объём кода

В BPN варианте 270 строки кода с комментариями, в MVVM - 524.

Т.е., в MVVM случае кода практически в 2 раза больше.

Количество сущностей, объектов.

BPN - один класс и 3 раширения к нему.

MVM - 6 классов, 1 структура, 3 протокола, каллбэки, фабрика, расширение.

Архитектура

BPN - монолит.

MVVM - вью и модель, анимация и аудио как сервисы, роутер, отдельная структура для хранения значений свойств и т.д.

Что лучше

Как всегда, каждый из подходов имеет свои плюсы и минусы.

В BPN нравится, что можно видеть модель процесса, в данном случае модель одной из задач приложения.

Что такое “Модель”

Наиболее традиционны 2 понимания термина “модель”.

В одном случае, это структура данных, модель объекта.

Например:

struct Person {

let firstName: String

let lastName: String

var age: Int

}

В другом случае, под моделью понимается всё, что не относится к интерфейсу.

Но есть и третье понимание модели - это модель приложения, или модель отдельных процессов внутри приложения. Т.е., составные части приложения (процесса) и их последовательность.

В BPN файле такая модель проступает наглядно:

Модель процесса "Обратный отсчет"
Модель процесса "Обратный отсчет"

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

В файале MVVM блоков кода гораздо больше и нужно несколько раз проскоролить чтобы увидеть их в выпадающем меню. И увидеть целостную модель здесь сложнее.

Conclusion

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

BPN позволяет видеть целостную модель задачи (процесса, приложения).

Tags:
0
Comments10

У Claude 4 появилось Project knowledge

У этого ИИ, который хвалят за хорошие скилы в написании кода, сегодня появилась новая опция.

А именно, теперь в окне проекта (проекты у них были уже довольно давно, в них можно объединять нужные чаты) появилась новая опция под названием Project knowledge.

Project knowledge option в Claude 4
Project knowledge option в Claude 4

Состоит она из двух частей:

  1. В проект можно добавить информацию из стороннего источника. Например, просто написать текст здесь же, или загрузить со своего устройства, из GitHub, Google Drive.

  2. Во второй части этой опции можно добавить в проект определённые инструкции.

    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 появилась память, которая хранит информацию из разных чатов.

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

В целом, судя по последним событиям в мире ИИ, тема памяти будет одним из фундаментальных направлений дальнейшего развития.

Tags:
Total votes 2: ↑1 and ↓10
Comments1

Императивное, декларативное и генеративное программирование.

Создатели фреймворка SwiftUI всегда подчёркивают, что он создан на основе парадигмы декларативного программирования. В отличие от предыдущего фреймворка UIKit, который характеризуется как пример императивного программирования.

Когда речь заходит о том, чем императивное программирование отличается от декларативного, то объяснение чаще всего сводится к тому, что при декларативном программировании разработчику нужно просто сказать, что ему нужно и SwiftUI это сделает. А если используется UIKit, то здесь типа надо все сделать самому.

Честно говоря, не очень внятное объяснение, поэтому попробую описать это различие сам на одном примере.

Итак, если в UIKit нам нужно вывести на экран список элементов, то мы используем TableView или CollectionView, которые уже подписаны на 2 протокола, а затем должны реализовать 3 метода: количество секций, количество строк в секциях, и в третьем методе скомпоновать ячейку и прописать загрузку в неё данных.

Та же задача в SwiftUI решается следующим образом:

List(items) { item in
Text(
item.name) }

Т.е., меньше кода, меньше времени тратится на реализацию задачи.

Можно, конечно, называть это декларативным программированием. Но можно считать это и следующим этапом развития высокоуровневого программирования. Когда-то программисты писали машинный код, потом языки программирования становились все более высокоуровневыми, все более понятными человеку. И вот теперь наступил новый этап, когда программирование стало ещё более высокоуровневым. Уже можно использовать более короткие высокоуровневые инструкции.

Наконец, самое интересное, что с этой же точки зрения можно рассматривать и программирование с помощью ИИ. Т.е., в тех же UIKit и SwiftUI, и в других языках программирования, разработчик пишет инструкции техническим языком, которые понятны в основном ему как человеку, но не очень понятны обычным людям. А теперь, в промтах, можно использовать уже и не технические инструкции.

Например, уже даже не надо писать команду List и т.д., а достаточно сказать ИИ "сделай список из таких-то элементов".

Таким образом, получается, что использование ИИ при написании кода - это следующий этап развития высокоуровневого программирования.

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

В итоге, получаем такую триаду:

  • Императивное программирование

  • Декларативное программирование

  • Генеративное программирование

Tags:
Total votes 2: ↑1 and ↓10
Comments2

У ChatGPT появилась память

Сегодня ChatGPT встречает своих пользователей сообщением о том, что у него теперь есть память. Т.е., он теперь помнит содержание чатов.

И в качестве демонстрации своих нынешних способностей он выдал мне характеристику на основе наших с ним чатов.

Надо сказать, довольно занимательное чтение увидеть себя с его стороны.

Tags:
Total votes 4: ↑3 and ↓1+3
Comments3

Опыт использования Claude для написания готового приложения

Ну вот и я сподобился - написал приложение полностью на Claude.

Приложение на SwiftUI, не enterprise, но достаточно сложное, из категории Favorite.

Начал на Claude Sonnet 3.7, потом вышел 4, закончил на нем.

Всего 1156 строк кода и без ошибок!

Естественно было несколько итераций. Причём практически все - это уточнение промта.

Кода он наворотил много, по мне так можно было и проще. Но он уж развернулся по полной - структуры, классы, вью, перечисления, состояния, published, state и т.д. и т.п.

Как оно там внутри вертится крутится даже не смотрел. Главное - работает и этого достаточно.

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

Tags:
Total votes 8: ↑1 and ↓7-4
Comments15

Почему когда открыл Хабр, чтобы написать пост, в голове выветрились все идеи?

И почему, когда в голове полно идей о чем написать, под рукой почему-то не оказывается возможности это сделать?

Update: Забыл поставить смайлик ))

Tags:
Total votes 9: ↑0 and ↓9-9
Comments5

Рынок обучения программированию рухнет в ближайшее время

Сейчас много говорят о том, что ИИ оставят без работы программистов. Но на самом деле более печальная участь ожидает рынок обучения программированию.

Действительно, зачем тратить пять лет на обучение в универе, платить деньги за курсы и искать ментора, если все это быстро и бесплатно можно получить от того же ChatGPT ?

Я не говорю о написанию готовых программ, а например, о том, что можно мгновенно получить справку о методе, паттерне, да и практически о любом блоке кода.

Зачем искать книги, гуглить и спрашивать на форумах, многие из которых еще до сих пор токсичны, если ChatGPT тебе вежливо и дружелюбно расскажет и что такое ООП, как чинить утечки памяти, и предложит заменить map на более понятный for in. Заодно он тебе и роадмап нарисует, и посоветует какой язык программирования выбрать, и много чего еще.

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

Но и это еще не все. Как вы думаете, через какое время преподаватели универов обновляют свои курсы? Через год, два, три?

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

Написание курсов и программ - это вообще больная тема для обучения. Особенно это чувствительно именно для обучения программированию, потому что нынче языки программирования развиваются с космической скоростью.

Так что, думаю, не надо быть большим Нострадамусом, чтобы понять, что рынок обучения программированию ждет большая катастрофа.

Что-то конечно останется, но это будет как с пленочными фотоаппаратами. Кто-то ими пользуется до сих пор, но их немного. Так и обучение программированию уйдет в раритетный формат.

ChatGPT помогает с математикой: Я силен в математике - Тогда сколько будет 750 умножить на 1920, - 230. - Но это даже и не близко! - Но зато быстро!
ChatGPT помогает с математикой: Я силен в математике - Тогда сколько будет 750 умножить на 1920, - 230. - Но это даже и не близко! - Но зато быстро!

Tags:
Total votes 6: ↑3 and ↓3+2
Comments19

Ну что, народ, что называется "тащусь" от новой сегодняшней версии 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! 🚀

Даже не знаю, как это назвать. Реально круто!

Tags:
Total votes 8: ↑4 and ↓4+2
Comments1

Information

Rating
2,329-th
Registered
Activity

Specialization

Mobile Application Developer, Game Developer
Senior
Python
OOP
Code Optimization
JavaScript
SWIFT
SwiftUI
UIKit
Xcode
iOS development
Development of mobile applications