Sie sagen es, wir coden es!

Neue Programmiersprachen – welche lohnt es sich zu lernen?

In der sich ständig ändernden Welt der IT werden auch immer wieder neue Programmiersprachen veröffentlicht – die Auswahl ist riesig. Dir fällt es schwer, herauszufinden bei welchen es Sinn macht, sie zu lernen? Deswegen stellen wir dir die am stärksten wachsenden einmal vor.

Was haben die beliebtesten Programmiersprachen Deutschlands gemeinsam?

Je mehr man die neuen Sprachen unter die Lupe nimmt, desto stärker fällt auf: es sind Trends zu beobachten. Entwickler haben keine Lust mehr auf Null-Pointer-Exceptions. Programmiersprachen wie Kotlin, Swift und TypeScript sind alle statisch typisiert und legen ihren Fokus auf Typsicherheit. Im Gegensatz zu der dynamischen Typisierung wird bei der statischen der Datentyp bereits bei der Kompilierung festgelegt. So werden Fehler wie Null-Pointer-Exceptions früher erkannt. Obwohl jedes Projekt ausgiebig getestet werden muss, spart man sich damit einige Zeit.

Die alten Sprachen werden zwar noch regelmäßig aktualisiert, aber die Computerwelt hat sich zu sehr gewandelt, als dass sie noch zeitgemäß sein könnten. Es gibt neue Technologien, Möglichkeiten und Anforderungen, an die sich die Sprachen anpassen müssen. Das bedeutet jedoch nicht, dass die ‘Oldies’ wie C++ und Java heute wertlos sind. Sie werden nämlich weiterhin am meisten verwendet. Selbst angehende Entwickler benutzen noch die selben Technologien wie diejenigen, die seit Jahren berufstätig sind.

Neue Programmiersprachen wollen nicht die alten ersetzen, sie arbeiten vielmehr mit ihnen zusammen und versuchen, sie leichter anwendbar zu machen. Ohne eine Interoperabilität mit den Klassikern des 20. Jahrhunderts zu haben, könnte kaum eine neue Sprache Fuß fassen. Beispielsweise TypeScript würde sich einen großen Nachteil verschaffen, wenn man mit ihr nicht auf die ganzen JavaScript-Frameworks und -Libraries zurückgreifen könnte.

Rust

Bis jetzt waren Sprachen wie C und C++ in der Entwicklung von Betriebssystemen und leistungskritischen Anwendungen die Führer. Als neuer Konkurrent kommt jetzt Rust ins Spiel und hat, dadurch, dass es die beliebteste Programmiersprache 2018 ist, auch gute Chancen, um bald vorne mit dabei zu sein. In 2009 begann ein Angestellter von Mozilla sie zu entwickeln. Er wurde später von dem Unternehmen unterstützt und veröffentlichte sie vor circa vier Jahren.

Rust wird zum Maschinencode kompiliert und ermöglicht dadurch den direkten Zugriff auf die Hardware. Gleichzeitig wird aber auch darauf geachtet, dass, wie in Java und C#, Speicherzugriffe nicht zu Sicherheitslücken führen. So füllt sie den Zwischenraum zwischen niederen und höheren Programmiersprachen. Rust eignet sich gut, um parallele und nebenläufige Anwendungen zu entwickeln, da hier ebenfalls keine der oben erwähnten Null-Pointer-Exceptions aufkommen können. Die Ausführungsgeschwindigkeit entspricht der von Softwares, die mit C und C++ programmiert wurden.

Kotlin

Kotlin, die 2016 veröffentlichte Sprache, die die zweitbeliebteste des letzten Jahres war, ist zwar noch recht jung, hat aber viele moderne und vielversprechende Features zu bieten. Ursprünglich wurde sie für die Java Virtual Machine (JVM) entwickelt. Dadurch können die Programme, die in Kotlin geschrieben sind, in Bytecode übersetzt werden, der dann von der JVM gelesen werden kann. Die Sprache kann also ohne Probleme Java-Klassen aufrufen und umgekehrt, sodass man, bereits in Java geschriebene Programme, nach und nach in Kotlin umschreiben kann.

Mittlerweile gilt sie auch als offizielle Android-Sprache. Aktuell ist noch dazu die Ergänzung Kotlin/Native in der Entwicklung, mit der sie dann auch für MacOS, iOS und Windows verwendet werden kann. Die neue Programmiersprache hat eine schlaue Syntax für Lambda Ausdrücke – so wird ein deutlich kürzerer Code als bei Java ermöglicht.

Swift

Der Nachfolger von Objective-C kam 2015 raus und nennt sich Swift. Die Sprache wird hauptsächlich für Apples Betriebssysteme iOS und OS X verwendet und überzeugt durch eine sehr übersichtliche Syntax. Dadurch ist sie auch attraktiv für Anfänger und sogar technisch interessierte Kinder. Apple bemüht sich sehr darum, dass jedem ermöglicht wird, mit der iPad-App ‘Swift Playgrounds’ selbst programmieren zu lernen. Die Entwicklungssprache ist Open Source, was es interessant für viele Developer macht, sich am Fortschritt und den Veränderungen zu beteiligen. Eine Portierung auf den Raspberry Pi hat so schon funktioniert. Die Performance von Swift ist erwiesenermaßen besser als die von Objective-C.

Was Swift noch nicht liefern kann, ist eine Binärschnittstellen-Stabilität mit früheren Versionen der Computersprache. Will man nämlich eine, mit einer älteren Version erstellte App, mit der neusten Version der Sprache weiter programmieren, muss man das Ganze nochmal von vorne anfangen. Das soll sich mit dem Release von Swift 5 ändern.

Fazit

Obwohl die Oldies noch immer die am häufigsten verwendeten Programmiersprachen sind, machen die Neuen ihnen langsam Druck. Die Sprachen wachsen mit hoher Geschwindigkeit, beispielsweise Kotlin hat im vergangenen Jahr seine Nutzerzahl fast verdreifachen können. Die Klassiker des 20. Jahrhunderts sind von der IT-Welt noch nicht wegzudenken und dürfen nicht außer Acht gelassen werden. Wer aber experimentierfreudig ist oder sich eine anwenderfreundlichere Programmierung wünscht, sollte definitiv mal die oben vorgestellten Sprachen genauer unter die Lupe nehmen.

Side-Note: Es kann aber auch sinnvoll sein, ganz veraltete Programmiersprachen zu lernen: einige Firmen verwenden noch so alte Programme, dass es nur wenige Entwickler gibt, die dessen Sprachen überhaupt noch beherrschen. Die NASA sucht beispielsweise aktuell Developer, die Sprachen wie Fortran und Assembler aus den 1970er Jahren beherrschen. Dies ist zwar eine mühsame Tätigkeit, aber so ist man für den Arbeitgeber natürlich unentbehrlich.

Du bist auch interessiert daran, dich in der </CODING>-Welt auszutoben und dein theoretisches Wissen in der Praxis anzuwenden? Wir sind stets auf der Suche nach talentierten und motivierten Softwareentwicklern, die unsere Community bereichern. Ihr könnt Teil davon werden, Ideen von Startups und KMU zu verwirklichen und bestehende Prozesse effizienter zu gestalten. Dabei profitiert Ihr von fachlichem Austausch und der Möglichkeit eines flexiblen Nebenverdiensts mit breitem Erfahrungsspektrum.

Universal Windows Plattform Apps – Was ist neu?

Ich besuchte vor einiger Zeit die Windows 10 bis 10 Schulung von Microsoft, in der es um das Thema Einführung der Apps der universellen Windows Plattform mit Windows 10 und Visual Studio 2015 ging. Ich habe diverse Dinge über die neuen Apps gelernt und möchte mein Wissen mit euch teilen.

Starten wir das Ganze mit einem Vergleich zwischen klassischen Desktop Applikationen und den neu eingeführten Apps:

Klassische Desktop Apps Universal Apps
Von überall installierbar Nur vom Store oder über Sideloading installierbar
Kann alles mögliche während der Installation machen Vordefinierte Installationsverfahren
Administrator Modus verfügbar Admin Modus nicht verfügbar. Eingeschränkte Rechte
Kann während der Laufzeit auf das gesamte System zugreifen Eingeschränkter Zugriff auf eine bestimmte Anzahl an APIs. Deklariert explizit Zugriffe
Vollständige Kommunikation mit anderen Prozessen Sandbox

