Programmiersprachen
Definition
Programmiersprachen sind Strukturen und Algorithmen, die als Befehle für einen Computer fungieren, der daraufhin eine Rechenleistung ausführt. Sie folgen dabei einem Regelsystem bzw. Muster, welches Syntax genannt wird. Ein Beispiel für eine Syntax, welche fälschlicherweise oft als Programmiersprache bezeichnet wird, ist HTML, kurz für HyperText Markup Language. Es ist eine reine Auszeichnungssprache ohne die für Programmiersprachen typischen Logiken und Bedingungen.
Programmiersprachen werden für die Softwareentwicklung und die Webentwicklung verwendet. Dabei werden sie in ein Dokument eingetragen, das in einem Text-Editor erstellt wird und Anweisungen enthält. Die Gesamtheit der Anweisungen nennt sich Quelltext. Der Prozessor, die Recheneinheit eines Computers, versteht diese Zeichenfolgen allerdings nicht – um den Quelltext auszuführen, muss er also in Computersprache übersetzt werden.
Die Computersprache ist ein Binärcode, der nur aus zwei (daher: bi) Zahlen besteht, nämlich Einsen und Nullen. Die Zahl 2 wäre ausgedrückt im Binärcode also 10. Auf dieser Tatsache basiert auch ein Programmierer-Witz, der besagt, dass es genau 10 Arten von Menschen gebe: Die, die den Binärcode verstehen und die, die ihn nicht verstehen.
Die Einsen und Nullen, die nichts anderes als wahr (1) oder falsch (0) bedeuten, heißen Bits und lassen sich digital und technisch nutzen. Wenn also beispielsweise eine Spannung anliegt, würde dies im Code als 1 ausgedrückt werden und keine Spannung entsprechend als 0.
Sequenzen aus Einsen und Nullen, sogenannte Bitfolgen, lassen sich per ASCII abbilden. ASCII steht für American Standard Code for Information Interchange und dabei handelt es sich um siebenstellige Bitfolgen. Alle Zeichen, einschließlich Buchstaben und Sonderzeichen, lassen sich in einen ASCII-Code umwandeln.
Ursprünglich musste dies manuell vorgenommen werden, heutzutage wird der Quelltext durch einen sogenannten Assembler, welcher eine mechanische Übersetzung in Maschinensprache vornimmt, oder einen Compiler in die Computersprache übersetzt. Ein Compiler bietet mehr Freiheiten als ein Assembler und optimiert den Code teilweise sogar. Assembler und Compiler sind entweder eigenständige Programme oder sind im Framework enthalten.
Geschichte
Geht man vom Grundgedanken aus, so existierten Programmiersprachen und Codes sogar, bevor es Computer gab. 1805, im Rahmen der Industrialisierung, wurde der erste mechanische Webstuhl nach Lochkarten entwickelt. Das Prinzip war sehr nahe am Binärcode: Je nach Bedingung, ob ein Loch (1) oder kein Loch (0) vorhanden war, entstand im Prinzip je nach Abstand ein unterschiedlicher Code. Auch Morsezeichen aus dem Jahre 1833 lassen sich als Vorläufer von Programmiersprachen bezeichnen.
Erstes Computerprogramm und erster Computer
Das erste Computerprogramm wurde 1848 von Ada Lovelace entwickelt. Es diente zur Verarbeitung von Zahlen, Musiknoten, Buchstaben und Bildern. 1970 wurde nach ihr auch die Computersprache ADA benannt. Erst ein ganzes Jahrhundert nach der Entwicklung des ersten Computerprogramms wurde der erste Computer von Konrad Zuse entwickelt. Der Z3 basierte, wie auch der erste mechanische Webstuhl, auf dem Lochkartenprinzip. Darauf folgten die ersten binären Computer- und Assemblersprachen, welche Prozessor-Befehle ausgaben.
Erste Programmiersprachen
1950 entstand die Computersprache COBOL, kurz für Common Business Oriented Language, welche bis heute noch als Programmiersprache für kaufmännische Anwendungen verwendet wird. Im Jahre 1960 entstand Algol60, eine prozedurale Programmiersprache, die für numerische Zwecke eingesetzt wurde. Sie folgte einem imperativen Prinzip und legte den Grundstein für die heute populärsten Programmiersprachen Basic und C.
Diese Sprachen haben allerdings nur wenig mit der menschlichen Sprache zu tun. Aus diesem Grund entwickelten sich höhere Programmiersprachen, deren Befehle verbaler formuliert wurden, sodass sie zugänglicher wurden. Anders als der Name vermuten lässt, sind “höhere” Programmiersprachen also nicht komplizierter, sondern vereinfacht. Dies brachte allerdings den Nachteil mit sich, dass sie nicht mehr von (Mikro-)Prozessoren gelesen werden konnten, sodass sie in die Computersprache rückübersetzt werden müssen, wie es auch heute noch üblich ist.
Ungefähr ab 1980 wurden objektorientierte, also imperative Sprachen, weiterentwickelt. Seit den Anfängen des Internets in den 1990er Jahren haben sich sogenannte Skriptsprachen zur Programmierung von kleineren Anwendungen oder Webanwendungen entwickelt, wie beispielsweise PHP.
Heutiger Stand
Vor allem das Aufkommen von Entwicklungsumgebungen und Entwicklungsframeworks hat die Arbeit von Programmierern revolutioniert und zu einer großen Zeit- und Kostenersparnis geführt, da dort teilweise bereits Codefragmente enthalten sind oder sich zumindest leicht aufrufen lassen.
Im Bereich der Webentwicklung ist es als Laie nicht mehr zwingend notwendig, eine Programmiersprache zu beherrschen, da durch Baukästen, CMS und andere Tools die Erstellung einer Homepage oder mindestens des Frontenddesigns, also der Bedienoberfläche von Websites und Webanwendungen, größtenteils visuell oder per Drag & Drop möglich ist.
Arten von Programmiersprachen
Abgrenzung zu HTML oder XML
Wie eingangs erwähnt gehören HTML und XML nicht zu den Programmiersprachen, sondern zu den Auszeichnungssprachen. Ursprünglich haben sie sich aus der SGML, kurz für Standard Generalized Markup Language, weiterentwickelt. Als Syntax enthalten sie keine Logiken oder Bedingungen, sondern sind ein reines Regelsystem, mit dem sich beispielsweise das Grundgerüst von Websites festlegen lässt.
Die HTML Syntax besteht aus Elementen, welche Absätze, Bilder und Buttons sein können. Diese werden mit sogenannten Tags und Attributen geöffnet und geschlossen: Ein Eröffnungs-Tag für einen neuen Absatz, dessen Attribut ein p ist, lautet beispielsweise <p>, um diesen abzuschließen, wird ein Schrägstrich hinzugefügt: </p>. So wird für das jeweilige Element der Gültigkeitsbereich abgegrenzt. Zwischen diesen beiden Tags befindet sich der Elementinhalt, also beispielsweise ein Text. So lassen sich Schriftgrößen (gekennzeichnet als H1, H2, H3, usw.) festlegen, Elemente wie Listen einfügen oder multimediale Inhalte wie Bilder oder Videos setzen. Um vor allem optische Details festzulegen und diese für wiederkehrende Elemente zu vereinheitlichen, wird CSS verwendet.
Abgrenzung zu CSS
Auch CSS, kurz für Cascading Style Sheets, ist keine Programmiersprache, sondern eine Auszeichnungssprache, die für die visuelle Gestaltung, beispielsweise einer Website, verantwortlich ist. Oft geht es Hand in Hand mit HTML. Hier können Farben, Schriftfamilien und andere optische Parameter festgelegt werden, auf die wiederum im HTML-Dokument Bezug genommen werden kann. Dadurch ergibt sich eine enorme Zeitersparnis, weil die unterschiedlichen Elemente so nach dem Klassenprinzip definiert werden können und ihre Eigenschaften nicht manuell und immer wieder aufs Neue zugeordnet werden müssen.
Maschinensprachen
Maschinensprachen können direkt vom Computer ausgeführt werden. Sie bestehen aus Prozessor-Anweisungen, Meta-Statements, also sogenannten Pseudo-Ops, Daten und Kommentaren. In den meisten Fällen sind Maschinensprachen plattformabhängig, was bedeutet, dass ein Code nicht auf unterschiedlichen Chips ausgeführt werden kann und beispielsweise nur Windows-kompatibel ist. Sie bilden die Basis für alle anderen Programmiersprachen, die höheren Programmiersprachen sind zwar plattformunabhängig, müssen aber immer wieder in die Maschinensprache zurückübersetzt werden.
Systemprogrammiersprachen
Mit Systemprogrammiersprachen wird der Quellcode für das Ausführen von Betriebssystemen oder Computerprogrammen verfasst. Dieser nimmt Einfluss auf die nativen Fähigkeiten und Funktionen eines Computers.
Überblick über die meistverwendeten Programmiersprachen
Es gibt unzählige Programmiersprachen, die es aufzuzählen unmöglich wäre. Dennoch sollen die wichtigsten und am häufigsten verwendeten hier kurz genannt sein.
C
Die Programmiersprache C wird als die “Mutter” der Programmiersprachen bezeichnet. Es gibt sie schon seit 1972 und sie wird für Betriebssysteme, Anwendungen und im Bereich Games angewendet.
C++
C++ gilt als Erweiterung von C und wurde 1979 entwickelt. Sie wird für objektorientierte Ansätze und Hardwareprogrammierung mit Klassen und Objekten verwendet. Im Zusammenhang mit C++ verwendete Frameworks sind beispielsweise .NET, Visual Studio und QT.
C#
Im Jahre 2001 wiederum wurde C++ durch Microsoft weiterentwickelt und auf den Namen C# getauft. C# wird für Anwendungen mit dem .NET-Framework und für Games (z.B. für XBox) mit dem XNA-Framework herangezogen. Insgesamt ist C# hauptsächlich für Windows ausgelegt.
Java
Java wurde im Jahre 1995 entwickelt und wird für Anwendungen, Apps, Games und für das Backend von Webanwendungen verwendet. Der große Vorteil von Java ist seine Plattformunabhängigkeit, allerdings mit der Ausnahme von mobilen Apple-Geräten, mit Java werden eher native Apps für Android geschrieben oder von anderen Sprachen kompiliert, beispielsweise von JavaScript. In universitären Kontexten findet diese Programmiersprache viel Anwendung. Zu den mit Java verwendeten Frameworks zählen Spring MVC, Spring Boot und Oracle.
Skriptsprachen
Skriptsprachen haben im Gegensatz zu Systemprogrammiersprachen keinen so großen Einfluss auf die nativen Fähigkeiten von Computern, da sie auf einer Teilmenge der ursprünglichen Programmiersprache ausgeführt werden. Skriptsprachen haben einen Fokus auf Webanwendungen.
JavaScript
JavaScript gibt es seit 1995 und ist bis heute eine der wichtigsten Skriptsprachen im Bereich der Webentwicklung. Sie wird vor allem für die Programmierung von dynamischen Websites, Anwendungen und Games eingesetzt.
JavaScript wird im Browser ausgeführt und eignet sich daher auch für die Entwicklung von Apps, es muss nur ein Code erstellt werden, der für alle Plattformen ausführbar ist. Es ist der heutige Standard bei hybriden Apps und kaum eine Internetseite kommt ohne JavaScript aus. Die gängigsten Frameworks für JavaScript sind unter anderem React.js, Angular.js und Node.js. Die Zugehörigkeit dieser Frameworks lässt sich auch an ihrer Endung “js” erkennen, welche für JavaScript steht.
PHP
Die Programmiersprache PHP wurde 1995 primär für Webanwendungen entwickelt und wird auch heute noch dafür verwendet, mittlerweile haben sich aber auch andere Anwendungsbereiche für PHP ergeben. Sie lehnt sich an C und Perl an, ist allerdings hauptsächlich für die dynamische Websiteerstellung ausgelegt, für die technisch gesehen kaum Grenzen gesetzt sind. Für PHP verwendete Frameworks sind unter anderem Laravel, Symphony 2, Cake PHP und Zend. Seit PHP5 und PHP7 sind enorme Fortschritte zu verzeichnen.
Python
Python gibt es seit dem Jahre 1991. Zu seinen Anwendungsbereichen gehören kleine Werkzeuge und Webserver. Auch wird Python im Bereich Machine Learning, künstliche Intelligenz und Grafik eingesetzt. Für Python geeignete Frameworks sind unter anderem Django, Pyramid und Turbo Gears. Zu den CMS, die auf Python basieren, zählen Django und Wagtail.
Ruby
Im Jahre 1995 entwickelt, wird Ruby vor allem für die Programmierung von Webservern angewendet. Dabei handelt es sich um eine Kombination aus den Programmiersprachen Perl, Smalltalk, Eiffel, Ada und Lisp. Bei Rechnern mit dem Betriebssystem Linux ist es meist dabei und für den Mac sogar vorinstalliert. Ohne das zugehörige Framework Ruby on Rails hätte diese Programmiersprache nicht so sehr an Popularität gewonnen. Andere Frameworks sind beispielsweise Padrino oder Sinatra.
SQL
SQL ist eine Programmiersprache, die Mitte der 1970er entwickelt wurde. Ihr Anwendungsbereich ist vor allem Datenbanken. Heutzutage ist es so, dass die Datenbank häufig nicht mehr direkt angesprochen wird, sondern durch einen Abstraktions-Layer, der in einer der Programmiersprachen geschrieben ist. Dieser übernimmt die Übersetzungsleistung zwischen unterschiedlichen Datenbank-Systemen. Datenbankabfragen können also unabhängig erfolgen, was gerade im Web-Bereich Anwendung findet.
Erweiterungen von SQL sind MySQL, eine Open Source Software, SQLi, was für SQL Injection steht und einen Mechanismus beschreibt, der von Hackern benutzt werden kann, um bei Sicherheitslücke Daten abzugreifen, sowie SQlite, welches beispielsweise für Betriebssysteme von Mobiltelefonen oder vom Browser Mozilla Firefox verwendet wird.
Swift
Swift ist eine noch sehr junge Programmiersprache aus dem Jahr 2014 und eine Weiterentwicklung von Objective-C. Sie wurde von Apple entwickelt und ist auch hauptsächlich für Apple-Anwendungen ausgelegt, ist aber auch mit Linux kompatibel. Sie kommt für Software, Desktop-Anwendungen für den Mac und iOS-Apps zum Einsatz.
Go
Go ist eine Programmiersprache von Google, die im Jahre 2009 entwickelt wurde und deren erste stabile Version 2010 erschien. Sie wurde entwickelt, um Probleme von C++ und Java zu lösen und verfügt über eine hohe Übersetzungsgeschwindigkeit bei der Kompilierung. Die bekanntesten Frameworks für Go sind unter anderem Beego, Buffalo, Echo oder Gin.
Frameworks & CMS
Wie sich schon bei den Kurzbeschreibungen der Programmiersprachen abzeichnet, gehen diese meist mit bestimmten Frameworks Hand in Hand. Mehr noch drückt sich die Beliebtheit der Sprachen in den Frameworks aus, ohne die einige Programmiersprachen nicht mehr existent wären. Einige von ihnen sollen hier kurz genannt sein, ausführliche Beschreibungen finden sich auf der Glossarseite zu Entwicklungsframeworks.
Laravel
Laravel ist ein freies Webframework, das 2011 als Weiterentwicklung von CodeIgniter auf den Markt kam. Es beinhaltet Features wie Authentifizierung und Autorisierung und ist aufgrund seines Out-of-The-Box-Prinzips sehr beliebt.
Angular
Im Jahre 2016 brachte Google das Framework Angular als Nachfolger von AngularJS heraus, welches speziell für die Entwicklung von dynamischen Websites geeignet ist und einen Mobile-First-Ansatz verfolgt.
.NET
.NET ist ein 2002 von Microsoft entwickeltes Framework, welches nicht im Web-Bereich, sondern für Windowsanwendungen herangezogen wird und ist mit einer Vielzahl an Programmiersprachen kompatibel. Durch die integrierte Laufzeitumgebung können Programme nicht nur entwickelt, sondern auch ausgeführt werden.
Ruby On Rails
Ruby on Rails ist ein 2005 entwickeltes Webframework, welches anders als die meisten Frameworks nur für eine einzige Programmiersprache, nämlich Ruby, verwendbar ist. Durch sein ungewöhnliches Prinzip, welches Wiederholungen beim Verfassen des Codes vermeiden soll, kann die Entwicklungszeit erheblich verkürzt werden.
Symfony
Symfony ist ein PHP-Framework aus dem Jahre 2005, welches wiederverwendbare Bibliotheken und Komponenten enthält und als Antwort auf Ruby on Rails entstand, da dieses nur mit der Programmiersprache Ruby verwendbar ist und der Wunsch nach einem ähnlichen Framework für PHP bestand.
CMS
Content Management Systeme, kurz CMS, erfordern in der Regel keine Programmiersprache, da ihre Benutzeroberfläche das Einpflegen von Inhalten nach dem What-You-See-Is-What-You-Get-Prinzip erlauben. Damit sind CMS weitaus weniger komplex als Frameworks, basieren aber manchmal darauf.
Performance – Programmiersprachen im Vergleich
Das Ermitteln der Performance, also der Leistung von Programmiersprachen, ist ein komplexer Vorgang. Da viele unterschiedliche Faktoren, wie beispielsweise das System und die Hardware einen großen Einfluss auf die Schnelligkeit haben können, wird mit sogenannten Benchmarks gemessen. Dies sind neutrale Mess- und Bewertungsverfahren, die unter anderem für Hard- und Software, Frameworks und Programmiersprachen verwendet werden können. Sollen Programmiersprachen verglichen werden, wird der Quellcode kompiliert und mithilfe von Virtuellen Maschinen, Interpretern oder Librarys ausgeführt. Gemessen wird die Performance dann anhand der Parameter Ausführungszeit, Speicherverbrauch und Energieverbrauch.
Laut TIOBE Index sind Java und die C-Sprachen mit Abstand die schnellsten und effizientesten Programmiersprachen. Auch Python, JavaScript und PHP sind vorn mit dabei. SQL führt das obere und Ruby das untere Mittelfeld an, während Swift und Go das Schlusslicht bilden.
TenMedia – Web-, App- und Softwareentwicklung
TenMedia ist eine dynamische Internetagentur direkt im Herzen Berlins. Wir haben uns seit 2011 auf die Softwareentwicklung sowie die technische Entwicklung von Websites, Online-Portalen, Onlineshops, Apps und Cloud-Software spezialisiert. Neben unseren eigenen Projekten entwickeln wir maßgeschneiderte Web- und Softwarelösungen genau nach Kundenauftrag und verwenden dafür modernste Technologien. Je nach Vorhaben entscheiden wir uns individuell für das für das Projekt passendste Framework, CMS und Programmiersprache wie beispielsweise Java, JavaScript, PHP, Python, Ruby, SQL, Swift und viele weitere.