Подтвердить что ты не робот

Каковы основные различия между Objective-C, C и С++?

Я только начинаю изучать Objective-C, и считаю, что фоном в C (которого у меня нет) является полезной отправной точкой. Я пробовал на С++, поэтому имею некоторое представление о базовых парадигмах С++ и синтаксисе. (FWIW, у меня есть большой опыт работы на Java и языках более высокого уровня, таких как JavaScript и ActionScript.)

Я заинтересован в изучении разработки iOS, но немного опасаюсь сосредоточиться на языке, полезном только на одной платформе поставщика. Я хотел бы узнать больше о том, как понятия, которые я буду изучать, когда я перейду к Objective-C, передаст (или нет) знание C и С++.

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

4b9b3361

Ответ 1

Что вам нужно знать: Objective-C является строгим superset класса C,, поэтому все допустимое C также допустимо Objective-C. Objective-C просто добавляет тонкий объектно-ориентированный слой поверх C (фактически, сама среда выполнения Objective-C реализована в чистом C).

То, что я обычно предлагаю начинающим, это master C first,, потому что, если они не понимают указатели, типа конверсий, вариативных аргументов и т.д., они будут иметь серьезную головную боль при разработке The Worlds Best iPhone App Ever (TM). Пока вы не освоите C, не пытайтесь войти в Objective-C и особенно в Cocoa Touch API, так как это может быть очень запутанным для новичка в C.

Кроме того, C является кросс-платформенным и является языком для разработки на собственном языке, руки в руках с С++, с настольных компьютеров с мобильных устройств на микроконтроллеры. Это общая концепция, что "если в системе есть компилятор С, достаточно, чтобы сделать что-либо, что доступно на платформе". Некоторые люди думают, что C мертв, но это определенно не так. (Согласно статистике, по крайней мере - эта диаграмма предлагает, это был самый популярный язык в октябре 2012 года.)

С++: он основан на C, а также добавляет некоторые объектно-ориентированные расширения к C, хотя это не строгий суперсет C. Это означает, что вы можете написать C-код, который недопустим в С++ или , что делает что-то другое в С++, чем в C.

С++ также является хорошим языком выбора для практически любого родного развития (и он популярен также), но опять же, это большой язык с раздутой грамматикой, и вам также нужно изучить концепции C перед погружением в глубокие в С++, или у вас также будут проблемы с различиями между указателями и ссылками, перегрузкой оператора, изменением имени и т.д.

Хорошо, что это, в значительной степени. Вывод: сначала изучите C, и у вас будет мощный, кросс-платформенный и широко используемый язык; затем изучите Objective-C для разработки iOS и Mac OS X и С++ "просто для удовольствия" и для удобного и мощного языка OO.

Ответ 2

С++ - это язык Bjarne Stroustroup, основанный на добавлении классов и метапрограммировании на C таким образом, который ставит большую часть работы в компилятор и полагается на минимальные усилия во время выполнения.

Objective-C - это язык Brad Cox, основанный на добавлении динамической библиотеки, проходящей по протоколу времени в стиле SmallTalk, в C, с небольшим количеством добавления синтаксиса, чтобы упростить ее использование.

Objective-C ++ - это, если честно, то, что вы получаете, когда добавляете Objective-C время исполнения и синтаксис в С++. Он имеет свои ограничения (например, вы не можете создать подкласс класса Objective-C класса С++ или наоборот, а Objective-C не любит пространства имен С++), но позволяет использовать классы С++ из объектов Objective-C и наоборот.

Вы можете использовать Objective-C ++ в разработке iPhone. Фактически это означает, что вы могли бы написать приложение, объектная модель которого была полностью С++, где для слоя с интерфейсом Objective-C необходимо было бы использовать интерфейс контроллера , чтобы использовать Cocoa Touch API.

C - "старый" язык программирования. Это довольно низкий уровень, что означает, что он довольно близок к сборке и машинный код, который фактически работает на процессоре. Это процедурный язык. На процедурном языке вы сосредотачиваетесь на решении проблем с поэтапными рецептами. Рецепты могут быть повторно использованы, это называется функцией. Поскольку программы растут, большие функции обычно группируются в отдельные файлы на основе функциональности.

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

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

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