Man kann anhand der Tabelle sehen, dass sich Microsoft mit den Apps der universellen Windows-Plattform (UWP-Apps) ein bestimmtes Ziel gesetzt hat: Sicherheit. Das gesamte neu eingeführte System soll dem Endnutzer das Gefühl der Kontrolle geben, denn dieses fehlte bisher ganz. Ein kleines Beispiel aus meinem Alltag dazu: Meine Mutter surft im Internet und auf einmal taucht ein Pop-Up auf, mit blinkendem Text “Achtung ihr System ist sehr langsam, laden Sie unseren super seriösen Registry Cleaner herunter!“. Wie meine Mutter so ist, macht sie sich Sorgen um das Wohlergehen ihres PCs und klickt auf den seriös wirkenden Link. Eine *.exe wird heruntergeladen und nach einer Administrationsberechtigungsanfrage, die mit “Ja” beantwortet wurde, installiert sich das Programm. Es wird ein Scan gemacht, 42 Fehler werden gefunden und um diese zu beheben muss man die Pro Version kaufen, die 119€ kostet. An diesem Zeitpunkt angelangt hat meine Mutter auch keine Lust mehr und deinstalliert das Programm. Tage später erhalte ich einen Anruf, bei dem sie mir erzählt, dass ihr Browser nun ganz komisch aussieht mit neuen Leisten und ihre Startseite lautet nun www.kaufserioeseprogramme.ru. Sie kann sich das Ganze nicht erklären und wüsste nicht woher das kommt.

Anhand dieses kleinen Beispiels können wir sehen, dass das aktuelle Applikationssystem sehr undurchsichtig für den Endnutzer ist. Der Installer des Registry Cleaners hat eine neue Taskleiste installiert und der Cleaner an sich oder sein Installer hat unbefugt auf die Startseitenoptionen des Nutzers zugegriffen, ohne seine Erlaubnis einzuholen. Diese Probleme existieren mit UWP-Apps nicht mehr.

Schauen wir uns die neuen Apps mal aus der Developer Perspektive an:

Man kann die UWP-Apps sowohl mit den altbekannten .NET Sprachen Visual Basic und C# schreiben, als auch mit C/C++ und ganz neu mit Javascript. Für die visuelle Darstellung wird bei Javascript HTML und CSS benutzt, bei den anderen Sprachen kann man zwischen dem aus WPF und Windows 8 Apps bekannten XAML Format und DirectX wählen. Microsoft vereinfacht mit Javascript Web Developern den Einstieg in die Software Programmierung immens.
Weiterhin gibt es diverse nützliche Neuerungen im Vergleich zu den Windows 8 Apps. Man sucht sich nun eine Zielplattform aus, die eine bestimmte Version des Frameworks haben muss:

Weiterhin kann man mithilfe des Reference Managers in Visual Studio ganz einfach Systemerweiterungen zur App hinzufügen, bspw. Windows.Mobile Erweiterung per one-click der App hinzufügen und prompt wird unsere App von Windows 10 fähigen mobilen Geräten unterstützt.
Die neue Bibliothek Windows.Foundation.Metadata.ApiInformation erleichtert es, hardwarespezifische Funktionen zu integrieren, wie zum Beispiel das ansteuern der Back Taste an einem Windows Phone Gerät. Zu den Neuerungen gehört auch eine Adaptive UI, d.h. ein und die selbe App sieht auf einem Windows Phone Gerät anders aus als auf einem PC. Das System ist vielen bereits vom Web Development bekannt. Einige designspezifische Funktionen sind von Haus aus aktiv, hier Desktop vs. Mobile:

Die Breakpoints, die darüber entscheiden wie der Aufbau einer App aussieht, werden in epx angegeben. Epx steht für effecitv pixels und wird mittels eines Algorithmus anhand der Parameter Userentfernung und Bildschirmgröße ermittelt:

Für XAML Developer gibt es auch ein sehr nützliches Control, das sich Relative Panel nennt. Es ermöglicht einem auf eine einfache Art und Weise die Anordnung von Elementen festzulegen, indem man sie an andere Elemente ausrichten kann:

Das nächste Feature ist wieder für XAML Developer. Es handelt sich um die Split View. Diese ermöglicht das Erstellen von aufklappbaren Menüs, vielen auch unter Burger Menus bekannt. Dieses Control besitzt einen Pane Bereich, den man mithilfe von Radio Buttons zu einem schönen Burger Menu formen kann. Die Splitview hat auch einen Content Bereich, indem man verschiedene XAML Frames darstellen lassen kann.

Mit Windows 10 wurde auch eine Hardware Klasse integriert: Internet Of Things, kurz IOT. Eine abgespeckte Version des Betriebssystem mit Namen Windows IOT kann nun auf verschiedenen Geräten aufgespielt werden. Im Seminar kam ein Raspberry Pi 2 zum Einsatz. Es wurde sehr schön dargestellt, wie die zuvor auf dem Desktop PC laufende App auf dem Raspberry Pi gestartet wurde und wie sich das Design angepasst hat. Weiterhin unterstützt das Windows Core Framework Zugriffe auf die Pins des kleinen Geräts. Somit hat man als erfahrener .NET Developer einen einfachen Einstieg in das Programmieren für IOT Geräte.

