Programmierwerkzeuge-05-QuelltextEditor

TeX document icon Programmierwerkzeuge-05-QuelltextEditor.tex — TeX document, 11 KB (11980 bytes)

File contents

\documentclass[12pt, twoside]{scrartcl}
%Anfang OERMacros.tex
% Zum Erstellen mit pdfLaTeX wird diese Datei und der CC BY Button by.png im selben Verzeichnis benötigt. 
% by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 

% Für den Lizenzhinweis zur Nutzung dieser OER kann das Macro \OERLizenzHinweis verendet werden. 

\usepackage[utf8]{inputenc}
\def\Autor {Reinhard Brocks}
\def\HomeAutor {https://www.htwsaar.de/ingwi/fakultaet/personen/profile/Reinhard\%20Brocks}
\def\OERLizenzHinweis 
{
	\includegraphics{by} % by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 
	\begin{minipage}[b]{11cm}\footnotesize
		\href{\HomeAutor/oer/pwz/programmierwerkzeuge-05-quelltexteditor/at_download/file}{Programmierwerkzeuge - \mysubtitle} 
		von 
		\href{\HomeAutor}{\Autor} 
		ist lizenziert unter einer 
		\href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons Namensnennung 4.0 International Lizenz}.
	\end{minipage}
}


\def\HinweisLatex {Für die Nutzung und die Bearbeitung steht das Dokument \href{\HomeAutor/oer/pwz/latex}{hier} 
	auch im \LaTeX-Format zur Verfügung.}

\def\MailAutor {reinhard.brocks@htwsaar.de}

\def\MiniKontakt 
{
	Fragen und Verbesserungsvorschläge bitte an Prof.~Dr.~\Autor, 
	Hochschule für Technik und Wirtschaft des Saarlandes. \\
	E-Mail: \href{mailto:\MailAutor}{\MailAutor}\\[2ex]
}

\def\Kontakt
{
	\MiniKontakt
	Einen Überblick über die Unterrichtseinheiten zu \glqq Programmierwerkzeuge\grqq{} 
	findet man \href{\HomeAutor/oer/pwz/programmierwerkzeuge-00-unterrichtskonzept/at_download/file}{hier}.\\[1ex]
}

\def\Disclaimer 
{
	\begin{footnotesize}
		\textbf{Disclaimer}: Der Autor übernimmt keine Haftung für eventuelle 
		Datenschutz- und sonstige Rechtsverletzungen in anderen Webangeboten, 
		auf die er einen Link gesetzt hat. Für die Inhalte der von ihm 
		verlinkten Fremdangebote sind die jeweiligen Herausgeber verantwortlich. 
		Vor dem Einrichten von Links sind die Webseiten der anderen Anbieter 
		mit großer Sorgfalt und nach bestem Wissen und Gewissen geprüft worden. 
		Es kann jedoch keine Gewähr für die Vollständigkeit und Richtigkeit von 
		Informationen auf verlinkten Seiten übernommen werden. 
		Falls auf Seiten verweisen wird, deren Inhalt Anlass zur 
		Beanstandung gibt, bittet der Autor um eine Mitteilung 
		(\textit{\href{mailto:\MailAutor}{\MailAutor}}).
	\end{footnotesize}
}
%Ende OERMacros.tex%
%Anfang PackagesMacros.tex
\usepackage{a4,german}
\usepackage{hyperref}
\usepackage{hyperxmp}
\usepackage{color}
\usepackage{graphics}

