
Programmierung
Was ich schon immer über Programmierung loswerden wollte:
Über
Programmierung
Willkommen auf meiner privaten Homepage
Schön, dass sich auch welche einfinden für die Programmierung interessant ist.
Auf diesen Seiten möchte ich keine Projekte vorstellen, sondern nur
Allgemeines über Programmierung loswerden.
Geri's Prog
Auf dieser Seite:
Über dieses Projekt
Im Internet gibt es unzählige Artikel von Leuten die sich zum Tutor berufen fühlen und sich blutigen Anfängern widmen. Nun, hier ist mein Beitrag dazu wobei Profis und alte Hasen nicht ausgeschlossen werden, für Sie bietet der Text hoffentlich noch Unterhaltungswert.
Es soll nicht die Illusion erweckt werden, dass Sie hier alles über Programmierung lernen können.
Mit diesem Text möchte ich Ihnen einen verständlichen Einblick geben und versuche einen Lesefluß aufrecht zu erhalten und den Text trotzdem in strukturierte Themen zu gliedern.
Allgemeines über Computerprogrammierung

Programmieren heist einen Prozess zu beschreiben, wie Etwas im Detail auszuführen ist, also alle Schritte vorzugeben die notwendig sind um eine gewisse Aufgabe zu erledigen. In dieser Liste von Schritten muss exakt festgelegt sein was zu tun ist. Wenn sie zu jemand sagen:“Geh zur Tür“, müssen Sie einem Roboter auch noch sagen, dass er z.B. den rechten Fuß leicht anheben muss falls dieser nicht schon angehoben ist und dann nach vorne bewegen soll usw., Sie müssen dem Roboter also erklären wie gehen geht und das bei jeden Schritt. Der Computer kann sich merken was alles Auszuführen ist und vergisst die Anweisung während sie erledigt wird. Um den Roboter bis zur Tür gehen zu lassen, müssen alle Angaben zu jedem Schritt erneut erfolgen. Die Entwicklung von Computern ist noch nicht so weit, dass Computer irgend Etwas selbstständig lernen können, so dass ein Roboter nach 2 bis 3 Schritten alleine gehen könnte.
Maschinencode, die einzige Sprache die der Computer versteht
Damit der Computer so eine Beschreibung verarbeiten kann, muss festgelegt sein, wie die Beschreibung auszusehen hat. Ein Regelwerk für so eine Beschreibung definiert einige Vorgänge, die ausgeführt werden können: Befehle oder Anweisungen in einer Programmiersprache. Diese Programmiersprache für alle Computer ist Assembler. Maschinencode der aus ziemlich kurzen Befehlen, Mnemonics besteht die in einer Kilometer langen Wurst von Nullen und Einsen übersetzt dem Prozessor zugeführt werden. Mit diesen Befehlen aus einem sehr kleinen Wortschatz ist nur wenig möglich und es kann meist nur ein einzelnes Byte verarbeitet werden. Daher sind solche Assemblerprogramme schwierig zu lesen und zu schreiben, aber die einzige Sprache die Computer bis heute verstehen. Sehr früh ist man daher auf die Idee gekommen, Hochsprachen zu entwickeln, Programme die für Menschen leichter verständlich sind und dann durch ein Programm automatisiert in den hardwarenahen Maschinencode umgewandelt wird, daher Sourcecode oder Quelltext genannt. Eine dieser ersten Programmiersprachen ist Fortran und stammt aus dem Jahr 1957.
Programmiersprachen
Alle Programmiersprachen für Computer müssen letztlich in Assembler übersetzt werden. Diese automatisierte Umwandlung erzeugt mehr Maschinencode als für das Programm nötig wäre, bedingt dadurch, dass eine Optimierung durch jedes noch so ausgeklügelte Programm an ihre Grenzen stösst. Es gibt also noch eine Daseinsberechtigung für Assemblerprogrammierer die auf den Komfort der Hochsprachen verzichten um bei zeitkritischen Aufgaben wie z.B. 3DGrafik das letzte herauszuholen, denn Maschinencode Befehle können direkt auf Werte in den Registern des Prozessors zugreifen und werden extrem schnell ausgeführt. Was der Computer von einem Programm zu sehen bekommt ist selten von einem Mensch direkt so eingegeben worden.
Um einige Programmiersprachen zu nennen:
Assembler | PL/I | FORTRAN | Java |
Algol | Objective C | APL | C# |
PROLOG | SmallTalk | ADA | |
COBOL | Basic | RPG | |
Pascal | Object Pascal | Centura CTD | |
C | C++ | Visual Basic |
Alle diese Programmiersprachen haben eines gemeinsam, sie bestehen aus einem Wortschatz von Befehlen und Anweisungen und sind vergleichbar mit einem Kochrezept nur viel detailierter. Jedoch gibt es gravierende Unterschiede bei diesen Sprachen. Einerseits durch den verschieden Syntaxen, die Grammatik von Programmiersprachen und andererseits die Art und Weise, wie sie in Maschinencode übersetzt werden.
Dolmetscher für Programmiersprachen
Beim Übersetzungsprogramm spricht man von einem Compiler, der ein Programm umwandelt nachdem es fertiggestellt ist. Man spricht von Interpretern die ein Programm während es abläuft in den für Computer verständlichen Maschinencode übersetzen und es muss jedesmal interpretiert werden wenn es zum Einsatz kommt. Der Grund warum es Interpreter gibt ist der, dass manche Programmiersprachen besonders leicht für den Menschen verständlich sind, durch die Einbindung von Vokabeln aus der englischen Sprache, die sich aber nicht ohne weiteres in Maschinencode übersetzen lassen wie z.B. Basic. Dazu wird eine Sammlung von Miniaturprogrammen die bereits compiliert sind, verwendet damit die Basic Anweisungen das tun was sie sollen. Wenn Sie in Basic den Befehl PRINT verwenden wird durch den Interpreter ein Code ausgeführt der alle Einzelschritte des PRINT Befehls ausführt. Zur Erläuterung: der PRINT Befehl aus Basic ist dazu da, Etwas auf dem Bildschirm oder Drucker auszugeben. Dazu sind unzählige kleine Aktionen notwendig, bis das geschieht. Der Basic Programmierer muss dem Interpreter nicht mitteilen wie der PRINT Befehl auszuführen ist, er hat auch gar keine Ahnung davon, denn für ihn ist nur wichtig, dass Etwas auf den Bildschirm kommt aber nicht wie. Stellen Sie sich vor sie müssten bei der Ausgabe eines einzigen Zeichens am Bildschirm jedes Pixel selbst ansteuern. Damit wären die Entwickler von Software ständig abgelenkt und könnten sich nicht auf das Wesentliche konzentrieren. Ein anderer Grund für den Einsatz eines Interpreters ist die bessere Kontrolle im Fall eines Programmierfehlers. Der Interpreter liefert in jedem Fall nur optimierten Code und der Computer stürzt nicht so leicht ab als es bei compilierten Programmen der Fall wäre. Es ist also ein gewisser Sicherheitsrahmen für den Programmierer, damit er nicht unbeabsichtigt einen fatalen Fehler verursacht. Es ist also besonders für Einsteiger interessant, für die der Geschwindigkeitsnachteil gegenüber den compilierten Programmen keine so große Rolle Spielt. Das soll jedoch nicht heißen, dass Programmiersprachen die interpretiert werden für Profis uninteressant sind, auch sie profitieren von den Vorteilen. Es gibt aber noch weitere Nachteile bei interpretierten Sprachen als die Geschwindigkeit. Damit ein Programm interpretiert werden kann muss auf dem Computer ein Interpreter vorhanden sein. Damit sichergestellt wird, dass ein Programm auch funktioniert sollte es installiert werden, das heißt, es müssen alle Komponenten des Interpreters mit dem Programm in ein Paket gepackt werden, die so genannte Runtime Library. Compilierte Programme sind meist ohne Installation bereits lauffähig, da sie bereits Prozessorgerecht vorliegen. Auch interpretierte Programme werden vorher compiliert, jedoch nicht zu Maschinencode sondern nativen P-Code, eine Art Zwischenstadium.
Programmieren und Legospielen
Der Vorteil, dass man es mit fertigen Bauklötzen zu tun hat schränkt gleichzeitig die Möglichkeiten ein. Sie können schließlich nicht einen neuen Legoklotz entwerfen, während Sie Lego spielen. Nur die Hersteller von Lego können das, genau so ist es mit den Interpretern für Programmiersprachen. Vielleicht trifft das Beispiel mit dem Lego auch auf die Unterschiede zwischen Compilern und Interpretern zu. Wenn man z.B. ein Haus aus Lego baut und eines aus Ton, das Legohaus ist in Punkto Bauzeit der Sieger, bei der Stabilität wäre wohl Gleichstand aber bei der Individualität gibt es Unterschiede und auch bei der Hitzebeständigkeit. So sieht man es dem einen Haus an, dass es aus Lego ist. Das Haus aus Ton muss erst gebrannt werden aber danach hält es bombenfest. Es muss kein Kompromiss eingegangen werden was das Aussehen betrifft. Dieser Vergleich bezieht sich weniger auf die Optik eines Programmes, denn Programme müssen nicht zwangsläufig über eine Oberfläche verfügen. Es soll nur das unterschiedliche Vorgehen bei der Erstellung demonstrieren. Speziell bei Visual Basic und C++ wird dieser Unterschied deutlich. In C++ hat man auch die Freiheit, Bauklötze zu entwerfen die dann mit Visual Basic 6.0 SP2 verwendet werden können.
OOP die Hohe Kunst der objektorientierten Programmierung
Das zeigt auch das Prinzip der Objektorientierten Programmierung, das zwar keine Programmiersprache ist aber ein Pragma das in verschiedenen Programmiersprachen Verwendung finden kann. Bauteile, die Objekte genannt liegen als Konstruktionszeichnung vor und werden bei Bedarf erzeugt. Die Objektorientiertheit hat jedoch nichts mit dem Unterschied zwischen Interpreter und Compiler zu tun, denn auch in Visual Basic kann man objektorientiert programmieren. Ein Merkmal von OOP ist, dass Aufgabenstellungen aus der realen Welt in ähnlicher Weise im Quelltext abgebildet werden konnen. Das Beispiel mit dem Roboter, dem jeder Schritt erklärt werden muss: Bei der Objektorientierten Vorgehensweise stellt man den Roboter als Einheit dar und implementert eine Methode zum Gehen mit dem Namen "Bewegen", die alle Einzelheiten eines Schrittes darin zusammenfasst. Weiters könnte man eine Eigenschaft definieren die angibt ob der Roboter bei der Tür ist. Jetzt könnte man dem Roboter sagen: "Beweg dich. Bist Du bei der Tür?", "Nein", "Beweg dich weiter ". Einerseits verringert sich der Programmieraufwand erheblich da alles was zu einem Schritt gehört integriert ist, wie das Prüfen ob ein Fuß weiter vorne ist als der andere, Gewicht verlagert werden muss und ob das Bein anwinkelt sein soll. Der Programmierer braucht nur die Methode "Bewegen" wiederholt aufrufen und muß sich nicht mehr darum zu kümmern, daß der Roboter das Gleichgewicht behält. Ein ebenso mächtiger Vorteil gegenüber einer Linearen Programmierweise ist, daß man weitere Roboter Klone ins Leben rufen kann. Eine zweite Instanz des Roboters die sich wie ein Zwillingsbruder verhält jedoch seine eigene "Bewegen" Methode besitzt und auch die Eigenschaft, ob er bei der Tür ist oder nicht. Die Roboter sind exakt gleich, agieren jedoch unabhängig von einander. Noch Vorteilhafter wird es, wenn ein anderer Typ von Roboter gebraucht wird, viellicht einen auf Rädern. Die Klasse also die Konstruktionsvorlage, des ersten Roboters kann als Basis dienen und muss nur leicht abgeändert werden, denn die Methode "Bewegen" war ursprünglich zum Gehen gemacht und nicht zum Fahren. So lässt sich aus der ersten Klasse eine weitere Klasse ableiten, die die Methode "Bewegen" anders implementert aber trotzdem die Eigenschaft, ob er schon bei der Tür ist, beibehält. Spätestens hier wird klar, daß dies mit prozeduralen Programmiersprachen gar nicht oder nur mit enormen Aufwand möglich ist.
Andere Programmiersprachen
Zu den Programmiersprachen kann man auch noch die Scriptsprachen zählen, die nicht unbedingt sofort compiliert werden müssen bevor sie von einem Interpreter weiter verarbeitet werden. Diese Scripts sind meistens keine eigenständigen Programme und haben in der Regel keine Oberfläche, da sie oft nur für kleinere Aufgaben verwendet werden. Die Scripts müssen ebenfalls interpretiert und zusätzlich compiliert werden und dieser Extraaufwand kostet Zeit. Die Vorteile von den Scriptsprachen ist die Flexibilität, wenn es um Änderungen und Anpassungen im Quelltext geht, da dieser erst bei der Ausführung compiliert wird, muss kein Compiler verwendet werden und ist nach der Anpassung sofort einsatzbereit. Scripts müssen auch nicht installiert werden, deren Interpreter mit dem integrierten Compilern jedoch schon (meist Webbrowser). Scriptsprachen haben oft absichtlich eingeschränkte Möglichkeiten im Vergleich zu den „richtigen“ Programmiersprachen in Bezug auf Dateizugriff um zu verhindern, dass ein bösartiges Script Schaden am Dateisystem anrichten könnte.
Makrosprachen
Viele Applikationen erlauben eine Automatisierung von Aufgaben die wiederholt ausgeführt werden sollen. Dadurch kann viel Zeit gespart werden bei immer wiederkehrenden Tätigkeiten wie z.B. Datei unter bestimmten Namen speichern. In einem Makro können all diese Aktionen festgehalten werden und später auf Knopfdruck ausgeführt werden. Diese Makrosprachen sind nicht geeignet um Programme zu schreiben die eigenständig ausgeführt werden können. Es genügt nicht dass die Applikation die Makros unterstützt Installiert ist, sie muss auch gestartet sein.
Batchdateien
Neben all diesen Sprachen gibt es auch noch Batchdateien die in einer speziellen Syntax einige programmiertypische Anwendungen also bestimmte Anweisungen z.B. IF oder FOR erlauben und Benutzereingaben erfassen können. Diese Batchprogramme können alle Befehle enthalten, die über die Eingabeaufforderung gestartet werden können, also auch die Festplatten formatieren. Es ist daher sehr ratsam eine Batchdatei mit Vorsicht zu behandeln und den Inhalt in einem Textbetrachter zu kontrollieren wenn man sie noch nicht kennt oder besser ganz die Finger davon zu lassen. Oft werden solche Batchdateien Spielen beigegeben um sie mit gewissen Voreinstellungen zu starten. Mit Hilfe der Batchdateien können z.B. Backups in einem Netzwerk automatisiert oder Datenbankserver gestartet oder beendet werden und vieles mehr. Batchprogramme haben aber keine eigene Benutzeroberfläche und können Ein- und Ausgaben nur über eine Konsole mit Eingabeaufforderung abwickeln.
Weitere Sprachen die fürs Programmieren wichtig sind
Es gibt auch noch Sprachen für Textauszeichnung und Datenbankabfragen die keine Programmiersprachen sind, aber oft darin Verwendung finden wie z.B. SQL (Structured Query Language) oder XML (Extensible Markup Language). Auch HTML ist für Programmierer aller Disziplinen wichtig, es lohnt sich also in jedem Fall, die Syntax dieser Sprachen zu lernen.
Programmiersprachen sind lebendig
Um programmieren zu können ist es notwendig zu wissen, was es für Befehle gibt und welche Syntaxregeln gelten. Man muss aber nicht den gesamten Sprachumfang beherrschen um mit einer Programmiersprache zu arbeiten, es ist ja auch nicht notwendig den Duden auswendig zu kennen um eine Zeitung zu lesen. Viele Programmierer, mich eingeschlossen, arbeiten oft aus Unkenntnis um ein Problem herum ohne die nützlichen Befehle zu kennen, die für dieses Problem entwickelt wurden. Man gewöhnt sich allzu leicht an solche Workarounds, weil es vielleicht zu einem Zeitpunkt wirklich keine elegante Lösung für etwas gibt. Später wird in neueren Versionen dieser Programmiersprachen mit einem neu hinzugefügten Befehl z.B. eine Lösung angeboten. Die Programmierer wissen dann oft nichts von den neuen Möglichkeiten. Daher ist es für Softwareentwickler wichtig sich auf dem Laufenden zu halten und nach Neuigkeiten Ausschau zu halten.
Bearbeitet von Gerhard Porpaczy, Erstellt am: 04-07-2011 Letzes Update am: 26-02-2022
Alle Inhalte entspringen meiner Feder und unterliegen dem Urheberrecht ·geri3d·