для чего нужен свифт язык

Swift. Язык программирования с открытым кодом. Мощь, простота и потрясающие приложения.

Swift — это надёжный и интуитивно понятный язык программирования от Apple, при помощи которого можно создавать приложения для iOS, Mac, Apple TV и Apple Watch. Он предоставляет разработчикам небывалую свободу творчества. Благодаря этому простому и удобному языку с открытым кодом вам достаточно просто интересной идеи, чтобы создать нечто невероятное.

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

Swift — это быстрый и эффективный язык программирования с откликом в реальном времени, который легко можно вставить в готовый код Objective-C. Теперь разработчики могут не только писать более надёжные и безопасные коды, но также экономить время и создавать приложения с расширенными возможностями.

Прекрасное приложение в Swift. Простота использования и отклик в реальном времени — вот почему VSCO выбрали Swift, чтобы создать новую версию своего фотоприложения для iOS.

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

Всё больше разработчиков встраивают код Swift в свои приложения. А некоторые даже создают в Swift совершенно новые приложения.

Производительность выше. Приложения лучше.

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

В графе с использованием алгоритма поиска в глубину найдено 10 000 целых чисел*

Язык Swift добавлен
в учебную программу.

Потенциал Swift оценили учебные заведения по всему миру. Они используют Swift и Xcode на Mac для обучения, обеспечивая своих студентов лучшими инструментами для создания приложений. А с бесплатной учебной программой от Apple «Разработка на языке Swift» даже новички легко переходят от основ программирования к профессиональной разработке.

Университеты, включившие язык Swift в учебную программу

Swift повсюду.
И теперь открыт для всех.

Swift бесплатно доступен для использования разработчиками, преподавателями и студентами по лицензии на распространение ПО с открытым исходным кодом Apache 2.0. Мы предоставляем двоичные файлы для OS X и Linux, которые позволяют компилировать код для iOS, OS X, watchOS, tvOS и Linux. А чтобы ускорить развитие и превращение Swift в ещё более мощный язык, мы создали новое сообщество, где пользователи могут напрямую вносить свой вклад в исходный код Swift.

Познакомьтесь со Swift.

Главная книга

Загрузите учебник Язык программирования Swift из Apple Books Store бесплатно. Узнайте, как благодаря Swift процесс программирования становится более удобным, гибким и увлекательным.

Xcode

Xcode — это приложение для Mac, предназначенное для разработки других приложений для Mac и iOS. В Xcode есть все инструменты, необходимые для создания потрясающих приложений. Его можно загрузить бесплатно из Mac App Store.

Веб-сайт для разработчиков

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

Источник

Язык программирования Swift. Русская версия

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт языкПривет, Хабр! 2 июня все мы воочию могли наблюдать, как компания Apple начала творить революцию в стане Objective-C разработчиков, представив миру свой новый язык программирования – Swift. Вместе с этим, она выложила в открытый доступ небольшую документацию по языку, которую мы решили перевести, если на то будет спрос. Предлагаем вашему вниманию перевод первой главы. Если тема будет интересна, то мы продолжим публиковать перевод каждую неделю.

Оглавление

Добро пожаловать в Swift
О Swift
Введение в Swift

Language guide
The Basics
Basic Operators
String and Characters
Collection Types
Control Flow
Functions
Closures
Enumerations
Classes and Structures
Properties
Methods
Subscripts
Inheritance
Initialization
Deinitialization
Automatic Reference Counting
Optional Chaining
Type Casting
Nested Types
Extensions
Protocols
Generics
Advanced Operators

Language Reference
About the Language Reference
Lexical Structure
Types
Expressions
Statements
Declarations
Attributes
Patterns
Generic Parameters and Arguments
Summary of the Grammar
Trademarks

Добро пожаловать в Swift

О языке Swift

