Каковы преимущества / ограничения MacRuby и кто-нибудь использовал его для программирования на iPhone? - PullRequest
3 голосов
/ 23 августа 2009

Я постоянно сталкиваюсь со ссылками на MacRuby, и мне было интересно, использовал ли кто-нибудь из вас его для программирования iPhone / Objective C.

На веб-сайте MacRuby говорится: «Цель MacRuby - создать полноценные приложения Mac OS X, которые не жертвуют производительностью, чтобы воспользоваться преимуществами использования Ruby».

Итак, мой вопрос: каковы преимущества Ruby?

И, что более важно, каковы ограничения?

Ответы [ 3 ]

6 голосов
/ 23 августа 2009

Я не использовал MacRuby, но сомневаюсь, что его можно использовать для разработки iPhone, потому что он построен поверх среды выполнения Mac OS X Objective-C и использует сборщик мусора Objective-C 2.0 (вместо того, чтобы использовать его своя). Хотя iPhone OS имеет Objective-C 2.0, в нем отсутствует сборщик мусора (вам все еще нужно использовать управляемую память в стиле retain / release), поэтому я ожидаю, что MacRuby не будет работать из коробки.

Кроме того, MacRuby не будет полезен для разработки для App Store, поскольку использование интерпретаторов (кроме тех, которые поставляются Apple) является верным.

Порт iPhone для Ruby может работать на взломанном телефоне, но устройство имеет очень ограниченные ресурсы ОЗУ и ЦП, поэтому я не уверен, насколько успешным будет такой порт. Я ожидаю, что MRI слишком медленный и требует много памяти для iPhone, но один из альтернативных интерпретаторов Ruby мог бы работать хорошо - MacRuby с собственным GC, возможно.

Конечно, я вижу, что MacRuby имеет много преимуществ для разработки под Mac OS X. Вот некоторые вещи с моей головы:

  1. В качестве языка Ruby его приятно использовать. Блоки прекрасны. Он очень динамичен и имеет отличную поддержку метапрограммирования, что позволяет быстро создавать очень компактный, но все же читаемый код.
  2. Objective-C может быть достаточно высокого уровня, когда он является Objective, но может быть раздражающе низким уровнем, когда он является C. В Ruby меньше C-ness.
  3. ИМХО, Objective-C имеет очень странный синтаксис. Вы привыкаете к этому через некоторое время, но это пугает новичков. В Ruby гораздо более распространенный синтаксис, особенно если вы используете foo.bar('baz') вместо foo.bar 'baz'.
  4. Objective-C использует заголовочные файлы. Меня раздражают прототипы метода cut'n'pasting между файлами .h и .m. У Руби этого нет.
2 голосов
/ 24 августа 2009

MacRuby действительно крутой, но он все еще не готов к работе (даже на OS X), и он не будет работать на iPhone по нескольким причинам:

  1. Используется сборщик мусора Objective C, который недоступен на iPhone
  2. Это зависит от поддержки моста, которая недоступна на iPhone
  3. Это зависит от бэкэнда LLVM, который великолепен, но еще не является качеством производства для ARM
  4. JIT не работают на iPhone из-за его модели безопасности (в большинстве случаев вызовы mprotect () не выполняются).

Я ожидаю, что со временем некоторые из этих проблем будут решены, и в какой-то момент в будущем такие вещи, как MacRuby, будут доступны на iPhone, но это, вероятно, через несколько лет как минимум. Если вы хотите разрабатывать для iPhone сейчас или в обозримом будущем, MacRuby не является реалистичным вариантом.

0 голосов
/ 12 октября 2009

Преимущества Ruby заключаются в менее неприятном синтаксисе обмена сообщениями, который гораздо легче читать и печатать, чем тонны вложенных квадратных скобок, и гораздо более динамичный. Недостатком, как правило, является скорость выполнения и то, как пользователи Ruby склоняются к чрезмерному использованию своих более неясных идиом метапрограммирования, превращая даже простые проекты в залатанные обезьяной спагетти.

Вы никогда не будете запускать его на iPhone, если Apple не решит отменить ограничения на отсутствие фоновых процессов, установленные в настоящее время, поэтому, если это все, что вас интересует, не беспокойтесь.

...