Was ist eine Entwicklungsumgebung und wozu wird sie gebraucht?

7 Antworten

Eine IDE (Integrated Development Environment) ist die Verbindung aus Editor, in den man den Quelltext in einer Programmiersprache wie Java oder C++ eingibt, und dem Interpreter/Compiler der Programmiersprache, welcher der Quelltext auf unterschiedliche Weise in für den Computer ausführbaren Code umwandelt. Beispiele dafür wären der GNU G++ - Compiler MinGW, oder auch der Python-Interpreter. Beispiele für IDEs sind Code::Blocks, Eclipse und MonoDevelop. IDEs werden im allgemeinen zur Vereinfachung verwendet, da Compiler oft Konsolenprogramme sind, und daher für einige zu schwer zu bedienen, weshalb einem dort die IDE Arbeit abnimmt. Genauso sind Features wie Syntax-Highlighting oder Code-Vervollständigung angenehme Sachen.

Mal mein Senf dazu, wie ich es noch seinerzeit gelernt habe:

Zum Entwickeln von Programmen brauchst du mehrere Werkzeuge.

Da wäre zunächst einmal der Editor. Mit Hilfe des Editors schreibst du das Programm zusammen. Der Editor kann so strunzsimpel sein wie Notepad, das direkt mit Windows mitgeliefert wird, oder auch etwas komplexer und mit mehr Funktionen (farbliche Anzeige, welche Klammern zusammen gehören, automatische Einrückungen, farbliche Unterscheidung von verschiedenen Worten der verwendeten Programmiersprache, auch "Syntax highlighting" genannt) wie z.B. Notepad++.

Dann ist da der Compiler. Das ist ein Programm, welches den von dir im Editor erstellten Programmcode liest und in eine für den Computer sehr viel verständlichere Form unwandelt. Das Ergebnis kann entweder echter Maschinencode sein, der unmittelbar ausführbar ist, oder auch ein Bytecode. Ein Bytecode ist dabei (entgegen einer anderen Antwort hier im Thread) kein fertiger Maschinencode sondern ein Art Zwischenschritt. Es ist ein optimierter und kompakter Code, der aber noch nicht unmittelbar vom Computer verstanden wird, sondern immer noch ein weiteres Programm (eine sogenannte virtuelle Maschine) benötigt, welche dann letztlich den Bytecode in eine dem Prozessor verständliche Sprache übersetzt. Bei Java übernimmt das z.B. die JVM (Java virtual machine).

Damit nicht jeder Programmierer ständig das Rad neu erfinden muss, gibt es noch sogenannte Bibliotheken. Das sind Programmcodeblöcke, in denen sich Funktionen "verbergen", die häufig verwendete Dinge bereits fertig ausführen können. Eine Grafikbibliothek könnte z.B. Funktionen beinhalten, damit du Punkte in verschiedenen Farben auf den Bildschirm zeichnen kannst oder auch Linien oder Bilder in verschiedenen Formaten (BMP, JPG) laden und speichern kannst etc.pp. So eine Bibliothek verfügt auch immer über eine API (application programming interface), das ist eine Art Beschreibung, wie exakt diese Funktionen in der Bibliotehk aufgerufen werden können.
Der Compiler übersetzt jetzt nicht nur deinen Programmcode, sondern er schaut auch noch, ob du die verwendeten API richtig eingebunden hast, wenn du welche verwendet hast.

Als nächste kommt der Linker. Du kannst dein Programm auf verschiedene Arten erstellen. Eine ist, dass du dein Programm als eine Datei compilieren (übersetzen) lässt und dann evtl. verwendete Bibliotheken, Bilder etc. alle einzeln im gleichen Dateiverzeichnis zur Verfügung stellst. Macht man aber oft nicht. Häufig werden all diese ganzen Dateien, die in deinem Programm verwendet werden, zu einer einzigen großen Datei zusammengefügt. Genau das macht der Linker.

Der Debugger ist auch nicht zu vergessen. Der wiederum gibt dir die Möglichkeit, dein Programm Schritt für Schritt ablaufen zu lassen und dir dabei zu jedem Zeitpunkt den genauen Speicherinhalt anzuschauen. Wenn dann irgendetwas in deinem Programm nicht so klappt, wie du das erwartest, gibt dir der Debugger überhaupt erst die Möglichkeit, in deinem Programm nachzuschauen, was da schief läuft.

All das bisher genannte sind einzelne Werkzeuge (und ihrerseits auch wieder Programme), die du dir zu einer vollständigen Programmentwicklung selber zusammensuchen kannst. Du kannst als Editor vi verwenden, als Compiler den GNU C++-Compiler, als Linker den GNU Linker und zum Debuggen, was immer dir gefällt.

Das einzelne Zusammensuchen all dieser Werkzeuge (und noch weiterer, welche die Arbeit des Programmentwicklens erleichtern) ist eine Arbeit, die theoretisch jeder Softwareentwickler erledigen müsste. Aber diese Arbeit wurde bereits verschiedentlich gemacht und es gibt fertige Pakete, die all diese Werkzeuge (und mehr) beinhalten. Diese nennen sich "integrierte Entwicklungsumgebungen", auf englisch "integrated development environment" oder kurz IDE. Wenn du dir also eine vollständige IDE installiert, dann bekommst du ein Paket, welches alle notwendigen Entwicklungswerkzeuge beinhaltet.

Woher ich das weiß:Hobby – private Programmiererei

Mit einer Entwicklungsumgebung (IDE) schreibst du ein Programm in einer Programmiersprache. Mit der IDE erstellst du das Programm (zB die ausführbare .exe), entwickelst den Rahmen und gibst ihn vor. Den eigentlichen Code kannst du entweder direkt in der IDE schreiben (diese bietet meist auch Fehlersuche, Debugging, etc) oder einfach mit dem Editor (Notepad) oder einem Ersatz (Notepad ++) in der jeweiligen Programmiersprache schreiben. Dabei musst du beachten, dass es unterschiedliche IDEs für verschiedene Sprachen gibt, zB Eclipse für Java, Visual Studio für C(++) und SharpDevelop für C#.

ich wollte mal fragen, ob ihr wisst wozu Entwicklungsumgebungen dienen!

'türlich weiß ich das!

Ich denke, dass z.B. Java eine Entwicklungsumgebung ist und sie sind hauptsächlich da, um Bytecodes in den Maschinencode umwandeln. Richtig oder Falsch?

völlig Falsch!

Java ist eine Programmiersprache und KEINE Entwicklungsumgebung. Eine Entwicklungsumgebung ist ein buntes Programm mit viel klicki-bunti um in einer Programmiersprache zu programmieren (also ein Programmiereditor), auf Syntax zu validieren, um zu debuggen und das Programm zu kompelieren.

Maschinenkode wird von der Laufzeitumgebung erzeugt. Es sei denn du nimmst C/C++. Da wird in der IDE gelinkt.

Entwicklungsumgebungen erleichtern das Entwickeln von Software. Java ist eine Peogrammsprache. Eclipse z.B. eine Entwicklungsumgebung (IDE).