Первые шаги в языке swift. Swift (язык программирования). Сложность обучения Swift

Василий Усов «Swift. Основы разработки приложений под iOS» Питер, 2016 год, 304 стр. (6,07 мб. pdf)

Книга представляет разработчикам информацию по основам программирования на Swift, языке программирования специально разработанном для создания приложений в . Это быстрый, рациональный, безопасный, функциональный объектно-ориентированный язык - был создан и представлен в 2014 году и стал огромным сюрпризом и произвел фурор в iOS-среде. Прошел всего лишь год, и Apple обновила его до версии 2.0, и далее 2.1, в которую были внесены ряд значительных нововведений.

Представленное практическое руководство содержит максимально полную по технологии программирования на Swift. Все желающие научится создавать приложения под iOS смогут воспользоваться книгой, как справочником и учебником, практически не обращаясь к другим изданиям. В книге дается не только теория, но и показано применение языковых конструкций на большом количестве примеров. А для закрепления знаний и лучшего понимания всех тонкостей языка, читателю предлагается к выполнению ряд практических заданий. Изучая программирование на Swift, вы сможете разрабатывать эффективные и интересные приложения для платформ: iOS, OS X, tvOS или watchOS. ISBN: 978-5-496-02256-9

Введение 8
О Swift 9
О книге 10

Часть I. Знакомство с Xcode 13

Глава 1. Первые шаги 14
1 .1 .Вам необходим компьютер Mac 14
1 .2 .Зарегистрируйтесь как Apple-разработчик 14
1 .3 .Установите Xcode 16

Глава 2. Среда Xcode и playground-проекты 18
2 .1 .Введение в Хcode 18
2 .2 .Интерфейс playground-проекта 21
2 .3 .Возможности playground-проекта 23

Часть II. Базовые возможности Swift 27

Глава 3. Отправная точка 28
3 .1 .Установка и изменение значения 29
3 .2 .Переменные и константы 31
3 .3 .Правила объявления переменных и констант 34
3 .4 .Вывод текстовой информации 35
3 .5 .Комментарии 37
3 .6 .Точка с запятой 39

Глава 4. Типы данных и операции с ними 40
4 .1 .Виды определения типа данных 40
4 .2 .Числовые типы данных 43
4 .3 .Текстовые типы данных 56
4 .4 .Логические значения 62
4 .5 .Псевдонимы типов 65
4 .6 .Операторы сравнения 67

Часть III. Основные средства Swift 69

Глава 5. Кортежи 70
5 .1 .Основные сведения о кортежах 70
5 .2 .Взаимодействие с элементами кортежа 72

Глава 6. Опциональные типы данных 78
6 .1 .Опционалы 78
6 .2 .Извлечение опционального значения 80

Глава 7. Утверждения 83

Глава 8. Управление потоком. Ветвления 86
8 .1 .Оператор условия if 86
8 .2 .Оператор guard 97
8 .3 .Операторы диапазона 98
8 .4 .Оператор ветвления switch 98

Глава 9. Типы коллекций 109
9 .1 .Массивы 109
9 .2 .Наборы 120
9 .3 .Словари 128

Глава 10. Управление потоком. Повторения 135
10 .1 .Оператор повторения for 135
10 .2 .Операторы повторения while и repeat while 142
10 .3 .Управление циклами 144

Глава 11. Функции 148
11 .1 .Объявление функций 148
11 .2 .Входные параметры и возвращаемое значение 151
11 .3 .Тело функции как значение 162
11 .4 .Вложенные функции 163
11 .5 .Перезагрузка функций 164
11 .6 .Рекурсивный вызов функций 165

Глава 12. Замыкания 167
12 .1 .Функции как замыкания 167
12 .2 .Замыкающие выражения 170
12 .3 .Неявное возвращение значения 171
12 .4 .Сокращенные имена параметров 172
12 .5 .Переменные-замыкания 174
12 .6 .Захват переменных 175
12 .7 .Метод сортировки массивов 176

Часть IV. Нетривиальные возможности Swift 178

Глава 13. ООП как фундамент 180
13 .1 .Экземпляры 180
13 .2 .Пространства имен 182

