Комментарии 7
Класс класса классом класса, но всё равно всё понятно, если вникнуть. Спасибо, хороший перевод!
Слово «класс» в статье встречается 159 раз. Читать перевод очень сложно, хоть тема и интересная.
В оригинале немногим меньше.
Чисто переводческий аспект — обилие в оригинале притяжательных падежей (possessive case-ов.), которые в английском обозначаются лишь апострофом (они не так бросаются в глаза), а при переводе на русский приходится добавлять падежные окончания.
Но иллюстрация с иерархией классов и метаклассов вносит значительную ясность.
Чисто переводческий аспект — обилие в оригинале притяжательных падежей (possessive case-ов.), которые в английском обозначаются лишь апострофом (они не так бросаются в глаза), а при переводе на русский приходится добавлять падежные окончания.
Но иллюстрация с иерархией классов и метаклассов вносит значительную ясность.
Спасибо за перевод. Всегда было интересно как работает метакласс.
Что-то очень похожее на eigen class из Ruby. Но если для интерпретируемой природы Ruby метопрограммирование выглядит естественно, то для компилируемого Objective-C такие дела в runtime не привычны.
По метаклассам есть хорошая книжка «Putting metaclasses to work». Оба её автора участвовали в разработке IBM System Object Model, пользовались опытом SmallTalk и CLOS, и то, что они сделали, и им, и мне кажется лучшим на текущий момент. Их модель метаклассов была позаимствована в Python.
Отвечая Tensho: у Objective-C был брат–близнец DTS C++, вполне себе компилируемый. Только вместо objc.dll som.dll, и синтаксис более нормальный*. И метаклассы есть, конечно. Никак это компилируемости не вредит, даже наоборот, снимает типичные для компилируемого языка проблемы хрупкого базового класса.
Мне даже, может быть, удастся найти и запустить компилятор под Windows. В IBM VisualAge C++ v3.6 эта возможность уже вырезана. VisualAge C++ v3.5 я в сети в виде установщика не нашёл, зато есть патч, который, может так получиться, содержит в себе достаточно файлов, чтобы запустить компилятор.
*Моё мнение основано на том факте, что, несмотря на рост количества разработчиков на Objective-C за счёт iOS, в появляющихся новых языках программирования синтаксис SmallTalk никто так и не начал использовать. Исключение составляют языки, заточенные под компиляцию для iOS (Oxygene, Swift).
Отвечая Tensho: у Objective-C был брат–близнец DTS C++, вполне себе компилируемый. Только вместо objc.dll som.dll, и синтаксис более нормальный*. И метаклассы есть, конечно. Никак это компилируемости не вредит, даже наоборот, снимает типичные для компилируемого языка проблемы хрупкого базового класса.
Мне даже, может быть, удастся найти и запустить компилятор под Windows. В IBM VisualAge C++ v3.6 эта возможность уже вырезана. VisualAge C++ v3.5 я в сети в виде установщика не нашёл, зато есть патч, который, может так получиться, содержит в себе достаточно файлов, чтобы запустить компилятор.
*Моё мнение основано на том факте, что, несмотря на рост количества разработчиков на Objective-C за счёт iOS, в появляющихся новых языках программирования синтаксис SmallTalk никто так и не начал использовать. Исключение составляют языки, заточенные под компиляцию для iOS (Oxygene, Swift).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Метаклассы в Objective-C