Tag-Archive for » Programmiersprache «

Swift: Eine Schwalbe macht noch keinen Sommer


Ihren Hype hat die Apple-Programmiersprache Swift offenbar hinter sich, wie aus der Oktober-Ausgabe des monatlichen Sprachen-Index von TIOBE hervorgeht. Obwohl sich Swift Anfang des Jahres noch in den Top-10 platzieren konnte, rutschte die Sprache jetzt auf Rang 16 ab und liegt damit nur noch einen Platz über ihrem Vorgänger Objective-C.
TIOBE erklärt das Abrutschen dadurch, dass Entwickler bis vor kurzem Android-Apps in Java und iOS-Apps in Swift/Objective-C programmierten, was natürlich entsprechend aufwändig ist, weil sie zwei verschiedene Codebasen verwalten mussten.
Mit zunehmender Popularität von Xamarin, Apache Cordova und Ionic gibt es inzwischen aber Alternativen, die es erlauben, hybride Mobile-Apps zu entwickeln. Das erklärt sowohl den Popularitätsverlust von Swift als auch die Einbußen von Java im aktuellen Index.
Auch die Programmiersprache Go, die noch 2016 von TIOBE noch zur Sprache des Jahres 2016 gekürt wurde, ist inzwischen auf einem ähnlichen Sinkflug wie Swift. Dafür bietet TIOBE bisher aber keine plausible Erklärung an.

Google gibt Go 1.9 frei

Soeben hat Google die Version 1.9 seiner Programmiersprache Go freigegeben.

Der Schwerpunkt der Neuerungen liegt wohl in der Verbesserung von Laufzeitumgebung und Tools, das Update bringt aber auch Neuerungen in der Standardbibliothek und der Sprache selbst.

Die wichtigste Neuerung sind wohl die Type Aliases, die besonders für Refactoring-Aufgaben hilfreich sein können. Dadurch wird es möglich, Aliase für Typen zu vergeben, wie beispielsweise byte als anderen Namen für uint8.

Neues bei den Tools

Deutlich mehr Änderungen gibt es bei den Tools zur Sprache. Der Go-Compiler unterstützt ab Go 1.9 das parallele Kompilieren der Funktionen eines Paketes. Dabei werden mehrere Rechenkerne gleichzeitig benutzt, was man schon bisher für die parallele Kompilierung unterschiedlicher Pakete nutzen kann. Die parallele Kompilierung ist als Voreinstellung aktiviert, kann aber manuell deaktiviert werden.

Auf vielfachen Wunsch gibt es beim Vendor Matching eine Änderung: Mit dem Befehl ./… wird es mit Tools, die Paketnamen akzeptieren, nicht mehr erlaubt sein, Pakete innerhalb von vendor-Verzeichnissen aufeinander abzustimmen. Die Funktion wird in Zukunft über den Befehl ./vendor/… verfügbar sein.

Nutzer von JSON können jetzt im ENV-Bereich das neue Flag go env -json nutzen, das einen JSON-Output ermöglicht. Dieses Flag ersetzt das betriebssystemspezifische Output-Format.

Auch das Kommando go test hat jetzt ein neues Flag namens -list. Das nutzt einen regulären Ausdruck als Parameter und gibt in stdout die Namen sämtlicher Tests, Benchmarks und Beispiele aus, ohne sie aber auszuführen.

Alle verfügbaren Informationen zu den neuen Features gibt es im entsprechenden Eintrag zur neuen Sprachversion in der Dokumentation der Programmiersprache Go.

Apple auf dem Weg zu Swift 5

Version 4 der von Apple gepushten Programmiersprache Swift ist noch nicht heraus, soll aber noch in 2017 kommen. Bei Swift 4 werden gerade die letzten Arbeiten an der Finalversion durchgeführt.

Parallel dazu hat jetzt Ted Kremenek, Apples Senior Manager in Sachen Programmiersprachen und Laufzeitumgebungen, schon die Roadmap für die danach folgende Version Swift 5 bekannt gegeben. Sollte der in der „Swift Evolution“-Mailingliste präsentierte Plan aufgehen, wird das übernächste Release von Swift Ende nächsten Jahres erscheinen.

Dabei liegt der Schwerpunkt auf der ABI-Stabilität, um so zu erreichen, dass in Swift geschriebene Programme nicht wieder neu kompiliert werden müssen, um Sprachänderungen einzuführen – eine wichtige Eigenschaft wirklich hoch entwickelter, moderner Computersprachen.

Weitere Details zum Weg in Richtung Swift 5 finden Sie in einem aktuellen Artikel bei Heise.

D-Referenzkompiler jetzt unter freier Lizenz

Für die DConf in Berlin, wo sich im Mai D-Entwickler aus aller Welt treffen, hat der Erfinder der Programmiersprache D, Walter Bright, eine ganz besondere Überraschung zu bieten:

Ab sofort steht nämlich auch das Backend des Referenzcompilers DMD unter freier Lizenz. Bisher stand er nicht unter Open-Source-Lizenz, weil Bright Teile davon geschrieben hatte, während er noch Angestellter von Symantec war.

Deshalb wurden schon ernsthaft Alternativen zu dem halbproprietären Referenzcompiler diskutiert. Weil DMD aber deutlich schneller kompiliert als die Konkurrenz, mochte aber offenbar niemand ernsthaft auf diesen Compiler verzichten. So gesehen hat sich das Warten für die Community gelohnt.

Rückgabe in PHP 7.1

php7-1Außer den internen Veränderungen, die die beliebte Programmiersprache deutlich beschleunigt haben, brachte Version 7 von PHP viel Neues im Umgang mit dem Typsystem der Sprache.

Mit dem ersten großen Sprachupdate PHP 7.1 erweiterten die Entwickler PHP um Funktionen, die man so auch aus anderen Sprachen kennt. Dazu gehört unter anderem beispielsweise der explizite Verzicht auf einen echten Rückgabewert.

Nirwana-Rückgabe: Nullen oder Nichts

Denn jetzt gehört zu den sogenannten Typehints auch das Schlüsselwort void. Der Typehint zum Beispiel für den Datentyp int gibt ja auch an, dass der Typ des betreffenden Rückgabewerts ein Integer (Ganzzahl) sein soll. Genauso gibt in PHP 7.1 der Typehint void an, dass die Funktion eben nichts zurückgibt, sondern ausschließlich prozedural arbeitet.

Wie in den Sprachen C und C++ kann aus einer Methode durch die Angabe von return; zurückgekehrt werden. Auch auf diese Angabe kann verzichtet werden. Sinnvoll sei die Verwendung von void vor allem zur Dokumentation und zur Fehlerüberprüfung. Es macht in jedem Fall deutlich, „dass eine Funktion eine Aktion ausführt und kein Ergebnis erzeugt“.

Bis jetzt hatte PHP unter bestimmten Umständen Probleme bei Rückgabewerten, die keinen Standardwert haben, weshalb das Team eine einheitliche Syntax eingeführt hat, um zu zeigen, dass der Wert auch null sein kann. Dies ist ab der Version 7.1 für alle erlaubten Typen möglich, indem den Typen ein Fragezeichen vorangestellt ist, also zum Beispiel ?int.

Iterationen und Konstanten

Als neuer Pseudotyp ist das Keyword iterable neu hinzugekommen. Bisher konnte man keinen Typ für iterierbare Rückgaben festlegen und musste tricksen, wenn man eine Funktion innerhalb einer Foreach-Schleife nutzen wollte.

Auch aus dem Umfeld von C und C++ kommt die neue Zugriffsmodifikation, die neben Funktionen jetzt auch für Klassenkonstanten genutzt werden kann. Das Team löse damit eine bisher bestehende Inkonsistenz recht einfach auf. Als Schlüsselworte dazu kann man publicprotected und private nutzen. Konstanten, die ohne eines dieser Schlüsselworte deklariert werden, sind wie schon bisher immer public.

Neuer Tiobe-Index der Programmiersprachen

tiobe201611Es ist wieder soweit: Wie in jedem Monat hat TIOBE seinen Programmiersprachenindex auf der Basis von Ergebnissen verschiedener Suchmaschinen soeben veröffentlicht. In dieser aktuellen Rangliste können die schonim Juli in die Top 10 eingezogenen Assemblersprachen ihre Position weiter festigen.

Offensichtlich gibt es auch weiterhin einen deutlichen Bedarf an hardwarenaher Programmierung – zum Beispiel im Internet der Dinge (IoT – Internet of Things). In der Spitzengruppe fällt ganz besonders die gestärkte Position von Microsofts Visual Basic .NET zu Lasten von JavaScript und PHP auf.

Projekt Quantum: Mozillas künftige Browser-Engine