Swift – это новый язык программирования для разработки iOS и OS X приложений, который сочетает в себе все лучшее от C и Objective-C, но лишен ограничений, накладываемых в угоду совместимости с C. В Swift используются паттерны безопасного программирования и добавлены современные функции, превращающие создание приложения в простой, более гибкий и увлекательный процесс. Swift, созданый нами с чистого листа, – это возможность заново представить себе, как разрабатываются приложения.

Swift разрабатывался нами несколько лет. Основой нового языка программирования послужили существующие компилятор, отладчик и фреймворки. Мы упростили процесс управления памятью с помощью механизма автоматического подсчета ссылок – Automatic Reference Counting (ARC). Наши фреймворки также подверглись серьезной модернизации. Objective-C начал поддерживать блоки, литералы и модули – все это создало благоприятные условия для внедрения современных технологий. Именно эта подготовительная работа послужила фундаментом для нового языка программирования, который будет применяться для разработки будущих программных продуктов для Apple.

Разработчикам Objective-C Swift покажется знакомым. Он сочетает в себе читабельность именованных параметров и мощь динамической объектной модели Objective-C. Он открывает доступ к уже существующим фреймворкам Cocoa и совместим с кодом, написанным на Objective-C. Построенный на этой общей основе язык предлагает множество новых возможностей и унифицирует процедурные и объектно-ориентированные аспекты языка программирования.

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

Swift вобрал в себя все лучшее от современных языков и разработан с учетом обширного опыта компании Apple. Наш компилятор – синоним производительности, наш язык оптимизирован для разработки без оглядки на компромиссы. Он спроектирован таким образом, чтобы вы смогли легко разработать и ваше первое приложение «hello, world!», и даже целую операционную систему. Все это делает Swift важным инструментом для разработчиков и для самой компании Apple.

Swift – это новый фантастический способ создавать приложения для iOS и OS X, и мы продолжим развивать его, добавляя новый функционал и представляя новые возможности. Наша цель – амбициозна. И мы с нетерпением ждем, чтобы увидеть, что вы сумеете создать при помощи него.

Введение в Swift

Если вы когда-нибудь разрабатывали на C или Objective-C этот синтаксис должен казаться вам до боли знакомым – в Swift эта строчка кода является законченной программой. Вам больше не нужно импортировать отдельные библиотеки для обеспечения базового функционала вроде ввода/вывода в консоль или работы со строками. Код, написанный в глобальной области видимости, является точкой входа в программу, таким образом функция main больше не нужна. Также обратите внимание на отсутствие точки с запятой в конце каждой строки.

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

Замечание
Для лучшего понимания материала мы рекомендуем использовать режим playground в Xcode. Playground позволяет вам видеть результат сразу в процессе редактирования кода без необходимости компилировать и запускать приложение.

Простые типы данных

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

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

Если же инициализатор отсутствует или не предоставляет достаточной информации, вы можете указать тип самостоятельно после переменной, разделив название и тип двоеточием:

Давайте поэкспериментируем
Создайте константу с типом Float и проинициализируйте ее числом 4.

Значения никогда не конвертируются в другой тип неявно. Если вам необходимо конвертировать значение в другой тип, делайте это явно:

Давайте поэкспериментируем
Попробуйте удалить явное преобразование к типу String в последней строке. Какую ошибку вы получите?

Имеется более простой способ включения значений в строки: для этого заключите выражение в скобки и поставьте перед ними обратный слэш ( \ ). Пример:

Давайте поэкспериментируем
Попробуйте использовать конструкцию \() и выведите на экран строку, включающую результат суммы двух целочисленных переменных и чье-нибудь имя.

При работе с массивами и ассоциативными массивами (словарями, dictionary) используются квадратные скобки ( [] ):

Чтобы создать пустой массив или dictionary, используйте следующий синтаксис:

Для создания пустых массивов и словарей используйте [] и [:] соответственно, – например, когда вы присваиваете новое значение переменной или передаете аргумент в функцию.

Условия и циклы

Условие внутри оператора if должно быть логическим, это в частности означает, что выражение if score <…>является ошибочным, поскольку здесь нет явного сравнения (например, с нулем).

