Programmiersprachen



1. Programmierprachen


Seit meiner Entdeckung von AmigaBASICKeine Zugangsberechtigung auf dem Amiga 500Keine Zugangsberechtigung im Jahre 1995 bin ich nach und nach mit einigen Programmiersprachen mal sehr intensiv, mal nur am Rande in Berührung gekommen. Es ist sehr wertvoll, sich zu jeder Programmiersprache ein paar eigene Notizen zu machen. Man kann zwar alles im Internet irgendwo wiederfinden, aber die eigenen Notizen haben für einen persönlich einen ganz besonderen Wert. Hier sind meine Notizen.

Ich habe mich dafür Entschieden, die Progarmmiersprachen nach dem Einsatzbereich, für den ich sie am häufigsten verwende zu sortieren.

1.1 Embedded Systeme


ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
CIm Embedded-Bereich, insbesondere bei Systemen mit stark beschränkten Ressourcen, also wenige Kilobyte SRAM und minimale Prozessorleistung, nach wie vor die Nummer 1. Auch Betriebssysteme, wie Linux sind in C programmiert. Man kommt im Embedded-Bereich nicht um C rum.
AssemblerStark optimierter, schneller Code, z.B. für Signalverarbeitung, Codierung in der Nachrichtenübertragung. Ich habe angefangen Mikrocontroller in Assembler zu programmieren. Heute nehme ich Assembler jedoch nur noch höchstens, wenn es darum geht eine einzelne Routine optimal auf einen speziellen Befehlssatz eines Mikroprozessors zu optimieren. Also nur, wenn es sein muss. Es schadet jedoch nicht Assembler lesen zu könne. Compiler sind nicht perfekt.

1.2 Anwendungsprogramme


ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
C++Keine ZugangsberechtigungSicherlich auch im Embedded-Bereich angesiedelt, aber meistens habe ich doch in C++ Anwendungsprogramme für den PC geschrieben. Datenbankzugriffe, Visualisierung, Netzwerkprogrammierung in Verbindung mit QtKeine Zugangsberechtigung.
Visual BasicHier hatte ich eine Phase in der Studienzeit in der ich mich in VB satt programmiert hatte :).
JavaAuch wenn ich die Art und Weise des objektorientierten Programmierkonzeptes in Java sehr schätze, so ist es mir schon mehrfach passiert, dass Anwendungsprogramme in C++ gegenüber Java doch einen entscheidenden Performance-Vorteil hatten.
PythonKeine ZugangsberechtigungMit wenigen Zeilen viel erreichen. Ich bin von Python sehr beeindruckt und schreibe darin vorwiegend kleinere Anwendungsprogramme.
Quick BasicEin Artefakt aus den DOS-Zeiten. Hier hatte ich unzählige Programme zur Schulzeit geschrieben.

1.3 Web


Für das Wen werden viele Programmiersprachen verwendet. So werden teile dieser Seite z.B. von im Hintergrund laufenden Skripten in BASH und PythonKeine Zugangsberechtigung generiert. Der Kern besteht sicherlich aus PHPKeine Zugangsberechtigung-Code, welcher dynamisch HTML-Code erzeugt. Teile laufen in ihrem Browser in Java-Script. Andere Programme sind auch in Java als so genannte Java-Applets geschrieben. Aber auch viele andere Sprachen wurden verwendet um Grafiken für diese Seite zu generieren, wie z.B. die Formeln in Latex und die Grafiken aus Octave. Nichts ist hinsichtlich der Programmiersprachen so verwinkelt und verschachtelt, wie die heutigen Webseiten.

ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
PHPKeine ZugangsberechtigungAlleine für diese Webseite habe ich unzählige Zeilen Code schreiben müssen, bis dieses Wiki, für das ich seher dankbar bin und mich auch an dieser Stelle bei den Autoren bedanke, meinen persönlichen Vorstellungen entsprochen hat. Für das Web schreibe ich immernoch die meisten Zeilen in PHP.
Java-ScriptWird manchmal mit Java verwechselt. Interaktion und Darstellung von Webseiten
HTMLHTML muss man kennen, man muss darin aber nicht wirklich programmieren.
Pl/SQLKeine ZugangsberechtigungAuch Datenbanken können mit Programmen versehen werden, die serverseitig Abläufe automatisieren.
XMLNicht nur für das Web, aber vorwiegend für das Web zur Repräsentation von Daten.
RubyKeine ZugangsberechtigungAusgezeichnet für umfangreiche Anwendungen für das Web insbesondere in Kombination mit dem Rails-Framework

