Как стать автором
Обновить
17

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теги:
0
Комментарии1

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

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

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

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

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

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

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

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

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

Теги:
-3
Комментарии14

Конвертация книги Swift Programming Language в формат PDF и готовой к печати.

Поддерживается два режима рендеринга:
- Цифровой режим с гиперссылками для перекрестных ссылок между главами и внешними ссылками.
- Режим печати с номерами страниц, сопровождающими перекрестные ссылки между главами, и полными URL-адресами, отображаемыми в сносках для внешних ссылок.

https://github.com/ekassos/swift-book-pdf

Теги:
Рейтинг0
Комментарии0

VK (видео)

📦 API for Any(thing) 2

☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом? 

Библиотека работает на продакшене в приложениях:
Энергия
NFC Tool
КубГТУ

Во второй части доклада практическая реализация 💡

Хабр
Medium
GitHub

El-Machine.com Apps 🤖

Теория:
Часть 1

Теги:
Рейтинг0
Комментарии0

YouTube (видео)

📦 API for Any(thing) 

☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом? 

Продолжаю развивать свою идею архитектуры для 100% инкасуляции, разбития на модули и тестирования всего слоя Model

Хабр
Medium
GitHub

Первая часть доклада теоретическая. В поисках API для любого (Any) объекта

Во второй части доклада практическая реализация 💡

Поделитесь мыслями:
Что думаете про декларативны подход? Описываю результат и получаю нужный объект

Часть 2

Теги:
Рейтинг0
Комментарии0

Совместно используемая память в Swift и С/C++

Без прошлого нет будущего. Поэтому мы с заботой и любовью сохраняем наследие прошлого и используем проверенные инструменты в новых проектах. Благо, что разработчики Swift заложили возможность простого подключения библиотек, написанных на С, а с недавних пор еще и C++. 

В статье были описаны небезопасные указатели и их взаимодействие с объектами Си. Но не прозвучал один важный, на мой взгляд, вопрос: где выделяется память под совместно используемые объекты. Из документации и руководств по Swift мной была усвоена настойчивая рекомендация использовать вместо выделения памяти на стороне Си, функцию allocate класса UnsafeMutableRawPointer, там где это возможно.

let buf = UnsafeMutableRawPointer.allocate(byteCount: 128, alignment: 4)

Для того, чтобы Swift понимал содержание памяти, нужно сделать её привязку к поддерживаемому типу. Многие базовые типы Си поддерживаются через классы Swift с созвучным названием (CBool, CChar, CDouble, CFloat, CInt, CLong, CLongLong, CShort, CSignedChar, CUnsignedChar, CUnsignedInt, CUnsignedLong и т.д.).

let sbuf = buf.bindMemory(to:CChar.self, capacity:128)

Последовательность символов CChar воспринимается языком Swift как строка в стиле Си, которая поддерживается конструктором класса строк, что упрощает, например, вывод строк:

print(String(cString:sbuf))

Осталось только напомнить, что надо явно освобождать память буферов после использования с помощью функции deallocate:

buf.deallocate()

Спасибо за внимание!

Теги:
Всего голосов 3: ↑3 и ↓0+7
Комментарии0

Продолжаем разбираться с алгоритмами DFS и BFS.

В прошлый раз мы знакомились с тем, как работают алгоритмы поиска по N-деревьям. А в новом ролике Артур Михайлов, head of iOS в Технократии, показывает, как применять эти алгоритмы на практике.

Полезно как для тех, кто готовится к собеседованиям, так и тем, кто применяет алгоритмы в работе.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Разбираемся, как работают алгоритмы BFS и DFS. Конечно, в «Алгоритмической качалке»

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

Так что знания максимально полезные. Переходите по ссылке и не забывайте поставить лайк и написать комментарий — это очень помогает нам продвигать контент.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Как написать алгоритм работы «критического удара» для компьютерной игры

Нет, мы не начали внезапно заниматься геймдевом. Тренер «Алгоритмической качалки» Артур — давний фанат РПГ-игр, и ему интересно было разобраться в том, как работает такая механика, как «критический удар».

В новом ролике Артур покажет два варианта реализации алгоритма работы «крита». Переходите по ссылке, ставьте лайки и рассказывайте в комментариях свои идеи реализации.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Apple собрала все сессии WWDC 2024 на одной странице. Записи рассортировали по темам, чтобы разработчики сразу могли перейти к интересующему разделу. Страница доступна как на сайте Apple Developers, так и в фирменном приложении для разработчиков.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Виды логирования в Swift

Логирование — важный инструмент в арсенале разработчика. Оно помогает систематизировать сообщения, дает возможности фильтрации и многое другое. У Apple несколько основных инструментов для логирования.

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

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

Dump — еще одна функция для распечатки сообщений в консоль. При работе с объектами и массивами объектов Dump показывает себя лучше, чем Print и DebugPrint. Мы получаем более наглядный результат, можем повлиять на то, в каком виде представлена информация, избавиться от лишнего «шума» в консоли.

OSLog — наш главный инструмент для ведения логов. Для этой функции мы передаем тип, название файла и название функции. Кастомизировать это можно как угодно.

Logger — более свежая альтернатива, доступная с iOS 14. Logger от OSLog отличается в деталях. Это разные уровни логирования и возможности настройки логов. С помощью расширений можно создать несколько логгеров, отвечающих за логирование разного функционала.

Подробнее о каждом инструменте — в нашем блоге.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

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

Теги:
Всего голосов 2: ↑2 и ↓0+6
Комментарии0

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

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Ближайшие события

Apple выпустила документацию по работе с новым жестом сжатия Apple Pencil. Разработчики могут использовать его в своих приложениях. Вместе с этим добавили разделы документации по работе с вибрацией и двойным нажатием. Примеры кода доступны как для UIKit, так и для SwiftUI.

Жест сжатия работает только с Apple Pencil Pro, а сам стилус — только с iPad Pro (M4) и iPad Air (M2). Более подробно о функциях разных поколений Apple Pencil можно узнать из этой статьи.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Состоялся релиз библиотеки SystemNotification, которая позволяет создавать уведомления SwiftUI в стиле системных оповещений. При этом доступна полная кастомизация. К примеру, можно добавить иконку, текст, изменить цвета или полностью модернизировать внешний вид.

Код библиотеки открыт и опубликован на GitHub. Вместе с этим есть демо-приложение и подробная документация.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

На YouTube-канале DesignCode опубликовали бесплатный курс по созданию 3D-моделей для iOS и visionOS в Spline. В двухчасовом ролике обсуждают следующие темы:

  • Базовые формы;

  • Материалы, свет и эффекты;

  • Камера, анимации и состояния;

  • Кнопки и компоненты;

  • Пошаговая анимация;

  • Создание 3D-иконки для iOS-приложения;

  • Создание 3D-иконки для visionOS-приложения;

  • Создание 3D-сцены;

  • Анимация частиц;

  • Экспорт моделей в SwiftUI-проекты.

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Apple опубликовала апрельский выпуск рассылки Hello Developer для разработчиков:

  • Компания официально открыла сезон подготовки к WWDC24. Конференция пройдёт с 10 по 14 июня. Все сессии будут публиковать на новом YouTube-канале для разработчиков.

  • Представили обновлённое руководство по разработке на Swift. В него вошли уроки по SwiftUI, Xcode и visionOS.

  • Опубликовали интервью с разработчиками игры Knotwords.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Apple запустила YouTube-канал для разработчиков. Компания уже опубликовала несколько десятков записей сессий WWDC23. Долгое время Apple загружала видео для разработчиков только на сайт и в специальное приложение. Во время WWDC24 записи сессий будут появляться и на YouTube-каналы.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Для Figma вышел плагин Trace, с помощью которого можно сконвертировать дизайн в live-прототип приложения на SwifUI. Есть возможность просматривать код вёрстки, изменять его, видеть как это влияет на поведение приложения и переносить изменения в IDE. Для всего этого плагин подгружает полноценный симулятор iOS. Для преобразования дизайна в код SwiftUI используется нейросеть.

Изначально Trace появился в качестве сервиса для генерации экранов приложений по текстовому запросу с поддержкой только SwiftUI.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Как меняется рынок мобильной разработки в 2024 году

Наш Head of Mobile Миша Вассер вместе с другими экспертами мобильной разработки ответил на вопросы Практикума о трендах сферы и прогнозах на этот год. Собрали в этом посте главное.

  1. У iOS-разработки есть будущее

    Apple вносит послабления в свои ограничения. Недавно платформа разрешила российским разработчикам принимать платежи вне App Store. Возможно, вскоре iOS-разработчикам вновь станет проще жить.

  2. Flutter — лидер кросс-платформы

    В 2023 году доля кросс-платформенной разработки увеличилась с Flutter во главе. Но нативная разработка всё-таки перевешивает — ее по-прежнему выбирает бигтех и частично средний бизнес.

  3. RuStore набирает ход, а вот российские ОС нет

    RuStore приземлила у себя крупные бренды, например Сбер и Альфа-Банк, и развивает собственные инструменты для разработчиков по примеру Google. А вот отечественные операционки затихли. «Аврора» и «РОСА Мобайл» будто сами тормозят развитие внутренними ограничениями.

  4. SwiftUI продолжит набирать популярность

    Тренд на SwiftUI у нас пока до конца не оформился, и UIKit всё еще востребован. Но с каждым обновлением SwiftUI становился всё лучше.

  5. Битва Compose и XML

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

Ссылку на полный материал оставили выше. А если хотите больше новостей о мобильной разработке, заглядывайте в телеграм-канал Саши Ворожищева, Head of Flutter/iOS.  

Теги:
Всего голосов 10: ↑10 и ↓0+10
Комментарии0
1