Python / Ruby как мобильная ОС - PullRequest
10 голосов
/ 03 мая 2009

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

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

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

Ответы [ 13 ]

14 голосов
/ 03 мая 2009

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

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

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

2 голосов
/ 03 мая 2009

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

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

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

2 голосов
/ 03 мая 2009

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

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

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

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

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

1 голос
/ 03 мая 2009

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

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

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

1 голос
/ 03 мая 2009

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

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

1 голос
/ 03 мая 2009

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

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

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

0 голосов
/ 03 июля 2009

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

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

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

0 голосов
/ 03 июля 2009

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

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

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

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

0 голосов
/ 03 мая 2009

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

...