Zu guter Letzt geht es um den Windows Store. Dieser wurde bereits in Windows 8 eingeführt und man konnte dort bereits Windows 8 Apps vertreiben. Mit den Universal Apps wurde nun auch der Store überarbeitet. Es gibt nun einen öffentlichen Store, als auch einen Business Store für Firmen. Dies gibt einem die Möglichkeit, Apps spezifisch zu vertreiben als auch andere Finanzierungsmöglichkeiten anzubieten. Man muss nicht mehr einen einfachen Preis für eine App angeben, denn man kann beispielsweise Lizenzen verkaufen, die jährlich erneuert werden müssen.

Wie man sehen kann hat sich Microsoft Gedanken gemacht und ist auf viele Wünsche der User eingegangen. Ob Windows 10 und UWP-Apps sich wirklich durchsetzen werden, wird sich mit der Zeit zeigen. Mir persönlich gefallen die Neuerungen und ich freue mich auf das Experementieren mit den neuen Features.

Alle Bilder stammen aus der Präsentation von dem Seminar, diese könnt ihr hier finden.
Hier noch ein paar nützliche Ressources:
UWP Samples
XAML Samples

Nützliches Custom Control für Windows Forms Anwendungen

Der heutige Eintrag richtet sich an die C#/VB.NET Programmierer, die mit Windows Forms arbeiten. Da dies auch seit geraumer Zeit mein Hautpeinsatzgebiet ist, macht es mir besonders Spaß, heute etwas darüber zu erzählen. Ich möchte euch eine Custom Windows Forms Control vorstellen, die von einem gewissen Philip Piper erstellt wurde. Der Name dieses kleinen Wunders ist ObjectListView. Ich muss zugeben der Name ist eher funktional als episch, aber dennoch sollte dieses Custom Control bei jedem WinForms Programmierer im Repertoire sein. Die ObjectListView, ab sofort oLvw genannt, unterscheidet sich stark von der altbekannten ListView. Die oLvw ist wie der Name bereits andeutet stark objektorientiert und von Hause aus aktiv. Hier ein kleines Schaubild vom Prozess, den ich gleich erklären werde:

Source

Man kann sich das ganze grob vereinfacht so vorstellen: Man übergibt der oLvw ein Objektmodel, diese wandelt alle Objekteigenschaften in Strings um und stellt sie dar. Dieser Darstellungsprozess verläuft von vorneherein deklarativ, d.h. man beschreibt der Liste ein einziges Mal  was sie für ein Objekt erhält und was sie damit anstellen soll, diese hält sich an eure Beschreibungen und macht von da an alles automatisch. Das ganze alte System, das auf ListViewItem.Add()  basierte, fällt komplett weg. Jegliche neue Daten, die in die oLvw sollen, werden dem Quellobjekt hinzugefügt, die Liste verarbeitet das ganze wieder nach eurem Schema und stellt es dar.

Hier ein kleines Beispiel von mir: Angenommen wir haben uns eine Datenbank mit unseren bisher angesehenen Filmen erstellt und wollen diese nun in einem kleinen Tool darstellen. So etwas ist prädestiniert für die oLvw, da jegliches Update der Datenbank ein Update unserer Datenquelle bedeutet und unsere oLvw sich somit um den Rest kümmert.

Das war es zu dem kleinen Beispiel. Es ist nur ein ganz kleiner Einblick von dem, was dieses Custom Control überhaupt kann. Es gibt noch diverse andere Renderer sowie noch weitere Abwandlungen der oLvw, die in der selben DLL enthalten sind. Diese sind für verschiedene Projekte besser geeignet als andere und umgekehrt, beispielsweise updatet sich die DataListView von selbst, sobald die Datasource sich ändert. Alle verschiedenen ListViews und Designmöglichkeiten zu erklären, würde den Rahmen eines Blogeintrags sprengen, daher kann ich euch nur ans Herz legen, diese auf der offiziellen Seite von der ObjectListView nachzuschauen. Wenn ihr weitere Fragen habt, könnt ihr diese gerne hier stellen oder auf Facebook unter dem Post ein Kommentar hinterlassen. Wer sehr spezifische Fragen hat, kann sich auch im offiziellen Diskussionsthread melden.