1.4 Kommandozeileninterpreter


Kommandozeileninterpreter besitzen alle Standard-Konstrukte, wie Variablen, Schleifen, Bedingungen, Rechenoperationen und sind im Grunde vollwertige Programmiersprachen.

ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
BASHKleine Programme für die Automatisierung von lästigen Arbeiten unter Linux (auch für Windows)
Windows BatchAutomatisierung von sequentiellen Abläufen unter Windows
PowerShellKeine ZugangsberechtigungWer mit der Standard-Kommandozeileninterpreter unter Windows an die Grenzen kommt, der sollte sich die PowerShellKeine Zugangsberechtigung installieren.

1.5 Lösung Mathematischer Probleme


Zur Lösung mathematischer Probleme gibt es natürlich eine Reihe von Werkzeugen. Hier einige, die ich gerne benutze.

ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
MATLABKeine ZugangsberechtigungEin sehr mächtiges Werkzeug. Es ist das mächtigste und am meisten verbreitete Werkzeug zur Lösung mathematischer und naturwissenschaftlicher Probleme.
OctaveDas nicht-kommerzielle Pendant zu MATLAB mit einem sehr großen Abdeckung des MATLAB-Befehlssatzes.
AxiomKeine ZugangsberechtigungLösung mathematischer Probleme, symbolisches Rechnen
RKeine ZugangsberechtigungLösung mathematischer Probleme, spezialisiert auf Statistik

1.6 Aus dem Bereich der Elektrotechnik


In der Elektrotechnik gibt es spezielle Beschreibungssprachen

ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
VHDLKeine ZugangsberechtigungHardwarebeschreibungssprache, u.a. für CPLDs und FPGAs
AbelHardwarebeschreibung für PLDs

1.7 Sonstiges


ProgrammierspracheEinsatzbereich (sortiert nach Häufigkeit)
LATEXErstellen von ordentlichen Textdokumenten
PrologWissensverarbeitung, auch zur Lösung mathematischer Probleme
G-CodeKeine ZugangsberechtigungCNC-Programmierung
Objective CKeine Zugangsberechtigung für iPhone-Apps.



2. Sprechen Sie C ?


Wer programmiert?

Viele Menschen würden heute das Programmieren in erster Linie dem Informatiker zuordnen. In den vielen Jahren musste ich aber feststellen, dass Informatiker gar nicht die besten Programmierer sind, vor allem wenn sie das Studium gerade abgeschlossen haben. Sie werden sich wundern, aber im Studium der Informatik lernt man nicht das Programmieren. Das Programmieren haben viele Menschen aus meiner Umgebung entweder als Jugendlicher zu Hause, während eines Praktikums/Nebenjobs in einem Unternehmen oder spätestens in der Berufspraxis gelernt. Wenn Sie heute einen naturwissenschaftlich-technischen Beruf ergreifen, werden sie an dem Programmieren nicht vorbeikommen. Selbst in nicht naturwissenschaftlich-technischen Bereichen hält das Programmieren zur Lösung von statistischen Problemen , der Verarbeitung größerer Datenmengen oder auch der Automatisierung von Abläufen Einzug. So müssen Wirtschaftsstudenten auf Parallelrechnern Programme zur statistischen Datenauswertung starten und Mediziner bedienen sich sehr geschickt der mächtigen Funktionen zur statistischen Auswertung der Programmiersprache RKeine Zugangsberechtigung.

Warum so viele Sprachen?