Оператор множественного выбора switch поддерживает внутри себя множество других операторов сравнения и не ограничен лишь простыми сравнениями:

Давайте поэкспериментируем
Попробуйте удалить условие по умолчанию. Какую ошибку вы получите?

Для перебирания элементов ассоциативного массива используйте оператор for-in совместно с указанием пары имен для каждой пары ключ-значение.

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

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

Функции и замыкания.

Давайте поэкспериментируем
Удалите параметр day. Вместо него добавьте переменную, обозначающую наименование подаваемого на обед блюда.

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

Функции также могут иметь неопределенное число аргументов:

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

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

Функции являются объектами первого класса (first-class type), иными словами, функция в качестве свого результата может возвращать другую функцию.

Функция также может принимать другую функцию в качестве одного из аргументов.

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

Существует несколько техник, позволяющих делать замыкания более лаконичными. Если тип замыкания априори известен (например, это callback делегата), можно опустить указание типа его параметров и/или типа возвращаемого значения. Замыкания, состоящие из единственного выражения, неявно возвращают результат этого выражения.

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

Объекты и классы

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

Чтобы создать экземпляр (объект) класса, достаточно добавить круглые скобки после названия класса. Доступ к методам и членам класса осуществляется через точку.

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

У методов классов имеется одно важное отличие от функций. Названия аргументов функции используются только в пределах этой функции, тогда как в методе класса параметры также используются при вызове этого метода (кроме первого параметра). По умолчанию метод класса имеет одинаковые названия параметров как при вызове, так и внутри себя. Однако вы можете указать другое название (в примере ниже – times ), которое будет использовано только внутри этого метода. При этом для вызова этого метода необходимо использовать первое название ( numberOfTimes ).

Перечисления и Структуры

Давайте поэкспериментируем
Напишите функцию, которая сравнивает 2 перечисления типа Rank по их значениям.

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

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

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

Экземпляр члена перечисления может иметь собственные значения и они могут быть разными. Вы присваиваете эти значения при создании экземпляра перечисления (константа success в примере). Связанные и исходные значения это разные вещи: исходное значение члена перечисления всегда постоянно для всех экземпляров перечисления и указывается при его объявлении.

Рассмотрим пример получения с сервера времени восхода и заката Солнца. Сервер отправляет в ответ либо соответствующую информацию, либо сообщение об ошибке.

Давайте поэкспериментируем
Добавьте третий вариант в оператор множественного выбора switch

Обратите внимание, каким образом из объекта ServerResponse “вытаскиваются” время восхода и заката.

Протоколы и Расширения.

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

Давайте поэкспериментируем
Создайте перечисление, которое будет реализовывать этот протокол.

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

Обобщенные типы (generics)

Для создания обобщенного типа, заключите имя в угловые скобки ( <> ).

Создавайте обобщенные функции, классы, перечисления и структуры.

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

Хотите внедрить подписки в iOS-приложение за 10 минут? Интегрируйте Apphud и:
— оформляйте покупки с помощью лишь одного метода;
— автоматически отслеживайте состояние подписки каждого пользователя;
— легко интегрируйте Subscription Offers;
— отправляйте события о подписках в Amplitude, Mixpanel, Slack и Telegram с учетом локальной валюты пользователя;
— уменьшайте Churn rate в приложениях и возвращайте отписавшихся пользователей.

Источник

Для чего хорош Swift?

Авторизуйтесь

Для чего хорош Swift?

Swift — это родной язык для приложений экосистемы Apple: iOS, iPadOS, watchOS, tvOS и macOS. С его помощью пишут мобильные приложения и десктопные программы. А с недавнего времени мобильные приложения можно запускать и на компьютере.

Предок Swift, Objective-C, уже сдаёт позиции и проигрывает в скорости работы. К тому же, код на Swift гораздо лучше читается и его легко изучить даже новичкам.

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт язык

Картинка с сайта tekrevol.com

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

Swift — единственный современный язык для разработки мобильных приложений в экосистеме Apple. Так же как и XCode — единственная официальная IDE для этого. Что с одной стороны ограничивает в выборе, с другой — вы имеете специализированный инструмент для работы.
С помощью Metal API (официальной библиотеки от Apple) делают игры и 3D графику. А библиотека ARKit позволяет создавать приложения дополненной реальности (AR).

Десктоп

Ещё одно из основных предназначений языка — десктопные приложения для macOS. Разработка также ведется в XCode с использованием множества нативных библиотек для кода и UI. Кроме того, Visual Studio 2019 позволяет писать на Swift под Windows.

Серверные и веб приложения

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

Источник

7 причин изучить Swift

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт язык

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт язык

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт язык

Mac и iOS

Только за 2016 год AppStore собрал около 20 миллиардов долларов для разработчиков с приложений на платформах Mac и iOS. Поскольку Apple берёт с прибыли 30% в AppStore, рынок можно оценить в 28,5 миллиардов долларов.

Огромные деньги! И ты можешь оторвать свою долю от этого пирога.

Язык Swift используется для создания приложений под Mac и iOS, выступая в качестве возможной замены Objective-C. Последний хоть и активно используется, но морально устарел и не имеет будущего Изучив Swift, вы сможете создавать приложения сразу для обеих платформ и очень хорошо на этом заработать.

Swift отлично подходит для быстрого развития

Когда команда Apple разрабатывала замену Objective-C, у них было два основных требования:

В итоге, Swift имеет все атрибуты современного языка программирования и определённо превосходит Objective-C по всем фронтам. Основные особенности:

Swift производителен

Несмотря на то, что Swift язык высокого уровня, ориентированный на скорое изучение, он по-настоящему быстр. По словам Apple, Swift до 2.6 раз быстрее, чем Objective-C и почти в 8,4 раза быстрее, чем Python 2.7. Конечная цель – сделать язык быстрее, чем C++.

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

И ещё много другого.

Swift безопасен

Введение многих из перечисленных возможностей, а также усовершенствование синтаксиса делает Swift безопаснее, нежели Objective-C.

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

Swift бесплатный и открытый

Через год после появления Swift Apple сделал его языком с открытым исходным кодом. Хотя это не уникальное явление для современного мира, для «яблочной» компании подобная щедрость – редкость. Как правило, Apple проталкивает проприетарные технологии, чтобы выделить собственную уникальность. Но шаг со Swift стал оправданным и плодотворным.

Как и в случае с любым другим языком с открытым исходным кодом, Swift – полностью в руках сообщества. Пользователи могут предлагать пути исправления ошибок и улучшать функции, помогают переносить приложения за пределы Mac и iOS. В конце концов, пользователи – главная движущая сила языка

Стремительный рост и высокий спрос

Согласно отчету GitHub Octoverse 2017, Swift является 13-м по популярности среди языков в проектах с открытым исходным кодом.

Ресурс TNW в 2016 году сообщил, что спрос на сотрудников Swift вырос на 600 процентов. К концу года Upwork сообщила, что Swift стал вторым самым быстрорастущим навыком на внештатном рынке труда. И в опросе Stack Overflow 2017 Swift стал четвертым самым любимым языком среди активных разработчиков.

Glassdoor сообщает о среднем базовом окладе для iOS Developer в размере 107 тыс. долларов.

Разработка приложений сегодня – одна из самых «горячих» профессий на бирже. Выбрав Swift в качестве фундамента карьеры, вы точно не пожалеете.

Swift – будущее Apple

У Apple нет причин в ближайшее десятилетие заменять Swift другим языком. Добавьте сюда 4-летний прогресс, как с точки зрения развития, так и популярности, неизменно растущие продажи «яблочных» устройств и расширение линейки. Основываясь на этих фактах, можно с уверенностью говорить, что потребность в Swift-разработчиках будет расти.

Если вы хотите работать с Apple, хотите быть частью их сумасшедших финансовых отчётов – вам нужен Swift. Самое время начать обучение. Вы знаете с чего начать.

Программирование может быть настоящей мукой, особенно если начинать с какого-нибудь архаичного языка. Новичкам лучше взяться за нечто более современное, такое как Python, Ruby или Swift. Последний появился в общем доступе лишь в 2014 году, поэтому многие программисты скептически относятся к его изучению. Но если вы ищете свой путь, оставьте скептицизм в стороне. Вот несколько отличных причин, которые смогут вас убедить.

для чего нужен свифт язык. Смотреть фото для чего нужен свифт язык. Смотреть картинку для чего нужен свифт язык. Картинка про для чего нужен свифт язык. Фото для чего нужен свифт язык

Mac и iOS

Только за 2016 год AppStore собрал около 20 миллиардов долларов для разработчиков с приложений на платформах Mac и iOS. Поскольку Apple берёт с прибыли 30% в AppStore, рынок можно оценить в 28,5 миллиардов долларов.

Огромные деньги! И ты можешь оторвать свою долю от этого пирога.

Язык Swift используется для создания приложений под Mac и iOS, выступая в качестве возможной замены Objective-C. Последний хоть и активно используется, но морально устарел и не имеет будущего Изучив Swift, вы сможете создавать приложения сразу для обеих платформ и очень хорошо на этом заработать.

Swift отлично подходит для быстрого развития

Когда команда Apple разрабатывала замену Objective-C, у них было два основных требования:

В итоге, Swift имеет все атрибуты современного языка программирования и определённо превосходит Objective-C по всем фронтам. Основные особенности:

Swift производителен

Несмотря на то, что Swift язык высокого уровня, ориентированный на скорое изучение, он по-настоящему быстр. По словам Apple, Swift до 2.6 раз быстрее, чем Objective-C и почти в 8,4 раза быстрее, чем Python 2.7. Конечная цель – сделать язык быстрее, чем C++.

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

И ещё много другого.

Swift безопасен

Введение многих из перечисленных возможностей, а также усовершенствование синтаксиса делает Swift безопаснее, нежели Objective-C.

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

Swift бесплатный и открытый

Через год после появления Swift Apple сделал его языком с открытым исходным кодом. Хотя это не уникальное явление для современного мира, для «яблочной» компании подобная щедрость – редкость. Как правило, Apple проталкивает проприетарные технологии, чтобы выделить собственную уникальность. Но шаг со Swift стал оправданным и плодотворным.

Как и в случае с любым другим языком с открытым исходным кодом, Swift – полностью в руках сообщества. Пользователи могут предлагать пути исправления ошибок и улучшать функции, помогают переносить приложения за пределы Mac и iOS. В конце концов, пользователи – главная движущая сила языка

Стремительный рост и высокий спрос

Согласно отчету GitHub Octoverse 2017, Swift является 13-м по популярности среди языков в проектах с открытым исходным кодом.

Ресурс TNW в 2016 году сообщил, что спрос на сотрудников Swift вырос на 600 процентов. К концу года Upwork сообщила, что Swift стал вторым самым быстрорастущим навыком на внештатном рынке труда. И в опросе Stack Overflow 2017 Swift стал четвертым самым любимым языком среди активных разработчиков.

Glassdoor сообщает о среднем базовом окладе для iOS Developer в размере 107 тыс. долларов.

Разработка приложений сегодня – одна из самых «горячих» профессий на бирже. Выбрав Swift в качестве фундамента карьеры, вы точно не пожалеете.

Swift – будущее Apple

У Apple нет причин в ближайшее десятилетие заменять Swift другим языком. Добавьте сюда 4-летний прогресс, как с точки зрения развития, так и популярности, неизменно растущие продажи «яблочных» устройств и расширение линейки. Основываясь на этих фактах, можно с уверенностью говорить, что потребность в Swift-разработчиках будет расти.

Если вы хотите работать с Apple, хотите быть частью их сумасшедших финансовых отчётов – вам нужен Swift. Самое время начать обучение. Вы знаете с чего начать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *