Braucht Linux Swift? Oder braucht Apple Linux?

Vor eineinhalb Jahren hat Apple die Programmiersprache Swift vorgestellt. Wie man es sich von einer neuen Sprache erwartet, ist Swift modern und vereint in sich viele (die besten?) Features aus diversen anderen Programmiersprachen, kombiniert mit ein paar eigenen Ideen.

Wie jede neue Sprache leidet Swift noch unter einigen Kinderkrankheiten. Die größte besteht darin, dass die Sprache work in progress ist. Wer immer sich auf Swift einlässt, muss damit rechnen, dass sein Code schon mit der nächsten Swift-Version an neue Syntaxregeln oder veränderte Standardbibliotheken angepasst werden muss. (In der Apple-eigenen Entwicklungsumgebung Xcode funktioniert das zum Glück weitgehend automatisch.)

Trotz dieser Einschränkung ist Swift durchaus schon praxistauglich und wird bereits intensiv genutzt. Der Grund dafür ist leicht erklärt: Wer native Apps für iOS, OS X, die Apple Watch etc. programmieren will, hat nur die Wahl zwischen Objective C (uralt mit steinzeitlicher und abschreckender Syntax) und Swift. Apple erklärt dezidiert, die Zukunft heißt Swift. Da fällt die Entscheidung nicht schwer …

Swift ist jetzt ein Open-Source-Projekt

Gestern hat Swift eine Ankündigung vom vergangenen Sommer wahrgemacht: Swift wurde zusammen mit diversen Tools als Open-Source-Code freigegeben. Das Projekt wird auf GitHub gehostet, es gibt öffentliche Mailing-Listen und einen öffentlichen Bug-Tracker.

Was aus Linux-Sicht eine Selbstverständlichkeit ist, ist für Apple durchaus ein Paradigmenwechsel. Wenig andere IT-Firmen betreiben einen derartigen Aufwand, neue Entwicklungen so lang wie möglich geheim zu halten. Zumindest für Swift ist dies nun nicht mehr möglich.

Braucht Linux noch eine Programmiersprache?

Interessanterweise bevorzugt Apples Open-Source-Strategie Linux. Linux wird von Anfang an offiziell unterstützt, für Ubuntu gibt es sogar fertige Binärpakete. Apple stellt es der Community frei, auch Windows-Versionen von Swift zu entwickeln, engagiert sich dafür aber nicht selbst.

Da freut sich die Linux-Gemeinde aber, dass ihr noch eine Programmiersprache zur Verfügung steht!? Sie hat ja schon Erfahrung damit, nachdem Sun Java zum Open-Source-Projekt machte und später Microsoft auch C# und einen Teil des .NET-Frameworks freigab. Ein Blick auf Java und C# zeigt aber auch, dass die Begeisterung nicht grenzenlos ist:

  • Java im Webbrowser ist ein endloses Sicherheitsproblem und wie Flash im Aussterben begriffen. Auch zur Entwicklung von Desktop-Programmen (GUIs) hat sich Java nicht recht durchsetzen können, generell nicht, und noch weniger unter Linux. Ausgesprochen wichtig ist Java aber für den Server-Einsatz (J2EE) sowie zur Programmierung von Android-Apps. Praktisch ist Java natürlich auch für den Unterricht. Noch immer gilt Java (zumindest im deutschen Sprachraum) als die erste Programmiersprache. Praktisch also, dass Java auch unter Linux zur Verfügung steht.

  • C# und Mono wurden vorübergehend von einigen Gnome-Programmen genutzt. Die anfängliche Begeisterung ist mittlerweile aber verflogen. Heute ist C# unter Linux primär am (Web-)Server relevant, um ASP.NET auch unter Linux auszuführen.

Warum zeigt die Linux-Community nicht mit mehr Freude an so tollen und ausgereiften Programmiersprachen wie Java oder C#, die mit immensem (Kosten-)Aufwand von Firmen wie Oracle oder Microsoft vorangetrieben werden?

Vielleicht liegt es ganz einfach daran, dass es schon genug ausgezeichnete Programmiersprachen gibt. Die Linux-Kernelentwicklung wird bei C bleiben, die Anwendungsentwicklung für KDE und Gnome funktioniert mit C++ bzw. C. passabel, diverse Scripts lassen sich in der Bash oder, viel besser, mit Python entwicklen. Und für nahezu jede Spezialaufgabe stehen diverse weitere Programmiersprachen zur Auswahl.

Und jetzt kommt also Swift — und Sie spüren sicher schon meine Skepsis: Was bietet Swift, was Linux nicht ohnedies schon hat? Gegenwärtig nichts. In der aktuellen Form können Sie mit Swift unter Linux nicht viel mehr anfangen, als Algorithmen zu entwickeln. Interessant vielleicht für Unterricht und Lehre, aber nicht darüber hinaus.

