суббота, 30 марта 2013 г.

Objective-C и Delphi

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 ...


9 комментариев:

  1. Не нравится название вашего блога. Очень старперское, что ли...

    ОтветитьУдалить
  2. Ну так я - СТАРПЕР и есть... РЕАЛЬНЫЙ такой страрпёр... А "молодая шпана" - она конечно же - умнее...

    ОтветитьУдалить
  3. Я 25-ть лет программирую - если чо.. Из них 21 - за деньги :-) За вполне достойные... Чего и ВСЕМ желаю...

    ОтветитьУдалить
  4. Хороший пост, спасибо!

    ОтветитьУдалить
  5. Я стар... Я очень стар... Я - superstar!

    @Alexey

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

    >>Я 25-ть лет программирую - если чо.. Из них 21 - за деньги :-) За вполне достойные...

    За критику денег не платят. Платят за "экспертизу", но стать экспертом, понося названия чужих блогов нельзя.

    @Александр Люлин

    Пишите еще :) Обязательно про сравнение модели делегирования (с примерами, если можно). Sender-ы и пр, что является краеугольным камнем (одним из) RAD модели Delphi.

    ОтветитьУдалить
  6. Хороший пост. Но лучше его "сдобрить" схемкой или табличкой "сходств и отличий". Для наглядности.

    ОтветитьУдалить
    Ответы
    1. Спасибо. Как только дома появится нормальный интернет - я планирую написать серию "xCode, CoreText и AttributedString"

      Удалить
    2. Это стоит публикации на delphifeeds?

      Удалить
    3. Вот ещё на "ту же тему" - http://18delphi.blogspot.ru/2013/09/blog-post_23.html

      Удалить