Inhaltsverzeichnis
04. Editoren / IDEs
- Themen
- Motivation: Warum ist die Wahl des Editors wichtig?
- Mindestanforderungen an einen Editor
- Editoren vs. Entwicklungsumgebungen (IDEs)
- Folien
- Glossar
- Video
- MP4
Webcast
Hinweis: Der Webcast wurde mit Tiny Webcasts for Lecture(r)s erstellt.
Zentrale Aspekte
- Programmierung bedeutet (meist) das Erzeugen von reinem Text.
Im Prinzip ist also jeder Texteditor geeignet. - Programmierer verbringen viel Zeit mit dem Editor.
Die Wahl kann für die Produktivität entscheidend sein. - Moderne Editoren bringen Funktionalität mit,
die die Programmierung erleichtert (und Fehlern vorbeugt). - IDEs integrieren viele Werkzeuge in einer Oberfläche.
Die Komplexität bedingt eine steile initiale Lernkurve. - IDEs ersetzen nicht die solide Kenntnis des Umgangs
mit den grundlegenden Programmierwerkzeugen.
Fragen zur Vertiefung und Wiederholung
Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.
- Warum sollte ein Editor zum Programmieren mehr als die grundlegenden Textoperationen beherrschen?
- Welche zusätzliche Funktionalität eines Editors (gegenüber den reinen Textoperationen) ist für die Programmierung wünschenswert bzw. wichtig?
- Was spricht für, was gegen die Verwendung von IDEs?
Beispiele für Syntax-Hervorhebung
Die Bedeutung von Syntaxhervorhebung in Quellcode lässt sich am Besten mit einem Beispiel verdeutlichen. Es handelt sich bei den nachfolgenden Codeausschnitten um realen Code aus der Feder des Autors.
Beispiel ohne Syntaxhervorhebung
def redo(self): """Reapply previously undone processing step. Raises ------ RedoAlreadyAtLatestChangeError Raised when trying to redo with empty history """ if self._history_pointer == len(self.history) - 1: raise RedoAlreadyAtLatestChangeError processing_step_record = \ self.history[self._history_pointer + 1].processing processing_step = \ processing_step_record.create_processing_step() processing_step.process(self) self._increment_history_pointer()
Beispiel mit Syntax-Hervorhebung
def redo(self): """Reapply previously undone processing step. Raises ------ RedoAlreadyAtLatestChangeError Raised when trying to redo with empty history """ if self._history_pointer == len(self.history) - 1: raise RedoAlreadyAtLatestChangeError processing_step_record = \ self.history[self._history_pointer + 1].processing processing_step = \ processing_step_record.create_processing_step() processing_step.process(self) self._increment_history_pointer()
Der Quellcode mit Syntax-Hervorhebung ist eindeutig besser lesbar, und ein guter Editor bzw. eine IDE wird meist noch weitere Elemente hervorheben, als das hier aufgrund der eingeschränkten Unterstützung möglich ist.
Weiterführende Literatur
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Die Metapher aus dem Handwerk mit den gut gewählten grundlegenden Werkzeugen und ihrer entsprechenden Beherrschung stammt aus [Hunt, 1999Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston]. Weitere hilfreiche Hinweise zu Werkzeugen allgemein und zu Editoren und IDEs im Speziellen finden sich in Kapitel 20 von [Passig, 2013Passig, Kathrin; Jander, Johannes (2013): Weniger schlecht programmieren, O'Reilly, Heidelberg]. Eine lange Liste von Eigenschaften guter IDEs über die grundlegenden Textverarbeitungsfunktionen hinaus findet sich in [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington], S. 710f. Allerdings sei hier dazugesagt, dass viele dieser Eigenschaften auch in besseren Editoren vorhanden und wenige spezifisch für IDEs im eigentlichen Sinn sind.
Ein sehr UNIX-zentrierter Ansatz findet sich in den Abschnitten 13.2 und 15.2 von [Raymond, 2004Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston]. Auch wenn viele Entwickler heute nicht mehr unbedingt auf die Idee kommen, mit vi oder Emacs programmieren zu wollen, lohnt es allemal, sich die dort festgehaltenen Ideen anzuschauen.
- Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston
- McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington
- Passig, Kathrin; Jander, Johannes (2013): Weniger schlecht programmieren, O'Reilly, Heidelberg
- Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston