Pull to refresh
7
-1.4
Максим Савостьянов @AppCrafter

Пишу мобильные приложения на iOS.

Send message

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tags:
0
Comments2

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

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

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

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

Tags:
+3
Comments3

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

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

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

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

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

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

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

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

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

Tags:
-3
Comments15

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

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

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

Tags:
-9
Comments5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Specialization

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