Es fällt heute deutlich auf, dass der durchschnittliche Entwickler oder im Volksmund "Programmierer" ein umfangreiches Repertoire an Programmiersprachen aufweist. Warum braucht man so viele Programmiersprachen? Warum entstehen stets neue Programmiersprachen? Warum gibt es nicht eine Programmiersprachen für alles? Hunt2003 empfiehlt sogar das freiwillige Lernen von Programmiersprachen als eine Art Fitness für den eigenen Geist. Verzichten Sie auf Sudoku; lernen Sie lieber eine Programmiersprache! ;-)
Der wichtigste Grund dafür sind die stets wachsenden Anforderungen an Systeme mit Software. Programmieren bedeutet heute nicht mehr das Eintippen einer Abfolge von Befehlen, die sequentiell (also hintereinander) ausgeführt werden. Jede Programmiersprache und insbesondere das was sie im wesentlichen kennzeichnet, deren ParadigmaKeine Zugangsberechtigung, Framework, Support, Tool-Chain etc.), hat seine ganz spezifischen Vor- und Nachteile. Mit wenigen Befehlen schafft ein Programmierer in RubyKeine Zugangsberechtigung und PythonKeine Zugangsberechtigung das, was ein Assembler-Programmierer zur Lösung derselben Aufgabe in seinem gesamten Leben kaum schaffen kann. Auf der anderen Seite ist auf einem Embedded-System mit gerade einem Kilobyte Arbeitsspeicher (SRAM) nicht viel mit höheren Programmiersprachen oder geschweige denn ihren gigantischen Frameworks anzufangen. Deshalb greift der Programmierer zu dem, was ihn am besten ans Ziel bringt.

Was kommt noch?

Wir dürfen nicht vergessen, dass es diese vielen Programmiersprachen noch nicht lange gibt. Wir sind ganz am Anfang. Sprachen entstehen, werden verbessert, aus langjährigen Erfahrungen zu besseren Paradigmen zusammengefasst oder teilweise wieder komplett verworfen. Programmiersprachen sind keine natürlichen Sprachen, wie Deutsch und Englisch, sondern formale Sprachen und nur ansatzweise mit natürlichen Sprachen vergleichbar. Aber bezüglich der Entwicklung von Sprachen könnte man allgemeingültige Zusammenhänge aufzeigen. Programmierer streiten gerne um Neuerungen je nach persönlicher Interessenlage mit denselben Intentionen, wie Gegner und Befürworter der Rechtschreibreformen in Deutschland. Meiner Meinung nach sind derzeit RubyKeine Zugangsberechtigung und PythonKeine Zugangsberechtigung die feinste Art sich effizient formal zu artikulieren. Die beiden Programmiersprachen sind das Ergebnis der gesamten Evolution, seit dem Stanzen von Maschinencode im Dualzahlenszstem auf Lochkarten für die Verfütterung an den Z23. Obwohl man das Formulieren in neueren Programmiersprachen förmlich genießt, kann man sich die Sprache nicht immer aussuchen. Und so programmiere ich heute meistens noch in C, dem unübertroffenen Standard in der Welt der stark ressourcen-beschränkten Embedded-Systeme. Überall dort wo der Speicher knapp, der Prozessor langsam und die Versorgungsenergie durch den Akku stark eingeschränkt ist, ist C der Renner unter den formalen Sprachen. Bei der ganzen Diskussion und Aufregung unter den Entwicklern, wenn es um das beste Framework oder die optimale Sprache geht, sollten wir eines im Auge behalten. Wir werden in Zukunft nach wie vor eine ganze Palette an Sprachen brauchen und es werden weitere hinzukommen. Wir werden einige davon sicherlich auch verwerfen. Doch solange die Kommunikation mit der Maschine eine Diktatur in Form von fehlerintoleranten formalen Befehlen bleibt, werden wir weiterhin unsere Frameworks verbessern und noch bessere Methoden finden unser Anliegen mit noch wenigen Zeilen Code dem Computer mitzuteilen. Richtig interessant wird es dann, wenn der Computer in der Lage ist mit uns über die gesuchte Lösung zu diskutieren, und diese Diskussion schneller verläuft, als das es ein Team von Programmierern in einer höheren Programmiersprache schaffen könnte. Es bleibt spannend!



3. Theoretische Betrachtung


Theoretische Betrachtung zu Thema "Programmiersprachen"




Siehe auch SoftwareEntwicklungSoftwareTechnik

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki