Die höheren Programmiersprachen kurz vorgestellt

Seit Konrad Zuse 1941 den ersten funktionsfähigen Computer der Welt präsentierte sind viele, viele Jahre vergangen. Es hat sich sehr viel verändert. Wenn man heute Bücher von vor 100 Jahren liest merkt man, wie sich alleine die Sprache im Laufe der Zeit verändert hat. Genau so wie sich die Sprache der Menschen weiterentwickelt hat, so haben es auch die Programmiersprachen.

Der Weg zu einer höheren (Programmier-)Sprache

Am Anfang stand die Lochkarte und irgendwann kam der Assembler-Code. Zu der Zeit hat man noch die Sprache des Computers gesprochen. Heute spricht sie nahezu keiner mehr, doch verstehen tun wir uns besser denje. Wir lösen Heute weit komplexere Probleme als noch vor 50 Jahren und um dieser Aufgabe nachzukommen haben sich die Programmiersprachen, genau so wie die menschlichen Sprachen, weiterentwickelt. Heute verwenden wir Sprachen wie Java, C# (C Sharp) oder Python, um nur einige zu nennen. Sie alle haben eines gemeinsam: es handelt sich bei Ihnen um sogenannte „höhere Programmiersprachen“ und sie haben so gut wie nichts mehr mit dem ursprünglichen Maschinencode zutun.

Die höheren Programmiersprachen orientieren sich an der menschlichen Sprache. Inzwischen muss nicht mehr umständlich alles was der Computer ausführen soll in Blöcke aus Nullen und Einsen verpackt werden. Stattdessen kann man fast vollständige Sätze schreiben und der Computer versteht es, dafür hat er drei gute Freunde. Diese Freunde sprechen sowohl die Sprache der Maschinen, als auch der Menschen. Diese Freunde nennen sich: Compiler, Interpreter und Linker. Im nächsten Beitrag gehe ich noch einmal genau auf alle drei ein und erkläre dir die Unterschiede zwischen ihnen. Sie übersetzen die für uns so gut verständlichen Anweisungen in Maschinencode und damit in eine für den Computer verständliche Form.

Woraus besteht eigentlich eine Anwendung?

Konzentrieren wir uns nun mal darauf was die höheren Programmiersprachen ausmacht und um das zu verstehen müssen wir betrachten woraus Programme bestehen. Jedes Programm das wir schreiben besteht aus einer bestimmten Aneinanderreihung von Befehlen. Es handelt sich dabei um einfache Anweisungen (tue dies oder das), Verzweigungen (WENN das DANN tu das SONST das) oder auch aus Schleifen (TU das SOLANGE WIE das STIMMT). In den höheren Programmiersprachen ist es uns möglich kleinere Unterprogramme zu schreiben, also sogennante Methoden oder auch Prozeduren. Wiederkehrende Probleme muss man damit nur noch einmal lösen und implementieren, aber kann sie immer wieder verwenden.

Bibliotheken sind nicht nur für Bücher

Die Programmiersprachen der heutigen Zeit bieten riesige Bibliotheken, gefüllt mit vordefinierten Methoden. So muss man nur noch lernen wie diese Methoden angewendet werden, dafür muss man sie noch nichtmal wirklich verstanden zu haben. Genau diese Bibliotheken sind einer der größten Vorteile den uns die höheren Programmiersprachen bieten. Durch sie müssen wir nicht mehr jedes Mal den selben Quelltext wieder und wieder schreiben. Wir können uns auf neue Aufgaben konzentrieren und eine möglichst effiziente Lösung finden. Im Anschluss könnnen wir diese Lösung anderen Entwicklern ebenfalls wieder zur Verfügung stellen. Der Umfang dieser Bibliotheken variiert stark, während bei einigen Sprachen riesige (Standard) Bibliotheken zur Verfügung stehen, enthalten andere nur wenige, wirklich notwendige Methoden.

Die höheren Programmiersprachen kurz vorgestellt

An dieser Stelle stellt du dir vielleicht die Frage welche Sprachen es eigentlich gibt und deswegen möchte ich dir hier kurz die bekanntesten und beliebtesten Sprachen zur Erstellung von Desktop-Anwendungen mit ihren Vor- und Nachteilen vorstellen.

Java

Bei Java handelt es sich um eine relativ junge Prograammiersprache. 1995 wurde sie nach 4 Jahren Entwicklung erstmals der Öffentlichkeit präsentiert. Während bei anderen Sprachen das Programm für jedes Betriebssystem separat erstellt und compiliert werden muss, hat sie den entscheidenden Vorteil das sie plattformunabhängig ist. Das heißt du schreibst ein Programm und compilierst es einmal und dieses Programm funktioniert auf jedem Gerät. Es läuft auf einem Mac genauso wie auf einem Windows Rechner oder einem Android Smartphone. Die Funktionsfähigkeit ist vorausgesetzt das auf dem entsprechenden Endgerät Java installiert ist, jedoch ist das inzwischen gängig und stellt in den seltensten Fällen ein Problem dar.

Java ist dadurch das sie eine gut strukturierte, objektorientierte Sprache ist eine ideale Sprache für Programmieranfänger. Feinheiten wie Speicherverwaltung nimmt der Garbage Collector einen ab und gerade am Anfang stellt das eine große Erleichterung dar. Weiter kann man sich daran erfreuen, dass Java immer versucht seine Bibliotheken auf einen aktuellen, techischen Stand zu halten und so zum Beispiel auch Multi-threading unterstützt.

Die durch Java gebotene Plattformunabhängigkeit ist leider auch ihr größter Nachteil, da durch sie Java Programme an Performance einbüßen. Im direkten Vergleich laufen sie etwas langsamer als vergleichbare Anwendungen anderer Sprachen.

Sollte Jave dein Interesse geweckt haben guck doch mal hier: hier gehe ich näher auf das Programmieren mit Java ein.

Zusammengefasst:

Vorteile

  • plattformunabhängig
  • gut strukturiert
  • objektorientiert
  • unterstützt moderne Technologien wie Multi-threading
  • keine Speicher- und Heapverwaltung dank dem GarbageCollector

Nachteile

  • schlechtere Performance als vergleichbare Anwendungn anderer Sprachen

Kotlin

Kotlin ist eine der interessantesten Sprachen die sich in den letzten Jahren aufgetan haben. Schon heute ist sie gängiger Standard in der Android Programmierung und das obwohl sie erst seit 2011 existiert. Entwickelt wird Kotlin von JetBrains, also einer Firma die mit InteliJ IDEA und Webstorm auch mehrere intelligente IDE’s bereitstellt und genau das zeigt sich auch in Kotlin.

Kotlin ist eine statische, typisierte Sprache die nicht nur in Byteode, sondern auch in Java und JavaScript umgewandelt werden kann. Im Falle von Java bietet sie vollständige Kompatibilität und kann ohne Probleme in bestehende Projekte eingebunden werden. Da Kotlin Boilerplate-Code vermeidet, kann es den Quellcode merklich verschlanken. Java Code kann dadurch im Durchschittlich um 20-30% gekürzt werden.

Ein riesiger Vorteil zu Java: Hier kannst du entscheiden ob ein Wert „nullable“ ist oder nicht. Das sorgt dafür das die bekannte NullPointer Exception in vielen Fällen wegfällt.

Mehr Informationen fids du auh auf der offiziellen Kotline-Site vvon JetBrains.

Zusammengefasst: Vorteile Kotlin – Java und umgekehrt

Kotlin

  • spart zwar Codezeilen kann aber dadurch zu beginn sehr ungewöhnlich sein
  • da es erst seit 2011 existiert ist die Community noch sehr klein, die Folge ist sehr wenig Hilfe
  • ideal für weniger komplexe Apps
  • benötigt relativ viel Speicher, da integrierte Runtime und Standardbibliotheken den Speicherbedarf steigern

Java

  • anfangs übersichtlicher gestaltet
  • große Community und viele Lösungen für Pobleme im Web zu finden
  • komplexe Apps sind in Java übersichtlicher
  • Apps sind zwar minimal langsamer, benötigen dafür weniger Speicher

C# (C Sharp)

Bei C# handelt es sich um eine weiterentwickelte Version von C++ und C. Die von Microsoft in Auftrag gegebene Sprache, erschien im Jahre 2001. Der Aufbau von C# ist sehr ähnlich zu dem von Java, da beide Sprachen die grundlegende Syntax aus C++ überommen haben.

Unter der Voraussetzung, dass das „.NET-Framework“ verwendet wird ist C# ebenfalls (teilweise) plattformunabhängig. Diese Plattformuabhängigkeit findet ihre Grenzen bei Linux und Mac OS. Der Grund dafür ist das hier das „.NET Framework“ nicht in vollem Umfang verfügbar ist. Dieses Framework bietet den Entwicklern die es verwenden sehr viele Bibliotheken für ihre Projekte, weshalb es auch in den meisten Projekten eingebunden wird.

Die Tatsache das C# zu dem Hause Microsoft gehört und hauptsächlich mit ihren Produkten kompatibel ist, macht die professionelle Entwicklung in C# in der dazugehörigen IDE „Visual Studio“ zu einer etwas teureren Angelegenheit. Nichts desto trotz ist C# eine sehr beliebte Sprache, immerhin ist sie universell einsetzbar und modern. Durch Verwendung des XNA-Frameworks ist die Entwicklung von XBOX oder Computer-Spielen ebenfalls möglich.

Zusammengefasst:

Vorteile

  • teilweise plattformunabhängig
  • modern und universell einsetzbar
  • in Wirtschaft sehr beliebt
  • viele, große Bribliotheken
  • Entwiclung von X-BOX Spielen möglich

