www.wikidata.de-de.nina.az
Dieser Artikel beschaftigt sich mit dem allgemeinen Begriff Interpreter in der Softwaretechnik Weitere Bedeutungen unter Interpreter Begriffsklarung Dieser Artikel ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Der Artikel insbesondere geschichtliche Angaben sowie subjektive Aussagen sollten mit Belegen versehen werden Als Interpreter wird ein Computerprogramm bezeichnet das eine Abfolge von Anweisungen anscheinend direkt ausfuhrt 1 wobei das Format der Anweisungen vorgegeben ist Der Interpreter liest dazu eine oder mehrere Quelldateien ein analysiert diese und fuhrt sie anschliessend Anweisung fur Anweisung aus indem er den dafur vorgesehenen Programmcode eventuell uber Zwischenschritte schliesslich als Maschinencode fur das jeweilige Computersystem direkt ausfuhrt Interpreter sind deutlich langsamer als Compiler bieten im Allgemeinen jedoch eine bessere Fehleranalyse 1 Interpreter werden sowohl bei Programmiersprachen als auch bei Computerprogrammen sowie Kommandozeileninterpreter verwendet Inhaltsverzeichnis 1 Verwendung 1 1 Programmierung 1 2 Computerprogramme 2 Eigenschaften 2 1 Geschwindigkeitssteigerungen 2 2 Zwischencode 2 3 Mischformen 3 Interpretersprachen 4 EinzelnachweiseVerwendung BearbeitenProgrammierung Bearbeiten Bei der Programmierung ist ein Interpreter fast immer ein Bestandteil der Softwareentwicklung In ihrer Reinform ubersetzen Compiler im Unterschied zu Interpretern die Anweisungen aus den Quelldateien in einem oder mehreren Durchlaufen in Maschinencode fur ein vorher festgelegtes Zielsystem und erstellen so ein ausfuhrbares Computerprogramm Jedoch gibt es bereits hier die Unterscheidung zwischen Compiler Compiler und Interpreter Compiler genauso wie es auch Interpreter Interpreter und Compiler Interpreter gibt 2 Any good software engineer will tell you that a compiler and an interpreter are interchangeable Jeder gute Software Entwickler wird Ihnen sagen dass Compiler und Interpreter austauschbar sind Tim Berners Lee Torben AEgidius Mogensen Introduction to Compiler Design Springer Science amp Business Media London 2011 ISBN 978 0 85729 828 7 englisch eingeschrankte Vorschau in der Google Buchsuche Ist die letzte Stufe ein Interpreter so erfolgt die Ubersetzung der Quelldatei zur Laufzeit des Programms 3 4 Programmiersprachen die Quelltext nicht kompilieren sondern eine Eingabe oder eine Quelldatei stets interpretieren werden auch als Interpretersprache oder Skriptsprache bezeichnet Klassische Interpretersprachen sind z B Tcl JavaScript oder einige BASIC Varianten Bei einigen Programmiersprachen kann zwischen Interpreter und Compiler gewahlt werden So befand sich im ROM der meisten 8 Bit Computer wie dem C64 fur eine flussige Programmentwicklung ohne Kompilierphasen ein BASIC Interpreter zur Beschleunigung fertigentwickelter Programme konnte ein kompatibler Compiler z B BASIC BOSS extern geladen werden Auch die meisten Versionen von MS DOS beinhalteten einen BASIC Interpreter z B GW BASIC zu dem ein kompatibler Compiler hier BASCOM erworben werden konnte Bei einigen Programmiersprachen wird auch ein Bytecode als Zwischencode erzeugt der bereits optimiert ist jedoch zur Ausfuhrung abermals einen Interpreter auf dem Zielsystem benotigt Computerprogramme Bearbeiten Skripte fur Kommandozeileninterpreter etwa Stapelverarbeitungsdateien oder Unix Shell Skripte werden ebenfalls von einem Interpreter ausgefuhrt Damit das Skript nicht als Kommandozeilen Parameter angegeben werden muss gibt es auf Unix artigen Systemen und Shells das sogenannte Shebang das Skript ruft sich damit den passenden Interpreter mithilfe der Shell sozusagen selbst auf Bei Computerprogrammen spricht man ebenfalls von Interpretern sobald der Code nicht direkt vom Computersystem ausgefuhrt werden kann oder soll Dies ist u a bei Emulatoren ebenfalls der Fall die Maschinencode fur andere Computersysteme analysieren umschreiben und fur das Computersystem auf dem sie gerade laufen interpretiert ausfuhren Virtuelle Maschinen zahlen jedoch nicht dazu da diese grosse Teile des Maschinencodes des Gastsystems auf dem Hostsystem uninterpretiert direkt ausfuhren Auch Game Engines konnen Interpreter sein wenn sie die eigentlichen Spieledaten meist als Bytecode auf der jeweiligen Plattform interpretiert ausfuhren Eigenschaften BearbeitenInterpreter liegen zumeist in Maschinensprache des Zielprozessors vor konnen aber auch selbst wieder in einer Interpretersprache vorliegen Der grosste Nachteil ist dabei die gegenuber einem Compiler geringere Ausfuhrungsgeschwindigkeit Diese ist der Tatsache geschuldet dass der Compiler sich wahrend des Kompilierungsprozesses die Zeit nehmen kann den Code zu optimieren der somit auf dem jeweiligen Zielsystem schneller ausgefuhrt wird Derlei Optimierungen sind jedoch zeitaufwendig sodass ein Interpreter meist eine direkte Umsetzung auf Maschinencode durchfuhrt was jedoch in Summe wieder langsamer ist als der optimierte Code durch den Compiler Interpretierter Code ist in etwa funf bis 20 Mal langsamer als kompilierter Code 5 Zu den Vorteilen von interpretiertem Code zahlt neben der besseren Fehleranalyse die Unabhangigkeit von einer vorher festgelegten Rechnerarchitektur denn interpretierter Code lauft auf jedem System auf dem es einen Interpreter dafur gibt Geschwindigkeitssteigerungen Bearbeiten Eine Kompromisslosung ist ein Just in time Compiler JIT Compiler bei dem das Programm erst zur Laufzeit jedoch direkt in Maschinencode ubersetzt wird Danach wird der ubersetzte Code direkt vom Prozessor ausgefuhrt Durch Zwischenspeicherung des Maschinencodes mussen mehrfach durchlaufene Programmteile nur einmal ubersetzt werden Auch ermoglicht der JIT Compiler eine starkere Optimierung des Binarcodes JIT Compiler sind allerdings nur auf einer bestimmten Rechnerarchitektur lauffahig weil sie Maschinencode fur diese Architektur erzeugen und benotigen weit mehr Arbeitsspeicher als reine Interpreter 5 Zwischencode Bearbeiten Eine weitere Zwischenstufe sind Bytecode Interpreter Dabei wird der Quelltext vorab oder zur Laufzeit in einen einfachen Zwischencode ubersetzt der dann von einem Interpreter auch haufig als virtuelle Maschine bezeichnet ausgefuhrt wird Dies ist z B bei Java durch die Java Virtual Machine JVM der Fall Es entspricht dem Konzept Compiler Interpreter da der Zwischencode bereits in Teilen optimiert kompiliert wurde Quelltext Compiler Zwischencode als Bytecode Interpreter Ausfuhrung auf dem Zielsystem Besonders in den 1980er Jahren benutzte man die Zwischenstufe Befehle zum Eingabezeitpunkt in leichter dekodierbare Tokens umzuwandeln die bei der List Ausgabe wieder in Klartext umgewandelt wurden Neben der Geschwindigkeitssteigerung war die Kompression des Quelltextes ein gewichtiges Argument Prinzipiell war es damit auch moglich jeweils muttersprachliche Schlusselworter zu verwenden wenn man den Datenaustausch auf Basis des tokenisierten Quellprogramms durchfuhrte Mischformen Bearbeiten Da JIT Code nicht automatisch schneller ist als interpretierter Code verwenden manche Laufzeitumgebungen eine Mischform Ein Beispiel dafur ist die JVM Dabei wird der JIT Compiler parallel mit dem Interpreter verwendet wobei der jeweils schnellere Ausfuhrungspfad gewinnt 6 Interpretersprachen BearbeitenDieser Artikel oder Abschnitt bedarf einer grundsatzlichen Uberarbeitung Naheres sollte auf der Diskussionsseite angegeben sein Bitte hilf mit ihn zu verbessern und entferne anschliessend diese Markierung Als Interpretersprachen werden haufig Programmiersprachen bezeichnet deren Haupt oder Erstimplementierung ein Interpreter ist als Gegenteil zu einer Programmiersprache die einen Compiler verwendet Compilersprache 7 Grundsatzlich ist eine Programmiersprache nicht an eine Art der Implementierung gebunden und es existieren Mischformen aus den beiden gegenteiligen Ansatzen Es gibt jedoch auch Programmiersprachen die unter Gesichtspunkten der spateren Implementierung gestaltet wurden dies ist bei manchen alteren Sprachen noch gut zu erkennen So mussten Interpreter aufgrund der geringen Leistungsfahigkeit der fruhen Computer moglichst einfach und klein gehalten werden um nicht zu viel Rechenzeit und Arbeitsspeicher zu verbrauchen Compiler hingegen konnten viel Rechenzeit und auch viel Arbeitsspeicher verbrauchen denn wenn das Programm lief waren sie nicht mehr aktiv Deshalb wurden Sprachen die interpretiert werden sollten so gestaltet dass sie einfach analysiert und ausgefuhrt werden konnen wohingegen Sprachen die kompiliert werden sollten auch aufwandig zu analysierende und bearbeitende Konstrukte enthalten konnten Heute spielt dies beim Entwurf einer Programmiersprache nur noch in den allerseltensten Fallen eine Rolle Fur einige Sprachen existieren verschiedenartige Implementierungen Hierbei sticht die Sprache Scheme hervor fur die eine unuberschaubare Vielzahl an Implementierungen existiert die auf vielen verschiedenen Konzepten basieren Hierzu noch ein Beispiel Die Programmiersprache C ist sehr stark darauf ausgelegt kompiliert zu werden Doch es existieren trotzdem Interpreter wie der CINT und der Ch fur diese Sprache und das obwohl C oft als ein Paradebeispiel fur eine Sprache genannt wird die keine Interpretersprache sondern eine Compilersprache ist Als Interpretersprachen bekannt sind APL BASIC Forth Perl Python Ruby PHP und viele andere 4 Als eine Unter oder verwandte Kategorie der Interpretersprachen werden manchmal die Skriptsprachen genannt Bekannte Programmiersprachen die ublicherweise in Bytecode ubersetzt werden sind Java C Perl und Python Fur manche Sprachen etwa Smalltalk gibt es je nach Anbieter Interpreter Bytecode Interpreter JIT Compiler oder Compiler in andere Sprachen beispielsweise nach C oder fur NET Plattformen Der Ubergang zwischen reinen Interpretern und reinen Compilern ist fliessend Einzelnachweise Bearbeiten a b Alfred V Aho Monica S Lam Ravi Sethi Jeffrey D Ullman Compiler Prinzipien Techniken und Werkzeuge Pearson Deutschland GmbH 2008 ISBN 978 3 8273 7097 6 S 1253 eingeschrankte Vorschau in der Google Buchsuche Julius T Tou Software Engineering Proceedings of the Third Symposium on Computer and Information Sciences held in Miami Beach Florida December 1969 Academic Press New York London 1970 ISBN 978 0 323 15744 5 S 288 englisch eingeschrankte Vorschau in der Google Buchsuche Was ist ein Interpreter XOVI Abgerufen am 29 Mai 2019 a b Michael Burger Interpretersprachen Archiviert vom Original am 10 September 2017 abgerufen am 29 Mai 2019 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www bg bib de a b David A Watt Compiler Construction 9th International Conference CC 2000 In Lecture Notes in Computer Science Volume 1781 Springer Verlag Berlin Heidelberg New York 2000 ISBN 978 3 540 67263 0 S 300 englisch eingeschrankte Vorschau in der Google Buchsuche R Nageswara Rao Kogent Solutions Inc Core Java An Integrated Approach Covers Concepts Programs and Interview Questions Dreamtech Press New Delhi 2008 ISBN 978 81 7722 836 6 S 664 englisch eingeschrankte Vorschau in der Google Buchsuche Christian Wagenknecht Michael Hielscher Formale Sprachen abstrakte Automaten und Compiler Lehr und Arbeitsbuch fur Grundstudium und Fortbildung Springer Verlag 2009 ISBN 3 8348 0624 2 eingeschrankte Vorschau in der Google Buchsuche Normdaten Sachbegriff GND 4162129 3 lobid OGND AKS Anmerkung Ansetzungsform GND Interpretierer Abgerufen von https de wikipedia org w index php title Interpreter amp oldid 228097021