Die Anbindung an das Linux-Umfeld, beispielsweise in Form einer GTK-Bibliothek, fehlt noch vollständig. Im Apple-Mikrokosmos stehen Swift-Programmierern unzählige Bibliotheken zur Auswahl; diese Bibliotheken sind aber nicht Teil der Open-Source-Strategie. Einzig die Foundation-Bibliothek, eine Art Standardbibliothek für recht elementare Aufgaben, soll unter Swift neu implementiert und ebenfalls als Open-Source-Code freigegeben werden.

Kurzum, ich bezweifle, dass Swift unter Linux auf Anhieb zum großen Erfolg wird. Vielleicht aber auf längere Sicht, denn …

Braucht Apple Linux?

Eine absurde Frage. Apple ist erfolgreich wie nie zuvor und schwimmt im Geld.

Aber auch im Apple-Kosmos gibt es schwarze Löcher. Eines ist die Server-Seite. Apple betreibt Server-Farmen in der Liga von Google und Amazon. Es ist wenig bekannt, welche Hard- und Software dabei eingesetzt wird. theRegister hat 2011 darüber spekuliert, es wäre eine Mischung aus Microsoft Azure und Amazon Services. Äußerst unwahrscheinlich ist auf jeden Fall, dass Apple eigene Hardware und OS X einsetzt. Apple hat den Server-Bereich in den letzten Jahren immer mehr vernachlässigt. So schön MacBooks, iMacs etc. sind — für das Rechenzentrum sind sie nicht konzipiert.

Die ganze schöne App(le)-Welt setzt eine solide dahinterliegende Server-Infrastruktur voraus. Und für App-Entwickler wäre es natürlich eine feine Sache, den Client (die App) und die Server-Seite (die Cloud) in der gleichen Programmiersprache entwickeln zu können. Wenn sich Swift unter Linux etabliert, wäre das möglich. Aus meiner Sicht liegt hier das größte Potential, die größte Chance für Swift unter Linux. Also Swift als Puzzleteil für eine Apple-Cloud unter Linux.

Ein zweiter Aspekt ist der Einsatz von Swift in Schulen, Universitäten — ein Segment, in dem Apple (zumindest in den USA) stark vertreten ist. Swift verkörpert moderne Sprachkonzepte und wäre insofern eine attraktive Wahl für den Unterricht. Aber solange Swift Apple-only ist (bzw. war), ist diese Option nicht praxistauglich. Keine Schule, keine Uni kann erwarten, dass jeder Schüler/Student Apple-Geräte nutzt. Gelingt es Swift aber, den Apple-Kosmos zu verlassen, dann hätte Swift als Unterrichtssprache eine reelle Chance. (Persönlich finde ich ja Python wegen seiner Einfachheit noch erheblich attraktiver, zumindest als erste Programmiersprache, aber sei’s drum.)

Fazit

In jedem Fall ist die Freigabe von Swift eine weitere Bestätigung für die Open-Source-Idee. Welche Strategien und Pläne Apple für Swift hat, darüber kann man (so wie ich) nur spekulieren. Langfristig könnte Swift aber zu einem durchaus interessanten Angebot selbst für eingefleischte Linux-Entwickler werden.