Глава 14. Перечисления 184
14 .1 .Синтаксис перечислений 184
14 .2 .Ассоциированные параметры 187
14 .3 .Оператор switch для перечислений 189
14 .4 .Связанные значения членов перечисления 190
14 .5 .Свойства в перечислениях 192
14 .6 .Методы в перечислениях 193
14 .7 .Оператор self 194
14 .8 .Рекурсивные перечисления 195

Глава 15. Структуры 199
15 .1 .Синтаксис объявления структур 199
15 .2 .Свойства в структурах 200
15 .3 .Структура как пространство имен 202
15 .4 .Собственные инициализаторы 203
15 .5 .Методы в структурах 204

Глава 16. Классы 206
16 .1 .Синтаксис классов 207
16 .2 .Свойства классов 207
16 .3 .Методы классов 210
16 .4 .Инициализаторы классов 211
16 .5 .Вложенные типы 212

Глава 17. Свойства 214
17 .1 .Типы свойств 214
17 .2 .Контроль получения и установки значений 216
17 .3 .Свойства типа 220

Глава 18. Сабскрипты 223
18 .1 .Назначение сабскриптов 223
18 .2 .Синтаксис сабскриптов 224

Глава 19. Наследование 229
19 .1 .Синтаксис наследования 229
19 .2 .Переопределение наследуемых элементов 231
19 .3 .Превентивный модификатор final 234
19 .4 .Подмена экземпляров классов 235
19 .5 .Приведение типов 235

Глава 20. Псевдонимы Any и Any 238
20 .1 .Псевдоним Any 238
20 .2 .Псевдоним AnyObject 240

Глава 21. Инициализаторы и деинициализаторы 241
21 .1 .Инициализаторы 241
21 .2 .Деинициализаторы 248

Глава 22. Удаление экземпляров и ARC 250
22 .1 .Уничтожение экземпляров 250
22 .2 .Утечки памяти 252
22 .3 .Автоматический подсчет ссылок 255

Глава 23. Опциональные цепочки 258
23 .1 .Доступ к свойствам через опциональные цепочки 258
23 .2 .Установка значений через опциональные цепочки 260
23 .3 .Доступ к методам через опциональные цепочки 261

Глава 24. Расширения 262
24 .1 .Вычисляемые свойства в расширениях 263
24 .2 .Инициализаторы в расширениях 264
24 .3 .Методы в расширениях 265
24 .4 .Сабскрипты в расширениях 266

Глава 25. Протоколы 267
25 .1 .Требуемые свойства 268
25 .2 .Требуемые методы 269
25 .3 .Требуемые инициализаторы 270
25 .4 .Протокол в качестве типа данных 271
25 .5 .Расширение и протоколы 271
25 .6 .Наследование протоколов 272
25 .7 .Классовые протоколы 273
25 .8 .Композиция протоколов 274

Глава 26. Нестандартные типы данных и получение справочной информации 275

Глава 27. Универсальные шаблоны 283
27 .1 .Универсальные функции 283
27 .2 .Универсальные типы 285
27 .3 .Ограничения типа 287
27 .4 .Расширения универсального типа 288
27 .5 .Связанные типы 288

Глава 28. Обработка ошибок 291
28 .1 .Выбрасывание ошибок 291
28 .2 .Обработка ошибок 292
28 .3 .Отложенные действия по очистке 297

Глава 29. Нетривиальное использование операторов 298
29 .1 .Операторные функции 298
29 .2 .Пользовательские операторы 301

Скачать книгу бесплатно 6,07 мб. pdf

Итак, продолжим знакомство с простым и интересным языком Swift. В прошлый раз мы перспективного языка программирования. А теперь сделаем своё первое приложение !

Как создать приложение для iOS

Сегодня мы сделаем простое приложение для расчета индекса массы тела и необходимого количества калорий для поддержания веса. Для этого будем использовать формулы Гарисса Бенедикта и индекса массы тела .

1. Для начала давайте создадим проект: запустите Xcode и нажмите комбинацию клавиш CMD+Shift+N или выберите в меню File->New->Project

2. Теперь выберите Tabbed Application и нажмите Next .

3. На этом этапе надо придумать имя для приложения (Product Name), нажать Next и выбрать папку для сохранения. Параметры Organization Name и Organization Identifier можете не менять.

Главное, чтобы значение в поле Language было равно Swift .

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

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

Например, первая влкадка в панеле Navigator показывает список файлов проекта, третья позволяет производить поиск по проекту и так далее.

