Skip to content

Latest commit

 

History

History
209 lines (169 loc) · 15.9 KB

ru_mruby_and_mobiruby.md

File metadata and controls

209 lines (169 loc) · 15.9 KB

Эмруби и МобиРуби

Проект: Энту́ру
Автор: Мэтт Аймонетти @merbist
Дата: 20 апреля 2012 года
URI: http://matt.aimonetti.net/posts/2012/04/20/mruby-and-mobiruby/
Перевел: Кирилл Силин kyrylosilin@gmail.com
Дата перевода: 29 апреля 2012 года

Сегодня, прямо из Японии, пришли две большие новости о Руби:

  • Открытие исходных кодов Эмруби (англ. mruby) и их релиз на Гитхабе
  • Анонс МобиРуби (англ. MobiRuby): подающее надежды решение для разработки приложений для АйОС и Андроида на Руби

Вероятно, из-за моей причастности к МакРуби, люди спрашивали меня, что я думаю по поводу этих новостей.

Эмруби

Эмруби — это далеко не новый проект. Он основан на РайтВМ (англ. RiteVM), которая спонсируется Министерством экономики, торговли и промышленности Японии и возглавляется создателем Руби — Юкихиро «Matz» Матсумото, который пояснил детали во время своего лейтмотива на РубиКонфе 2010.

Еще в ноябре 2011 Мац говорил об Эмруби. Был записан его доклад, где он довольно доходчиво объяснял текущую экосистему Руби и почему в Эмруби есть смысл.

Видео доклада на английском языке: «Эмруби — Минималистический Руби и его перспектива» (часть первая | часть вторая)

Как сказано, основная цель Эмруби — иметь в наличии версию Руби, которая может быть внедрена и скомпилирована, а также слинкована внутри другого приложения.

У Хироши Накамуры есть отличное определение Эмруби длиной в одну строчку:

Hiroshi Nakamura

Эмруби ориентируется на разработчиков игр (для использования вместо Луа (англ. Lua)), разработчиков встраиваемых систем (устройства, телевизоры, телефоны…) и приложения с небольшими объемами памяти (вместо Джаваскрипта, к примеру). Лично я рад Эмруби: он еще не применяется, да и всё еще нужно проделать большой объем работы, чтобы он доказал свою ценность, но это определенно большой шаг в верном направлении. Что ещё здорово, так это то, что проект выпущен под свободной лицензией, позволяющей всем нам вносить свой вклад, а компаниям — улучшать реализацию для своих конкретных нужд.

Выводы: Эмруби — это многообещающий проект, не смотря на то, что он находится в ранней стадии развития. Помимо того, что это еще одна реализация Руби, факт того целевая аудитория и ниша проекта хорошо определены и то, что проектом управляет создатель Руби, а также спонсируется Министерством экономики, торговли и промышленности Японии, заставляет меня верить в то, что он может оказаться успешным проектом. Тем не менее, Луа проще и он уже неплохо крутится на целевом рынке, так что надеюсь, Мац, его команда и Японское правительство имеют план, который отстоит и защитит эту новую технологию. Им удачи, ну, а я буду внимательно следить за проектом.

МобиРуби

МобиРуби разрабатывается Юитиро Масуи, который работает в Апселераторе (англ. Appcelerator), компании известной по платформе для написания приложений на Джаваскрипте для АйОС, Андроида под названием Титаниум (англ. Titanium). МобиРуби — это надстройка над Эмруби, которая является первой демострацией того, что мотивированные разработчики могут сделать с новой реализацией Маца. Подобно Эмруби, МобиРуби будет выпущен под свободной лицензией. Однако в отличие от Эмруби, была выбрана лицензия Апача. Пока что МобиРуби — это всего лишь анонс с примером кода и скриншотом. Этого достаточно, чтобы попасть на главную страницу ХакерНьюс. Очевидно, автор планирует выпустить первую версию через несколько месяцев.

МобиРуби

Может это кого и удивит, но я вполне доволен видеть проекты такого типа, даже если они в некоторой степени и конкурируют с МакРуби. Это доказывает две вещи:

  • Существует сильный интерес к Руби на мобильных устройствах
  • Это осуществимо с технической точки зрения

Не открою Америки, если скажу, что разработчики на Луа имели возможность какое-то время писать приложения для АйОС. Но пока еще большинство разработчиков для АйОС все равно пользуются Обжектив-Си. С какими камнями преткновения можно столкнуться, пытаясь заменить Обжектив-Си?

Язык для замены может не подойти под архитектуру Кокоа

Разработка приложения для АйОС/ОС Х означает, что вы тратите свое время на использование предоставленных библиотек (названных фреймворками на жаргоне Эпла). Эти фреймворки имеют заданные шаблоны, четко обозначенный синтаксис и, обычно, они работают в очень последовательном/стесняющем ключе. Либо ваш язык более или менее похож (как Руби) и переход легок, либо вам нужно начинать писать и поддерживать обертки (Титаниум).

Перемыкающиеся рантаймы

Иметь одновременно два рантайма — это довольно сомнительно и неэффективно. Это одна из причин, почему Эпл подтолкнула МакРуби к отклонению от курса РубиКокоа, который является мостом и создать реализацию Руби, работающую в самом рантайме Обжектив-Си. Это открывает новый горизонт: в МакРуби все объекты, на самом деле, являются объектами Обжектив-Си, что означает, что вам ничего не нужно конвертировать, а АПИ (англ. API) Кокоа могут быть расширены из кода Руби, просто путем переоткрывания их.

Поддержка

Этот пункт является переломным для многих. Часто бывает так, что вы не желаете, чтобы ваш следующий большой проект полагался на технологию, которая никем не опекается. Что происходит, когда вы строите свое приложение с помощью альтернативной реализации и вдруг разработчикам надоедает проект и они его покидают (или занимаются другими вещами)? Что насчет нужных обновлений согласно обновлениям платформ Эпла/Гугла? Возможно, это не лучшая причина для отказа от альтернативы, однако это разумная причина, особенно для компаний, которые хотят быть в «безопасности».

Кокоа

АПИ Кокоа представляют, наверное, 90% проблем при написании приложений для АйОС/ОС Х. Хоть АПИ и мощны, и производительны, они часто причиняют страдания во время привыкания и изучения. Вы испытываете проблему документации, когда все примеры написаны только на Обжектив-Си, требуя, чтобы кто-то написал книгу и/или перевел огромное количество документации. Также, у вас есть все инструменты Эпла, которые вы часто не можете использовать на полную катушку, потому что вы не используете их инструментарий. По правде говоря, после многих лет использования МакРуби, я думаю, что настоящая ценность подобного проекта не в более легком синтаксисе, а в том, что вы легко можете строить обертки и интерфейсы более высокого уровня вокруг повторяющихся задач. Иметь комплекс хорошо спроектированных ДСЛ (англ. DSL) и при этом иметь доступ к родному объекту — это нечто в высшей степени могучее.

Обжектив-Си развивается

Обжектив-Си развивается: с появлением АРС (англ. ARC) управление памятью стало намного легче. Последняя версия Клэнга (Clang) одарила Обжектив-Си более приятным синтаксисом благодаря новым литералам и объектным указателям (узнать больше). По сути, синтаксис Обжектив-Си становится все ближе и ближе похожим на синтаксис Руби. Решение о выборе необходимости использования альтернативы становится все более трудным.

// Символьные литералы.
NSNumber *theLetterZ = @'Z';          // аналог [NSNumber numberWithChar:'Z']

// Интегральные литералы.
NSNumber *fortyTwo = @42;             // аналог [NSNumber numberWithInt:42]

// Литералы чисел с плавающей точкой.
NSNumber *piDouble = @3.1415926535;   // аналог [NSNumber numberWithDouble:3.1415926535]

// Булевы литералы.
NSNumber *yesNumber = @YES;           // аналог [NSNumber numberWithBool:YES]

// Контейнерные литералы
NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];
id value = array[idx];

NSDictionary *dictionary = @{
  @"name" : NSUserName(),
  @"date" : [NSDate date],
  @"processInfo" : [NSProcessInfo processInfo]
};
id oldObject = dictionary[key];
dictionary[key] = newObject; // замените oldObject на newObject

Производительность

Хотя устройства и становятся всё более мощными, производительность часто критична, и Эпл оптимизировал производительность их решения для их языка. Если вы когда-либо разрабатывали Титаниумовское приложение, вы знаете, что это может быть проблемой и может быть вам нужно искать обходные пути, чтобы добиться приличной производительности.

Выводы: Опираясь на всё это, когда МобиРуби будет выпущен, я буду иметь возможность судить более хорошо. Однако опираясь на то, что я пока что видел, я весьма обеспокоен синтаксисом и производительностью, которую мы получим из коробки. Но время покажет и есть куда расти. Руби на АйОС/Андроиде — это что-то захватывающее, и я уже вижу себя в будущем, тестирующего первые беты.