Nachteile

  • ähnliche Performance einbußen wie Java
  • nur teilweise plattformunabhängig
  • professionelle Entwicklung ist teurer durch die Anschaffungskosten

C und C++

C und C# sind die wohl ältesten hier erwähnten Sprachen. So wurde C++ bereits 1979 als Erweiterung von C entwickelt. C und C++ sind in vollem Umfang kompatibel, wobei C alle grundlegenden Konstrukte (Verzweigungen, Schleifen,…) enthält und C++ seine modernere, objektorientierte Erweiterung ist.

Natürlich stellen einen C/C++ ebenfalls Bibliotheken zur Verfügung. Es gilt, dass die Bibliotheken von C++ weit komfortabler sind als die von C, aber auch sie lange nicht so einen Umfang bieten wie die von Java oder C#.

Beide Sprachen erfreuen sich heute noch sehr großer Beliebtheit, da sie sehr Hardware nah sind und damit auch einige Optionen bieten die man bei den anderen Sprachen so nicht mehr findet. Die hardwarenahe Programmierung hat jedoch auch seine Kehrseiten. So handelt es sich um sehr komplexe Sprachen, denen Featueres anderer höherer Sprachen fehlen. Beispielsweise fehlt es an Features wie einen Garbage Collector, so muss die gesamte Speicher- und Ressorcenverwaltung selbstständig vornehmen. Das kann auf der einen Seite eine große Möglichkeit sein, kann aber auch gleichzeitig alles viel komplizierter machen als nötig. Eine weitere Schwierigkeit ist die Tatsache, dass das Verhalten von vielen Sprachkonstrukten nicht definiert ist. Das Programm kann sich also, abhängig davon auf was für einem Rechner es läuft und mit was für einem Übersetzer gearbeitet wird, unterschiedlich Verhalten. Die Folge kann alles mögliche sein, von unerwarteten Ausgaben, bis zu gefährlichen Sicherheitslücken ist hier alles möglich.

So sagte der Entwicler von C++ einmal selbst:

“In C++ it’s harder to shoot yourself in the foot, but when you do, you blow off your whole leg.”

Bjarne Stroustrup, Designer und Entwickler von C++

Zusammengefasst:

Vorteile

  • sehr Hardware-nah
  • objektorientiert
  • völlige Freiheit bei Speicher- und Ressourcenverwaltung

Nachteile

  • komplexe Strukturen
  • Speicher- und Ressourcenverwaltung muss selbstständig vorgenommen werden
  • Verhalten von vielen Sprachkonstrukten ist nicht fest definiert – ungplantes Verhalten ist die Folge
  • nützliche Features fehlen ebenfalls
  • Bibliotheken sind sehr überschaubar

Python

Bei Python sprechen wir von einer sehr mächtigen, höheren Programmiersprache. Man kann hier sehr schell und leicht komplexe Ideen in sehr wenig Codezeilen leicht lesbar und gut verstädlich ausdrücken.

Für den Bereich des Mashine Learning ist Python die optimale Programmiersprache und findet dort auch am meisten Anklang und Verbreitung. Das hängt damit zusammen, dass die mit Python geschriebenen Programme leistungsstark, schnell und leicht in der Bedienung sind. Man spart in Python an Codezeilen, unnötigen Zeichen und Komplexität und so schlussendlich auch an Programmfehlern. Python bietet dem Entwickler so ziemlich alles was er sich wünscht, große, mächtige Bibliotheken und nützliche Features, wie automatische Speicherverwaltung.

Was Python einen leider nicht bietet ist zum einen Erten gute Performance, hier schneidet Python noch schlechter ab als Java und zum Zweiten ein intuitives lernen der Sprache. Die Sprache ist einfach wenn man sie spricht, aber das Lernen wird mit der dezentralen Organisation erschwert. So findest man Dokumentationen und Pakete sehr verteilt, was gerade für den Anfang nicht die besten Gegebenheiten sind.

Zusammengefasst:

Vorteile

  • viele, mächtige Bibliotheken
  • objektorientiert
  • schnelle Umsetzung komplexer Ideen
  • zukunftsfähig durch bereitstellung modernster Features

Nachteile

  • schlechte Performance
  • erschwertes lernen durch dezentrale Organisation

Fazit

Am Ende muss jeder für sich entscheiden mit welcher Sprache er arbeiten möchte, aber die Wahl der richtigen Sprache kann einen das Leben erleichtern. Genau aus diesem Grund ist es sinnvoll sich der wesentlichen Vor- und Nachteile bewusst zu sein, so kann man eine möglichst gute Wahl für das betreffende Projekt treffen.

Zu guter letzt: Wenn euch der Beitrag gefallen hat lasst doch ein Like da. Kommentare sind auch immer gern gesehen, also erzählt mir was ihr von dem Beitrag haltet. Schreibt es auch gern wenn euch etwas fehlt.

Wie oben bereits erwähnt ist der nächste Beitrag zum Thema Übersezer: Compiler und Interpreter

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht.