24. November 2008

Programmiersprachen

Jeder, der sich einmal mit dem Quelltext einer Internetdatei auseinandergesetzt hat, möchte annehmen, es handele sich bei der verwendeten Schriftsprache um eine Fremdsprache. Und der Vergleich liegt nicht fern. Doch im Grunde ist alles viel einfacher, wenn bedenkt, dass in der Informatik alles auf null und eins basiert. Programmiersprachen, die diese für Nicht-Fachleute unsinnigen Sprachkonstrukteure erschaffen, bestehen aus Zeichen und Regeln, wie eine Fremdsprache, und dienen der Kommunikation zwischen Mensch und Computer. Zweck aller Programmiersprachen ist, die Programmierung zu ermöglichen und diese auch weitestgehend zu erleichtern. Seit den Vierziger Jahren hat sich in ihrer Entwicklung eine Menge an Optimierung getan. Das Maß der Lesbarkeit, der Kürze, der Sicherheit, Universalität und Anwenderorientierung ist soweit gestiegen, dass auch Personen ohne tiefes Fachwissen in der Lage sind, einfache Programme mit großer Wirkung zu schreiben. Mit Hilfe verschiedener Programmiersprachen werden Programme und Software erstellt, sowie Seiten zum Thema Urlaub oder Ferien. Auf unterster Ebene wird dabei ausschließlich mit Zahlen gearbeitet. Die in diesem Fall verwendete Sprache nennt man Maschinensprache. Die dabei entstehenden Programme sind sehr schnell, jedoch unleserlich und die Erstellung sehr kompliziert. Die Maschinensprache ist die einzige der Programmiersprachen, die direkt mit dem Prozessor, dem Rechner, kommunizieren kann. Alle höheren Sprachen müssen aus dem Original in die Maschinensprache übersetzt werden.

Programmiersprachen: Weiterentwicklung der Software

Eine weiter entwickelte Stufe bilden die Assembler Sprachen, die sich an den Befehlen der Prozessoren orientieren, jedoch durch Compiler (Übersetzter) eine höhere Lesbarkeit erreichen. Jede Computertechnik hat ihre eigene Assemblersprache. Ein Austausch zwischen verschiedenen Prozessoren ist nicht möglich. Der Vorteil bei Assemblersprachen besteht darin, dass sie kleiner und schneller als in höheren Sprachen verfasste Programme sind. Höhere Programmiersprachen (3GL – 3rd Generation Language), wie PASCAL, C oder C++ orientieren sich bereits an den menschlichen Denkweisen und ermöglichen eine Kommunikation des Quellcodes zwischen unterschiedlichen Prozessoren. Wesentliche Elemente sind abstrakte Einheiten wie bedingte Anweisungen („wenn x, dann y“) und Schleifen („solange x wahr ist, führe y aus“). Diese Ausdrucksweise ermöglicht es ein Programm in Unterprogramme (Prozedur) einzuteilen und als Module zusammen zu fassen. Auf diese Art und Weise können Programmteile von verschiedenen Menschen programmiert werde. Mittlerweile ist die Entwicklung der Hochsprachen so weit fortgeschritten, dass der Begriff als solcher relativ geworden sind und im Bezug auf die jeweils zugrunde liegende, vorangegangene Sprache gesehen werden muss. So ähnlich wird auch die Fotobuch Software entwickelt. Diese Programmierung ist aber weitaus aufwendiger, da hier auf Detail und bestimmte Programmfunktionen geachtet wird.

Programmiersprachen: Stufen der Künstlichen Intelligenz

Da bei den 3GLs die Aufgabenstellung des Programms oft schwer aus dem Quelltext heraus zu lesen ist, wurden 4GLs ( 4th Generation Language, z. Bsp. SQL) entwickelt, die für bestimmte Problemlösungen eingeführt wurden und durch den Code dem Computer mitteilen, WELCHES Problem gelöst werden soll. Die 3GLs übermitteln nur das WIE der Lösung. 4GLs sind darauf ausgerichtet, schnell und mit wenig Aufwand komplette Anwendungen, wie beispielsweise eine Software zur Erstellung von Horoskope, zu schreiben. Der Begriff als solches ist schwer definierbar und dient hauptsächlich Marketingzwecken. Kern der Entwicklung ist jedoch, die Vorteile und Funktionen der Drittgenerationssprachen mit kürzeren und verständlicheren Programmen darzustellen. Auch die Lesbarkeit wurde erweitert und somit eine bessere Wartung und Erweiterbarkeit der Programme erreicht. Das daraus folgende Ergebnis ist eine Reduzierung der Kosten im Allgemeinen. Noch höher entwickelt sind die KI Sprachen (Künstliche Intelligenz), die aufgrund bestimmter Regeln und Mechanismen, Probleme selbständig lösen. Es geht dabei im Wesentlichen um die Automatisierung intelligenten Verhaltens. Grundproblem ist nach wie vor die Ungenauigkeit der gängigen Definitionen von Intelligenz. Man unterscheidend zwischen starker KI und schwacher KI. In der schwachen KI geht es darum, konkrete Probleme zu meistern, im Speziellen solche, bei denen man annimmt, dass zur Lösung Intelligenz notwendig sei. Es handelt sich also um die Simulation intelligenten Verhaltens mit Hilfe von Mathematik und Informatik. Die Fortschritte der schwachen KI kann als bedeutend eingestuft werden, wohingegen die starke KI, die eine Intelligenz schaffen möchte, die kreativ denkt und eine Art Bewusstsein vorweisen kann, an den eigenen philosophischen Fragen bisher gescheitert ist.