Objective-C и Delphi.
Больше похожи чем различаются.
На самом деле. Мне не составило большого труда перенести часть своих разработок с Delphi на Objective-C.
Жаль только, что я поторопился. Delphi - похоже - возрождается.
Я потом продолжу этот пост. И напишу - чем они похожи.
Пока лишь:
1. Одиночное наследование.
2. Интерфейсы (протоколы).
3. Мета-классы. class и CLASS.
3. Общий базовый предок для всех объектов - TObject и NSObject.
4. Подсчёт ссылок.
5. TList и NSArray. Правда в первом - нет подсчёта ссылок.
6. Контролы и графические контексты. Есть там - МАССА общего.
7. Event'ы и selector'ы.
8. Виртуальные методы классов.
9. Создание объектов (наследников от TObject и NSObject) только в куче.
10. Возможность переопределения распределения объектов (NewInstance и alloc).
11. Категории в Objective-C и helper'ы в Delphi.
Но есть конечно вещи, по которым Objective-C - "делает" Delphi. Равно как и наоборот. Я тоже постараюсь об этом написать.
Пока лишь - NSOperation - вот что реально круто для мобильных устройств. Я пока не знаю - есть ли аналог в Delphi XE. Если нету - БОЛЬШОЙ минус Delphi.
NSDictionary и NSArray и их нативная сериализация - опять же.
Опять же - мне очень близка так концепция подсчёта ссылок на объекты, которая реализована в Objective-C. Я сам подобную концепцию "придумал". Не додумался только до autoreleasepool'а. Но он мне был и не нужен.
А вот если мы начинаем программировать не на Objective-C (.m), а на Objective-C++ (.mm) - То тут мы конечно попадаем в "стан врага" :-) Но зато нам становится доступен "великий и ужасный" STL. И многих велосипедов - нам уже не надо изобретать. И что "особенно вкусно" - это то, что Objective-C-классы и C++-классы - мешаются между собой - ПРОЗРАЧНО. Ну конечно только без кросс-наследования. Но оно и - НЕ НУЖНО. Агрегации - более, чем достаточно.
Про стандарт C++ 11 и его "вкусности" - так вообще молчу. Особенно в части - мета-программирования. auto и лямбды - одни чего стоят. (Лямбды (block) есть кстати и в Objective-C, в Delphi XE они тоже вроде есть, но я их честно - ещё не попробовал. Ничего не могу сказать).
А уж шаблоны с переменным количеством параметров - это вообще - что-то.
В общем - "хороша ложка к обеду". И каждый инструмент хорош для своего.
Мне лично - Delphi - сильно роднее. Я на нём 18-ть лет программирую. А начинал я вообще в Turbo Pascal 3.0 (далеко не все наверное это помнят).
Но и Objectvive-C - меня теперь не пугает. Наоборот - я нашёл в нём много знакомого.
Лишь скажу вам одну банальную вещь - "если мы хотим найти различия - мы находим различия, если вы хотим найти что-то общее - мы непременно эту общность находим".
Попробуйте. Может быть - вам понравится.
... to be continued ...
Больше похожи чем различаются.
На самом деле. Мне не составило большого труда перенести часть своих разработок с Delphi на Objective-C.
Жаль только, что я поторопился. Delphi - похоже - возрождается.
Я потом продолжу этот пост. И напишу - чем они похожи.
Пока лишь:
1. Одиночное наследование.
2. Интерфейсы (протоколы).
3. Мета-классы. class и CLASS.
3. Общий базовый предок для всех объектов - TObject и NSObject.
4. Подсчёт ссылок.
5. TList и NSArray. Правда в первом - нет подсчёта ссылок.
6. Контролы и графические контексты. Есть там - МАССА общего.
7. Event'ы и selector'ы.
8. Виртуальные методы классов.
9. Создание объектов (наследников от TObject и NSObject) только в куче.
10. Возможность переопределения распределения объектов (NewInstance и alloc).
11. Категории в Objective-C и helper'ы в Delphi.
Но есть конечно вещи, по которым Objective-C - "делает" Delphi. Равно как и наоборот. Я тоже постараюсь об этом написать.
Пока лишь - NSOperation - вот что реально круто для мобильных устройств. Я пока не знаю - есть ли аналог в Delphi XE. Если нету - БОЛЬШОЙ минус Delphi.
NSDictionary и NSArray и их нативная сериализация - опять же.
Опять же - мне очень близка так концепция подсчёта ссылок на объекты, которая реализована в Objective-C. Я сам подобную концепцию "придумал". Не додумался только до autoreleasepool'а. Но он мне был и не нужен.
А вот если мы начинаем программировать не на Objective-C (.m), а на Objective-C++ (.mm) - То тут мы конечно попадаем в "стан врага" :-) Но зато нам становится доступен "великий и ужасный" STL. И многих велосипедов - нам уже не надо изобретать. И что "особенно вкусно" - это то, что Objective-C-классы и C++-классы - мешаются между собой - ПРОЗРАЧНО. Ну конечно только без кросс-наследования. Но оно и - НЕ НУЖНО. Агрегации - более, чем достаточно.
Про стандарт C++ 11 и его "вкусности" - так вообще молчу. Особенно в части - мета-программирования. auto и лямбды - одни чего стоят. (Лямбды (block) есть кстати и в Objective-C, в Delphi XE они тоже вроде есть, но я их честно - ещё не попробовал. Ничего не могу сказать).
А уж шаблоны с переменным количеством параметров - это вообще - что-то.
В общем - "хороша ложка к обеду". И каждый инструмент хорош для своего.
Мне лично - Delphi - сильно роднее. Я на нём 18-ть лет программирую. А начинал я вообще в Turbo Pascal 3.0 (далеко не все наверное это помнят).
Но и Objectvive-C - меня теперь не пугает. Наоборот - я нашёл в нём много знакомого.
Лишь скажу вам одну банальную вещь - "если мы хотим найти различия - мы находим различия, если вы хотим найти что-то общее - мы непременно эту общность находим".
Попробуйте. Может быть - вам понравится.
... to be continued ...
Не нравится название вашего блога. Очень старперское, что ли...
ОтветитьУдалитьНу так я - СТАРПЕР и есть... РЕАЛЬНЫЙ такой страрпёр... А "молодая шпана" - она конечно же - умнее...
ОтветитьУдалитьЯ 25-ть лет программирую - если чо.. Из них 21 - за деньги :-) За вполне достойные... Чего и ВСЕМ желаю...
ОтветитьУдалитьХороший пост, спасибо!
ОтветитьУдалитьЯ стар... Я очень стар... Я - superstar!
ОтветитьУдалить@Alexey
Брат, это - свободная страна. Сделай свой блог с крутым названием.
Самовозвеличивание за счёт критики - самой прямой путь к личностной деградации.
>>Я 25-ть лет программирую - если чо.. Из них 21 - за деньги :-) За вполне достойные...
За критику денег не платят. Платят за "экспертизу", но стать экспертом, понося названия чужих блогов нельзя.
@Александр Люлин
Пишите еще :) Обязательно про сравнение модели делегирования (с примерами, если можно). Sender-ы и пр, что является краеугольным камнем (одним из) RAD модели Delphi.
Хороший пост. Но лучше его "сдобрить" схемкой или табличкой "сходств и отличий". Для наглядности.
ОтветитьУдалитьСпасибо. Как только дома появится нормальный интернет - я планирую написать серию "xCode, CoreText и AttributedString"
УдалитьЭто стоит публикации на delphifeeds?
УдалитьВот ещё на "ту же тему" - http://18delphi.blogspot.ru/2013/09/blog-post_23.html
Удалить