Код
#статьи

На каком языке пишут приложения для iOS

Хотите создавать революционные приложения, но не знаете, на каком языке? Мы подготовили статью, чтобы вы могли определиться (спойлер: Swift).

 vlada_maestro / shutterstock

Разработка приложений под iOS может быть кросс-платформенной или нативной. Первый способ позволяет использовать код на Java, C++, Python и других языках — просто компилируете приложение под iOS, и оно будет работать.

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

Разработка кросс-платформенных приложений

Как уже говорилось выше, создать приложение для iOS можно с помощью:

  • Python;
  • C;
  • C++;
  • C#;
  • Java.

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

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

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

Примеры кросс-платформенных приложений:

  • Facebook*;
  • Instagram*;
  • Todo;
  • SpinPaint.

Нативная разработка для iOS

Нативные приложения отлично работают без всяких костылей, потому что используются языки, которые подходят для конкретной платформы. В случае с iOS — Objective-C и Swift.

Objective-C

В 1980 году Брэд Кокс в своей компании Stepstone создал Objective-C — позже он стал основным языком разработки для устройств Apple. Objective-C — это компилируемый объектно-ориентированный язык программирования (ООП), основанный на C.

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

Основное отличие Objective-C от C++ (тоже поддерживает ООП и тоже был разработан в восьмидесятых годах) в том, что вызов метода в нем интерпретируется не как функция, а как сообщение — как в языке Smalltalk. Такие сообщения могут содержать что угодно, а отправить их можно куда потребуется.

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

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

Синтаксис здесь значительно отличается от синтаксиса C-подобных языков. Для сравнения:

вызов метода объекта в C#:

Object.Method(argument);

а это — отправка сообщения объекту на Objective-C:

[object method:argument];

Разница видна и в создании классов.

Objective-C:

#import "Rect.h" //Подключение библиотеки
@implementation Rect //Объявление класса
+ newRect //Инициализатор
{
Rect * rect = [[Rect alloc] init];
[rect setWidth: 1.0f];
[rect setHeight: 1.0f];
return rect;
}
//Методы, возвращающие значение переменной
- (float) width
{
return width;
}
- (float) height
{
return height;
}
//Методы, задающие значение
- (void) setWidth: (float) theWidth
{
width = theWidth;
}
- (void) setHeight: (float) theHeight
{
height = theHeight;
}
@end //Конец объявления

И пример на C#:

public class Rect //Объявление класса
{
private float width; //Создание переменных
private float height;
public Rect(int width, int height) //Инициализатор
{
this.width = width;
this.height = height;
}
public int Width { get; set; } //Методы для вывода и присваивания значений переменным
public int Height { get; set; }
}

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


На Objective-C разработаны все приложения в AppStore, которые еще не перешли на Swift или не относятся к кросс-платформенным решениям.


Swift

Крис Латтнер, главный автор LLVM, вдохновившись Objective-C, Rust, Ruby, C#, Haskell и другими языками, в 2010 году начал разработку Swift, а в 2014-м уже выпустил первую версию.

Swift изначально заточен под операционные системы Apple, поэтому он производительнее и функциональнее, чем Objective-C, для работы с которым использовалась подключаемая runtime-библиотека. В 2015 году вышла версия 2.0, которая была еще быстрее, получила API для работы с ошибками и проверку доступности функций для целевых ОС. Актуальная версия на момент написания статьи — 4.2.

Синтаксис изменился, и теперь программы больше похожи на код C-подобных языков — с той лишь разницей, что после операций не ставится символ «;» (как тебе такое, ошибка компилятора?):

class Rect {
var width: Int = 0
var height: Int = 0
}

Обратите внимание, что инициализатора нет, так же как и методов для получения или присваивания значения переменным. Чтобы создать объект класса Rect, достаточно написать такой код:

var rect1: Rect = Rect()
rect1.width = 5
rect1.heigth = 5
print("Ширина: \(rec1.width); Высота: \(rect1.height)")

Несмотря на то что языку всего четыре года (шутка про восьмилетний опыт программирования на Swift), его уже преподают во многих университетах, в том числе:

  • Мюнхенский технический университет;
  • Политехнический университет штата Калифорния;
  • Стэнфордский университет;
  • Skillbox.

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

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

Если же вы хотите работать над новыми проектами, то лучше сразу начинать со Swift. По данным с сайта Apple, приложения на Swift работают до 8,4 раз быстрее, чем на Python 2.7, и до 2,6 раз быстрее, чем на Objective-C.

Важный критерий — поддержка и постоянное обновление языка. В сентябре 2018 года (вместе с выходом iOS 12) вышла версия Swift 4.2, в которую добавили многое, чего не хватало раньше:

  • параллельная обработка данных (async/await);
  • поддержка регулярных выражений;
  • стабильная работа ABI со стандартными библиотеками.

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

* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.

Нейросети для работы и творчества!
Хотите разобраться, как их использовать? Смотрите конференцию: четыре топ-эксперта, кейсы и практика. Онлайн, бесплатно. Кликните для подробностей.
Смотреть программу
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована