+7 (499) 288-06-73

Скопировать

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

30.01.2023
#

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

История языка

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

С 1985 года ObjC по факту перешел во владение Стива Джобса - сначала через корпорацию NeXT, затем - через Apple. Только в 2014 году язык стал уступать место главного инструмента разработки для “яблочных” устройств другой платформе - Swift.

Где применяется Objective C

На Objective C разрабатываются программы для iOS и MacOS. После появления Swift некоторые программисты считают ObjC неактуальным. На самом деле, этот язык все еще бывает полезен по нескольким причинам:

  • поддержка старых программ, написанных до появления Swift и не переведенных на него;
  • Objective C лежит в основе MacOS и необходим для углубленной работы с системой;
  • на ObjC легче работать с потоковыми видео и выполнять другие задачи, связанные с сетевыми трансляциями и распределением памяти.

В целом знание Objective C помогает лучше понять логику ОС от Apple и устройство самого Swift.

Преимущества и недостатки языка

#

Objective C обладает рядом полезных свойств.

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

Стоит отметить и объективные минусы рассматриваемого языка.

  1. Относительная усложненность синтаксиса.
    Objective С близок к низкоуровневым языкам. Его структура и синтаксис требует достаточно много времени для освоения.
  2. Недостаточно высокая производительность.
    Скорость исполнения кода в ObjC зачастую ниже, чем у других языков. К этому приводит динамическая компиляция и ряд других свойств.
  3. Постепенная замена более современными технологиями.
    Swift проще в освоении, программы на нем обычно пишутся быстрее. Поэтому там, где это возможно, новый язык вытесняет Objective C.

В чем отличия Objective C от классического С и Swift

#

В стандартном С отсутствуют объекты и классы. Objective C предоставляет все возможности ООП и процедурной парадигмы, ориентируясь на базовый синтаксис С. По производительности ObjC немного уступает классическому С. Совместимость языков односторонняя. Компилятор Objective C способен считать код на C, но не наоборот.

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

Пример кода

Для демонстрации работы функций в Objective C возьмем стандартное решение квадратного уравнения. Оно будет выглядеть фактически также, как в стандартном C.


#include <math.h>
#include <stdio.h>

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. Хоть сейчас платформа и стала менее популярной, в некоторых случаях она остается наилучшим решением для разработки. Кроме того, ObjC применяется для поддержки ПО, работающего на старых версиях iOS. К главным преимуществам Objective C можно отнести динамичность и относительную низкоуровневость.

Разработка игр и мобильных приложений
Разработка игр и мобильных приложений info@app-android.ru
Остаповский проезд, д. 5
Москва
Москва 109316
Phone: +7 (499) 380-78-79
Разработка игр и мобильных приложений
info@app-android.ru
Остаповский проезд, д. 5
Москва, Москва, 109316 Россия
+7 (499) 288-06-73
Разработка игр и мобильных приложений