LINUX.ORG.RU

[C]Почему Objective-C не получил распостранения за пределами MacOs?

 


0

0

Прочитал описание и у меня создалось впечатление что есть смысл пользовать для прикладного программирования во всех случаях где раньше был С.

кстати как он стыкуется с С++? через С-интерфейс или есть другие соображения?

★★★★★

M$ поставила на C++, а не на Object-C, который значительно более ООП, чем С++. Это с одной стороны, но с другой вызов метода всегда быстрее пересылки сообщения. С третьей стороны, есть SmallTalk:)

krum
()

> Почему Objective-C не получил распостранения за пределами MacOs?

Потому что StepStone была жадной и глупой :D

tailgunner ★★★★★
()

> Прочитал описание и у меня создалось впечатление что есть смысл пользовать

Почитай заодно и про проблему "хрупкости" базового класса в C++ http://en.wikipedia.org/wiki/Fragile_base_class . Правда, она сводится на нет, если есть исходники на всё.

почитай оригинального Бреда Кокса про software circuits, чем объектно-ориентированность и фреймворки в динамическом Objective-C и исходном SmallTalk отличается от ООП в стиле С++. Вкратце, динамические фреймворки менее зависят от стандартной иерархии, задают поведение/интерфейсы, являются более reusable чем "классы С++" потому что "универсальный фреймворк" на С++ превращается в нагромождение шаблонов, как в STL/ATL/WTL (и при компиляции шаблонов 2-й или 3-ей степени вложенности имеем возрастающие временные затраты MxNxK где M,N,K -- количество параметризаций шаблонов соотв. уровня).

А динамичность Смоллтока и ObjectiveC позволяет легко и просто сделать такие штуки как MVC, poses as, прокси-объекты (через которые реализуются распределённые объекты итп), наследование экземпляров объектов (например если делаем ролевой доступ, что-то вроде агрегирования).

+ возможна интроспекция/рефлексия, естественным путём, переопределив объекты/сделав потомка класса работающего приложения. Точкой расширения программы /подключения плагинов становится любой объект.

Достигается гибкость за счёт реализации типизации динамически, в рантайме, посылкой сообщений. Критичные ли это "тормоза" или нет -- надо мерять и смотреть в каждом конкретном случае.

> через С-интерфейс или есть другие соображения?

через С ибо С++ ABI интерфейс зависит от компилятора (если не ограничивать подмножеством embedded C++) и методы mangled.

anonymous
()

datePredicate = [NSPredicate predicateWithFormat:@"date BETWEEN { %@, %@ }"
argumentArray:[NSArray arrayWithObjects:[NSDate dateWithNaturalLanguageString:@"today at midnight"],
[NSDate dateWithNaturalLanguageString:@"tomorrow at midnight"], nil]];

calendarPredicate = [NSPredicate predicateWithFormat:@"calendar IN %@))"
argumentArray:[NSArray arrayWithObject:[CalCalendarStore calendars]]];

finalPredicate = [NSPredicate andPredicateWithSubpredicates: [NSArray arrayWithObjects:datePredicate, calendarPredicate, nil]];
NSArray *events = [[CalCalendarStore sharedCalendarStore] eventsWithPredicate:finalPredicate];


пример получения событий из календаря в макоси, у них в документации. простигосподи.. мне кажется objective-c побуждает писать именно в таком вот стиле.

volh ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.