Frage

Ich habe mich gefragt, warum Smartphone / Mobilgerät OSs nicht dynamische Sprachen als die Sprache der Wahl zu ermöglichen geschrieben? iPhone Objective-C verwendet, Google Android verwendet Java, Windows Mobile jede Art von .NET-Sprache verwendet wird.

Was die Argumentation hinter einem mobilen OS würde, die in Python, Ruby, oder jede andere dynamische Sprache geschrieben? Ich verstehe, auf einem niedrigen Niveau, dass sie es nicht schneiden würden, aber C oder C ++ würde, dass und Python, zum Beispiel in Ordnung sein, könnte die Schicht auf seinen mit ihr zu interagieren. Ich meine, es ist Jython oder CPython.

ich frage mich nur, warum wir nicht mehr dynamische Sprachunterstützung in der heutigen mobilen OS sehen.

War es hilfreich?

Lösung

In der Regel ist es, all diese Dinge. Speicher, Geschwindigkeit und wahrscheinlich am wichtigsten Programmierer vertraut. Apple hat eine enorme Investition in Objective-C, Java von im Grunde jedermann bekannt ist, und C # ist auch sehr beliebt. Wenn Sie sich für die Massen Programmierer Appell versucht macht es Sinn, mit etwas populärer zu starten, auch wenn es irgendwie langweilig.

Es gibt wirklich keine technischen Anforderungen es zu stoppen. Wir könnten eine ganze Ruby-Stack schreiben und lassen Sie die Programmierer die langsamen Bits in C neu implementieren, und es wäre nicht so eine große Sache sein. Es wäre eine Investition für was auch immer Unternehmen sein wird, um das mobile Betriebssystem zu machen, und am Ende des Tages bin ich nicht sicher, dass sie von diesem so viel zu gewinnen.

Schließlich ist es der Anfang von mobilen Geräten. In 5 Jahren würde ich nicht überrascht sein, einen viel breiteren mobilen Stapel zu sehen.

Andere Tipps

Im Gegensatz zu der Prämisse der Frage: Eines der ersten Mainstream mobilen Geräten war die Newton , die eine spezielle dynamische Sprache Newton für die Anwendungsentwicklung genannt zu verwenden, wurde entwickelt. Die Newton-Entwicklungsumgebung und Sprache machte es besonders einfach für Anwendungen zusammenarbeiten und Informationen austauschen - fast das genaue Gegenteil der aktuellen iPhone Erfahrung. Obwohl viele Entwickler neue Newton-Anwendungen von Grund auf neu zu schreiben mochte es viel - Newton „fühlt“ viel wie Ruby - die Newton einige Performance-Probleme hatte und Portierung bestehender Code war nicht leicht, auch nachdem Apple später die Möglichkeit, C-Code zu integrieren hinzugefügt in ein Programm Newton. Auch war es sehr hart an geistiges Eigentum auf dem Newton zu schützen - andere Entwickler in den meisten Fällen könnten in Ihrem Code aussehen und sogar Bits es bei einer Laune heraus außer Kraft setzen -. Einen Unsicherheitsfaktor

Der Newton war ein kommerzieller Misserfolg.

Palm nahm einige von Apples besten Ideen - und auf sie verbessert - aber warf dynamische Sprachunterstützung als Teil einer umfassenden Vereinfachung, die schließlich zu PalmOS führte eine Mehrheit des mobilen Marktanteil (seit vielen Jahren) als unabhängige mobile Software gewinnt Entwickler strömten auf die neue Plattform.

Es gab viele Gründe Warum die Newton ein Fehler war, aber einige wohl schuld Newton. Apple „denkt anders“ mit dem iPhone, und einer der ersten Entscheidungen, die sie scheinen ist gemacht zu haben, so viel wie möglich von ihrer bestehenden Kernentwicklerbasis zu nutzen und es für die Menschen in Objective C entwickeln leicht machen Wenn das iPhone offiziell bekommt Unterstützung für dynamische Sprachen, das wird eine spätere Ergänzung nach langer und sorgfältigen Überlegung darüber, wie am besten, es zu tun, während immer noch eine sichere und leistungsfähige Plattform.

Und 5 Minuten, nachdem sie das tun, werden andere folgen. : -)

Die Situation für mehrere Sprachen auf mobilen Geräten ist besser als die Frage impliziert. Java (in seiner J2ME Inkarnation) ist in diesen Tagen sogar in ziemlich billig Handys verfügbar. Symbian S60 unterstützt offiziell Python und Javascript für Widgets , und es gibt ein Ruby Port, obwohl es immer noch recht experimentell ist. Charles Nutter hat experimentiert mit bekommen JRuby auf Android . rhomobile behauptet, die Entwicklung einer App in Ruby zu ermöglichen, die auf alle die Haupt dann laufen Smartphone-Betriebssysteme, obwohl diese Art von Portabilität Anspruch impliziert Beschränkungen auf, was diese Anwendungen erreichen können.

Es ist wichtig, zwischen dem mobilen O (die nicht-Betriebssystem Sachen wie gemeinsamer Nutzung und dem Schutz der Ressourcen) und der Laufzeitplattform (die bietet ein Arbeitsumfeld und eine Reihe von APIs, um Benutzer geschriebenen Anwendungen) zu unterscheiden. Ein O kann mehrere Runtimes unterstützen, wie zum Beispiel, wie Sie beide C laufen ++ und Java-Anwendungen in Windows, obwohl Windows selbst in C ++ geschrieben ist.

Runtimes werden unterschiedliche Leistungsmerkmale aufweisen und die Fähigkeiten des Betriebssystem und Hardware zu einem mehr oder weniger ausgesetzt werden. Zum Beispiel ist J2ME auf Tonnen von Geräten zur Verfügung, aber bei vielen Geräten der J2ME-Laufzeit bietet keinen Zugriff auf die Kamera oder die Möglichkeit, Anrufe zu tätigen. Die „native“ Laufzeit (das heißt die, wo Anwendungen in derselben Sprache wie das Betriebssystem geschrieben werden) ist nicht anders in dieser Hinsicht. Was „native“ Anwendungen tun können, hängt davon ab, was die Laufzeit ermöglicht

kann Jailbroken iPhones haben Python installiert ist, und ich Python tatsächlich sehr häufig auf meinen verwenden.

Ich denke, dass die Leistung betrifft Teil sein kann, aber nicht alle, der Grund. Mobile Geräte nicht sehr leistungsfähige Hardware mit zu arbeiten.

Ich bin teilweise unsicher darüber, though.

Eine der dringendsten Fragen ist die Garbage Collection. Garbage Collection oft einführen unberechenbar Pausen in Embedded-Maschinen, die manchmal Echtzeit-Performance benötigen.

Aus diesem Grunde gibt es eine Java Micro Edition ist, die eine andere Garbage Collector hat die Pausen im Austausch für ein langsameres Programm reduziert.

Refcounting Müllsammler (wie das in CPython) ist auch weniger anfällig für Pausen kann aber explodieren, wenn Daten mit vielen verschachtelten Zeigern (wie eine verknüpfte Liste) gelöscht.

Ich vermute, dass der eigentliche Grund eine Kombination aus Sicherheit und Zuverlässigkeit ist. Sie wollen nicht jemand einfach in der Lage sein, das Telefon zu hacken, und Sie wollen eine gewisse Kontrolle darüber haben, was installiert ist werden.

Der Speicher ist auch ein wichtiger Faktor. Es ist einfach, Speicher in Python zu essen, leider.

Es gibt viele Gründe. Unter ihnen:

  • geschäftliche Gründe, wie zB Software-Lock-in-Strategien,
  • Effizienz. Dynamische Sprachen werden in der Regel wahrgenommen, langsamer zu sein (und in einigen Fällen wirklich langsamer sind, oder zumindest eine Grenze für die Menge an optimsation bieten Sie tun können, auf einem mobilen Gerät, Code zu optimieren ist notwendig, viel häufiger als auf einem PC), und neigen dazu, mehr Speicher zu verwenden, die auf tragbaren Geräten mit begrenztem Speicher und wenig Cache ,,
  • ein wichtiges Thema ist
  • Entwicklung einfach zu halten: eine Plattform, die aus dem Kasten heraus sagen, Python und Ruby und Java unterstützt:
    • bedeutet dreimal die Arbeit Dokumentation zu schreiben und zu unterstützen,
    • teilt Entwicklungsaufwand in drei; dauert es länger, hilfreiches Material im Internet erscheinen, und es gibt wenige Entwickler, die die gleiche Sprache wie Sie auf Ihrer Plattform verwenden,
    • mehr Speicherplatz auf dem Gerät erfordert all diese Sprachen zu unterstützen,
  • Verwaltung müssen überzeugt werden. Ich habe immer das Gefühl, dass die Vorteile von Java leicht zu einem nichttechnischen Publikum erklärt werden. .Net und Obj-C scheint auch eine sehr natürliche Wahl für eine Microsoft und Apple-Plattform ist.

webOS - das neue Betriebssystem von Palm, die auf der Pre-Debüt - hat schreiben Sie Apps gegen eine webkit Laufzeit in JavaScript. Die Zeit wird zeigen, wie erfolgreich es ist, aber ich vermute, es wird nicht das erste sein, diesen Weg zu gehen. Da mobile Geräte immer leistungsfähiger werden, werden Sie dynamische Sprachen werden häufiger sehen.

My Palm hat eine Lua Umsetzung , die Sie vernünftig GUIs, ein ziemlich nutzlos zu tun erlaubt alter Python 1.5, ein hervorragende Forth und ein (die Sie kompilierten Anwendungen produzieren kann) < a href = "http://www.lispme.de/lispme/" rel = "nofollow noreferrer"> Scheme , die für copmlete GUI Entwickler ermöglicht.

Auf den jüngsten Apple-WWDC 2009, die Symbian-Allianz ein Event veranstaltete am ersten Tag in einem angrenzenden Gebäude mit dem Teaser eines freien Nokia 5800 für jeder kommt auch nur für das Mittagessen mit Marketing-Pitch - ein US $ 350 Telefon. Die Veranstaltung war Pech Entwicklung für die Ovi Store und sie hatten die Entwickler dort und einen Programmierwettbewerb am Nachmittag.

Die drei Sprachen, die sie für Symbian für Entwicklung betont wurden, waren Java, Flash (lite) und Python . Python ist die einzige Option, die Sie auf dem Gerät arbeiten kann oder ein PC und enthält Proben mit OpenGL ES und anderen Telefonfunktionen.

Mit einem Dienstprogramm Python zu bündeln apps in Standalones, die auf dem Speicher gehostet werden können, würde ich sagen, Python auf S60 ist bis es als Anwärter für ernsthafte dynamische Sprache auf dem (noch) dominante Plattform.

Es ist eine Linux-Distribution für OpenMoko Freerunner SHR genannt. Die meisten seiner Einstellungen und Framework-Code ist in Python geschrieben und ... na ja, es ist nicht sehr schnell. Es ist erträglich, aber es war von Anfang an geplant es in Vala neu zu schreiben.

Auf der anderen Seite, meine paar kleineren Anwendungen arbeiten schnell genug (mit dem einzigen Nachteile, große Anlaufzeit hat) Python zu prüfen, Benutzeranwendungen zu entwickeln.

Für das Protokoll: Freerunner hat ARM-etwas 400MHz und 128MB RAM. Ich denke, dass, wenn mobile Geräte 1GHz überqueren, Sprachen wie Python schnell genug sein werden für Mitte-Level-Sachen zu (das Low-Level ist der Kernel).

Rhomobile Open-Source- Rhodes Rahmen bietet diese heute. Die weltweit erste Ruby-Implementierungen für alle Smartphones.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top