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

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

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

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


person Tacoman667    schedule 03.05.2009    source источник


Ответы (13)


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

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

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

person Steven Canfield    schedule 03.05.2009

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

Ньютон потерпел неудачу с коммерческой точки зрения.

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

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

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

person glenra    schedule 03.05.2009
comment
В то время NewtonScript требовал много ресурсов (ЦП и памяти) для портативного устройства; однако производительность была вполне приемлемой. В конце концов, MessagePad 2100 стоил почти 1000 долларов, StrongARM 100 МГц с 4 МБ ОЗУ, тогда как Palm Pilot был намного дешевле, работал с 1 МБ ОЗУ и медленным процессором, производным от 68 КБ. Из основных современных языков NewtonScript больше всего связан с JavaScript — оба они основаны на прототипах. Платформы Danger/Android сегодня, вероятно, наиболее близки к этому идеалу, поскольку обе их виртуальные машины Java выполняют этап предварительной обработки на хосте и относительно просты. - person Nicholas Riley; 03.05.2009
comment
На самом деле, NewtonScript был вторым языком для проекта Apple Newton: первый был еще более динамичным, Dylan [вероятно, каламбур от Dynamic Language], реализованный на Macintosh Common Lisp. Этот проект был убит, заменен чем-то с менее неприемлемой производительностью. (Я люблю Newton как программист, но даже я должен признать, что для пользователя он был слишком медленным.) Время покажет, повторяют ли сейчас конкуренты Apple ошибку Apple. - person Flash Sheridan; 05.06.2009
comment
Одна из особенностей NewtonScript, дифференциальное наследование, позволяет этому очень динамичному, объектно-ориентированному языку программирования (который также может быть скомпилирован в байтовый код) работать с очень низкими требованиями к памяти, учитывая. Это означало, что дочерние/связанные объекты нужны только для хранения данных, которые отличаются от родительских/связанных объектов. Конечно, поиск реализации этого приводит к некоторым проблемам с производительностью. io, родственник NewtonScript, также реализует дифференциальное наследование. - person morgant; 26.07.2012

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

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

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

person Sam Stokes    schedule 03.05.2009

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

person Ankit    schedule 03.05.2009

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

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

person Community    schedule 03.05.2009

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

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

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

person Unknown    schedule 03.05.2009
comment
Но iPhone заставляет вас управлять своим собственным мусором, используя счетчики сохранения. Вы должны фактически освободить свои объекты, иначе вы вызовете свои собственные утечки. - person Tacoman667; 03.05.2009
comment
@Tacoman, это называется подсчетом ссылок. Вы делаете это вручную, но это классифицируется как одно и то же. - person Unknown; 03.05.2009

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

person Charlie Martin    schedule 03.05.2009
comment
не имеет значения - вы можете удалить стандартные библиотеки Python и создать безопасное и надежное подмножество. - person Francis; 03.05.2009
comment
О, не [не будь глупым. Удалите стандартные библиотеки Python, и вы по-прежнему сможете установить неконтролируемый непроверенный код. - person Charlie Martin; 03.05.2009
comment
И что? если у тебя нет никаких библиотек, чтобы трогать ядро, то как ты сможешь взломать телефон? Если вы хотите, чтобы каждый код тестировался и контролировался, он управляется цифровыми подписями, как это сделала Apple, поэтому он по-прежнему не связан с самим языком. - person Francis; 03.05.2009
comment
путем написания кода против интерпретатора. Если вы ничего не можете сделать, чтобы повлиять на функции телефона, переводчик бесполезен; если вы можете, вы можете загрузить ненадежный код, который не делает нежелательных вещей. Вот почему iPhone, например, использует криптографическую подпись, чтобы гарантировать, что загруженный код имеет надежный источник. - person Charlie Martin; 03.05.2009
comment
iPhone сделал и то, и другое. он использовал цифровую подпись для предотвращения запуска несанкционированного приложения, а также использовал ограниченный набор SDK, который не мог легко сломать систему. Опять же, дело не в языке — например, iPhone использует скомпилированные двоичные файлы, а не интерпретаторы. - person Francis; 03.05.2009

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

person Ken Arnold    schedule 03.05.2009

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

  • бизнес-причины, такие как стратегии блокировки программного обеспечения,
  • эффективность: динамические языки обычно воспринимаются как более медленные (а в некоторых случаях действительно медленнее или, по крайней мере, ограничивают объем оптимизации, которую вы можете выполнить. На мобильном устройстве оптимизация кода требуется гораздо чаще, чем на ПК) ) и, как правило, используют больше памяти, что является серьезной проблемой для портативных устройств с ограниченным объемом памяти и небольшим объемом кэш-памяти,
  • keeping development simple: a platform that supports say Python and Ruby and Java out of the box:
    • means thrice the work to write documentation and provide support,
    • делит усилия по разработке на три части; требуется больше времени, чтобы полезные материалы появились в Интернете, и меньше разработчиков, которые используют тот же язык, что и вы, на вашей платформе,
    • требуется больше памяти на устройстве для поддержки всех этих языков,
  • надо убедить руководство. Мне всегда казалось, что достоинства Java легко объяснить нетехнической аудитории. .Net и Obj-C также кажутся естественным выбором для платформ Microsoft и Apple соответственно.
person Artelius    schedule 03.05.2009

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

person Funkatron    schedule 03.05.2009

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

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

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

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

person Andy Dent    schedule 02.07.2009

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

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

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

person liori    schedule 03.07.2009

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

person Adam Blum    schedule 02.10.2009