\parindent 0pt
\definecolor{Definitionsfarbe}{RGB}{0,100,0}
\newcommand{\TextBegriff}[1]{\textcolor{Definitionsfarbe}{\textbf{#1}}}


%Ende PackagesMacros.tex%

\def\mysubtitle {Unterrichtseinheit 5: Funktionen des Quelltexteditors}
\def\mykeywords {Programmierwerkzeuge, Quelltexteditor}
\hypersetup
{
	pdftitle={Programmierwerkzeuge},
	pdfsubject={\mysubtitle},
	pdfauthor={Reinhard Brocks},
	pdfkeywords={\mykeywords},
	pdfcopyright={CC BY 4.0},
	pdflicenseurl={http://creativecommon.org/licenses/by/4.0/}
}

\title{\textbf{Programmierwerkzeuge}}
\subtitle{\mysubtitle \\[2ex]{\small Lehr- und Lernmaterialien}}
\author{}
\date{}

\begin{document}
\maketitle
\thispagestyle{empty}
\vfill

\begin{tabular}{|p{3cm}|p{10,5cm}|} \hline 
	Zielgruppe	&	Lernende, die schon eine Programmiersprache gelernt und erste 
					Erfahrungen in der Programmierung gesammelt haben.\\ \hline 
	Lernziele	&	Die Lernenden können mit einem Quellcodeeditor effektiv arbeiten, 
					indem sie viele automatisierte Funktionen nutzen. Sie kennen die 
					englischen Begriffe für die einzelnen Funktionen. \\ \hline 
	Stichwörter & \mykeywords\\ \hline 
\end{tabular} \\[2ex]

\Kontakt

Versionsgeschichte\\[1ex]
\begin{tabular}{|l|l|l|}\hline 
	Datum 	& Änderung \\ \hline 
	26. Oktober 2019 & Erste Version \\ \hline 
\end{tabular}\\[1ex]

\OERLizenzHinweis\HinweisLatex
\newpage

\section*{Programmierwerkzeuge - Funktionen des Quelltexteditors}
\subsection*{Aufgabe: Funktionen des Quelltexteditors, 90 Minuten}
Beantworten Sie in Gruppenarbeit folgende Fragen und halten Sie die Ergebnisse 
auf einer Flipchart fest. 

\begin{enumerate}
	\item Welche Vorgänge können beim \glqq coding\grqq{} (Schreiben von Quellcode) automatisiert werden? 
	\item Welche Editor-Features unterstützen den kreativen Prozess beim coding? 
\end{enumerate}
Suchen Sie Features in Ihrem Editor und probieren Sie diese aus. Beurteilen Sie die 
einzelnen Features auf einer Skala von unwichtig (1) bis wichtig (3) und notieren 
Sie die englischen Begriffe. Teilen Sie die Funktionalitäten in größere Kategorien ein. 

\subsection*{Aufgabe: Reflexion, Überdenken von Vorgehensmodellen, 15 Minuten}
Welche Vorteile ergeben sich durch die Funktionalitäten? Wie wirkt sich Ihr neues 
Wissen auf Ihr Coding aus? Wie können die Coding-Prozesse verbessert werden? 



\newpage
\subsection*{Arbeitsergebnisse}
Durch Funktionen, die Quellcode generieren, modifizieren oder löschen, werden unangenehme, 
aufwendige und langweilige Tätigkeiten automatisiert. Dies reduziert erheblich den Tippaufwand. 
Dadurch werden Tippfehler vermieden, der Quellcode ist automatisch syntaktisch korrekt und die 
style guides werden eingehalten. Dies führt sicherlich zu einer schnelleren Implementierung. 

Ferner gibt es noch weitere automatisierbare Funktionen. Diese können in die folgenden Kategorien eingeteilt werden: 
\begin{itemize}
	\item Generierung von Codebausteinen
		\begin{itemize}
		\item Generierung von Klassen, Interfaces, getter/setter, unit tests über Dialogassistenten
		\item Extract: Generierung von Code aus bestehenden Codebausteinen wie z.\,B. das Extrahieren von Methoden (Ersetzung eines Blocks durch einen Methodenaufruf und gleichzeitiges Erzeugung der Methode), Interfaces und Konstanten
		\item Automatisches Generieren von Import-Anweisungen 
		\end{itemize}
	\item Refactoring
		\begin{itemize}
		\item \TextBegriff{Rename}: Umbenennen sämtlicher Bezeichner: Packages, Klassen, Attribute, Methoden, Parameter, Variablen
		\item Lokale Variable in Instanzattribut umwandeln
		\item Typ in eine separate Datei auslagern
		\item Literal in Konstante oder Klassenattribut umwandeln
		\item \TextBegriff{code formatting}, \TextBegriff{beautifier}: Code-Formatierung zur Einhaltung von style guides, aber auch durch das Anordnen von Klassenkomponenten
		\end{itemize}
	\item Statische Codeanalyse
		\begin{itemize}
		\item \TextBegriff{Just in Time Compilierung}
		\item Ungenutzte Imports, dead code, Code-Duplikate werden zum Löschen angezeigt
		\item Vorschlagsliste zur automatischen Behebung von Compilerfehlern, insbesondere nicht nur zur Korrektur bestehenden Codes, sondern auch zur Generierung fehlender Code-Bausteine. 
		\item Autovervollständigung - \TextBegriff{autocomplete}
		\end{itemize}
	\item Generierung von Dokumentation
		\begin{itemize}
		\item Generierung von Code-Dokumentationsbausteinen im Quellcode und in der gesamten Quellcodedokumentation
		\item Generierung von UML-Graphiken
		\end{itemize}
\end{itemize}

Durch die Zeitersparnis der automatisierbaren Vorgänge wird der kreative Prozess beim 
Programmieren unterstützt. Es gibt zudem noch weitere Kategorien von Funktionalitäten, 
die im besonderen Maße die Kreativität beim Programmieren fördern: 


\begin{itemize}
	\item readability: Verbesserung der Lesbarkeit
		\begin{itemize}
		\item \TextBegriff{Syntax highlighting}: Farbliche Hervorhebung von Schlüsselwörtern und Literalen oder auch Kontrollstrukturen
		\item \TextBegriff{quick info}: Tooltipp mit Informationen z.\,B. zum Typ oder zur Signatur 
		\item API help: kontextspezifische Anzeige von Javadoc für ausgewählte Objekte oder Methoden
		\item line numbers: Anzeigen der Zeilennummern
		\item \TextBegriff{margin annotation}: Visuelles Anzeigen der Zeilen am Editorrand von Fehlern, Breakpoints, Suchmarken oder To-dos
		\item Aufteilung des Editors (split screen)
		\end{itemize}
	\item code inspection: besserer Überblick über die Sourcen
		\begin{itemize}
		\item \TextBegriff{code folding}: Ausblenden zusammenhängender Codebausteine 
		\item code navigation: Kontextabhängiger Sprung zur Definition oder Deklaration oder von den Compilerfehlern zum Problemort
		\item browse information: Auffinden von Vorkommen der Objekte oder Methoden. 
		\item project view: Projektansicht mit Überblick über die Dateien
		\item search: Wortsuche in Datei, im Projekt oder Workspace
		\end{itemize}
	\item typing support: Tippunterstützung
		\begin{itemize}
		\item Klammern werden automatisch hinzugefügt
		\item Einrückungen finden automatisch bei Zeilenwechsel mit Tabulatoren statt
		\item Anführungsstriche bei Textkonstanten
		\item Undo und Redo
		\item Ein- und Auskommentieren von mehreren Zeilen
		\item Automatisches Speichern (\TextBegriff{autosave})
		\end{itemize}
	\item code quality: Code-Qualität
		\begin{itemize}
		\item \TextBegriff{error squiggles} / \TextBegriff{error highlighting}: Rotes Unterschlängeln von Syntaxfehlerstellen 
		\item Rechtschreibprüfung bei Kommentartexten
		\end{itemize}
	\item Tastaturbedienung
		\begin{itemize}
		\item \TextBegriff{shortcuts} für Copy \& Paste, Speichern
		\item Funktionstasten für Compilieren, Debuggen
		\item Tasten zur Navigation im Editor (Zeilenanfang, Zeilenende, nach oben, nach unten, wortweises Springen)
		\item Textauswahl über Tastenkombinationen
		\end{itemize}
\end{itemize}

Der Programmierprozess hängt von den Funktionalitäten des Editors ab, die man nutzt. 
Die Einschätzung über die Wichtigkeit hängt auch davon ab, wie man arbeitet. 
Daraus kann man ableiten, dass man ständig neue Funktionalitäten des Editors lernen 
sollte. Der eigene Programmierprozess sollte also ständig angepasst werden. 
Man sollte zu einem Denkmuster kommen, dass man automatisch eine Funktionalität im 
Editor sucht, wenn man etwas Zeitaufwendiges, aber wenig Kreatives gemacht hat. 
Auch sollte man Tastenkombinationen, die Shortcuts, statt der Maus benutzen, um eine 
größere Geschwindigkeit beim Coding zu bekommen. 

\newpage
\subsection*{Hinweise für den Dozenten}
Man beobachtet immer wieder, dass auch fortgeschrittene Lernende sehr ineffektiv mit 
Source-Code-Editoren arbeiten. Ein Problem ist, dass viele Funktionen mit der Maus 
aber nicht über Tastenkombinationen benutzt werden. 
Viele Funktionen sind auch einfach nicht bekannt.

Deshalb hat diese Unterrichtsreihe das Ziel, dass die Lernenden sich systematisch mit den 
Funktionalitäten des Quelltexteditors auseinandersetzen und diese ausprobieren. 

Dennoch fällt auf, dass nach dieser Unterrichtseinheit die Lernenden vereinzelnd wieder 
in alte Denkmuster zurückfallen. Sie benutzen z.\,B. immer noch \glqq Suchen und Ersetzen\grqq{} 
für das Umbenennen von Variablen. 

Einen Überblick über Funktionen des Quelltexteditors erhält man am schnellsten, indem man die 
Dokumentation der Hersteller liest. Siehe z.\,B. \cite{ibm} oder \cite{notepad}.

Auch in dieser Unterrichtseinheit scheint eine Gruppenarbeit wichtig zu sein. Die Lernenden 
erläutern sich dann gegenseitig die Funktionen des Editors, die sie nutzen und es ist Zeit,  
diese selber auszuprobieren. Beim gemeinsamen Erstellen einer Flipchart einigt man sich auf 
verständliche Begriffe. All dieses fällt weg, wenn die Lernenden mit einem kollaborativen 
Texteditor Funktionalitäten zusammentragen. Allerdings benötigt man dann nur 
die Hälfte der Zeit für die Unterrichtseinheit. 

\begin{thebibliography}{9}
\bibitem{ibm} IBM Knowledge Center. Tips and Tricks (JDT). URL: \url{https://www.ibm.com/support/knowledgecenter/en/SSUFAU_1.0.0/org.eclipse.jdt.doc.user-3.15.0/tips/jdt_tips.html} (Abgerufen: 25. Oktober 2019)
\bibitem{notepad}Notepad++ User Manual URL: \url{https://npp-user-manual.org} (Abgerufen: 25. Oktober 2019)
\end{thebibliography}
\Disclaimer
\end{document}