Python/Ruby как мобильная ОС

Мне было интересно, почему ОС для смартфонов/мобильных устройств не написаны, чтобы позволить динамическим языкам выбрать язык? iPhone использует Objective-C, Google Android использует Java, Windows Mobile использует любой язык .NET.

Какова была бы логика мобильной ОС, написанная на Python, Ruby или любом другом динамическом языке? Я понимаю, что на низком уровне они бы не сократили его, но C или С++ были бы хороши для этого, и Python, например, мог бы быть слоем сверху, чтобы взаимодействовать с ним. Я имею в виду, что есть Jython или CPython.

Мне просто интересно, почему мы не видим более динамичной поддержки языков в сегодняшних мобильных ОС.

Ответ 1

В общем, все это. Память, скорость и, вероятно, самое важное знание программиста. Apple имеет огромные инвестиции в Objective C, Java известна практически всем, а С# тоже очень популярен. Если вы пытаетесь привлечь внимание к массовому программисту, имеет смысл начать с чего-то популярного, даже если это будет скучно.

На самом деле никаких технических требований не остановить. Мы могли бы написать целый столбец Ruby и позволить программисту повторно реализовать медленные биты в C, и это не было бы большой сделкой. Это будет инвестиция для любой компании, производящей мобильную ОС, и в конце концов я не уверен, что они получают от этого больше.

Наконец, это самое начало мобильных устройств. Через 5 лет я бы не удивился, увидев гораздо более широкий мобильный стек.

Ответ 2

В противоположность предпосылке вопроса: одним из первых мобильных устройств для мобильных устройств был Newton, который был разработан для использования специализированный динамический язык NewtonScript для разработки приложений. Среда и язык разработки Newton сделали особенно удобной работу приложений и обмен информацией - почти полярную противоположность нынешнему опыту iPhone. Хотя многим разработчикам, которые пишут новые приложения Newton с нуля, это очень понравилось - NewtonScript "чувствует" много похожего на Ruby - у Ньютона были некоторые проблемы с производительностью, а перенос существующего кода был непростым, даже после того, как Apple позже добавила возможность включить код C в программа NewtonScript. Кроме того, было очень сложно защитить одну интеллектуальную собственность в Ньютоне - другие разработчики могли в большинстве случаев заглядывать в ваш код и даже переопределять биты его по прихоти - кошмар безопасности.

Ньютон был коммерческим провалом.

Palm взяла несколько лучших идей Apple - и улучшила их, но бросила динамическую поддержку языка как часть общего упрощения, которое в конечном итоге привело к тому, что PalmOS получила большую часть доли на рынке мобильных телефонов (на протяжении многих лет) в качестве независимого мобильного программного обеспечения разработчики стекались на новую платформу.

Было много причин, по которым Ньютон был неудачным, но некоторые, возможно, обвиняют NewtonScript. Apple "думает по-другому" с iPhone, и одним из ранних решений, которые они, как представляется, были сделаны, является максимально возможное использование своей существующей базовой базы разработчиков и упрощение для людей в Objective C. Если iPhone станет официальным поддержка динамических языков, что станет более поздним дополнением после долгого и тщательного рассмотрения того, как лучше всего это сделать, обеспечивая при этом безопасную и высокопроизводительную платформу.

И через 5 минут после этого последуют другие.: -)

Ответ 3

Ситуация для нескольких языков на мобильных устройствах лучше, чем вопрос. Java (в его воплощении J2ME) доступна в эти дни даже на довольно дешевых телефонах. Symbian S60 официально поддерживает Python и Javascript для виджетов, и там есть порт Ruby, хотя он все еще довольно экспериментальный. Чарльз Наттер экспериментировал с получая JRuby на Android. rhomobile утверждает, что разрешает разработку приложения в Ruby, которое затем будет запускаться на всех основных операционных системах смартфонов, хотя это требование о переносимости подразумевает ограничения о том, что могут сделать эти приложения.

Важно различать мобильную ОС (которая делает вещи операционной системы, такие как совместное использование и защита ресурсов), и платформой времени исполнения (которая обеспечивает рабочие среды и набор API для пользовательских приложений). ОС может поддерживать несколько циклов работы, например, как вы можете запускать как С++, так и Java-приложения в Windows, даже если сама Windows написана на С++.

Runtimes будет иметь разные характеристики производительности и в большей или меньшей степени раскрывать возможности ОС и оборудования. Например, J2ME доступен на тоннах устройств, но на многих устройствах время исполнения J2ME не обеспечивает доступ к камере или возможность совершать звонки. "Собственное" время выполнения (то есть приложение, в котором приложения написаны на том же языке, что и ОС) не отличается в этом отношении: какие "родные" приложения могут выполнять, зависит от того, что позволяет время выполнения.

Ответ 4

У Jailbroken iPhones может быть установлен python, и я действительно использую python очень часто на моем.

Ответ 5

Я думаю, что проблемы с производительностью могут быть частью, но не всей причиной. Мобильные устройства не имеют очень мощного оборудования для работы.

Я частично не уверен в этом.

Ответ 6

Одним из наиболее важных вопросов является сбор мусора. Сбор мусора часто приводит к непредсказуемым паузам во встроенных машинах, которые иногда требуют производительности в реальном времени.

Вот почему есть Java Micro Edition, у которого есть другой сборщик мусора, который уменьшает паузы в обмен на более медленную программу.

Refcounting сборщики мусора (например, в CPython) также менее подвержены паузам, но могут взорваться, когда удаляются данные со многими вложенными указателями (например, связанный список).

Ответ 7

Я подозреваю, что основной причиной является сочетание безопасности и надежности. Вы не хотите, чтобы кто-то мог легко взломать телефон, и вы хотите иметь некоторый контроль над тем, что установлено.

Ответ 8

Память также является важным фактором. Легко есть память на Python, к сожалению.

Ответ 9

Есть много причин. Среди них:

  • бизнес-причины, такие как стратегии блокировки программного обеспечения,
  • Эффективность: динамические языки обычно воспринимаются медленнее (а в некоторых случаях действительно медленнее или, по крайней мере, обеспечивают ограничение на количество оптимизаций, которое вы можете сделать. На мобильном устройстве оптимизирующий код необходим гораздо чаще, чем на ПК) и, как правило, используют больше памяти, что является существенной проблемой для портативных устройств с ограниченной памятью и небольшим кэшем.
  • поддержание простоты разработки: платформа, которая поддерживает Python и Ruby и Java из коробки:
    • означает трижды работу по написанию документации и поддержку,
    • делит усилия по развитию на три; требуется больше времени, чтобы полезные материалы появлялись в Интернете, и есть меньше разработчиков, которые используют тот же язык, что и на вашей платформе,
    • требуется больше памяти на устройстве для поддержки всех этих языков,
  • нужно убедить руководства. Я всегда чувствовал, что достоинства Java легко объясняются нетехнической аудитории..Net и Obj-C также кажутся очень естественным выбором для платформы Microsoft и Apple, соответственно.

Ответ 10

webOS - новая ОС от Palm, которая будет дебютировать на Pre - вы пишете приложения против времени выполнения webkit в JavaScript. Время покажет, насколько оно успешное, но я подозреваю, что это не первый, кто пойдет по этому пути. Когда мобильные устройства станут более мощными, вы увидите, что динамические языки становятся более распространенными.

Ответ 11

У моей Palm есть реализация Lua, которая позволяет вам делать разумные графические интерфейсы, довольно бесполезный старый Python 1.5, a превосходный Forth (который позволяет создавать скомпилированные приложения) и Схема, которая позволяет использовать графический пользователь copmlete.

На недавнем Apple WWDC 2009 альянс Symbian разместил мероприятие в первый день в соседнем здании с тизером бесплатного Nokia 5800 для всех, кто подходит даже на обед с маркетинговым шагом - телефон в размере 350 долларов США. Событие состояло в том, чтобы развить для Ovi Store, и у них там были разработчики и соревнование по программированию во второй половине дня.

Три языка, которые они подчеркивали для разработки для Symbian, были Java, Flash (lite) и Python. Python - единственный вариант, который позволяет вам работать с устройством или ПК и включает в себя образцы с OpenGL ES и другими функциями телефона.

С помощью утилиты для объединения приложений Python в автономные системы, которые могут быть размещены в хранилище, я бы сказал, что Python на S60 находится там как претендент на серьезный динамический язык на (все еще) доминирующей платформе.

Ответ 12

Существует дистрибутив Linux для OpenMoko Freerunner под названием SHR. Большинство его настроек и кода рамки написаны на питоне и... ну, это не очень быстро. Это терпимо, но с самого начала было запланировано переписать его в Вале.

С другой стороны, мои небольшие приложения работают достаточно быстро (с единственным недостатком, имеющим большое время запуска), чтобы рассмотреть python для разработки пользовательских приложений.

Для записи: Freerunner имеет ARM-400 МГц и 128 МБ ОЗУ. Я предполагаю, что когда мобильные устройства перейдут на 1 ГГц, языки, подобные Python, будут достаточно быстрыми для материалов среднего уровня (низкоуровневым ядром).

Ответ 13

Открытый ресурс с открытым исходным кодом Rhomobile Rhodes framework предлагает это сегодня. Первая в мире реализация Ruby для всех смартфонов.