projectquantumBrowserhersteller Mozilla gibt einen Ausblick auf die Zukunft seiner Browser-Engine Gecko: Bis zum Ende des nächsten Jahres sollen „erhebliche Verbesserungen“ bei den Nutzern ankommen, verspricht Chef-Entwickler David Bryant in einem Blogeintrag.

Die „Project Quantum“ getaufte Entwicklung soll Gecko auf PCs und Mobilgeräten merklich beschleunigen, insbesondere durch Parallelisierung und Nutzung  von GPUs. Dazu wolle man einige Komponenten von Servo übernehmen, der Engine, an der Mozilla schon seit 2013 arbeitet. Vor drei Monaten veröffentlichte Mozilla schon eine erste Preview-Version von Servo.

Einige der Neuerungen werden in Mozillas Programmiersprache Rust geschrieben, die im Vergleich zu C++ mehr Geschwindigkeit und Sicherheit bringen kann.  Erste in Rust entwickelte Bestandteile haben schon im August Einzug in Mozillas Browser Firefox gehalten.

Microsoft bringt Typescript 2.0 RC

TypeScript2.0Die Betaphase von Microsofts Programmiersprache Typescript 2.0 ist zwar schon zu Ende, aber der Konzern hat noch einen Release Candidate für letzte Tests freigegeben. TypeScript ist eine Obermenge von JavaScript, die inzwischen unter anderem durch das JavaScript-Framework Angular2 eine größere Verbreitung erfahren hat.

Nach dem Release der Betaversion haben die Entwickler nicht nur Bugfixes durchgeführt, sondern auch noch mehrere Neuerungen eingeführt.

So sind nun beispielsweise Platzhalter in den Pfadangaben der Konfigurationsdatei tsconfig.js zulässig, so daß sie sich sowohl in deren exclude- als auch im neuen include-Feld nutzen lassen.

Außer dem kennt TypeScript jetzt auch sogenannte Tagged Unions, die man auch als algebraische Datentypen kennt.

Den Release Candidate kann man via NuGet oder npm beziehen, sich TypeScript 2.0 RC for Visual Studio 2015 herunterladen oder ihn sich in Visual Studio Code installieren.

Neues in Google Go 1.7

Google hat gerade die Version 1.7 seiner Programmiersprache Go freigegebenGo ist eine von Google gepushte Sprache, die der Konzern erstmals 2009 vorstellte. Seinerzeit platzierte Google Go als Alternative zur Sprache C.

2015 befreite sich das Projekt dann allerdings von letzten C-Überbleibseln in seinem eigenen Code. Zu den bekannteren Systemen, die in Go geschrieben wurden, gehören beispielsweise die MongoDB-Tools und Docker. Go kommt auch bei Google selbst zum Einsatz, aber auch zum Beispiel bei SoundCloud. Das vorherige Release Go 1.6 erschien im Februar .

Das neue Release Go 1.7 hat jetzt unter anderem einen neuen Port für IBMs Mainframe System z (s390x) und wurde auf Compilerebene stark überarbeitet. Es gibt nun auch ein neues, kompakteres Format für den Export von Daten. Außerdem ist von Beschleunigungen bei der Garbage Collection und von Änderungen beim Erzeugen von Metadaten und Stack Frame Pointers für Profiling-Werkzeuge wie perf unter Linux oder VTune von Intel die Rede.

Auch die Standardbibliotheken wurden deutlich überarbeitet. Es gibt auch eine kleine Änderung bei der Sprachdefinition: An die Stelle des bisherigen, nicht präzise definierten „Final Statements“ tritt jetzt das „Terminating Statement„. Es ist formal so definiert, wie es dem Verhalten der gc– und gccgo-Compiler entspricht.

Perl 5.24 mit Unicode und mehr Leistung

Perl5.24Im Mai gibt es wieder eine neue Version der Programmiersprache Perl. Die Versionsnummer 5.24 verrät, dass es sich noch um den älteren 5er-Zweig handelt und nicht um die neue 6er Hauptversion.

Das jetzt verfügbare Perl 5.24 soll deutlich schneller sein und jetzt auch Unicode 8 beherrschen. Inzwischen wurde auch die bisher experimentelle Postfix-Dereferenzierung angenommen – die Funktionen der automatischen Dereferenzierung und lexikalischen Kontextvariablen (my $_) wurden also entfernt.

Gerade ein Jahr nach dem Erscheinen von Perl 6 versteht sich Perl 5 zunehmend als eine Art Arbeitspferd, das weiter auf Zuverlässigkeit und Fehlerfreiheit hin optimiert wird, statt mit Neuheiten glänzen zu müssen.