Яка різниця між C і Ціллю C, враховуючи, що C також тепер може підтримувати об'єкти або це, що Objective C - це підтримка об'єктів у C?


Відповідь 1:

Це для мене новина З тих пір, коли C мав підтримку об’єктів? C - суто процедурна мова програмування. Він не має функції, призначеної для об'єктно-орієнтованого програмування.

Objective-C - зовсім інша мова. Це набір C, але він додає синтаксис, подібний до Smalltalk, для об'єктно-орієнтованого програмування. Отриману монгляльну мову незручно використовувати, в кращому випадку.


Відповідь 2:

Я думаю, що тут ви заплуталися. Objective-C - це абсолютно окрема мова, яка є суперсетиною C.

Мова С не має (і ніколи не мала) прямої підтримки "об'єктів" в сенсі ОО, лише структурує.

Структури C можна використовувати для побудови абстракцій об'єктів, або шляхом кодування умовних позначень, що є болючим та схильним до помилок, або використовуючи C як проміжну ціль для компілятора, саме так початково починалися Objective-C і C ++.


Відповідь 3:

Завдання C базувалося на Smalltalk, але досить некрасиво, вводячи багато вкладених [] s, тоді як Smalltalk не потребував синтаксису, щоб висловити природні ідеї (прикро, що NeXT не прийняв щось ближче до Smalltalk, але, можливо, щоб заспокоїти люди C). Мета C була винайдена Бредом Коксом як інструмент дослідження модуляції та програмних компонентів «ІС» (інтегральна схема).

Apple з тих пір демефазувала ціль C на користь Свіфта, який, на жаль, все ще дуже схожий на C.

C ++ базувався на Simula, але Далі та Nygaard.

І те й інше базувалося на фундаменті (або відсутність фундаментів) C. Я щойно написав довгу відповідь про „спадщину” (або відсутність спадщини) C та C ++.

Відповідь Яна Джойнера на Яку мову розвинувся C ++?


Відповідь 4:

Яка різниця між C і Ціллю C, враховуючи, що C також тепер може підтримувати об'єкти або це, що Objective C - це підтримка об'єктів у C?

З цим питанням є дві проблеми. По-перше, у C немає підтримки для об'єктів. Підтримка об’єктів не збирається.

По-друге, формулювання цього питання звучить так, ніби «Objective-C» - це діалект C, який додав підтримку об’єктів. Це не так. Objective-C - це об'єктно-орієнтована мова, яка використовувала C як основу для синтаксису та функцій, що не належать OO. Те саме можна сказати і про C ++. Вони різні мови. Навіть якби C додавав до нього OO, поки його ще називали C, ми не могли б забути про Objective-C та його нестандартний OO та використати стандартний аромат C. Як я вже казав, вони різні мови.


Відповідь 5:

Мета C спочатку була деякими файлами коду С та аналізатором, який реалізував об'єкти та повідомлення, що передаються за допомогою функцій C, покажчиків та пов'язаних списків функцій. Це була спроба зробити диспетчеризацію (вибір функції під час виконання) методом роботи за замовчуванням, сміливою і смачною річчю для компільованої мови.

Як ви можете сказати, це вдалося досить вдало в пробірці Next / Apple, але не так сильно з усіма іншими.

Об'єктами Objective-C були структури C з функціями, які були пов'язані з цими структурами набором таблиць і списків, і жива система виконання, яка втручалася в функції і структури, щоб сформувати динамічну систему диспетчеризації. На синтаксичному аналізаторі було додано кілька нових синтаксисів, але складених до прямої C. Все було зроблено за допомогою покажчиків і накопичувальної пам’яті, пізніше було застосовано систему підбору лічильників сміття, але це ніколи не було остаточним, якщо це було добре ідея.

Великою перевагою objc було те, що він був на 100% сумісний з C, тому міг викликати C, коли було потрібно, а операційні системи Apples OS 7,8,9 та X базувались на C.

Врешті-решт, Apple розробила гігантську бібліотеку об'єктів для Objective-C, яка могла б зробити все необхідне, і, звичайно, тому, що ніхто більше не використовував її, вони загнали ринок і продали продукти розробників для своєї лінійки. Оскільки Apple зараз був головним гравцем на ринку ПК та мав власну ОС, вони могли розширити можливості мови відповідно до своїх потреб та додати нові функції, намагаючись не відставати від часу, коли мови розвивалися поза їх замкненим ринок. Вони намагалися і розробили деякі нововведення, але довелося боротись із власними розробниками, які усвідомлювали, що C ++ мав багато чого запропонувати, що Objective-C не міг.

C має крихітну систему виконання, якої достатньо лише для управління пам'яттю та достатньою інтеграцією з ОС, щоб вона могла керувати процесом, а також надсилати та ловити сигнали з ядра ОС. Objectctive-C має цілу підсистему поверх версії C. керувати відправленням функцій, а в деяких випадках і підрахунком посилань для вивезення сміття.

У C є одна велика таблиця всіх функцій програми, і ви можете викликати будь-яку з них у будь-який час. У Objective-C є таблиці функцій і зв'язок класів з функціями і шукає, які класи можуть класифікувати, які функції, і необов'язково, що робити, якщо функція не існує для цього класу, можливо, зателефонуйте до альтернативного або надішліть функцію та параметри замість іншого класу.