Бесплатно по России

С 10:00 до 21:00

С 10:00 до 21:00

Заполнить бриф

Онлайн заявка

С 10:00 до 21:00

Бесплатно по России

Заполнить бриф

Онлайн заявка

#

Язык программирования Objective C

Редакция Appfox

Редакция Appfox

Время чтения: 10 минут

Язык программирования Objective C

Objective С - язык, предназначенный для создания программного обеспечения под системы MacOS и iOS. По своей структуре - объектно-ориентированный и компилируемый. В основу платформы лег классический язык программирования С, в который были добавлены ООП принципы и другие полезные функции.

История создания

Objective C был разработан Брэдом Коксом в первой половине 80-х, как попытка привести классический С к современным на тот момент требованиям - в частности, сократить количество повторяющегося кода. Новый язык был основан на объектах и на отправке сообщений с их последующей обработкой или делегированием.

В 1985 году язык перешел в собственность компании NeXT, основанной Стивом Джобсом, а позже платформой завладела Apple. До 2014 года ObjС оставался основным инструментом разработки ПО для всех устройств корпорации.

Области применения

В первую очередь Objective C используется в ОС от компании Apple. После появления Swift - более удобного и продвинутого языка - Objective С отчасти потерял свою актуальность. Тем не менее программистам, работающим с iOS и MacOS, будет полезным знание платформы. Оно поможет при поддержке и доработке старых продуктов, а также в целом даст понимание о структуре проектов в “яблочных” ОС. К тому же некоторые вещи, такие как, например, потоковое вещание, удобнее программировать на более низкоуровневом языке, чем Swift.

Особенности Objective C

#

Рассмотрим главные преимущества и отличия языка.

  1. Динамическая типизация.
    Динамическое присваивание типов переменным делает код менее загруженным и в целом сокращает время на написание программы. Такой подход возможен из-за особенностей компиляции и исполнения кода Objective C.
  2. Многопоточность.
    Синхронное выполнение нескольких параллельных потоков программы заметно ускоряет работу сложного, многоуровневого ПО. Для предотвращения возможных конфликтов между одновременно задействованными процессами в языке заложены механизмы очередности и блокировки.
  3. Гибкая работа с памятью.
    Ручное управление памятью позволяет максимально эффективно оптимизировать потребляемые программой ресурсы. Автоматическое распределение, доступное в более современных языках, справляется с этой задачей гораздо хуже. Поэтому к Objective С прибегают при разработке приложений, связанных с онлайн-трансляцией потоковых видео или мгновенной пересылкой сообщений.
  4. Совместимость со Swift.
    Сейчас фактически все ПО для Apple пишется на Swift. При этом программы, написанные на Objective C, без труда считываются Свифтом. Это важно для поддержки и обновления ПО, написанного до 2015 года.
  5. Интегрируемость с С++.
    Сложные системы, такие как машинное зрение или криптошифрование, задействуют С++ библиотеки. Интегрироваться с ними через Objective С гораздо проще, чем через Swift.

Выделим и очевидные минусы Objective C.

  1. Сложность синтаксиса и высокий порог входа.
    За счет продвинутых механизмов работы с памятью, сообщениями и протоколами Objective С не интуитивен даже для разработчиков с опытом в других ООП языках. На освоение ObjC придется потратить приличное время.
  2. Постепенная утрата актуальности.
    Swift фактически с самого своего появления стал основным языком для разработки под устройства Apple, отодвинув Objective С на второй план. С решением большинства практических задач Свифт действительно справляется лучше.
  3. Невысокая производительность.
    Из-за динамической типизации и ряда других особенностей 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 и получить бесплатную консультацию по ценам и услугам.

Автор

Редакция Appfox

Редакция Appfox