| Programmiersprache-C | |||||
|
Höhere, strukturierte Programmiersprache, welche in den frühen 70er Jahren im UNIX Umfeld entwickelt wurde. Autor von C ist Dennis Ritchie. C ist eine Hochsprache und verbindet gleichzeitig Assembler-Nähe. Diese seltene Kombination macht C zur idealen Lösung für bestimmte Aufgaben. Im Bild ist der Sortieralgorithmus "Insertion Sort" in C wiedergegeben. |
|||||
| Siehe auch: C-Plus-Plus C-Sharp Java unix Extensible-Firmware-Interface Datei-Endung-H GCC GNU Pseudocode Sortieralgorithmus | |||||
| Java | |||||
|
Java ist eine plattformunabhängige, objektorientierte Hochsprache von Sun Microsystems. Ursprünglich zur Programmierung von Haushaltsgeräten entwickelt, mauserte sich Java zu einer Erfolgsstory mit Zukunft. Java kann auf allen Systemen ausgeführt werden, auf der die Java Virtual Machine (JVM) installiert ist. Somit ist Java plattformunabhängig. Von C++ abgeleitet (jedoch ohne Zeigerarithmetik) können mit Java ausser Anwendungen auch Applets für das Internet erstellt werden. Java wird zunächst in Bytecode umgewandelt und dann in einer speziellen Java-Laufzeitumgebung, dem Java Runtime Environment (JRE) von einem Just-in-Time-Compiler ausgeführt. Bestandteile dieser Java-Laufzeitumgebung sind die Java Virtual Machine und die Java-Klassenbibliotheken. Die JVM interpretiert den Bytecode. Java unterscheidet zwischen Schnittstellen und Klassen und unterstützt keine direkte Mehrfachvererbung. Mit Hilfe der Reflection-API ist es Java möglich, zur Laufzeit auf Methoden und Klassen zuzugreifen, deren Zustand oder Existenz zur Zeit der Erstellung des Java-Programmcodes noch nicht bekannt war. Seit Java 5 erlauben sog. Annotations die Einbindung von Metatdaten. Damit sind in gewissem Umfang benutzerorientierte Spracherweiterungen möglich. Java unterstützt Threads und Exceptions sowie eine automatische Garbage Collection (Beseitigung von Datenmüll). Klassen die zusammengehören werden zu Packages zusammengefasst und beginnen mit der verdrehten Internet-Domain des Entwicklers: z. B. com.sun. Sie ermöglichen z. B. eine Begrenzung der Sichtbarkeit von Klassen. Im Bild ist der Sortieralgorithmus "Insertion Sort" in Java wiedergegeben. |
|||||
| Siehe auch: Sun-Microsystems JIT-Compiler JSP Java-Servlet J2EE Applet Objektorientierte-Programmierung Laufzeitumgebung Laufzeitsystem Sortieralgorithmus | |||||
| C-Plus-Plus | |||||
|
C++ ist eine Weiterentwicklung von C und wurde 1985 von Bjarne Stroustrup präsentiert. Basierend auf C ist C++ jedoch objektorientiert. Mit C++ ist sowohl eine maschinennahe als auch eine gut strukturierte Entwicklungsarbeit möglich. C++ Merkmale und Datenabstrahierung, Konzepte der Objekt-orientierten Programmierung Prinzipien der Datenabstraktion als auch generische Programmierung sind in C++ implementiert. Weitere Merkmale sind: prozedurale und modulare Programmierung, virtuelle Funktionen, Ausnahmenbehandlung, Namensräume, Templates, Inline-Funktionen, Boolesche Typen, Typumwandlungen, Referenzen, die Möglichkeit zum Überladen von Operatoren und die C++ Standardbibliothek. Typische Elemente des Klassenkonzeptes wie Polymorphismus, Vererbung (Inheritance) oder Destruktoren und Konstruktoren sowie das OOP-Konzept sind Teil von C++. C++ Entwicklung begann 1979 bei AT&T Stroustrup begann schon 1979 bei AT&T C++ zu entwickeln. Er erweiterte später C um ein Klassenkonzept und liess seine Erfahrungen mit Simula mit einfliessen. C++ hat wiederum Ada, Java, PHP und C# beeinflusst. Implementierungen von C++ sind in der GNU Compiler Collection vorhanden, sowie durch Microsoft Visual C++ oder Borland C++ Builder erhältlich. C++ heisst nicht D, da es als Erweiterung von C um die Objekt-Orientierung gedacht war und dem User ersparen sollte, mit zu viel Code-Zeilen zu tun zu haben. C++ extrahierte einige Aspekte der Objekt-Orientierung und das Klassenkonzept von Simula, von Ada die Templates und Exceptions. Mit C++ soll eine bessere Datenabstrahierung als mit C möglich sein. C++-Literatur, Journale und Events Weiterführende Informationen über C++ findet man neben der Literatur von Stroustrup und anderen Autoren in eBooks, dem Journal of Object Oriented Programming (JOOP), den C++ Report oder dem C++ Users Journal oder in "Object". Bekannte C++ Events sind die C++ World, Application Development, Object Technology, OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications), ECOOP (European Conference on Object-Oriented Programming) oder TOOLS (Technology of Object-Oriented Languages and Systems). Im Bild ist der Sortieralgorithmus "Insertion Sort" in C++ wiedergegeben. |
|||||
| Siehe auch: Programmiersprache-C C-Sharp Objektorientierte-Programmierung GCC Dot-NET ASP-Dot-NET Managed-C-Plus-Plus C-Plus-Plus-CLI Java Sortieralgorithmus | |||||
| Pseudocode | |||||
|
Mit Pseudocode kann man in einem programmierähnlichen Stil ein Programm umreissen bzw. "skizzieren". Es gibt keinen einheitlichen Pseudocode, er kann dem Stil des Programmierers angepasst werden und dient zur ersten Darstellung eines Programmcodes oder von Teilen bzw. Fragmenten von Programmcode um ihn für die eigentliche Programmierung vorzubereiten. Dabei wird der Code auf Machbarkeit oder Schwächen geprüft, Module angerissen um Schnittstellen zu definieren. Psudocode ist grundsätzlich niemals lauffähig auf einer Maschine oder compilierfähig. Er kann auch mit Struktogrammen und z. B. Petri-Netzen ergänzt werden um ein Programm zu umreissen. Pseudocode dient auch der Überprüfung und Machbarkeit von Algorithmen und deren Syntax, der ergänzend zu Nassi-Shneiderman Diagrammen und Flussdiagrammen eingesetzt wird. Als Stilelemente dienen im Pseudocode ähnliche Schlüsselwörter wie bei strukturierten Programmiersprachen, die Schleifen, Bedingungen, Wiederholungen, Fallunterscheidungen, Kommentare, Funktionen, Klassen, Abfragen oder Module einleiten. Der Sortieralgorithmus Insertion Sort wurde im Bild mit Pseudocode dargestellt. |
|||||
| Siehe auch: Programm Programmiersprache-C Strukturierte-Analyse Syntax Ablaufdiagramm UML Sortieralgorithmus | |||||
| Sortieralgorithmus | |||||
|
Sortieralgorithmen sortieren Zahlen oder Buchstaben nach deren natürlichen Reihenfolge bzw. dem Alphabet. Die Effizienz eines solchen Algorithmus kann bei hohen Datenbeständen entscheidende Auswirkungen auf die einzusetzenden Ressourcen haben. Viele Unternehmen oder Organisationen arbeiten mit grossen Datenbeständen und benötigen zu deren Organisation effiziente Algorithmen. Auch ganze Zeichenketten können sortiert werden, wenn man vorher eine lexikographische Ordnung vorgibt, wie z. B. bei dem ASCII-Zeichensatz. Die Komplexität des Algorithmus wird mit dem Landau Symbol angegeben. Ein Algorithmus hat dann beispielsweise bei n zu sortierenden Elementen eine Laufzeit mit dem konstanten Grenzwert von Θ (für Theta) n * Log (n). Das Landau Symbol Theta (Θ) bedeutet hier eine konstant gleich wachsende Funktion, also linear wachsend. Θ n* Log (n) ist dann ein effizienter Algorithmus: man bezeichent ihn als super-linear. Die Laufzeit und der Ressourcenverbrauch des Suchalgorithmus, also die Effizienz, hängen auch vom Ausgangszustand der zu sortierenden Zeichenkette ab. Man unterscheidet zwischen Best Case, Average Case und Worst Case, wobei der Worst Case ein strenger Maßstab für den Algorithmus ist. Arten von Sortierverfahren Weitere Unterscheidungskriterien für Sortieralgorithmen sind, ob sie unabhängig von der Anzahl der Elemente in der Zeichenkette einen bestimmten Speicherraum allozieren (in-place oder in situ) oder ob das nicht der Fall ist (out-of-place, ex situ). Stabile Sortieralgorithmen liefern als Ergebnis ganz sicher eine Zeichenkette in der vorgesehenen Reihenfolge, instabile können dies nicht garantieren. Manche Sortierverfahren arbeiten bei vorsortierten Daten besser (adaptiv), bei manchen ist dies unabhängig vom Grad der Unordnung in der Zeichenkette (nicht adaptiv). Einzelne Sortierverfahren 1. Bubblesort: Bubblesort ist ein stabiler, nicht rekursiver Algorithmus, der im Worst Case eine Komplexität von Θ (n ²) bzw. Θ (n ²)/2 hat. Bubblesort ist in-place und vergleicht immer zwei Nachbarn um sie im Falle einer falschen Reihenfolge zu vertauschen. Dazu sind meistens mehrere Durchläufe notwendig, wobei die grösseren bzw. kleineren Zahlen wie Bubbles (Blasen im Wasser) nach oben steigen. Man bezeichnet auch ein Zahlenpaar, welches zu vertauschen ist, als 'Bubble'. 2. Insertion Sort: Insertion Sort ist ein stabiles, nicht rekursives Sortierverfahren, arbeitet in-place. Die Komplexität im Worst Case beträgt ebenso wie bei Bubble Sort Θ (n ²) bzw. Θ (n ²)/2. Insertion Sort ist ein einfacher, wenig effizienter Sortieralgorithmus der jedoch gute Ergebnisse bei vorsortierten Zeichenketten oder bei wenig Elementen aufzuweisen hat, und leicht zu implementieren ist. Das eigentliche Finden der korrekten Einfügeposition kann durch eine binäre Suche relativ effizient erfolgen, während die Verschiebe-Operationen auf dem Array, auf dem der Algorithmus oft arbeiten muss, weniger effizient sind. Man kann Insertion Sort vom Sortierprinzip mit einem Stapel Karten vergleichen, die nacheinander aufgedeckt werden und entsprechend auf der Hand eingeordnet werden. Die Einfügeposition wird ermittelt, indem die einzufügende Karte nacheinander mit den auf der Hand befindlichen Karten verglichen wird. 3. Heapsort Heapsort ist ein nicht stabiles, nicht rekursives aber effizientes Sortierverfahren. Die Komplexität von Heapsort beträgt im Worst Case Θ (n * (log (n)). Heapsort ist eine Weiterentwicklung von Selection Sort und arbeitet in-place. Die Daten müssen für Heap Sort in einem binären Heap vorliegen oder vorher in einen solchen überführt werden. Ein binärer Heap ist eine Datenstruktur, die man wie eine Prioritätswarteschlange (priority queue) einsetzen kann. In einem binären Heap kann man Elemente in beliebiger Reihenfolge effizient und mit festgelegter Priorität in den Heap hineinlegen und stets das Element mit höchster Priorität entnehmen. Die Priorität wird durch Schlüssel aufgeprägt. Bei einem Min-Heap bildet der kleinste Schlüssel die Wurzel des Baumes und alle Nachfolger sind grösser, bei einem Max-Heap ist es genau umgekehrt. Bei einem Array ist für die zweite Hälfte des Array die Heap-Eigenschaft immer erfüllt, denn jeder Knoten in der zweiten Hälfte des Arrays entspricht im Heap einem Blatt und hat folglich keinen Nachfolgeknoten, dessen Wert grösser sein kann als der eigene Wert. Um ein Array in einen Heap zu überführen werden alle vor der Array-Mitte liegenden Knoten nacheinander versickert, d.h. dass ein Knoten mit dem grösseren seiner nachfolgenden Knoten vertauscht wird, falls dieser Grösser als er selber ist, bis es keinen Nachfolgeknoten mehr gibt, der grösser ist, und das Ganze wird solange fortgesetzt, bis das erste Element versickert wurde. Bei einem Max Heap nutzt der Sortieralgorithmus den Aufbau des Max-Heap, bei dem der erste Knoten stets grösser ist als alle Nachfolgenden, also die Wurzel der grösste Knoten ist. Man vertauscht also den ersten Knoten (die Wurzel) mit dem letzten Element des Heap, so dass dann der grösste Wert wunschgemäss hinten steht. Dann wird der Rest des Heap wieder in einen Max-Heap überführt, indem das erste Element versickert wird. Dann wird wieder die neue Wurzel getauscht, und zwar mit dem vorletzten Element usw. 4. Mergesort Mergesort ist ein stabiler, rekursiver Sortieralgorithmus. Komplexität ist im Worst Case Θ (n * (log (n)), bei Arrays auch Θ (n). Mergesort verwendet das Prinzip 'Teile und Herrsche' (Divide et Impera). Mergesort ist out-of-place. Das Sortierprinzip von Mergesort geht folgendermaßen vor: eine zu sortierende Liste wird in kleinere Teil-Listen aufgeteilt, die jede für sich sortiert wird. Danach werden die Listen wieder zusammengeführt (to merge). Für Mergesort geeignet sind verkettete Listen, so dass sich eine in-place Sortierung ergeben kann. 5. Quicksort: Quicksort ist nicht stabil, rekursiv und in-place. Komplexität im Worst Case: Θ (n ²), im Average Case: Θ (n * (log (n)). Quicksort arbeitet wie Mergesort nach dem Teile und Herrsche Prinzip: die Ausgangsliste wird in 2 Teil-Listen aufgeteilt. Dafür wird ein Pivotelement aus der Liste gewählt. Alle Elemente die kleiner sind als das Pivotelement kommen in die linke Teil-Liste, alle die grösser sind in die Rechte. Danach werden die Teillisten in sich sortiert, mit demselben Verfahren, d.h. durch Aufruf von Quicksort. Quicksort ist deswegen auch rekursiv, weil es sich immer wieder selber aufruft. |
|||||
| Siehe auch: Pseudocode Programmiersprache-C C-Plus-Plus Java Perl LISP algorithmus | |||||
| LISP | |||||
|
List Processing Language (LISP) ist eine höhere Programmiersprache, 1957 am Dartmouth College in den USA entwickelt und 1959 von John McCarthy erstmals auf einem Rechner implementiert. Die Besonderheit von LISP ist die grosse Bedeutung im Bereich der Künstlichen Intelligenz (KI) und der Symbolverarbeitung. Mit List Processing bezeichnete man FORTRAN-Unterprogramme welche auf dem Lambda-Kalkül beruhten. Damit wurden symbolische Berechnungen durchgeführt. Ein Student McCarthy's, Steve Russel, entwickelte einen Interpreter für diese Kalküle und hob damit LISP aus der Taufe. LISP-Sprachelemente LISP besteht aus Skalar- oder Einzelwerten (Atome) und Listen. Die Listen können ineinander verschachtelt werden (Listen von Listen). Mit diesen Elementen können höhere Strukturen wie z. B. Arrays entwickelt werden. Eine weitere Besonderheit von LISP ist die Möglichkeit, Teile von Programmstrukturen zur Laufzeit zu verändern, da LISP-Befehle auch als Listen vorliegen. Dies ermöglicht weitere höhere Strukturelemente zu erschaffen, (z. B. OOP-Elemente, Abfragen oder Verzweigungen u.ä.). Deswegen nennt man LISP auch eine programmierbare Programmiersprache. Weitere Eigenschaften von LISP sind: - Automatische Speicherbereinigung (es muss vom Entwickler kein Speicherplatz für Variablen oder Datenstrukturen reserviert oder freigegeben werden) - keine explizite Deklaration von Datenstrukturen notwendig - durch ein LISP-Symbol können beliebig viele Objekte angesprochen werden. Wegen der dynamischen Speicherbelegung belegten LISP-Programme für damalige Verhältnisse viel Speicherplatz und Ressourcen. LISP-Maschinen Um LISP-Programme schneller ausführen zu können wurden deswegen ab den 70er Jahren spezielle LISP-Maschinen (LispM) entwickelt und vertrieben. Diese LISP-Maschinen sind für LISP-Programme optimiert und verfügen über ein Betriebssystem welches selber in LISP entwickelt wurde. Auch viele Anwendungen wurden in LISP programmiert. LISP-Maschinen bieten eine komfortable Entwicklungsumgebung für LISP-Entwickler, können jedoch auch als reine Application-Server konzipiert sein. Viele moderne Konzepte wie die Fenstertechnik, Computer-Netzwerke, inkrementelle Kompilierung, Mäuse oder Hypertext wurden auf LISP-Maschinen erprobt. Weltweit wurden ca. 7000 LISP Maschinen hersgestellt - die Ära der LISP- Maschinen endete Anfang der 90er Jahre mit dem Aufkommen leistungsfähigerer Mikroprozessoren und grösserer Speicherreserven. Hinzu kam ein zunehmender Pessimismus was KI-Anwendungen anging. LISP-Dialekte Bekannte LISP-Dialekte sind: Common LISP ist heute Industriestandard und beruht auf ZetaLISP Franz LISP und InterLISP erlauben prozedurale, 'unhygienische' Makros sowie dynamische und lexikalische Variablenbildung Scheme erlaubt Continuations: call/cc (call-with-current-continuation), ausschliesslich lexikalische Verbindungen und hygienische Makros, findet wegen ihrer klaren Struktur oft Anwendung im akademischen Bereich AutoLISP (für AutoCAD) MacLISP, Emacs LISP, NewLISP, xLISP JESS: Java-basierte Regel Engine und Obermenge der Programmiersprache CLIPS (C Language Integrated Production System), ein freies Software-Werkzeug zum Entwickeln von Expertensystemen. Im Bild ist der Sortieralgorithmus 'Insertion Sort' in LISP wiedergegeben. |
|||||
| Siehe auch: LISP-Maschine Künstliche-Intelligenz ADA FORTRAN Objektorientierte-Programmierung Metadaten Expertensystem Sortieralgorithmus Roboter Robotik | |||||
| C-Sharp | |||||
|
C# (sprich: C Sharp) ist Teil von Microsofts .NET Architektur. Es ist eine systemeigene Sprache für die .NET Common Language Runtime. Es handelt sich um eine Mischung aus C und C++. Merkmale von C# sind: vereinfachte Typendeklaration, objektorientiert, Typsicherheit und Skalierbarkeit. In Kombination mit der .NET Common Language Runtime (CLR) kann diese Sprache für die Entwicklung komponentenorientierter Software eingesetzt werden, ohne dass die Entwickler ihr Wissen bezüglich C, C++ und den COM-Code ungenutzt lassen müssen. Im Bild ist der Sortieralgorithmus "Insertion Sort" in C# wiedergegeben. |
|||||
| Siehe auch: Programmiersprache-C C-Plus-Plus Dot-NET JIT-Compiler CLR Java Sortieralgorithmus | |||||
| PHP | |||||
|
PHP Hypertext Preprocessor. PHP ist eine Server-Script-Sprache. Wenn ein Browser eine PHP-Seite von einem PHP-fähigen Server abruft, interpretiert der Server den PHP-Code und sendet den resultierenden HTML-Code an den Browser. Der Browser empfängt nur HTML- und nicht PHP-Code. PHP arbeitet oft mit der Open Source Datenbank MySQL zusammen. Dies ist in der Bilderserie dokumentiert, auch ein Insertion Sort Algorithmus in PHP ist dabei. Auch die objektrelationale Datenbank (ORDBMS) PostgreSQL kann durch PHP angesteuert werden. Eine Serversoftware, die oft eingesetzt wird um PHP und MySQL zu unterstützen ist der Apache-HTTP-Server oder der IIS (Microsoft Internet Information Server bzw. Internet Information Services). Für PHP gibt es vorgefertigte Bibliotheken und Module, wie z. B. PEAR (PHP Extension and Application Repository). In PHP können Templates verwendet werden. Ausserdem existiert ein Vielzahl von PHP-Template-Engines: z. B. Smarty oder vLIB. Dadurch werden dem Entwickler Standard-Aufgaben abgenommen. Es gibt Basisobjekte und Pakete, die in den Bibliotheken wiederverwendet werden und Redundanzen in der Softwareentwicklung vermeiden. PEAR ist Open Source und kann auf dem Web-Server installiert werden. Um PHP sicherer zu machen wurde das Hardened PHP Projekt von Stefan Esser ins Leben gerufen. Hardened PHP ist ein Patch, der auf dem Webserver installiert wird und auch Schutz für den Zend Memory Manager sowie Zend Linked Lists bietet. Weiterhin soll Hardened PHP vor internen Exploits durch speziell formatierte Strings schützen (http://www.hardened-php.net/). Suhosin ist ein weiter fortgeschrittenes Schutzpaket für PHP-Scripts. Suhosin schützt den Webserver und den Anwender vor Fehlern in PHP-Scripts und im PHP-Kern. Zend Technologies Die Zend-Engine ist ein PHP-Parser und -Compiler von Zend Technologies Ltd. Zend Technologies Ltd. wurde von Zeev Suraski und Andi Gutmans in Israel gegründet. Die Zend Engine übernimmt die Codeaufbereitung: sie compiliert den PHP-Code vor der Ausführung um Fehler rechtzeitig abzufangen. Nur fehlerfreie Seiten werden von der Zend-Engine an die PHP-Ausführungsschicht übergeben. Der Zend Optimizer optimiert den PHP-Code und wird zur Ausführung von PHP-Code verwendet, der mit dem Zend Guard verschlüsselt wurde. Das Zend Studio ist eine Entwicklungsumgebung (Integrated Development Environment, IDE) für PHP. Das Zend Studio wurde für die Java Plattform entwickelt und ist für Windows, Linux und Mac OS X ausgelegt. Superglobals Allgemein kann empfohlen werden, die Globalen Variablen (register_globals) auf "Off" zu setzen. Um die PHP Scripte sicherer zu machen, empfiehlt es sich weiterhin, externe Variablen mit den Superglobals abzufangen ($_POST, $_GET, $_Server, $_ENV, $_REQUEST, $_SESSION, $_FILES, $_COOKIE, $GLOBALS, $php-errormsg). Siehe auch: http://de3.php.net/reserved.variables. Um eine Manipulation von Variablen zu verhindern sollte man Plausibilitätsprüfungen für die Variablen einbauen. Konfiguration und XAMPP Ab der Version 5 von PHP kann die Registrierung der langen von PHP vordefinierten Arrays ($HTTP-POST-VARS, $HTTP_GET_VARS usw.) mit der Konfigurationsoption register_long_arrays abgeschaltet werden. Die Administration von Einstellungen erfolgt beim Apache-HTTP-Server in der php.ini und der config.inc.php sowie bei MySQL in der my.cnf und beim MySQL-Administrationsprogramm phpMyAdmin ebenfalls in der Datei config.inc.php. Die PHP und MySQL Einstellungen kann man sich durch die Funktion phpinfo(); anzeigen lassen. Diese ist auch als Menüpunkt im XAMPP bzw. WAMPP, LAMPP oder MAMPP Paket zu finden: diese Pakete enthalten den Apache Server, PHP, MySQL (und Perl) und lassen sich leicht aufspielen und administrieren. Sie sind erhältlich für Windows, Linux und Mac OS X. XAMPP ist zu finden, z. B. bei www.apachefriends.org. PHP Optimierung Um bei umfangreichen PHP-Scripts und Projekten Neuübersetzungen zu vermeiden, kann man OpCode-Caches verwenden. OpCode-Caches speichern den erzeugten PHP Code und müssen als Erweiterung eingebunden werden. Die Performance kann bei PHP auch durch die "Autoloading" Methode gesteigert werden. Mit der Funktion __autoload können längere Klassendefinitionen eingebunden werden und müssen nicht über eine lange Liste von include-Anweisungen geladen werden. Bekannte OpCode-Caches sind der Zend-Optimizer, eAccelerator, IonCube-Accelerator und der Alternative PHP Cache. Ausser dem Zend Optimizer sind das alles Open Source und Freeware-Programme. PHP wird seit Version 4 unter der PHP License lizenziert. Bis Version 3 war PHP unter der GPL lizenziert, die Zend-Engine (der neue PHP-Parser) ist jedoch nicht GPL-fähig. PHP kann unter der PHP License frei heruntergeladen und verwendet werden. Das GIMP-Toolkit (GTK+), eine freie Komponentenbibliothek, stellt für PHP eine Grafik-API zur Verfügung. PHP ist prozedural angelegt, verfügt jedoch auch über Komponenten der Objektorientierten Programmierung (OOP). Objekt-Variablen werden seit Version 5 (Zend Engine 2) nur noch als Referenz auf das Objekt und nicht mehr als das Objekt selbst abgelegt. Weiterhin ergänzt wurden Destruktoren und Klassen-Eigenschaften (Private, Protected, Public). Die meisten Bibliotheken sind in PHP noch prozedural angelegt. Seit Version 5 ist die DOM-API objektorientiert. PHP 5.1 bietet zudem mit den PHP Data Objects (PDO) eine OOP-Erweiterung die den einheitlichen Zugriff auf unterschiedliche SQL-Datenbanken (MySQL, PostgreSQL, SQLite) ermöglicht. Eine einheitliche Unicode-Unterstützung soll mit der Zend Engine ab PHP Version 6 erfolgen. Threads und Namensräume fehlen in PHP. Auch förmliche Variablen-Deklarationen können in PHP nicht erzwungen werden. Mit PHP Version 5.2 wird eine verbesserte Speicherverwaltung bereitgestellt, sowie Filter-Erweiterungen, JSON (JavaScript Object Notation), ZIP-Archiv-Unterstützung, und eine objektorientierte Datumserweiterung mit DataTime und DataTimeZone. JSON JSON ist ein sprachenunabhängiges Format zum Datenaustausch zwischen Anwendungen. JSON wird in einer Textform notiert und ist für Rechner und menschliche Anwender einfach lesbar. Datenstrukturen werden mit JSON kompakt notiert und kommen im Vergleich zu XML mit wesentlich weniger Overhead aus. JSON ist ein Datenaustauschformat und implementiert in PHP, Java, C, C#, JavaScript, Perl, Smalltalk, Python und Ruby. |
|||||
| Siehe auch: Apache-HTTP-Server MySQL Webserver PEAR Script Perl Apache-Tomcat Open-Source JSON Objektorientierte-Programmierung | |||||