Objective-C

Objective-C — это язык программирования, на котором пишут программы для iOS и MacOS. Он создан на основе языка C, но расширяет его возможности и реализует другой подход к программированию.

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

По-русски Objective-C звучит как «обджектив-си» с ударением на Е. Это переводится как «объектный C». Иногда название языка сокращают как Obj.

Где используется Objective-C

Сейчас сфера использования языка сократилась. Раньше приложения под iOS и MacOS писали в основном на нем, но с появлением Swift он отошел в сторону. На Swift писать быстрее и удобнее, а Objective-C довольно сложный, и порог входа в него высокий. Но язык все равно важен, особенно для работы со старыми версиями и технической «начинкой».

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

Отличия от C

C — довольно старый язык, на основе которого было создано много других, в частности С++. Objective-C — тоже надстройка над «чистым» C, которая делает язык объектно-ориентированным. В нем появились новые возможности, которых не было в C, в основном нужные для упорядочивания кода, упрощения некоторых задач и уменьшения количества повторений.

Главное отличие — объектно-ориентированный подход. C ориентирован на процедурное программирование, а Objective-C сразу создавался в парадигме ООП. Поэтому сущности там представлены как объекты, а возможности реализованы в объектно-ориентированном стиле. Это отразилось на особенностях синтаксиса и на том, как построены команды.

Objective-C включает в себя чистый C: любую программу на C поймет компилятор Objective-C. То есть, любой код на C можно запустить как код на Objective-C. А вот наоборот это не работает: Objective-C шире, и «чистый» C его не поймет.

Особенности языка

Объектно-ориентированный подход. В Objective-C есть объекты и реализованы основные принципы ООП: инкапсуляция, полиморфизм, наследование и скрытие данных. Это позволяет писать в объектно-ориентированной парадигме и реализовывать ее возможности: делать объекты независимыми друг от друга, избегать ситуаций, когда изменение одной сущности «ломает» другую, упорядочивать и структурировать код. Это удобно: на ООП строится огромная часть современной разработки.

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

Например, в нем есть динамическая типизация — тип переменной задается не сразу, а в момент присваивания ей значения. Такое возможно именно благодаря динамичности: код анализирует себя уже в момент выполнения, и это удобно. Более того, код получается компактнее, а программы пишутся быстрее.

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

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

Работа с потоками. В Objective-C поддерживается работа с многопоточностью. Это подход, при котором процессы в программе разделены на несколько «потоков», и каждый решает свою задачу. Так сложные процессы реализуются быстрее и эффективнее — но потоки нужно защищать, чтобы они не конфликтовали друг с другом.

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

Ориентированность на операционные системы Apple. За пределами Apple-экосистемы Objective-C встречается редко. Поэтому изучают его в основном те, кто хочет разрабатывать приложения и сервисы под iOS или MacOS.

Совместимость со Swift. Язык Swift основан на Objective-C и совместим с ним. Правда, только в одну сторону. Swift «понимает» код на Objective-C, но наоборот это не работает. Swift более высокоуровневый, ближе к человеку и понятнее в изучении. Поэтому вхождение в разработку под Apple обычно начинают с него.

Зачем учить Objective-C в 2022 году

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

Это дает преимущества на собеседовании. Человек, который знает Objective-C, лучше разбирается во внутреннем устройстве Apple-программ и в том, как все работает изнутри. Поэтому работодатели ценят таких соискателей.

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

Это удобно для решения некоторых задач. В 2022 году еще есть довольно распространенные задачи, которые удобнее решать на Objective-C, чем на Swift. Обычно они касаются эффективной работы с памятью. А еще есть отрасли, в которых значительная часть кода написана на C++: компьютерное зрение, криптография и другие ресурсоемкие сферы. А код на C++ легче интегрировать с Objective-C, чем со Swift.

Как и когда учить Objective-C

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

Запишитесь на наши курсы — сделайте первые шаги в Apple-разработке и получите новую высокооплачиваемую профессию.

Другие термины на букву «O»

Open source
OpenCV
Oracle Database
OSINT

Все термины

(рейтинг: 5, голосов: 5)
Добавить комментарий