Оглавление
Время чтения: 10 минут
Язык программирования Objective C
Objective С - язык, предназначенный для создания программного обеспечения под системы MacOS и iOS. По своей структуре - объектно-ориентированный и компилируемый. В основу платформы лег классический язык программирования С, в который были добавлены ООП принципы и другие полезные функции.
История создания
Objective C был разработан Брэдом Коксом в первой половине 80-х, как попытка привести классический С к современным на тот момент требованиям - в частности, сократить количество повторяющегося кода. Новый язык был основан на объектах и на отправке сообщений с их последующей обработкой или делегированием.
В 1985 году язык перешел в собственность компании NeXT, основанной Стивом Джобсом, а позже платформой завладела Apple. До 2014 года ObjС оставался основным инструментом разработки ПО для всех устройств корпорации.
Области применения
В первую очередь Objective C используется в ОС от компании Apple. После появления Swift - более удобного и продвинутого языка - Objective С отчасти потерял свою актуальность. Тем не менее программистам, работающим с iOS и MacOS, будет полезным знание платформы. Оно поможет при поддержке и доработке старых продуктов, а также в целом даст понимание о структуре проектов в “яблочных” ОС. К тому же некоторые вещи, такие как, например, потоковое вещание, удобнее программировать на более низкоуровневом языке, чем Swift.
Особенности Objective C
Рассмотрим главные преимущества и отличия языка.
- Динамическая типизация.
Динамическое присваивание типов переменным делает код менее загруженным и в целом сокращает время на написание программы. Такой подход возможен из-за особенностей компиляции и исполнения кода Objective C. - Многопоточность.
Синхронное выполнение нескольких параллельных потоков программы заметно ускоряет работу сложного, многоуровневого ПО. Для предотвращения возможных конфликтов между одновременно задействованными процессами в языке заложены механизмы очередности и блокировки. - Гибкая работа с памятью.
Ручное управление памятью позволяет максимально эффективно оптимизировать потребляемые программой ресурсы. Автоматическое распределение, доступное в более современных языках, справляется с этой задачей гораздо хуже. Поэтому к Objective С прибегают при разработке приложений, связанных с онлайн-трансляцией потоковых видео или мгновенной пересылкой сообщений. - Совместимость со Swift.
Сейчас фактически все ПО для Apple пишется на Swift. При этом программы, написанные на Objective C, без труда считываются Свифтом. Это важно для поддержки и обновления ПО, написанного до 2015 года. - Интегрируемость с С++.
Сложные системы, такие как машинное зрение или криптошифрование, задействуют С++ библиотеки. Интегрироваться с ними через Objective С гораздо проще, чем через Swift.
Выделим и очевидные минусы Objective C.
- Сложность синтаксиса и высокий порог входа.
За счет продвинутых механизмов работы с памятью, сообщениями и протоколами Objective С не интуитивен даже для разработчиков с опытом в других ООП языках. На освоение ObjC придется потратить приличное время. - Постепенная утрата актуальности.
Swift фактически с самого своего появления стал основным языком для разработки под устройства Apple, отодвинув Objective С на второй план. С решением большинства практических задач Свифт действительно справляется лучше. - Невысокая производительность.
Из-за динамической типизации и ряда других особенностей Objective С не может похвастаться высокой скоростью исполнения программ.
Отличия от Swift и С
В сравнении со Swift Objective C обладает более сложным синтаксисом. Код на Свифт действительно выглядит компактнее и проще читается. При этом ObjC считается более низкоуровневым языком, то есть он ближе к машинному коду. Это дает ему ряд преимуществ - например, при работе с сетевыми ресурсами и памятью.
Objective C поддерживается старыми версиями iOS и MacOS, которые несовместимы со Swift.
Свифт обычно называют более безопасным языком/ Он лучше защищен от случайных ошибок, чем Objective C.
Если говорить о конкретных различиях, то в Swift появились опциональные типы данных, доработан механизм создания свойств и полей классов, упрощен вывод типов переменных. Есть и другие доработки, позитивно оцененные практикующими разработчиками.
От классического С язык Objective С отличается, прежде всего, объектно ориентированной направленностью. По сути ObjC - это надстройка к базовому С, позволяющая работать с объектами и классами. Компилятор Objective C может без доработок считать код на чистом С, но не наоборот. Хоть ObjC и более гибкий язык, классический С в целом производительнее и иногда лучше решает задачи, связанные с программированием на “низком” уровне.
Пример программы
Синтаксис Objective С очень похож на синтаксис C. Приведем в пример решение квадратного уравнения, которое будет работать одинаково на обоих языках.
#include
#include
int main()
{
int A, B, C, D;
printf("A = ");
scanf("%d", &A);
if (A == 0) {
printf("Not a quadratic equation.\n");
return 0;
}
printf("B = ");
scanf("%d", &B);
printf("C = ");
scanf("%d", &C);
D = B * B - 4 * A * C;
if (D == 0) {
printf("x = %f\n", -B / 2.0 / A);
return 0;
}
if (D > 0) {
printf("x1 = %f\n x2 = %f\n",
(-B + sqrt(D)) / 2.0 / A, (-B - sqrt(D))/ 2.0 / A);
} else {
printf("x1 = (%f, %f)\n x2 = (%f, %f)\n",
-B / 2.0 / A, sqrt(-D) / 2.0 / A, -B / 2.0 / A, -sqrt(-D) / 2.0 /A);
}
return 0;
}
Заключение
Objective C - язык для разработки мобильных и десктопных приложений, преимущественно использующийся в операционных системах компании Apple. Несмотря на конкуренцию с более “свежими” языками, Objective C обладает рядом преимуществ, из-за которых остается актуальным для многих проектов.
В студии AppFox можно подать заявку на программирование, создание игр или заказать разработку приложений https://appfox.ru и получить бесплатную консультацию по ценам и услугам.