5. Найдите в списке файлов проектов файл с именем Main.storyboard и нажмите на него.

Файл Main.storyboad определяет, какие экраны (контроллеры) есть в приложении. Вы можете добавлять элементы на экраны, задавать связи между экранами и так далее.

Если вы выберите какой-нибудь контроллер, он подсветится синей рамкой:

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

6. Запустим наше шаблонное приложение и посмотрим, как оно выглядит в симуляторе. Для этого надо в верхнем левом углу выбрать тип симулируемого устройства и нажать комбинацию клавиш CMD+R или кнопку с икокой Play .

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

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


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

8. Теперь в панели Utilities выбирайте Attributes Inspector и меняйте значение в поле Title на BMR/BMI для первого таба и Килокалории для второго.

Сейчас на первом контролере размещены всякие надписи. Их надо удалить. Для этого выделите их и нажмите Delete .

9. Теперь добавим свои элементы управления. Внизу панели Utilities есть Object Library , в которой можно выбрать объекты и добавить их к сцене. Найдите объект Label и перетащите его на контроллер BMR/BMI. Перед этим не забудьте два раза тапнуть на сцене, чтобы масштаб стал стандартным.

Должно получиться примерно так.

В панели Utilities можно поменять текст, размер шрифта и так далее.

10. Перетащите еще несколько лейблов и поставьте им такой же текст, как и на картинке. Для последнего лейбла нужно поставить Lines в 2 , чтобы текст переносился на другую строку.

11. Теперь добавьте 3 текстовых поля (Text Field ).

И разместите их, как на картинке.

У текстовых полей поставьте параметр keyboard type в Number Pad .

И установите текст по умолчанию.

12. Теперь добавим элементы управления для выбора пола и кол-ва тренировок в неделю. В Object Library ищете Segmented Control и добавляйте на экран.

У Segmented Control можно менять количество сегментов и текст для каждого сегмента.

Сделайте так, чтобы сегменты выглядели, как на скриншоте.

13. Теперь добавьте кнопку (button ).

И установите ей заголовок.



После этого добавьте еще один label с lines равным 4 .

14 . Выберите контроллер BMI/BMR, нажмите два пересекающихся кольца в правом верхнем углу и откроется Assistant Editor . Он показывает код, ассоцированный с этим контроллером.

15. Протащим элементы управления.

Для этого выберите первый text field (в нашем случае это будет возраст), нажмите Ctrl, кликните на него еще раз и, не отпуская кнопки, перетащите внутрь класса. Если все сделано правильно, то вы увидите посказку “Insert Outlet, Action, …” .

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

16. У вас появится переменная ageTextField .

Проделайте эту процедуру для оставшихся text field, segmented controls и label с текстовым результатом. У вас должно получиться так:

Теперь протащите кнопку, но тип соединения укажите не Outlet, а Action . И в качестве имени используйте calculateTapped .

17. Теперь скопируйте следующий в метод calculateTapped .

Этот код выполняет расчет и выводит результат на экран.

18. Пришло время подвести итог. Давайте запустим и проверим:

Ваша первая программа готова! Молодцы!

Задавайте вопросы

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

Над текстом трудился Руслан Гуменный - ведущий разработчик e-Legion . Компания является лидером на рынке заказной мобильной разработки в Европе, входит в состав холдинга DZ Systems . За 9 лет существования были созданы приложения для РайффайзенБанка , Яндекса , BMW , Банка Москвы , Первого Канала , Aviasales , Sports.ru , ВГТРК , Mail.Ru Group и многих других компаний.

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

(Нет голосов)

сайт Итак, продолжим знакомство с простым и интересным языком Swift. В прошлый раз мы познали базовые команды и функции перспективного языка программирования. А теперь сделаем своё первое приложение! Как создать приложение для iOS Сегодня мы сделаем простое приложение для расчета индекса массы тела и необходимого количества калорий для поддержания веса. Для этого будем использовать формулы Гарисса...

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

Я начал изучать Swift ровно 30 дней назад. Три дня назад моё приложение было утверждено Apple для бета-тестирования. Понятно, что бета ещё далеко не идеал, но для меня это было большим достижением.

У меня нет ни степени в области компьютерных наук, ни опыта работы разработчиком, но последние 5 лет я был продакт-менеджером в команде разработки ПО и писал Ruby on Rails приложения ради забавы. Мне хотелось быть более близким к тем вещам, с которыми я работаю, поэтому я начал кодить.

Почему я выбрал iOS и Swift?

Постоянный рост популярности мобильных приложений

Я хотел работать над тем, что нужно людям, и мне всегда нравилась близость со смартфонами у пользователей. Наши устройства знают о нас всё: когда мы просыпаемся и когда ложимся спать, где мы и как мы туда попали, наше расписание, наше отношение к друзьям и семье и многое другое, о чём не знает даже сам пользователь. Мне это нравится. А ещё, я уже давно являюсь поклонником Apple, так что это было естественно начать именно с iOS. Некоторое время я разбирался с Objective-C, мне не понравилось, и я решил изучать Swift.

Ограничения играют на пользу

Разработка приложений в рамках, заданных Apple, вполне доступна новичку и не сильно ограничивает возможности. Зато у меня не было соблазна отвлекаться на что-либо другое и вынуждало меня больше думать о UX.

Swift - быстроразвивающийся язык.

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

Ресурсы для начинающих

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

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

В конце концов я нашёл золотую середину, ниже приведены материалы, которые я счёл наиболее полезными:

1. Стэнфордский курс Пола Хегарти «Разработка Swift приложений для iOS 8» .

Доступно бесплатно в iTunes U (в том числе на Windows). На просмотр первых пяти лекций и выполнение домашнего задания у меня ушло около недели. В процессе обучения я столкнулся с трудностями, и мне пришлось перейти к другим ресурсам. Тем не менее скоро я планирую продолжить обучение. А этот сайт поможет вам разобраться с тем, что вы не понимаете.

2. Курс от ВШЭ «Разработка iOS-приложений на языке Swift» .

Курс основан на книге «Swift: Programming Language» . Для обучения потребуется опыт разработки на любом языке программирования (хотя бы на уровне основ). В целом курс даёт хорошую подготовку для начала работы над своими приложениями.

3. RayWenderlich.com

Нет, это не чей-то персональный сайт. Это лучшее, что я когда-либо находил. Если вы только начинаете, советую подписаться на рассылку и воспользоваться учебником, размещённым на сайте. Благодаря ему я впервые узнал о странных вещах и нашёл, как с ними справляться. После прочтения приступайте к поиску идей. Если не получается - погуглите.

Мой тайм-план

Неделя 1. Я погрузился в лекции и задания Стэнфордского курса, параллельно читая книгу , на основе которой был создан курс ВШЭ, и изучая ресурсы RayWenderlich.com . В конце первой недели я решил, что готов к старту работы над приложением.

Недели 2 и 3. В это время я отправился в небольшое путешествие, в пути у меня не было доступа к интернету, и я заранее загрузил более 40 вкладок. Это дало мне возможность работать над приложением, не отвлекаясь. Каждой день я думал о том, как сделать его лучше.

Неделя 4. Я продолжал зачистку ненужного кода, рисовал логотип в Sketch и готовил приложение к отправке Apple на рассмотрение. Я получил ответ меньше, чем через сутки.

Я провел 15 часов, работая в Xcode, 3 часа в iOS эмуляторе, больше 4 часов ушло на чтение учебников и около часа на поиск ответов на Stack Overflow. Ещё кучу времени я был занят изучением материалов с помощью смартфона (это время я не считал).

Последнее обновление: 25.12.2017

Устройства компании Apple являются признанным лидером в сфере информационных технологий. По последним данным доля iOS среди других мобильных операционных систем колеблется в районе 15-20%, а доля Mac OSX среди настольных систем составляет по разным данным 15-20%. Подобное широкое распространение устройств от компании Apple рождает потребность в программном обеспечении для этих устройств.

Традиционно основным языком программирования под iOS и MacOS был Objective-C, однако 2 июня 2014 года на конференции разработчиков Apple WWDC 2014 был представлен новый и более удобный язык программирования - Swift. По сравнению с Objective-C Swift обладает следующими особенностями:

    Swift является чистым объектно-ориентированным языком программирования

    Простота, ясный и четкий синтаксис

    Строгая типизированность. Каждая переменная имеет определенный тип

    Автоматическое управление памятью

Однако при этом Swift полностью совместим с ранее написанными прикладными интерфейсами Cocoa API, для которых использовались C и Objective-C.

При этом Swift продолжает развиваться. 19 сентября 2017 года вышла версия 4.0, которая добавила новые возможности для разработки под iOS и Mac OS. В принципе каждый год выходят новые версии.

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

Что нужно для разработки для iOS?

В первую очередь необходима соответствующая операционная система Mac OS 10.12 Yosemite или выше. Без Mac OS практически невозможно скомпилировать программу. Данное обстоятельство сильно ограничивает возможности разработки, учитывая тот факт, что Mac OS может гарантированно работать лишь на компьютерах самой компании Apple (iMac, MacBook, MacBook Air, MacBook Pro), а также учитывая высокую стоимость этих самых компьютеров. Однако на обычном PC под управлением ОС Windows или ОС на базе Linux создавать приложения под iOS и Mac OS практически невозможно.

Существуют также варианты с виртуальными машинами, на которые установлена Mac OS, либо использование Хакинтош, однако работоспособность подобных вариантов не гарантирована.

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

Непосредственно для самой разработки нам потребуются инструменты языка Swift, текстовый редактор для написания кода, симуляторы iPhone и iPad для отладки приложения. Для всех этих и многих других функций разработки Apple предоставляет бесплатную среду разработки XCode.

Нужны ли реальные устройства iPhone или iPad для тестирования разрабатываемых приложений? По большому счету нет, так как XCode предоставляет симуляторы для тестирования, однако в некоторых отдельных случаях предпочтительнее тестировать на реальном смартфоне.

Регистрация разработчика

И также непосредственно перед тем, как приступить к созданию приложений, необходимо зарегистрироваться в центре Apple для разработчиков. Для этого надо пройти по ссылке https://developer.apple.com/register/ :

Для регистрации надо будет войти на сайт с помощью своего идентификатора Apple ID и пароля. Если вдруг такого идентификатора у вас нет, то можно создать новую учетную запись, перейдя по ссылке Create Apple ID . После регистрации сайт перенаправит на страницу , где можно найти различные материалы по разработке для самых разных аспектов.

Не так давно всеми нами известная компания Apple представила новый язык программирования, под названием Swift. Новый язык для разработки программ на IOS и OS X, вобравший в себя лучшие качества от своих предков, а именно языка С и Objective-C, при этом отодвинув в сторону их главные недостатки.

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

К слову скажу, что язык появился 2-го июня 2014 года и уже многие IT-сайты[такие как ХАБР] уже успели обсудить все плюсы, минусы и так далее, этого языка. Вся оценка сошлась на том, что этот язык очень интересен и достоин того, чтобы его изучать.

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

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

Чем я, собственно, и планирую заняться. Не так давно добил огромную книгу по языку С и думал переваливаться на Objective-C, но понял, что скоро он потеряет актуальность[если не полностью, то некоторой своей частью], поэтому выбор пал на Swift.

Welcome to Swift

Как оказалось, Swift был в проектировании не один год и, возможно, был задуман еще при Джобсе. Основу для языка компания Apple заложила в процессе продвижения своего компилятора, дебагера и framework инфраструктуры. Была существенно упрощена система управления памятью, с помощью автоматического подсчета ссылок.

Благодаря Objective-C, который начал поддерживать блоки, литералы и модули, появилась возможность для создания современной языковой технологии. Благодаря этой основе, компания Apple смогла создать новый язык, который станет будущем всей разработки софта для яблока.

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

К счастью для нас, людей которые хотят научиться программировать на Swift’e, язык достаточно дружелюбен и не требует IQ за 200 для освоения. Это, как говорят разработчики, первый язык, который обладает достаточной мощностью и при этом так же интересен и прост как скриптовый язык[или как его еще называют сценарный язык].

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

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

Расчет идет на то, что написать свою первую программу(а именно «Hello, World»), должно быть так же просто как и целую операционную систему. Все это делает Swift будущим разработки для компании Apple и всего мира в целом.

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

The swift programming language — Apple

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



В продолжение темы:
Windows

Часть вторая : "Важнейшие характеристики каждого семейства процессоров Intel Core i3/i5/i7. Какие из этих чипов представляют особый интерес" Введение Сначала мы приведём...

Новые статьи
/
Популярные