Apple verbietet in iPhone OS 4 die Benutzung von Cross-Compilern. Panik! Das Ende ist nah! Hunde und Katzen liegen nebeneinander! Menschen benutzen freiwillig Windows! End of Days! Na? Wieder beruhigt? Dann ist’s ja gut.
Nachdem sich alle trefflich aufgeregt haben – und hoffentlich feststellen konnten, dass es gar nichts zum Aufregen gab – sollte auch wieder ein wenig Ruhe eingekehrt sein. Irgendwie kann ich beide Seiten verstehen, aber das verlangt nach einer ausführlicheren Erklärung.
Wer regt sich denn eigentlich auf und hat einen echten Grund dafür?
Logisch, unsere Freunde aus San Jose. Man munkelt sogar, dass Adobe Apple verklagen würde/könnte/sollte/etc. Adobe hatte es sich so schön ausgemalt: Alle würden begeistert CS5 Flash benutzen um Anwendungen für alle mobilen Plattformen zu programmieren. Dieser Traum ist anscheinend geplatzt, aber – ehrlich gesagt – hält sich mein Mitleid in Grenzen. OK, Adobe hat auch von mir, als ehemaligem Benutzer von Adobe Graphics Server und FrameMaker auf Mac vermutlich kein Mitgefühl erwartet. Wie heisst es so schön in dem Sprichwort? “Wie man sich bettet so liegt man.”
Um dem empörten Aufschrei zuvorzukommen, natürlich hat eine Firma das Recht die Entwicklung eines Produkts einzustellen. Genauso wie eine Firma das Recht hat vorzuschreiben wie man Software für ihre Plattform entwickeln soll.
Selbst wenn ich mir vorstellen könnte Flash CS5 zur Entwicklung für das iPhone/iPad einzusetzen, stellt sich die Frage, ob die Firma die Plattform eigentlich verstanden hat. (Ich unterstelle jetzt einmal, dass die Entwicklung von Flash CS5 für den Mac nicht in zwei Jahren alternativlos eingestampft wird.) Um dies herauszubekommen, kann man zwei simple Überlegungen anstellen:
- iPhone OS 4 basiert auf Cocoa und darunter liegt ein *NIX-artiges System. Schon mal versucht CS3 oder CS4 auf einem case-sensitive Filesystem zu installieren? Nein? Glück gehabt.
- Das iPhone/iPad hat nur einen begrenzten Speicher. Schon mal versucht InDesign, Photoshop und/oder Illustrator ohne Bridge zu installieren? Adobe Bridge ist sicher nützlich, wenn man die Funktionalität denn braucht; ich kann auf eine grössere Menge sinnloser Hintergrundprozesse gut und gerne verzichten. Nochmal, das iPhone/iPad hat keinen Auslagerungsspeicher, wenn ein Produkt, nennen wir es einmal “Reader”, sich 90% des Hauptspeichers greift, noch bevor das erste Dokument geladen wurde, dann scheint man es mit der Speicherverwaltung nicht so genau zu nehmen. Wenn besagtes Produkt, in früheren Inkarnationen, auch noch Probleme machte, wenn es nicht von einem administrativen Benutzerkonto aus gestartet wurde, dann scheint auch das tiefergehende Verständnis für *NIX-artige Systeme nicht wirklich ausgeprägt zu sein.
Produkte wie iPhone/iPad leben davon, dass auf ihnen installierte Software mit den vorhandenen Ressourcen schonend umgeht und sich nicht so aufführt, als ob ihr das System ganz alleine gehört. Eine(m)(r) unbedarften Benutzer(in) ist es egal, ob ein einziges Programm das ganze System in die Knie zwingt. Schuld ist immer das ganze System, und einen schlechten Ruf muss man erst einmal wieder zurechtrücken, und das kostet Zeit und Geld.
Fazit: Wer im Glashaus sitzt…
Flash ist unter OS X nur deswegen so langsam, weil Apple die internen Schnittstellen nicht herausrückt, oder?
Welcher Teil von intern ist missverständlich? Wenn APIs intern sind, dann hat das einen Grund. Der Hersteller des Betriebssystems hat dadurch die Freiheit diesen Teil des Systems bei Bedarf zu verändern, sei es aus Geschwindigkeits- oder Sicherheitsgründen. Es mag Ausnahmefälle geben in welchen Drittanbietern von Software dieser Zugang gewährt wird, aber dieses Recht muss man sich durch extrem saubere Programme erst einmal verdienen. Ausserdem scheint das für die meisten anderen Hersteller von Software kein Problem darzustellen. Wenn an dieser Aussage etwas dran wäre, dann würden sich viel mehr Softwareentwickler(innen) darüber beschweren.
Ist die Benutzung von Cross-Compilern nicht effizienter?
Die Benutzung von Cross-Compilern erlaubt zwar das zeitgleiche Entwickeln für mehrere Plattformen, meist werden aber nicht wirklich alle Funktionen einer Plattform unterstützt. Wenn das der Fall sein sollte, dann wird immer nur auf dem kleinsten gemeinsamen Nenner entwickelt, oder man endet mit einem derartigen Spaghetti-Code, dass getrennte Projekte sinnvoller gewesen wären. Ich spreche hier aus eigener Erfahrung, die ich in der Computerspiele-Industrie gesammelt habe. Nur kann man bei Computerspielen davon ausgehen, dass ausser dem Spiel entweder nichts anderes läuft (Konsolen), oder dass der/die Benutzer(in) versucht das System soweit wie möglich dem Spiel zur Verfügung zu stellen. Im ersten Fall gilt auch noch, dass nur ein minimales Betriebssystem vorhanden ist (wenn überhaupt), und dass sich dieses, und die darunterliegende Hardware, nicht ändert. Es geht also normalerweise nicht darum, Fähigkeiten zu unterstützen, die erst später hinzukommen könnten.
Werden die Programmierer(innen) nicht in ihren Möglichkeiten eingeschränkt?
Nicht wirklich. Jede(r) Programmierer(in) kann doch selbst entscheiden, ob er/sie für ein bestimmtes System entwickeln möchte. Wem die zur Verfügung stehende (Programmier-) Infrastruktur nicht passt, sucht sich halt ein anderes Gerät und entwickelt Software dafür.
BTW: Mich würde interessieren wo der Aufschrei bleibt, dass man weder SmallTalk noch Erlang zur Erstellung von Software für die Plattform benutzen kann (zumindest soweit ich weiss). Cocoa/Objective-C und SmallTalk sind sich sehr ähnlich, und Erlang wird sehr häufig zum Erstellen von Software für mobile Geräte genutzt.
Spricht das nicht gegen den freien Markt?
Absolut nicht. Niemand wird gezwungen ein iPhone/iPad zu kaufen, es gibt noch Systeme die auf Android basieren, Systeme die auf Symbian basieren und System die auf Microsoft Windows Mobile 7 dingenskirchen™ basieren (wie es mit WebOS weitergeht ist mir momentan nicht so klar). Hier hat der Konsument / die Konsumentin das letzte Wort. Wenn die Entscheidung von Apple falsch sein sollte, dann wird Apple diese Suppe auch selbst auslöffeln müssen.
Du hattest gesagt, dass Du beide Seiten verstehen würdest?
Ich verstehe die Frustration der Entwickler(innen), die sich jahrelang in die Materie (Flash/ActionScript) eingearbeitet haben. Für sie ist die Möglichkeit verbaut, ihre Kenntnisse auf dieser interessanten Plattform zur Anwendung zu bringen. Andererseits, ein(e) gute(r) Entwickler(in) sollte auch keine Schwierigkeiten haben sich mit Cocoa/Objective-C zurechtzufinden. Es ist ja nicht so, dass man gezwungen wäre mit vi und Konsorten zu arbeiten, Xcode ist als Entwicklungsumgebung wirklich hervorragend (IMHO, of course).
Keine Schlussbemerkung?
Doch, natürlich. Erstens, ich hege keinen Groll gegen Adobe, auch wenn das so scheinen mag. Zweitens, ich reihe mich auch nicht in die Flash ist pöse™-Fraktion ein. Ich denke nur, dass Apple das Recht hatte diese Entscheidung zu treffen. Es liegt in der Verantwortung von Apple die Entwicklung vom iPhone/iPad im Sinne der Firma und der Benutzer(innen) zu steuern. Und nochmal, niemand wird gezwungen Geräte dieser Firma zu kaufen. Wenn sich das iPad aber so gut verkauft, dass der Verkaufsstart im Rest der Welt nach hinten geschoben werden muss, dann scheint His Steveness irgendetwas richtig zu machen, oder?
Die Gründe sind eigentlich etwas anders.
Und zwar zwingt Apple die Entwickler auf XCode umzusteigen und das aus einem bestimmten Grund:
http://stevecheney.posterous.com/the-genius-in-apples-vertical-platform
Ist sehr gut zusammengefasst. Steht im Grunde genommen folgendes drin: Im iPad ist unter Umständen gar kein ARM-Prozessor sondern ein PowerPC. Wenn alle Programme (systemarchitekturunabhängigen) XCode verwenden, ist es kein Problem, die Applikation für das andere iGerät auszugeben. Wenn mit iPhone OS4.0 multitasking kommt, macht das die Plattform eigentlich nur besser.
Interessanter Artikel.
Sehr interessante Theorie, vielen Dank für den Link.
Wenn man genauer darüber nachdenkt, könnte da sogar was dran sein. Klingt auf jeden Fall plausibel. Andererseits, ich hätte ja gerne beim Wechsel der Desktop-CPUs einen Schwenk zum Cell gesehen, deswegen bin ich vermutlich auch für derartige Theorien sehr empfänglich.