7 Gedanken zu „Braucht Linux Swift? Oder braucht Apple Linux?“

  1. Der Grund, warum sich Java und C# nicht unter linux durchgesetzt haben, ist meiner Ansicht nach, dass die beiden Sprachen genauso wie objective-c einige große strukturelle Probleme haben, die selbst Firmen wie Oracle und Microsoft nicht einfach mal so lösen können. Da man sich im Open-Source-Bereich im Gegensatz zum Unternehmens-Umfeld Programmiersprache und die dazugehörigen Bibliotheken und Werkzeuge relativ frei aussuchen kann, wird dort meist eine besser geeignete Sprache wie C/C++ oder Python verwendet.

    Die momentan unter linux verwendeten Sprachen haben auch einige Schwachpunkte: Python ist sehr langsam, Bash zu komplex und C++ enthält Unmengen an Altlasten. Deshalb entsteht im Moment eine neue Generation von Programmiersprachen, die auf modernen Konzepten aufbauend versuchen, die Vorteile von interpretierten Sprachen mit der Geschwindigkeit von kompilierenden Sprachen zu vereinen, die Werkzeuge bereitstellen, um effektiv an Projekten zu arbeiten, und die auf die Gegebenheiten moderner Hardware angepasst sind. Die wichtigsten Vertreter sind rust, go und seit neustem eben auch swift. Durch Apple’s Unterstützung hat swift langfristig deshalb gute Chancen, unter linux zu einer wichtigen Sprache zu werden, auch wenn vielleicht nur in einer Nische.

  2. Unbekannt sind die meisten der Fakten nicht, zumindest dann nicht, wenn man Apple über die letzten 20 Jahre hinweg zumindest am Rande beobachtet hat.

    Soweit historisch geläufig ist und man auch von einer Vielzahl von Stellenausschreibungen von Apple ableiten kann, benutzt Apple in den Rechenzentren traditionell Sun (jetzt Oracle) Hardware und Solaris als Betriebssystem. Was Apple hingegen nie selbst benutzt hat, sind der eigene OS X Server und – als es sie noch gab – die Xserve-Hardware.

    Die hauseigene Web-Plattform bei Apple ist, soweit über die Jahre hinweg beobachtet werden konnte, in Java und Objective-C entwickelt worden.

    Zum Thema Linux und noch eine Programmiersprache… Ich zitiere mal meinen ehemaligen CEO: „Wer C++ für die Anwendungsentwicklung einsetzt, hat einen Hang zum Masochismus.“ Mag ja sein, daß das dank gewaltiger Frameworks wie Qt mittlerweile erträglich geworden ist, aber das ändert nicht viel an den Problemen von C++, das nach wie vor eine aufgeblägte Systemsprache ist, die einfach nicht für die Anwendungsentwicklung konzipiert worden ist. In dem Kontext hilft als Krücke auch kein Python weiter — was eine „Glue“-Sprache ist, die dem schnellen Zusammenschustern von Skripten dienen sollte und diesen Job auch exzellent erledigt. Eine Alternative zu Microsoft Office sehe ich damit aber niemanden schreiben.

    Der Mangel an qualitativ hochwertiger Desktop-Software für Linux ist vielleicht nicht nur dem vernachlässigbaren Marktanteil der Plattform auf dem Desktop geschuldet, sondern möglichweise auch den Entwicklungswerkzeugen. Ja, es gibt Lazarus/FreePascal, ja es gibt MonoDevelop/Xamarin Studio C#, ja es gibt Gambas und für Geld gibt es auch so etwas wie Xojo. Aber nichts von dem reicht an die Qualität der Werkzeuge auf den beiden großen Desktop-Plattformen heran — und nichts von alledem kann die Heerscharen an Hobbyisten und Semi-Professionellen anziehen, wie Microsoft und Apple das offensichtlich können. Nicht jeder ist ein Hardcore-Kernel-Guru – und gerade in der Windows-Welt werden verdammt viele kommerziellen Anwendungen von Experten entwickelt, die sich mit ihrer Zielgruppe und dem fachlichen Umfeld ihrer Anwendungen auskennen, die aber keine Software-Entwicklungs-Spezialisten sind und eher Werkzeuge wie Visual Basic, Visual C# oder „echte“ Klassiker wie einen Vertreter der Xbase-Sprachfamilie oder gar Delphi, jeweils mit der zugehörigen Unmenge an Bibliotheken, verwenden wollen. Die wenigsten Entwickler hochspezialisierter Software entsprechen der Klischeevorstellung eines Linux-Entwicklers oder gar des Software-Entwicklers an sich; diese Leute kommen für gewöhnlich aus ganz anderen Bereichen und haben sich das Programmieren nebenbei angeeignet — die wollen Werkzeuge, die ihnen helfen (lies: Visual Basic, Delphi) und keine Werkzeuge, die ihnen im Weg stehen und in erster Linie einen reinen Selbstzweck darstellen (lies: C++, Java).

    Swift könnte hier bestenfalls dann helfen, wenn Apple sämtliche ihrer Frameworks ebenfalls portiereten – was natürlich niemals passieren wird. Linux braucht also bestimmt kein Swift, denn Swift alleine hilft niemandem. Was Apple hier macht ist bestenfalls Marketing in eigener Sache.

    1. Vielen Dank für das ausführliche Feedback. Warten wir’s ab. Ich finde mittlerweile auch den Gedanken faszinierend, dass Swift eine mögliche Programmiersprache für Android wird — auch wenn es momentan so aussieht, als würde Google im Rechtsstreit gegen Oracle bezüglich Java am längeren Ast sitzen.

    2. Ich denke, die Chance von Swift, Java, C#, etc. liegt bei Linux vor allem in der nächsten Generation der Anwendungssoftware, da diese eher von den jüngeren Entwicklern maßgebend gestaltet wird, und die alle sehr froh sein werden, dass diese Sprachen portiert wurden. Auch wird durch Portierungen dieser Sprachen Linux als Plattform gestärkt. Hätte Sun bspw. nie zugelassen, dass Java Open-Source wurde, könnte heute niemand auf Linux Android-Apps entwickeln. Auch zur Verfügbarkeit von Entwicklungsumgebungen hat sich bei Linux einiges gewandelt. Eclipse, Android Studio (IntelliJ) und Unity sind alle für Linux verfügbar.
      Aufgrund dieser Tatsachen (und im Hinblick auf die bisherige Entwicklung) denke ich, dass Swift unter Linux irgendwann vielleicht wirklich eine echte Relevanz erlangen könnte.

    3. Was Apple hier macht ist bestenfalls Marketing in eigener Sache.

      Denke ich weniger. Der Grund ist wohl eher, dass Swift auch als Sprache für Server-Dienste eingesetzt wird (Apple, Cisco, IBM). Server laufen gerne unter … Linux ;)

Kommentare sind geschlossen.