Quellcode

Der Quellcode ist eine Folge von Anweisungen oder Befehle in einem Programm. Er ist in einer Programmiersprache geschrieben und kann in eine Maschinensprache mittels eines Compilers übertragen werden.  Der Compiler erstellt dann eine ausführbare Datei.  Wird der Quellcode unmittelbar übersetzt und Zeilenweise ausgeführt geschieht dies durch einen Interpreter. Die Datei-Endung des gespeicherten Quellcodes gibt meistens einen Hinweis auf die verwendete Programmiersprache.                                                     
Siehe auch:    Programm   software   Quelldatei   Compiler   Interpreter   PHP   

  Datei-Endung-ASM

*.ASM Assembler Quelltext                                                         
Siehe auch:    Dateierweiterungen   Datei-Endung-JS   Datei-Endung-BIN   

  Webserver

Ein Webserver ist ein Server im Internet oder Intranet, der ein oder mehrere Webseiten und Dienste verwaltet. Wird mittels eines Web-Browsers eine Internet-Adresse aufgerufen, wird dies dem Webserver mitgeteilt.  Der Webserver überprüft, ob die gewünschte Adresse direkt zugänglich ist oder gibt, wenn die angeforderte Adresse nicht gültig ist, eine Fehlermeldung aus. Die Informationen werden zu den WWW-Clients mittels Hypertext Transfer Protocol  übertragen.

Webserver-Leistungen und Webserver-Technologien
Ein Webserver kann CGI-Skripte, serverseitige Scriptsprachen und Programme wie PHP und MySQL, JSP und  ASP sowie Server Container (Servlets, ASP.NET und Sprachen der .NET Framework Laufzeitumgebung Common Language Runtime (CLR) bzw. der  Common Language Infrastructure (CLI) wie Visual-Basic.NET, C++.NET, J# oder C++/CIL) oder Web Services (XML-RPC, SOAP) zur Verfügung stellen.  Diese programmierten Teile der Webseiten werden nur auf dem Webserver ausgeführt und sind auch für die User nicht sichtbar. Die WWW-Clients bekommen auf ihren Web-Browser nur den HTML-Quelltext zu sehen. 

Bekannte Webserver
Bekannte Webserver sind z. B.: Apache-HTTP-Server, IIS (Internet-Information-Server) von Microsoft (heute: Internet Information Services),  NCSA-Server (National Center for Supercomputing Applications) und CERN-Server. Das NCSA ist auch bekannt für den Browser NCSA-Mosaic, einer der ersten Internet Browser, der ausser Text auch Grafiken darstellen konnte,  ohne diese extra laden zu müssen. Bekannte Server die hauptsächlich für die Entwicklung von Webseiten bzw. als Applikationsserver verwendet werden sind:  Apache Tomcat oder BEA WebLogic Server. Letztere werden vor allem bei Servlets und JSP bzw. serverseitigen Java Umgebungen eingesetzt. 

Logfiles und Logfile-Analyse
Datenverkehr auf dem Webserver wird in Logfiles gesammelt ("geloggt") und ausgewertet. Damit kann man bestimmen,  welcher Agent mit welcher IP-Adresse was auf welcher Webseite gemacht hat (Visits, Views, Hits, Files, Kilobytes usw.). Die Analyse  der Logfiles kann mit speziellen Logfile-Auswertungs-Tools erleichtert werden. Oftmals müssen Suchmaschinen-Bots (Robots, Spider, Crawler), Web-Crawler bzw. Web-Spider (z. B. Majestic12) oder Offline-Browser (z. B. HTTrack, Website Extractor)  herausgefiltert werden. Manchmal ist es besser, ungewünschte Agents aus zu schliessen, z. B. im Script oder durch Editieren der robots-dot-txt.  HTTP ist ein verbindungs- und zustandsloses Protokoll, so dass eine eindeutige Zuordnung nicht immer möglich ist. Zu dem können vorgeschaltete Proxy-Server diese Zuordnung erschweren, da sie sich gegenüber dem Webserver als Client ausweisen.  Ausser den bereits Genannten folgt hier eine Auswahl weiterer Webserver: Zope, Cherokee Webserver, AOLserver, Tux, Goron, Caudium, lighttpd (BSD) oder Litespeed.                           
Siehe auch:    Web-Service   Logdatei   Server-Error   Offline-Browser   Apache-HTTP-Server   PHP   Apache-Tomcat   JSP   SOAP   Zope

  Compiler

Ein Compiler (oder Übersetzer) ist eine Software, die einen Quelltext in ein lauffähiges Programm übersetzt. Die Übersetzung erfolgt meist von einer strukturierten höheren Programmiersprache in eine semantisch äquivalente Zielsprache wie Assembler,  Bytecode oder Maschinensprache. Die Kompilierung erfolgt meist in 3 Phasen:

1. Lexikalische Analyse: Durchsuchen des Quelltextes und Zerteilen in Tokens verschiedener Klassen wie: Schlüsselwörter, Operatoren, Bezeichner, Zahlen und Formulierungen.  Dieser Teil des Compilers wird auch als Scanner oder Lexer bezeichnet.

2. Syntaktische Analyse und

3. Semantische Analyse: Validierung der Befehle, der Variablen, der Datentypen  und der korrekten Beziehung der Befehle untereinander. Codegenerierung: Auswertung der Datenstrukturen aus Phase 2 und Erzeugung des korrekten Maschinencodes (Bytecode, Assemblercode).

Einige Compiler erzeugen einen Zwischencode. Dieser ist schon  maschinennah. Auf diesem Zwischencode werden z. B. Optimierungen durchgeführt, wenn mehrere Zielplattformen unterstützt werden.  Wenn ein Compiler den Code für die Plattform, auf der er selber ausgeführt wird, erzeugt, so spricht man von einem Native Compiler. Ansonsten handelt es sich um einen Cross-Compiler. Ein Single-pass Compiler erzeugt den Zielcode in einem Durchlauf. Ein  Multi-pass Compiler benötigt dafür mehrere Zwischenschritte und kann daher auch weitergehendere Optimierungen durchführen.
Wenn ein Compiler aus dem Quellcode einer Programmiersprache den Quellcode einer anderen erzeugt (z. B. C in C++) so spricht man  von einem Transcompiler. Ein Compiler-Compiler ist in der Lage, einen Compiler oder Compilerteile zu erzeugen. Der Compreter erzeugt aus dem Quellcode zunächst einen Zwischencode, welcher dann nicht in einen fertigen, lauffähigen Bytecode übersetzt  wird, sondern zur Laufzeit interpretiert wird.  Bekannte Compiler-Sprachen sind COBOL, Fortran, PASCAL, C, C++ oder Java.                                       
Siehe auch:    Assembler   Byte   Interpreter   Parser   Linker   Lexer   Programmiersprache-C   JIT-Compiler   C-Plus-Plus   Java

  Interpreter

Ein Interpreter übersetzt den Quelltext einer Programmiersprache Anweisung für Anweisung und führt ihn direkt aus. Die Analyse erfolgt also zur Laufzeit des Programmes. Es wird im Unterschied zu Compilern und Assemblern keine auf dem System direkt  ausführbare Datei erstellt. Nachteil von Interpretern ist die geringere Ausführgeschwindigkeit. So müssen beispielsweise Anweisungen in Schleifen bei jeder Iteration neu übersetzt werden. Bekannte Interpretersprachen sind: BASIC, PHP, Perl, Python, Ruby.  Just-in-Time Compiler sind Zwischenlösungen und können einen Geschwindigkeitsvorteil erbringen. Auch hier wird das Programm zur Laufzeit übersetzt, jedoch direkt in Maschinencode, der direkt vom Prozessor ausgeführt wird. Da der Maschinencode  zwischengespeichert wird, müssen mehrfach zu durchlaufende Programmteile nur einmal übersetzt werden. Ein Bytecode-Interpreter wiederum übersetzt den Quelltext zur Laufzeit vor seiner Ausführung in Zwischencode. Dieser Zwischencode wird von einem  Interpreter ausgeführt (virtuelle Maschine).                                                 
Siehe auch:    Compiler   PHP   JIT-Compiler   BASIC   Quellcode   Parser   Linker   Lexer   

  Parser

Ein Parser ist eine Software die die Syntax einer Sprache analysiert. Ein Parser entscheidet, ob ein Quelltext valide ist bezogen auf eine formale Sprache mit einer vorgegebenen Grammatik. Parser werden beispielsweise von Compilern eingesetzt, oder von  einem Browser der aus HTML eine Beschreibung einer Webseite als Datenstruktur macht, welche die Grafik-Engine des Browsers auf den Bildschirm überträgt.                                                       
Siehe auch:    Compiler   Interpreter   Linker   Lexer