Статьи

Популярные Open Source проекты для Swift Development

3 декабря 2015 года Apple официально открыла исходный код языка Swift. Открыв поставку всего языка программирования, Apple теперь позволяет разработчикам со всего мира внести свой вклад в язык и помочь в его разработке и развитии. В дополнение к этому, язык программирования Swift теперь можно использовать в средах вне платформ Apple, таких как Linux.

В этой статье я собираюсь рассказать вам о некоторых из самых популярных и интересных проектов, которые используют Swift и со временем будут развиваться вместе с самим языком.

Если вы ранее занимались программированием на iOS, особенно с использованием Objective-C, вы, вероятно, знакомы с такими классами, как NSDate , NSArray , NSString и NSURL . Все эти классы являются частью платформы Foundation , которая доступна на любой платформе Apple (iOS, OS X, tvOS и watchOS).

Однако базовая функциональность, которую предоставляют API-интерфейсы Foundation, также переопределяется Apple в качестве базовой библиотеки Swift для переноса на другие платформы. Этот проект можно найти в репозитории Apple swift-corelibs-foundation на GitHub .

Многие другие разработчики активно работают над переносом API-интерфейсов Foundation в Swift на переносимой кроссплатформенной основе. Наиболее популярным из этих проектов является SwiftFoundation, который на момент написания этой статьи имел много ключевых отличий от реализации Apple.

Это обеспечивает больше функциональности. Как отмечает проект README, многие методы в проекте Apple Foundation помечены как NSUnimplemented() , что означает, что в настоящее время доступны только основные функции.

С самого начала он был разработан с учетом мобильности. В отличие от базовой библиотеки Apple Foundation, SwiftFoundation не полагается на API-интерфейсы CoreFoundation, написанные на C. Это позволяет SwiftFoundation более легко поддерживать более широкий спектр платформ в будущем.

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

Что еще более важно, это полностью модернизирует 20-летние API Foundation. Apple может в конечном итоге сделать что-то подобное со своей базовой библиотекой Foundation, но README их хранилища утверждает следующее.

В наш первый год мы не собираемся вносить серьезные изменения в API библиотеки. Мы считаем, что это будет препятствовать достижению основной цели [переносимости вне платформ Apple].

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

В дополнение к Foundation, Apple также перерабатывает с нуля две другие основные библиотеки, которые будут использоваться с Swift на других платформах: XCTest и libdispatch (также известный как Grand Central Dispatch ). Хотя эти проекты не так популярны или имеют такой же масштаб, как Foundation, они все же очень важны, когда речь идет о разработке Swift.

Проект XCTest разработан, чтобы позволить разработчикам создавать модульные тесты для их кода Swift. Если вы не знакомы с модульными тестами, посмотрите эту статью, чтобы узнать о них больше. Хотя проект XCTest находится на самых ранних этапах, когда поддерживаются только базовые тесты, он со временем станет очень важным для всех разработчиков Swift при тестировании и отладке их кода.

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

Хотя оба этих репозитория принадлежат Apple и, как и Swift, принадлежат ей, они были открыты для поощрения разработчиков. Я призываю вас взглянуть на них, даже если интересует только реализация API. Вы можете многому научиться, просматривая исходный код.

Одна из наиболее интересных возможностей открытого ПО Swift — это возможность использовать его в качестве основного языка программирования для серверных серверных частей и веб-сайтов. Хотя HTML и CSS останутся стандартами для Интернета с точки зрения представления контента пользователю, когда Swift и его библиотеки станут достаточно зрелыми и функциональными, Swift можно будет использовать практически в любой ситуации, когда в настоящее время используются другие языки, такие как PHP и JavaScript, используются.

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

Есть много проектов, которые работают над продвижением Swift в сети, включая Vapor , Zewo и Caramel . Однако наиболее продвинутым и функциональным из этих проектов является Perfect .

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

  • PerfectLib содержит сетевые API и утилиты, необходимые как клиенту, так и серверу, включая упрощенную обработку HTTP-запросов, анализ JSON и другое управление данными.
  • Perfect Server работает на стороне сервера и обрабатывает прием соединений, обработку запросов и возврат ответов. Сервер, использующий Perfect Server, может использовать либо FastCGI, либо автономный HTTP.
  • Различные коннекторы, которые позволяют серверу расширять свои функциональные возможности и работать с другими API, включая mod_perfect для соединения FastCGI с Apache 2.4 и MySQL , PostgreSQL и MongoDB для работы с этими типами баз данных.

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

Если вы посмотрите на репозитории, упомянутые ранее в этой статье, вы заметите, что некоторые из них в своем корневом каталоге имеют файл Package.swift . Проекты, содержащие этот файл, делают это для использования с менеджером пакетов Swift .

Swift Package Manager — это система управления зависимостями, похожая на CocoaPods и Carthage , позволяющая разработчикам создавать ссылки на сторонние библиотеки и использовать их в своих собственных проектах.

Этот менеджер пакетов разрабатывается таким образом, чтобы любая платформа, использующая Swift, могла ссылаться и импортировать код точно таким же образом, а не полагаться на решение для конкретной платформы. Диспетчер пакетов Swift все еще находится на ранней стадии разработки, и многие спецификации могут быть изменены. Но он должен быть завершен и выпущен вместе со Swift 3.

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

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

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

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

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

Этот репозиторий содержит широкий спектр полезных алгоритмов для использования в коде Swift. Это включает в себя такие вещи, как массивы фиксированного размера, хеш-таблицы и тасование. Репозиторий содержит полный список всех поддерживаемых в настоящее время алгоритмов.

Swift AI — это проект искусственного интеллекта, ориентированный на машинное обучение. Пример проекта, включенного в репозиторий, показывает, как система ИИ может научиться копировать базовую функцию синуса.

Обратите внимание, что этот проект в настоящее время поддерживается только в iOS и OS X из-за его зависимости от инфраструктуры Apple Accelerate , которая позволяет повысить производительность при выполнении больших вычислений.

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

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

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