Projekt Systementwicklung WS2017/18

Entwicklung eines MQTT Clients in der Programmiersprache Julia

Wir entwickeln unsere Software im Augenblick meistens mit Programmiersprachen deren Anf√§nge alle mehr als 20 Jahre zur√ľckliegen. C, C++, Fortran  und Java sind etabliert, aber die Produktivit√§t der Software Entwicklung  l√§√üt zu w√ľnschen √ľbrig. Programmiersprachen wie Python und Matlab sind zwar verst√§ndlicher, aber ihre Performance ist sehr viel schlechter. Gleichzeitig hat sich der Umfang und die Komplexit√§t der Software deutlich gesteigert und neue Herausforderungen in Anwendungen wie Deep Learning lassen die Frage aufkommen, ob unsere Programmiersprachen den Aufgaben noch angemessen sind.

Die neue Programmiersprache Julia (die ersten Versionen stammen von 2012) soll die Perfomance von C und Fortran besitzen, die Einfachheit von Python, die mathematischen Fähigkeiten von Matlab, die Stringverarbeitung von Perl und die Flexibilität von Lisp.

In Bereichen wie Data Sciences, Statistik und Machine Learning wird die Sprache bereits eingesetzt. Die New York Federal Reserve Bank nutzt Julia f√ľr ihre dynamischen, stochastischen Gleichgewichtsmodelle und die Federal Aviation Administration der USA nutzt Julia zur Entwicklung ihres n√§chsten Airborne Collision Avoidance Systems. 

Julia erhebt den Anspruch eine universelle Programmiersprache zu sein. M√∂glicherweise ist Julia auch eine Alternative zur Programmierung von Embedded Systemen, denn dort ist die Programmiertechnik besonders weit zur√ľck.

Zur Erprobung von Julia wollen wir uns die Implementierung eines MQTT Clients vornehmen. Das MQTT Protokoll ist gut dokumentiert und es gibt Clients in den Programmiersprachen C, C++, Java, Lua, Python, Go und Javascript, die alle als Opensource vorliegen. F√ľr Julia gibt es noch keinen Client. Ziel ist es diesen Client zu entwickeln und mit den Implementierungen in anderen Programmiersprachen zu vergleichen.

Wir werden die vorhandenen Implementierungen studieren und versuchen einen ersten Prototypen in Julia zu entwickeln. Dann werden wir uns mit den Besonderheiten der Sprache Julia besch√§ftigen (Tasks, Channels, parallel Verarbeitung, Typensystem) und unseren Prototypen hin zu einer echten Julia Implementierung weiterentwickeln, die wir mit den Programmen und der Perfomance der anderen Sprachen vergleichen.