Um die Vorteile und Einsatzgebiete von Plain-Text-Markup-Formaten für längere Texte geht es in der einhundertfünfundfünfzigsten Episode des IT-Berufe-Podcasts.
TL;DR
Mit Plain-Text-Markup-Formaten schreibst du strukturierte Texte in einfachen Textdateien, die du mit Git verwalten und per Skript weiterverarbeiten kannst. Ich empfehle dir Markdown für den Einstieg; für umfangreiche technische Dokumente eignet sich AsciiDoc, während du mit PlantUML Diagramme als Text beschreibst. LaTeX bietet viele Möglichkeiten für deine Projektdokumentation und braucht Zeit zum Einarbeiten. Mit Pandoc wandelst du Formate ineinander um, während dir Editoren wie Visual Studio Code beim Schreiben eine Vorschau zeigen.
Podcast: Play in new window | Download (Duration: 45:32 — 20.7MB)
Abonnieren: Apple Podcasts | Spotify | RSS
Kapitelmarken
- [00:00:00] Plain-Text-Markup für deinen Ausbildungsalltag
- [00:02:00] Überblick über die vorgestellten Formate
- [00:03:04] Anlass: Plain Text im Pragmatic Programmer
- [00:03:58] Textdateien mit Git verwalten
- [00:04:25] Binärformate und der Aufbau von DOCX-Dateien
- [00:07:31] Diffs, Merges und Branches für Dokumente
- [00:09:44] Texte langfristig lesen und bearbeiten
- [00:12:20] Mit Tastatur und Kommandozeile arbeiten
- [00:13:58] Den Editor frei wählen
- [00:16:02] Textdateien per Skript verarbeiten
- [00:18:22] Markdown und das Rendern von Texten
- [00:20:20] Markdown in Apps und Editoren
- [00:21:36] Markdown-Syntax und mögliche Ausgabeformate
- [00:24:39] AsciiDoc für umfangreiche technische Dokumente
- [00:26:35] Dokumente im Build-Prozess erzeugen
- [00:28:20] Quelltext direkt in AsciiDoc einbinden
- [00:29:01] LaTeX für deine Projektdokumentation
- [00:30:28] LaTeX lernen und Vorlagen verwenden
- [00:32:54] UML-Diagramme mit PlantUML beschreiben
- [00:34:04] PlantUML in AsciiDoc und Redmine einbetten
- [00:36:03] Textile für Texte in Redmine
- [00:38:11] Formate mit Pandoc umwandeln
- [00:40:24] Visual Studio Code als Markup-Editor
- [00:41:44] MarkdownPad und weitere Editoren
- [00:42:49] Empfehlungen für deinen Einstieg
- [00:43:39] Buchtipp: The Pragmatic Programmer
- [00:44:40] Syntaxbeispiele, Links und Feedback
Inhalt
Plain-Text-Formate sind Formate, die in reinen (menschenlesbaren) Text-Dateien abgelegt werden, also keine binären Formate wie z.B. in Microsoft Word oder LibreOffice.
Vorteile von Plain-Text-Formaten
- Versionierung: Diff, Merge, Branches möglich
- Langlebigkeit: Keine proprietäre Bearbeitungssoftware nötig, keine Abhängigkeit von Herstellern
- Produktivität: Arbeit ausschließlich mit der Tastatur ohne Maus
- Flexibilität: Konvertierbar, zur Not selbst parsbar, mit jedem beliebigen Editor änderbar
- Automatisierung: Mächtige Tools zur Manipulation vorhanden
Beispiele für Formate
- Markdown
- leicht zu lernen, geringer Sprachumfang
- Output hauptsächlich HTML
- breite Unterstützung in Tools, z.B. WordPress, GitHub
- AsciiDoc
- sehr großer Sprachumfang, sogar geeignet für Bücher
- viele verschiedene Output-Formate, z.B. HTML, PDF, EPUB
- gut in übliche Build-Prozesse integriert, z.B. in Gradle
- Textile
- ähnelt der Wiki-Syntax
- Redmine
- LaTeX
- komplettes Textsatz-System, „perfekter“ Textsatz
- geeignet für komplette Bücher inkl. Verzeichnissen, Index, Literaturverzeichnis
- PlantUML
- Gestaltung von UML-Diagrammen
- kann u.a. in LaTeX und AsciiDoc eingebunden werden, aber auch in Wikis
Tools
- Pandoc: Konvertiert automatisch Dateien zwischen beliebigen Formaten
- VSCode: Editor für beliebige Markup-Formate inkl. Preview-Funktion
- MarkdownPad: Editor für Markdown
Quelltextbeispiele
Es folgen Beispiele für das gezeigte HTML-Fragment in den unterschiedlichen Markup-Sprachen.
HTML
<h1 id="markup-sprachen-markdown">Markup-Sprachen: HTML</h1>
<p>Ein normaler Absatz in HTML.</p>
<h2 id="überschrift">Überschrift</h2>
<p><strong>Fetter Text</strong> und <em>kursiver Text</em>.</p>
<h2 id="listen">Listen</h2>
<ul>
<li>Ungeordnete Liste
<ul>
<li>Mit Unterpunkten</li>
<li>Noch ein Unterpunkt</li>
</ul></li>
<li>Noch ein Punkt</li>
</ul>
<ol type="1">
<li>Geordnete Liste
<ol type="1">
<li>Mit Unterpunkten</li>
<li>Noch ein Unterpunkt</li>
</ol></li>
<li>Noch ein Punkt</li>
</ol>
<h2 id="links">Links</h2>
<p><a href="https://it-berufe-podcast.de" title="Website des IT-Berufe-Podcasts">IT-Berufe-Podcast</a></p>
<h2 id="bilder">Bilder</h2>
<figure>
<img src="https://it-berufe-podcast.de/Abbildungen/LogoITBerufePodcast500px.jpg" title="Das Logo des IT-Berufe-Podcasts" alt="" /><figcaption>Bildbeschreibung</figcaption>
</figure>
<h2 id="code">Code</h2>
<p>Inline Code mit <code>code</code>.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode java"><code class="sourceCode java"><span id="cb1-1"><a href="#cb1-1"></a><span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</span>
<span id="cb1-2"><a href="#cb1-2"></a> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Hallo!"</span>);</span>
<span id="cb1-3"><a href="#cb1-3"></a>}</span></code></pre></div>
<h2 id="zitate">Zitate</h2>
<blockquote>
<p>Zitate sehen so aus.</p>
</blockquote>
Markdown
# Markup-Sprachen: Markdown
Ein normaler Absatz in Markdown.
## Überschrift
**Fetter Text** und *kursiver Text*.
## Listen
* Ungeordnete Liste
* Mit Unterpunkten
* Noch ein Unterpunkt
* Noch ein Punkt
1. Geordnete Liste
1. Mit Unterpunkten
2. Noch ein Unterpunkt
2. Noch ein Punkt
## Links
[IT-Berufe-Podcast](https://it-berufe-podcast.de "Website des IT-Berufe-Podcasts")
## Bilder

## Code
Inline Code mit `code`.
\```java
public static void main(String[] args) {
System.out.println("Hallo!");
}
\```
## Zitate
> Zitate sehen so aus.
AsciiDoc
== Markup-Sprachen: AsciiDoc
Ein normaler Absatz in AsciiDoc.
=== Überschrift
*Fetter Text* und _kursiver Text_.
=== Listen
* Ungeordnete Liste
** Mit Unterpunkten
** Noch ein Unterpunkt
* Noch ein Punkt
. Geordnete Liste
.. Mit Unterpunkten
.. Noch ein Unterpunkt
. Noch ein Punkt
=== Links
https://it-berufe-podcast.de[IT-Berufe-Podcast]
=== Bilder
image:https://it-berufe-podcast.de/Abbildungen/LogoITBerufePodcast500px.jpg[Bildbeschreibung,title="Das Logo des IT-Berufe-Podcasts"]
=== Code
Inline Code mit `code`.
[source,java]
----
public static void main(String[] args) {
System.out.println("Hallo!");
}
----
=== Zitate
____
Zitate sehen so aus.
____
Textile
h1(#markup-sprachen-markdown). Markup-Sprachen: Textile
Ein normaler Absatz in Textile.
h2(#überschrift). Überschrift
*Fetter Text* und _kursiver Text_.
h2(#listen). Listen
* Ungeordnete Liste
** Mit Unterpunkten
** Noch ein Unterpunkt
* Noch ein Punkt
# Geordnete Liste
## Mit Unterpunkten
## Noch ein Unterpunkt
# Noch ein Punkt
h2(#links). Links
"IT-Berufe-Podcast":https://it-berufe-podcast.de
h2(#bilder). Bilder
!https://it-berufe-podcast.de/Abbildungen/LogoITBerufePodcast500px.jpg(Das Logo des IT-Berufe-Podcasts)!
Bildbeschreibung
h2(#code). Code
Inline Code mit @code@.
bc(java). public static void main(String[] args) {
System.out.println("Hallo!");
}
h2(#zitate). Zitate
bq. Zitate sehen so aus.
LaTeX
\hypertarget{markup-sprachen-markdown}{%
\section{Markup-Sprachen: LaTeX}\label{markup-sprachen-markdown}}
Ein normaler Absatz in LaTeX.
\hypertarget{uxfcberschrift}{%
\subsection{Überschrift}\label{uxfcberschrift}}
\textbf{Fetter Text} und \emph{kursiver Text}.
\hypertarget{listen}{%
\subsection{Listen}\label{listen}}
\begin{itemize}
\tightlist
\item
Ungeordnete Liste
\begin{itemize}
\tightlist
\item
Mit Unterpunkten
\item
Noch ein Unterpunkt
\end{itemize}
\item
Noch ein Punkt
\end{itemize}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Geordnete Liste
\begin{enumerate}
\def\labelenumii{\arabic{enumii}.}
\tightlist
\item
Mit Unterpunkten
\item
Noch ein Unterpunkt
\end{enumerate}
\item
Noch ein Punkt
\end{enumerate}
\hypertarget{links}{%
\subsection{Links}\label{links}}
\href{https://it-berufe-podcast.de}{IT-Berufe-Podcast}
\hypertarget{bilder}{%
\subsection{Bilder}\label{bilder}}
\begin{figure}
\centering
\includegraphics{https://it-berufe-podcast.de/Abbildungen/LogoITBerufePodcast500px.jpg}
\caption{Bildbeschreibung}
\end{figure}
\hypertarget{code}{%
\subsection{Code}\label{code}}
Inline Code mit \texttt{code}.
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{public} \DataTypeTok{static} \DataTypeTok{void} \FunctionTok{main}\NormalTok{(}\BuiltInTok{String}\NormalTok{[] args) \{}
\BuiltInTok{System}\NormalTok{.}\FunctionTok{out}\NormalTok{.}\FunctionTok{println}\NormalTok{(}\StringTok{"Hallo!"}\NormalTok{);}
\NormalTok{\}}
\end{Highlighting}
\end{Shaded}
\hypertarget{zitate}{%
\subsection{Zitate}\label{zitate}}
\begin{quote}
Zitate sehen so aus.
\end{quote}
PlantUML
Und zum Schluss noch ein Beispiel für ein Klassendiagramm in PlantUML.
class Auto {
hersteller : String
farbe : String
kilometerstand : Integer
neupreis : Double
fahre() : void
hupe() : void
}
Gerendert sieht das dann so aus.

Literaturempfehlungen
Eines meiner absoluten Lieblingsbücher widmet ein eigenes Kapitel dem Thema „Plain Text“: The Pragmatic Programmer*. Dave Thomas und Andy Hunt erklären dir auch noch einmal die Vorteile von einfachen Textdateien.
Links
- Permalink zu dieser Podcast-Episode
- RSS-Feed des Podcasts
- Markdown
- AsciiDoc
- Textile
- LaTeX
- PlantUML
- Pandoc
- Visual Studio Code
- MarkdownPad
Zusammenfassung
Texte in einfachen Textdateien schreiben
Für meine Blogartikel und Newsletter schreibe ich Texte mit Markup direkt in Textdateien. Auch Softwaredokumente, E-Mail-Vorlagen und deine Projektdokumentation lassen sich so erstellen. Als IT-Azubi kannst du dabei mit einem Texteditor arbeiten, den du bereits kennst.
Mit wenigen Zeichen kennzeichnest du beispielsweise Überschriften oder Listen. Ein passendes Werkzeug erzeugt daraus HTML oder ein PDF. Dieser Schritt heißt Rendern. Bei PlantUML entsteht aus dem Text eine Grafik. Auch HTML gehört zu den textbasierten Auszeichnungssprachen; die hier vorgestellten Formate bieten jeweils eine eigene Syntax für ihre Aufgaben.
Was Textdateien im Alltag ermöglichen
Aus dem Buchclub mit meinen IT-Azubis zu The Pragmatic Programmer stammt der Anlass, mich mit den Vorteilen von Plain Text zu beschäftigen:
- Änderungen mit Git verfolgen: Bei Textdateien kannst du Unterschiede zwischen zwei Ständen als Diff anzeigen lassen. Wenn mehrere Personen an verschiedenen Stellen eines Dokuments arbeiten, lassen sich ihre Änderungen zusammenführen. Über Branches pflegst du verschiedene Stände parallel. Für deine Projektdokumentation kannst du damit nachvollziehen, wann du etwas geändert hast, und frühere Stände wiederherstellen.
- Texte langfristig lesen: Einfache Textdateien lassen sich mit vielen Editoren öffnen und bearbeiten. Dadurch bleiben deine Inhalte zugänglich, auch wenn du später andere Programme verwendest.
- Mit der Tastatur arbeiten: Markup schreibst du direkt in den Text. Mit einem Editor wie vi kannst du dich per Tastatur durch das Dokument bewegen; auch Befehle auf der Kommandozeile können Textdateien bearbeiten.
- Den Editor selbst wählen: Ob du Vim, Emacs oder Visual Studio Code bevorzugst, kannst du selbst entscheiden. Bei einem überschaubaren Textformat könntest du bei Bedarf sogar einen eigenen Parser programmieren.
- Abläufe per Skript erledigen: Programmiersprachen können Textdateien einlesen und verändern. Du kannst beispielsweise mehrere Markdown-Dateien zusammenfügen und daraus ein gemeinsames PDF erzeugen. Solche Abläufe lassen sich auch auf einem Server ausführen.
Bei einer DOCX-Datei liegen XML-Inhalte in einem ZIP-Container. Wenn du die Dateiendung in .zip änderst, kannst du diesen Container öffnen und die Inhalte ansehen. Durch das komprimierte Dateiformat können sich beim Speichern viele Bytes ändern, obwohl du im Dokument nur einen Buchstaben bearbeitet hast. Textbasierte Diffs und Merges lassen sich darauf entsprechend schwer anwenden. Binärdateien wie Bilder kannst du ebenfalls in einer Versionsverwaltung ablegen.
Markdown: mein Vorschlag für den Einstieg
Für meine täglichen Texte verwende ich häufig Markdown. Der Sprachumfang ist klein und lässt sich schnell lernen. Zu den Möglichkeiten gehören Überschriften, geordnete und ungeordnete Listen sowie Links und eingebettete Bilder.
Einige Beispiele für die Syntax:
# Überschriftkennzeichnet eine Überschrift erster Ebene.* Listeneintragerzeugt einen Aufzählungspunkt.**Text**zeichnet Text fett aus.
Markdown wurde entwickelt, um Texte für HTML mit einer einfachen Syntax zu schreiben. Die Grundsyntax deckt die üblichen Elemente solcher Texte ab. Für weitergehende Funktionen wie Fußnoten hängt es vom verwendeten Format und Werkzeug ab.
GitHub stellt Markdown-Dateien direkt als formatierten Text dar. Auch Todoist unterstützt Markdown in Kommentaren. Für meine Website verwende ich ein WordPress-Plugin, das meine Markdown-Blogartikel in HTML umwandelt. Mit passenden Werkzeugen kannst du außerdem PDFs erzeugen, deren Inhaltsverzeichnis aus den Überschriften entsteht.
AsciiDoc: umfangreiche technische Dokumente
Für meine Java-Einführung mit IT-Azubis schreibe ich die Unterlagen in AsciiDoc. Du kannst damit lange Dokumente bis hin zu ganzen Büchern verfassen. Es unterstützt unter anderem Fußnoten und Quelltextblöcke; auch Bilder und verlinkte Inhaltsverzeichnisse lassen sich einbauen. Damit eignet es sich für deine IHK-Projektdokumentation.
Quelltext kannst du direkt aus einer Datei einbinden und dabei bestimmte Zeilen auswählen. In meinen Unterlagen erscheinen dadurch Ausschnitte aus Java-Dateien, deren Code ich kompilieren kann. Beim Erzeugen des Dokuments lassen sich diese Ausschnitte mit Syntax-Highlighting darstellen.
Asciidoctor verarbeitet AsciiDoc-Dateien. Als Ausgabe kommen beispielsweise HTML, PDF oder EPUB infrage. Über Plugins für Gradle oder Maven kannst du die Dokumente im Build-Prozess erzeugen lassen. Der Quelltext und die zugehörigen Dokumente liegen dann gemeinsam im Repository.
Für einfache Texte kannst du die Grundlagen zügig lernen. Die weitergehenden Funktionen brauchen Zeit zum Einarbeiten.
LaTeX: Projektdokumente und Bücher setzen
Meine Vorlage für die Projektdokumentation ist in LaTeX geschrieben und auf GitHub verfügbar. LaTeX ist ein vollständiges Textsatzsystem, mit dem du umfangreiche Dokumente gestalten kannst. Es bietet Inhaltsverzeichnisse und Querverweise ebenso wie einen Index, Fußnoten oder eingebettete Grafiken.
Alte Dokumente aus meinem Studium kann ich weiterhin kompilieren und als PDF erzeugen. Meine IT-Azubis verwenden LaTeX auch für ihr Berichtsheft.
Du arbeitest mit Befehlen wie \textbf{Text} für Fettdruck. Zum Erzeugen des Dokuments brauchst du eine LaTeX-Distribution und gegebenenfalls weitere Pakete. Auch das Dokumentformat mit Seitenrändern und Schriftgrößen muss eingerichtet werden. Meine Vorlage nimmt dir einen Teil dieser Arbeit ab.
Ich empfehle dir, dich frühzeitig damit zu beschäftigen, wenn du deine Projektdokumentation in LaTeX schreiben möchtest. Der große Sprachumfang erfordert eine längere Lernphase.
PlantUML: Diagramme als Text beschreiben
Mit PlantUML beschreibst du UML-Diagramme in Textform. Unterstützt werden beispielsweise Klassen- und Aktivitätsdiagramme sowie Use-Case-Diagramme. Bei Klassendiagrammen erinnert die Syntax an Klassen aus Java oder C#. Aus deiner Beschreibung erzeugt das Werkzeug eine Grafik.
Über ein Plugin kannst du PlantUML in AsciiDoc einbetten. Beim Erzeugen eines PDFs erscheint das Diagramm dann direkt im Dokument. Auch für Redmine gibt es ein Plugin, das Diagramme in Wiki-Seiten und Tickets darstellt.
Die Textquellen deiner Diagramme lassen sich mit Git verwalten. Für ein einfaches Klassendiagramm ist der Einstieg schnell möglich; weitere Diagrammtypen bringen eigene Syntaxregeln mit.
Textile: Texte für Redmine schreiben
In meiner Redmine-Umgebung arbeite ich mit Textile. Damit kannst du übliche Textelemente wie Links und Überschriften schreiben oder Text fett und kursiv auszeichnen. Eine Überschrift beginnt beispielsweise mit h1. oder h2.. Diese Schreibweise greift die Namen der entsprechenden HTML-Elemente auf.
Pandoc: Formate ineinander umwandeln
Wenn ich einen Text in Markdown schreibe und für Redmine Textile brauche, kann ich ihn mit Pandoc umwandeln. Das Werkzeug erkennt Strukturelemente wie Überschriften oder Codeblöcke und überträgt sie in die Syntax des Zielformats.
Pandoc unterstützt zahlreiche Ein- und Ausgabeformate, darunter auch LaTeX. Du kannst die Befehle auf der Kommandozeile ausführen und in Skripte einbauen.
Editoren und weitere Quellen
Als Editor empfehle ich dir Visual Studio Code. Mit der Markdown-Vorschau siehst du beim Schreiben, wie dein Text formatiert erscheint. Syntax-Highlighting und ein Markdown-Linter helfen dir, Fehler oder fehlende Elemente zu erkennen. Auch HTML lässt sich über passende Funktionen exportieren.
Für meinen Newsletter habe ich lange MarkdownPad verwendet. Über "Copy as HTML" konnte ich den geschriebenen Text als HTML in Mailchimp einfügen. Für LaTeX gibt es ebenfalls spezialisierte Editoren; vi ist eine weitere Möglichkeit mit Erweiterungen für Markup-Sprachen.
In The Pragmatic Programmer von Dave Thomas und Andy Hunt findest du das Kapitel zu Plain Text sowie weitere Grundlagen zur Arbeit als Softwareentwickler:in, etwa zur Versionsverwaltung. Ich empfehle dir die neuere 20th Anniversary Edition, die aktualisierte Beispiele enthält.
Unter itberufe-podcast.de/155 habe ich Syntaxbeispiele für die vorgestellten Formate und Links zu den Werkzeugen zusammengestellt.
Transkription der gesamten Episode
Automatisch erzeugte Transkription der Episode
Herzlich willkommen zum IT-Berufe-Podcast, dem Podcast rund um die Ausbildung in den
IT-Berufen. In dieser Episode geht es um Plain-Text-Markup-Formate zum Schreiben
längerer Texte. Viel Spaß! Hallo und herzlich willkommen zur 155. Episode des IT-Berufe-Podcasts.
Mein Name ist Stefan Macke und heute geht es mal nicht um etwas Prüfungsrelevantes, sondern eher
um etwas Praxisrelevantes. Auch das ist ja so ein bisschen mein Ansatz, dass ich eben was erzähle,
was du auch in deinem Alltag einsetzen kannst und was dir vielleicht das Leben ein bisschen
einfacher macht. Also, heute habe ich ein schönes Thema mitgebracht und zwar Plain-Text-Markup-Formate
habe ich es mal genannt. Was heißt das, worum soll es hier gehen? Ich möchte dir gerne ein paar
Formate vorstellen, die du in reinen Textdateien nutzen kannst, um zum Beispiel längere Texte zu
schreiben, eventuell sogar irgendwann einmal deine Projektdokumentation für die Abschlussprüfung.
Wer weiß. Aber es geht auch um viele andere Use Cases, wie zum Beispiel Dokumentation von
Software oder meinetwegen auch E-Mail-Vorlagen oder, ich weiß es nicht, Blog-Artikel. Alles
Mögliche kannst du mit diesen Textformaten schreiben und du brauchst dafür kein besonderes
Programm, sondern kannst eben reine Textdateien benutzen. Das ist da der große Vorteil. Eines
dieser Formate kennst du bestimmt schon und zwar HTML, die Hypertext Markup Language. Das ist
letztlich auch nichts anderes als ein Plain-Text-Format für Markup, also eine Auszeichnungssprache. Jetzt
würde ich nicht auf die Idee kommen, dir zu empfehlen, deine Texte in HTML zu schreiben. Das
ist nämlich mega aufwendig und genau darum geht es jetzt bei den Sprachen, die ich heute vorstelle.
Ich möchte das nicht so aufwendig haben, also öffnender Tag, schließender Tag, korrekte
Syntax, Klammer auf, etc. Das will ich nicht, sondern ich will meinen Text eigentlich runterschreiben
können in einem einfach zu verstehenden Format, wo ich nicht noch irgendwie fünf Wochen Schulung
brauche oder irgendwas. Und das Ganze soll dann halt in reinen Textdateien abgelegt werden,
sodass ich die ganzen Vorzüge von Textformaten nutzen kann. Und bevor wir uns diese Vorteile
einmal anschauen, nenne ich dir vielleicht mal ein paar konkrete Formate, die ich so im Alltag
benutze und die ich heute vielleicht auch ein Beispiel durchgehen will. Nummer 1, Markdown. Das
ist das zentrale Format, mit dem man heutzutage fast alles machen kann und das sehr oft und sehr
breit unterstützt wird. Dann gibt es noch ASCIDoc, wenn du richtig was aufschreiben musst mit Fußnoten
und ich weiß nicht was, gehen wir später noch drauf ein. Dann gibt es Textile, ist eine Syntax,
die zum Beispiel im Projektmanagement-Tool Redmine verwendet wird, da benutze ich die zum Beispiel
täglich. Natürlich LaTeX, da habe ich schon öfter hier im Podcast was darüber berichtet,
meine Vorlage für die Projektdokumentation ist ja auch in LaTeX entwickelt. Und zum Schluss habe
ich noch ein kleines Unterformat in Anführungszeichen, nämlich PlantUML. Wir als Attiler
müssen häufiger ja auch UML-Diagramme zeichnen und das kann man auch in Textform machen. Das heißt,
du beschreibst einfach deine UML-Diagramme und die werden automatisch für dich zu Grafiken
erstellt aus diesem Text, den du da eingegeben hast. Also diese Formate möchte ich heute kurz
einmal durchgehen. Markdown, ASCIDoc, Textile, LaTeX und PlantUML. Doch bevor wir damit anfangen,
einmal kurz einen Überblick der Vorteile dieser Plaintext-Formate. Und wie ich auf das Thema
gekommen bin, ist der Buchclub, den ich gerade mit meinen Azubis mache, über das Buch Pragmatic
Programmer. Also wirklich The Pragmatic Programmer, das Original, das 20 Jahre alte von Dave Thomas
und Andy Hunt. Und das ist jetzt gerade vor kurzem in einer Neuauflage der 20th Anniversary Edition
erschienen. Und da haben die noch mal ein bisschen was aktualisiert und coole neue Sachen eingebaut.
Das lese ich gerade also noch mal neu mit meinen Azubis. Und ein Kapitel, was es aber schon in
der ersten Version des Buches gab, geht rund um das Thema Plaintext. Und dort wird auch schön
beschrieben, was die Vorteile sind. Und als ich das damals in meiner eigenen Ausbildung gelesen
habe, da habe ich gesehen, Mensch, das ist richtig. Das stimmt, was die sagen. Und seitdem mache
ich eigentlich alles im Plaintext, was ich im Plaintext machen kann. Und da gucken wir uns vielleicht
mal kurz die Vorteile an, damit du auch verstehst, was der Sinn dahinter ist. Und Nummer eins dieser
Plaintext-Formate, warum wir gerade als ITler oder sogar, wenn ich noch spezifischer werde,
als Entwickler das gut finden, damit zu arbeiten, ist die Versionierbarkeit. Du kennst sicherlich
Versionsverwaltungssysteme wie Git, Subversion, meinetwegen auch den Team-Foundation-Server von
Microsoft. Die großen Vorteile spielen diese Server nur dann aus, beziehungsweise nicht nur
Server, sondern auch die Software, nur dann aus, wenn du Plaintext-Formate hast. Wir grenzen das
vielleicht mal ganz kurz ab. Was ist denn überhaupt nicht Plaintext? Also nicht Plaintext ist alles,
was zum Beispiel in einem binären Format vorliegt, wie zum Beispiel Microsoft Word, LibreOffice oder
irgendwelche Dateien, die aus bestimmten Anwendungsprodukten herauskommen. Ich nehme mal
eine Photoshop-Datei, diese PSD-Endung. Das ist irgendein Binärformat, was nur von diesem einen
Programm gelesen werden kann. Man sagt auch gern ein proprietäres Format. Das meint nicht
hundertprozentig das Gleiche. Das meint eher, dass ein Hersteller quasi den Hut auf hat und dieses
Format unter seiner Hoheit hat und dann niemand anderes drankommt. Das ist eigentlich eher
proprietär. Aber beides schmeißt man so gerne zusammen, denn die genannten Formate wie Markdown
und Asciidog und so sind auch offen zugänglich. Das heißt, jeder kann die benutzen und weiterentwickeln.
Aber Microsoft Word zum Beispiel hat historisch eben ein Binärformat geschrieben, was auch nur
Word bearbeiten konnte. Inzwischen ist das nicht mehr ganz so. Die haben ihr Format standardisieren
lassen. Das ist ja inzwischen ein XML-Format, was aus den Office-Produkten herauspurzelt und auch
andere Programme können dieses Format lesen und schreiben. XML ist übrigens auch ein Plain-Text-Format.
Das kannst du auch mal im Texteditor drin rum ändern. Das kann ein Mensch lesen und auch eine
Maschine. Aber Office geht jetzt einen Schritt weiter und nimmt jetzt dieses XML und zippt das
Ganze dann. Und dann hast du leider kein Plain-Text mehr, sondern eben ein Binärformat. Kannst du
übrigens auch mal ausprobieren, wenn du so eine Microsoft-Word-Datei .docx irgendwo abspeicherst
und die einfach mal umbenennst in .zip hinten, kannst du die mit dem ZIP-Programm einfach
aufmachen, reingucken und da siehst du dann quasi die XML-Inhalte. Das ist eigentlich das Word-Format.
Und weil das aber sehr viel Speicher verbraucht, ist halt drumherum das Ding in einen ZIP-Container
gepackt, damit es etwas kleiner wird. Und wenn du diese Datei jetzt aufmachst, im Texteditor zum
Beispiel, da wirst du gar nichts mehr erkennen können. Das ist ein Binärformat. Das ist also
nichts menschenlesbares mehr, sondern da werden quasi die einzelnen Bytes benutzt, um irgendwelche
Sachen darzustellen, die du als Mensch aber überhaupt nicht interpretieren kannst. Sobald
du ein Byte änderst, kann es sein, dass die ganze Datei kaputt ist. Das heißt, diese Datei ist für
dich nicht direkt änderbar. Du musst sie schon in einem Programm öffnen, das dafür vorgesehen ist,
in unserem Beispiel Microsoft Word, und dann kannst du die Inhalte verändern. Aber die Datei selbst,
die ist quasi unantastbar, denn da machst du mehr kaputt, als dass du irgendwie damit arbeiten
kannst. So, und diese Formate haben den zentralen Nachteil. Nehmen wir mal das Beispiel Word. Du
änderst ein Zeichen in der Word-Datei, speicherst die Datei, dann wird das irgendwo in der XML
geändert, dieses Zeichen. Aber das Zip-Archiv drumherum wird ja komplett neu gebaut. Und jetzt
kann es sein, dass das ganze Zip-Archiv auf einmal anders aussieht als vorher, einfach weil dieses
Binärformat nicht den einen Buchstaben an der einen Stelle geändert hat, sondern diesen ganzen
Zip-Container neu erstellt hat. Und auf einmal sieht das Ding komplett anders aus. Und da hast
du den großen Vorteil der Versionierung, auf den ich hier gerade eingehen will, eben nicht mehr.
Denn du hast einen Buchstaben geändert, aber, ich übertreibe jetzt mal, eine komplett andere
riesengroße Datei ist daraus entstanden. Und wenn du jetzt deinem Versionierungstool sagst,
hier, ich habe eine neue Version der Datei, dann sagt das Versionierungstool, Mensch, sehr cool,
das ist ja eine komplett neue Datei. Das heißt, du kannst auch nichts vergleichen oder sowas,
ja. Diese Binärformate ermöglichen dir also gerade die zentralen Vorteile einer
Versionsverwaltungssoftware nicht. Nämlich diffen, das heißt Unterschiede zwischen Dateien
anzeigen, mergen, das heißt mehrere gleichzeitig bearbeitete Versionen zu einer zusammenzuführen
und zum Beispiel auch sowas wie Branches, das heißt mehrere Versionen eben parallel zu pflegen,
zum Beispiel bei einer Dokumentation, wenn ein Mitarbeiter Kapitel 1 und der andere Kapitel 2
bearbeitet, den wollt ihr am Ende zusammenführen. Das wird ganz schön schwierig mit den Binärformaten
oder, um es nicht anders zu sagen, unmöglich, weil die Software das nicht anbieten kann. Bei
Textformaten ist das anders. Wenn du eine Textdatei hast, einer arbeitet oben in der Datei, ein anderer
irgendwo weiter unten, dann kann die Software, wie zum Beispiel GIT, das auf Knopfdruck zusammenführen.
Denn es muss letztlich nichts anderes gemacht werden, als die beiden Dateien zusammen zu kopieren.
Könntest du theoretisch auf der Kommandozeile auch machen, wenn du zum Beispiel ein cat-Befehl
unter Linux benutzt, machst du cat Datei 1 und Datei 2 und rauskommt Datei 3, wo einfach
beide anderen zusammen hintereinander konkateniert sind. Deswegen heißt der Befehl ja cat. Und das
geht eben nur bei Plain-Textformaten, die halt nicht darauf angewiesen sind, dass sie quasi,
ja wie soll man sagen, eine Art Einheit, ein ganzes Bilden wie bei einem Zip-File, wo wenn
du ein einziges Bit änderst, dass ganze Dinge kaputt ist, auf deutsch gesagt. Und das ist ein
großer Vorteil von Textdateien. Du kannst die so manipulieren, dass sie durch solche
Versionsverwaltungssoftware gut verwaltet werden kann. Und das willst du haben. Du willst alles
versioniert haben. Denk mal an eine Projektdokumentation. Angenommen, du schreibst die
und du änderst da drin was, du machst eine Fehlerkorrektur, überarbeitest die Rechtschreibprüfung,
was auch immer. Dann möchtest du sehen, was hast du geändert, wann hast du es geändert,
möchtest das vielleicht sogar zurückrollen können auf einen alten Stand und so weiter.
Alle diese Vorteile der Versionsverwaltung machst du dir kaputt, wenn du Binärformate benutzt. Ich
sage nicht, dass du die nicht benutzen kannst. Du kannst zum Beispiel auch Bilder wie JPEG-Dateien
oder so versionieren. Du kannst sie bloß nicht diffen, mergen und so weiter. Und das ist der
zentrale Nachteil, weil dann hast du eigentlich nur die Möglichkeit zu sagen, so, neue Version,
jetzt speichern. Aber du hast keine Möglichkeit, sie irgendwie mit den alten Versionen in Verbindung
zu bringen, weil du eben nicht sinnvoll unterscheiden kannst, was da eigentlich geändert
wurde zwischen diesen Versionen. Und damit machst du dir die ganze Versionierbarkeit eigentlich
kaputt leider. So, ein weiterer Nachteil von diesen binären Formaten ist die fehlende
Langlebigkeit. Wenn du dir mal wieder Word als Beispiel nimmst, die DOC-Dateien, die ich damals
noch auf und runter benutzt habe, die sind heute eigentlich veraltet. Es gibt inzwischen ein neues
Format, nämlich DOCX. Microsoft tut natürlich gut daran, die alten Formate auch weiterhin öffnen
zu können. Das ist alles okay. Aber sobald Microsoft irgendwann mal sagt, ach komm, den alten
Rotz, auf Deutsch gesagt, wollen wir nicht mehr unterstützen, dann stehst du da und kannst das
Ding leider nicht mehr bearbeiten, weil der Editor, der das Ding erzeugt hat, das nicht mehr unterstützt.
Und das ist natürlich schlecht. Du möchtest natürlich deine, was weiß ich, Texte, die du vor
20 Jahren geschrieben hast, auch heute noch öffnen können. Und das wird sehr schwierig, wenn du so
ein Binärformat benutzt, das nur von einem ganz bestimmten Programm geöffnet werden kann. Denn wenn
es dieses Programm aus irgendeinem Grund nicht mehr gibt, und das reicht ja schon, dass der
Hersteller einfach sagt, nö, ich will das alte Zeug nicht mehr unterstützen, dann stehst du da und
kannst das Ding nicht mehr öffnen. Oder du musst dir eine uralte Version von Word vorhalten, die
aber vielleicht auf einer Windows-Version nicht mehr funktioniert und und und und. Also, du willst,
dass deine Texte langlebig sind und das kriegst du hin mit Plain Text. Denn Plain Text-Dateien gibt
es schon seit 50 Jahren, die wird es auch die nächsten 50 Jahre noch geben, einfach weil es ein
Standard ist. Und du brauchst dafür keine besondere Software. Du kannst sie mit Konsolen-Befehlen
unter Linux zum Beispiel einfach aufmachen. CAD oder du machst ein VI auf. Oder unter Windows kannst
du den Notepad nehmen, um eine Textdatei zu öffnen. Das heißt, du brauchst nicht mal besondere
Software. Du kannst jeden beliebigen Texteditor, und davon gibt es tausend verschiedene, einfach
nutzen, um diese Datei zu lesen zum einen, aber auch zu bearbeiten. Das heißt, du kannst diese
alte, diese alten Texte, die du geschrieben hast, auch in 20 Jahren noch öffnen und weiter pflegen
quasi. Und das funktioniert wahrscheinlich nicht mit diesen Binär-Formaten, die vielleicht alle
paar Jahre sich mal ändern oder irgendwann einfach nicht mehr unterstützt werden. Das heißt, du bist
unabhängig von irgendwelchen Herstellern, die ihre Produkte pflegen, und du brauchst auch diese
Software nicht mehr. Ich habe früher viele Sachen mit Photoshop gemacht. Inzwischen bin ich auf
kostenfreie Software umgestiegen, wie zum Beispiel Paint.net, weil ich jetzt einfach nicht mehr so
die heftigen Photoshop-Skills brauche, um irgendwas zu manipulieren. Aber ich habe noch ganz viele
Photoshop-Dateien rumliegen. Die alte Version von Photoshop, die ich noch irgendwo mal lizenziert
hatte, die funktioniert aber auf neueren Windows-Versionen gar nicht mehr. Und jetzt stehe ich
da. Jetzt habe ich ganz viele tolle Photoshop-Dateien, kann sie aber leider nicht mehr aufmachen. Und das
ist uncool. Deswegen, Plain Text wirst du auch in 20 Jahren noch öffnen können, und das ist ganz toll.
Dann machst du deine Arbeit nur einmal und musst sie nicht in 20 Jahren noch mal neu machen, weil
du die Dateien nicht mehr öffnen kannst. Nächster Punkt, Plain Text ist toll, weil wir produktiver
arbeiten können. Denn du hast wirklich Plain Text, wie der Name sagt, also reine Textdateien. Da ist
nichts zusätzlich drin, was du als Mensch nicht bearbeiten kannst oder einen Texteditor nicht
bearbeiten kannst. Also insbesondere irgendwelche Steuerzeichen oder eben irgendwelche Bit- oder
Bytecodes, die kein Mensch versteht, außer eine besondere Software. Und das heißt, du brauchst zur
Bearbeitung auch wirklich nur einen Editor, einen Texteditor. Du brauchst nicht wie in Word vielleicht
noch zusätzlich die Maus, um irgendwo ins Menü zu klicken und irgendwas auszuwählen, sondern du
arbeitest direkt im Text. Das heißt, du kannst Kommandozeilen-Werkzeuge benutzen. Du kannst
theoretisch mit Linux Textdateien auf der Kommandozeile pflegen, ohne überhaupt einen
Editor aufzumachen. Und das sind natürlich riesengroße Vorteile bei der Produktivität,
denn Tastatur ist immer schneller als die Maus. Gehen wir mal davon aus, dass du vernünftig tippen
kannst und dir das Zehnfingersystem angeeignet hast oder zumindest auf dem Weg dahin bist. Dann
wirst du immer schneller mit der Tastatur deine Eingaben tätigen können, als mit der Maus
irgendwo hinzuklicken. Und das ist der große Vorteil. Wenn du Plaintext hast, musst du überhaupt
gar nicht klicken, denn du musst ja einfach nur schreiben und vielleicht einen Editor benutzen,
der dir die Navigation im Text etwas einfacher macht, mit möglichst wenig Tasten drücken,
wie zum Beispiel der VI. Aber du brauchst auf keinen Fall eine Maus, um irgendwo deinen Text
fett zu machen zum Beispiel. Viele Leute gehen ja hin in Word, markieren dann ein Wort mit der
Maus und klicken dann oben auf Fett. Davon abgesehen, dass das grundsätzlich die völlig
falsche Vorgehensweise ist, du Formatvorlagen benutzen musst und so weiter. Das lassen wir
jetzt mal dahin gestellt. Aber diese Arbeit mit der Maus macht dich halt mega langsam, weil du
immer switchen musst zwischen Tastatur und Maus. Und das wollen wir nicht. Deswegen Plaintext,
wunderbar, reiner Texteditor. Ohne Maus kannst du da alles machen, was du machen willst. Und ich
hatte es jetzt schon ein paar mal angesprochen, du kannst theoretisch jeden Editor benutzen,
den es da draußen gibt, denn die können alle Textdateien bearbeiten. Das heißt, du hast einen
weiteren großen Vorteil, nämlich die Flexibilität. Du bist nicht angewiesen auf ein Tool von einem
Hersteller. Ich reite jetzt heute sehr stark auf Word rum. Ich nehme das mal wieder als Beispiel,
weil viele das einfach kennen. Du wirst das bestimmt auch schon mal benutzt haben. Du kannst
auch irgendein anderes kommerzielles Tool nehmen, das ist ganz egal. Aber Word, weil es so verbreitet
ist, dient mir hier als Beispiel. Und wenn du zum Beispiel keinen Bock hast, mit Word zu arbeiten,
weil dir das Tool nicht gefällt, du verstehst es nicht, du kannst es nicht, was auch immer,
dann hast du leider Pech gehabt, denn Word ist nun mal das Tool, mit dem man Word-Dateien bearbeiten
muss. Und wenn du Textdateien benutzt, ist das aber nicht dein Problem, denn du kannst einfach
irgendeinen anderen Texteditor nehmen, wenn dir der, der vorgegeben ist, nicht gefällt. Textdateien
kannst du, wie ich gerade schon gesagt habe, auf der Kommandozeile theoretisch mit Linux-Befehlen
bearbeiten. Mit Windows geht das auch, aber nicht ganz so schön. Du kannst zur Not ein Notepad nehmen,
der auf jedem Windows installiert ist, oder du nimmst halt einen vernünftigen Editor, sei es
Emacs oder Vim oder Visual Studio Code zum Beispiel. Ist ganz egal. Du kannst dir dein Lieblingstool
aussuchen und musst nicht ein Tool nehmen, was irgendwer dir vorgibt, nur weil das das Einzige ist,
was das Format unterstützt. Und diese Flexibilität geht auch noch weiter. Und zwar kannst du, wenn
das Format zum Beispiel in 20 Jahren nicht mehr so verbreitet ist, ich nehme jetzt mal Markdown
als Beispiel, könntest du dir theoretisch sogar deinen eigenen Parser programmieren, der das
Format wieder einliest und ausgibt und ich weiß nicht was. Denn diese Langlebigkeit der Textdateien
trägt dazu bei, dass auch in Zukunft jede Programmiersprache irgendwie in der Lage sein
wird, diese Dateien einzulesen. Und dann kannst du, voraussetzt das Format ist nicht allzu komplex,
zur Not, wenn es keinen Parser mehr gibt, die einfach selber einen programmieren. Und wenn
der Parser gefällt dir nicht oder die Darstellung sieht komisch aus, die der generiert oder sonst
was, dann setzt du dich hin, baust dir deinen eigenen. Ich weiß, das führt jetzt ein bisschen
weit, das werden wir wohl alle nicht machen. Also ich werde mir auch keinen eigenen Parser für irgendeinen
Markup schreiben, aber du könntest es tun. Und das ist halt eben bei diesen Binärformaten
deutlich schwieriger. Von daher, Flexibilität, großer Vorteil. Und letzter Punkt, Automatisierung.
Diese Textdateien lassen sich perfekt automatisieren. Ich habe es gerade schon gesagt, jede
Programmiersprache bietet irgendwas, um Textdateien einzulesen. Das ist ein Standard, eine Standard-
Funktionalität von jedem Betriebssystem und jeder Sprache. Das heißt, wenn du auf Basis der Dateien
irgendetwas automatisieren willst, dann kannst du das sofort machen, ohne externe Tools. Wenn
du Word-Verarbeitung automatisieren willst, geht das zwar auch. Du könntest dir ein Word-Makro
schreiben, in der fantastischen Programmiersprache VBA. Kannst du machen, funktioniert auch super.
Funktioniert aber auch dann nur in Word. Das heißt, du brauchst immer Word, um irgendwas zu automatisieren.
Wenn du es nicht installiert hast, wenn du zum Beispiel irgendeine Massenverarbeitung auf dem
Server machen willst und da ist kein Word installiert, könnte das schwierig werden. Hast du aber eine
Textdatei, kannst du dieses Skript, was du da gebaut hast, auf jedem beliebigen System überall
ausführen, weil es sind ja eben nur Textdateien. Also Automatisierbarkeit wird ganz, ganz groß
geschrieben bei diesen Textformaten und das ist für uns als ITler natürlich super interessant.
Beispiel, ich habe vielleicht 50 Blogartikel geschrieben in den letzten Jahren und möchte
die jetzt als PDF erzeugen. Wie mache ich das, wenn ich 50 einzelne Word-Dateien habe? Da copy
und paste ich mich zu Tode und habe dann am Ende eine Word-Datei mit 200 Seiten. Da ratzt mir
wahrscheinlich alle zwei Minuten das Programm ab und das ist doof. Habe ich das alles in zum Beispiel
Markdown-Dateien, mache ich ein CAD auf der Kommandozeile, ballere die alle in ein großes
Markup-File, hänge die einfach hintereinander, drücke auf Drucken, wenn ich einen Markdown-Prozessor
habe und schwupp kommt mein PDF raus. Das heißt, es ist mega einfach, auch eine Massenverarbeitung
zu machen, eine Manipulation dieser Dateien zu machen, eben die Automatisierung. Das ist ein
sehr großer Vorteil von diesen Plain-Text-Formaten. Also fassen wir nochmal zusammen. Vorteile von
Plain-Text-Formaten. Jetzt mal unabhängig auch davon, ob es jetzt für Texte ist oder nicht.
Grundsätzlich Plain-Text, also auch XML, HTML, alles was du wirklich in Textformaten ablegst. Die Vorteile
sind Versionierbarkeit, Langlebigkeit, Produktivität bei der Arbeit, Flexibilität und Automatisierbarkeit.
Und jetzt kommen wir mal zu den konkreten Beispielen, die ich im Alltag benutze und wie ich finde, die
ganz sinnvoll sind. Ob du jetzt alle davon zum Beispiel bei dir brauchst oder nicht, ist egal.
Nimm das mal als Anregung, guck dir vielleicht mal ein paar davon an und entscheide dann, was für
dich das Passende ist. Ich gebe dir zu allen so ein paar Informationen, vielleicht Vor- und Nachteile
und dann kannst du entscheiden, ob und wo du sie vielleicht einsetzen willst. Fangen wir vielleicht
mal an mit dem Platz hier, schnell nicht mal, und zwar Markdown. Markdown ist im Jahr 2020, wo ich
das hier aufnehme, sicherlich eines der verbreitetsten Formate für solche Plain-Text-Markup-Sprachen,
die es gibt. Denn das wird einfach von sehr vielen Plattformen unterstützt. Du kannst zum Beispiel
auf GitHub, wenn du dort deine Dateien einfach als Markdown-File mit reinlegst, kannst du die
direkt in der Web-Oberfläche anzeigen lassen, da werden sie schön gerendert, heißt das dann. Wenn
du das Wort vielleicht noch nie gehört hast, beim Rendern geht es immer darum, um aus einem
Input-Format ein Output-Format zu machen. Also wenn du zum Beispiel Markdown aufschreibst und,
nehmen wir mal ein kleines Syntax-Beispiel, ein Sternchen zu Beginn der Zeile sorgt für eine
Aufzählung. Im Plain-Text-Format siehst du halt einfach nur das Sternchen, also diesen Asterisk
auf Englisch, und wenn du das Ding jetzt renderst, dann kommt zum Beispiel HTML raus, weil du das
schön lesbar darstellen willst, und im HTML wird dann wirklich ein UL mit LI-Element generiert,
sodass du also wirklich ein Aufzählungszeichen davon hast. Und dieses Rendering wird also benutzt,
um aus dem Input-Format das Output zu machen. Du könntest Markdown jetzt auch als PDF rendern,
Standardformat wäre halt eben HTML, oder zum Beispiel aus LaTeX könntest du auch PDF rendern,
oder aus Plant-UML, was ich kurz erwähnt hatte, könntest du aus dem Text-Format eben eine Grafik
rendern, zum Beispiel ein Klassendiagramm beispielsweise. So, und dieses Rendering wird
in vielen Tools einfach nativ unterstützt. Nativ bedeutet, dass es quasi eingebaut ist,
dass du also nichts zusätzlich installieren musst, irgendwie ein Plugin oder sonstiges,
sondern dass das einfach da ist. Und das ist bei GitHub zum Beispiel so. Wenn du eine Markdown-Datei
bei GitHub mit eincheckst und du klickst die an, aber
auf der GitHub-Oberfläche, dann wird die direkt nativ gerendert in HTML und du siehst wirklich
ein schönes Output, also Beispiel aus dem Sternchen wird jetzt eben eine Liste mit Aufzählungszeichen
gerendert.
Und das ist in ganz, ganz vielen Plattformen so, nicht nur bei GitHub.
Du kannst dich mal umgucken, wenn du das weißt, dann wirst du auch merken, wie viele Plattformen
das unterstützen.
Zum Beispiel meine To-Do-App, Todoist, die ich benutze, die unterstützt Markdown.
Wenn ich in meine Kommentare zum Beispiel Markdown schreibe, dann wird das einfach so
gerendert.
Oder ich glaube auch zum Beispiel Kanban-Software wie Trello unterstützen das, glaube ich, auch
für die Kommentare.
Also denk mal dran, sobald du irgendwo das nächste Mal eine Software benutzt, vielleicht
unterstützt die sogar schon Markdown, ohne dass du es weißt.
Und das kann man relativ einfach ausprobieren.
Ich habe jetzt schon das erste Beispiel genannt, eben diese Sternchen zu Beginn der Zeile sorgen
dafür, dass es eine Aufzählung wird.
Und wenn das in deinem Tool so ist, Sternchen eingeben, dahinter den Text und auf einmal
siehst du eine schön gerenderte Liste mit Pünktchen davor, dann weißt du, okay, das
Ding unterstützt Markdown.
Und wie gesagt, die Liste der unterstützenden Softwaren ist lang.
Ich benutze zum Beispiel auf meiner Website ein WordPress-Plugin, weil WordPress das leider
noch nicht nativ unterstützt, soweit ich weiß.
Und das heißt, meine Blogartikel schreibe ich auch alle in Markdown, kopiere die in
den Edehor, drücke auf Speichern und dann sorgt das Plugin dafür, dass aus dem Markdown
HTML wird und das vernünftig aussieht.
Und das gibt es halt auch für ganz viele andere Plattformen, wird auch in vielen Editoren
unterstützt.
Ich nehme jetzt mal Visual Studio Code, wo ich nachher noch ein bisschen drauf eingehe
und unterstütze das auch perfekt.
Es gibt sogar eine Vorschau-Funktion, das heißt, ich schreibe Markdown und auf der
rechten Seite wird mir direkt angezeigt, wie es dann in HTML aussehen würde und so weiter.
Und das vielleicht ganz kurz, also Output von Markdown ist hauptsächlich HTML.
Wurde auch dafür entwickelt, dass man möglichst einfach HTML schreiben kann, denn HTML ist
halt dieses mega nervige Format mit öffnendem Tag und schließendem Tag und da hast du quasi
mehr Overhead, mehr Tags, als du eigentlich deinen Text hast.
Und das ist halt so doof, darum würde ich dir nicht empfehlen, damit Texte zu schreiben.
Und Markdown macht das halt deutlich einfacher, da werden halt bestimmte syntaktische Elemente
aus HTML in einfacherer Darstellung dargestellt.
Also eben das Beispiel, anstatt ul, li, text, li zu, ul zu, machst du einfach Sternchen,
Text und hast halt deine Liste mit einem Aufzählungspunkt.
Und Markdown bietet nicht alle Möglichkeiten aus HTML, also sowas wie tiefer gestellt,
höher gestellt, Fußnoten und ich weiß nicht, was du alle noch machen kannst.
Das geht in Markdown nicht, das ist sehr abgespeckt und deswegen empfehle ich es auch
zum Einstieg, weil es sehr leicht zu lernen ist.
Es gibt einen ganz geringen Sprachumfang, es gibt so klassische Sachen wie Bildereinbetten,
sortierte, unsortierte Listen, Überschriften natürlich, Links und verschiedene andere
Dinge gibt es, aber so ganz exklusive Sachen wie, keine Ahnung, Canvas, auf dem du rummalen
kannst oder so, dafür ist es nicht gedacht.
Es gilt wirklich, die zentralen Elemente, die du in so einem Text üblicherweise auf
Websites hast, damit abzubilden.
Ich habe in den Shownotes zur Episode hier Beispiele für alle Textformate, die ich heute
vorstelle, genannt.
Schau da gerne mal rein.
Die findest du wie immer unter itberufe-podcast.de slash 155 für die 155.
Episode heute und Markdown ist meiner Meinung nach das einfachst zu erlernende Format.
Also wenn du dir das mal anguckst, okay, wenn du etwas schwierigere Sachen in Anführungszeichen
wie Links und Bilder oder so dir anguckst, brauchst du vielleicht 10 Minuten, um das
Format zu verstehen.
Also es ist wirklich sehr, sehr einfach und danach kannst du halt loslegen und kannst
deine Texte damit schreiben und hast eben hauptsächlich als Outputmöglichkeit HTML,
aber es gibt eben auch Tools, die daraus direkt einen PDF machen, mit Inhaltsverzeichnis
und allem Schnickschnack, was du brauchst, anhand der Überschriften und das ist zum
Einstieg wirklich sehr gut geeignet und wird halt in sehr vielen Tools unterstützt.
Von daher, das kann ich dir dringend empfehlen.
Wenn du es noch nicht gehört hast, guck dir Markdown mal an, das ist ein ganz einfaches
Format.
Markdown übrigens heißt extra so, als Gegenentwurf zu Markup.
Markup ist ja eine Auszeichnungssprache, insbesondere halt HTML und die Erfinder haben
sich gedacht, Mensch, HTML ist ja eigentlich ganz cool, ist aber ein mega Overhead mit
diesen 1000 Tags und so und deswegen haben sie sich dann Markdown überlegt, ne, Up,
ja, verstehst du?
Und das ist dann halt der Gegenentwurf, damit es ein bisschen einfacher ist, für dich die
Texte zu schreiben.
Markdown benutze ich, ohne Scheiß, jeden Tag.
Ich schreibe inzwischen fast alles in Markdown.
Ich schreibe meinen Newsletter in Markdown, meine Blogartikel, meine Kommentare zum Code,
also zum Beispiel in GitHub, ja, das heißt, Markdown ist so omnipräsent bei mir.
Ich würde inzwischen einfach erwarten, dass das jeder kennt, ja, ist aber leider noch
nicht so.
Ich kann dir nur ans Herz legen, dir das mal anzugucken.
Kann ich dringend empfehlen.
So, das nächste Format wäre dann ASCII-Doc.
ASCII-Doc hat bewusst ASCII im Namen, ne, sind halt auch wieder Plain Text der Hinweis
da drauf und das Format ist sehr, sehr umfangreich im Vergleich zu Markdown.
Also wenn du die Markdown-Syntax in 15 Minuten lernst, ASCII-Doc, da brauchst du deutlich
länger.
Die Basics sind fast identisch zu Markdown, also Listen zum Beispiel sind auch einfach
Sternchen zu Beginn der Zeile, aber ASCII-Doc kann noch so viel mehr.
ASCII-Doc kannst du wirklich benutzen, ich sag mal, um komplette Bücher zu schreiben,
weil der Sprachumfang ist wirklich riesig.
Du kannst auch super cool da mit Dokumentation für Quelltext schreiben.
Du kannst mit einfachen Befehlen zum Beispiel Quelltext aus Dateien direkt inkludieren aus
der echten Datei.
Du kannst so, ja, ich glaub die heißen Callouts machen, wo dann zum Beispiel so ein Ausrufezeichen
zu Beginn der Zeile steht, richtig schön gerendert, so um Leute darauf hinzuweisen,
dass es hier vielleicht ein Problem gibt beim Verständnis oder sowas.
Also du hast richtig viele coole Möglichkeiten, Fußnoten kannst du einfügen, also wirklich
ganz viele Sachen, ist aber eben auch ein großer Sprachumfang, d.h. hier musst du wirklich
ein bisschen lernen, ein bisschen investieren.
Für die Basics, sag ich mal, die man so für seine Texte braucht, Aufzählungen, Überschriften,
sowas, geht das auch in 15 Minuten, ja, sieht auch sehr sehr ähnlich aus zu Markdown, muss
man ehrlicherweise sagen, aber sobald es dann natürlich darüber hinausgeht und du wirklich
lange Texte schreiben willst, dann musst du dich da ein bisschen einarbeiten.
Auf der anderen Seite könntest du mit ASCII-Doc zum Beispiel deine Projektdokumentation schreiben,
das meine ich jetzt ernst, ja, deine Projektdokumentation für die IHK-Abschlussprüfung, Markdown unterstützt
alles, was du dafür brauchst, ja, Listings zum Beispiel, Bilder einbetten, Inhaltsverzeichnis,
verlinkte Überschriften, also alles, ja, und deswegen kannst du auch aus ASCII-Doc so
ziemlich jedes Output-Format generieren, du kannst HTML erzeugen, ein PDF, richtig schön
mit hier klickbarem Inhaltsverzeichnis, was dann auch an der Seite so aufklappen kann
und so, du kannst EPUB generieren, also wirklich ein E-Book daraus erzeugen, ja, und das richtig
Geile ist für mich als Entwickler, es gibt auch Gradle-Plugins oder Maven-Plugins, wenn
du zum Beispiel mit Java entwickelst, gibt es bestimmt auch für andere Plattformen irgendwelche
Plugins, ja, aber ich kann zum Beispiel meine Code-Dokumentation in ASCII-Doc schreiben,
mit ins Repo packen und dann im Gradle-Build, also in meinem Build-Tool, die Dokumentation
erzeugen lassen.
Das heißt, als Output bei meinem Compile-Prozess, bei meinem Build-Prozess kommt nicht nur das
lauffähige Artefakt raus, also mein JAR-File in Java zum Beispiel, sondern auch ein PDF,
wo die ganze Dokumentation drin ist, ne.
Ist das nicht geil?
Ja, also das macht richtig Bock, so als Entwickler, du dokumentierst was, du schreibst was, drückst
auf den Build-Knopf und am Ende kommt ein PDF raus, ist das nicht genial?
Also das ist für mich als Entwickler so richtig cool, das ist so nach dem Motto, ich kompiliere
meine Dokumentation, ja, und das macht auch Spaß, das heißt, du kannst dich auch wirklich
mit dem Build-Prozess auseinandersetzen, du kannst mit Gradle rumfriemeln und Gradle
ist jetzt nur ein Beispiel, ja, das gibt's hundertprozentig auch für .NET und PHP und
ich weiß nicht was, ja.
Das ist nämlich der große Vorteil, Asciidoc, das kommt ursprünglich aus dem Ruby-Umfeld,
ist eigentlich ein Ruby-Tool, das heißt Asciidoctor eigentlich ausgesprochen und Asciidoc ist
das Format, was da verarbeitet wird und es gibt inzwischen ganz viele Ports für verschiedene
Programmiersprachen, also für Java, sicherlich für .NET, PHP und so weiter auch und du nimmst
halt dieses Asciidoc als Input, nutzt dann eben den Asciidoctor-Port für deine Programmiersprache
und in Anführungszeichen drückst auf den Knopf bzw. du willst es ja automatisieren,
also gibst einen Kommandozeilenbefehl ein, zum Beispiel Gradle Asciidoc und dann kommt
halt eben dein PDF raus oder dein EPUB oder HTML oder was auch immer du willst, ja.
Das heißt, das Ding hat einen super coolen Umfang, du kannst damit richtig fette Bücher
schreiben auf, in Anführungszeichen und es ist super automatisierbar, es gibt viele
Bildwerkzeuge, die das schon unterstützen, also richtig geiles Format, gefällt mir richtig
gut und ich programmiere in Anführungszeichen damit zum Beispiel gerade die Dokumentation
für meine Java-Einführung, die ich mit meinen Azubis mache. Das habe ich jetzt auf Asciidoc
umgestellt, einfach weil der Sprachumfang so genial ist und gerade weil ich da diese
Code-Ausschnitte super reinbauen kann, ja. Beispiel, ich mache irgendwie eine Einführung
in die Objektorientierung, habe da so eine kleine Klasse programmiert und anstatt jetzt
Copy-Paste zu machen, das in mein Dokument zu packen, sage ich einfach in der Asciidoc-Datei,
hey, inkludiere mal bitte diese Java-Datei, die liegt an diesem Pfad, nimm mal Zeilen 17
bis 23 und dann habe ich kompilierbaren Code, wo ich weiß, dass er funktioniert und er wird
direkt in der Dokumentation benutzt, mit Syntax-Highlighting und allem Schnickschnack,
ja. Also Asciidoc kann ich nur empfehlen, unbedingt angucken, ganz tolles Format. So,
dann mache ich mal weiter mit einem ganz alten Format, aber weil es so alt ist, auch einem
ausgereiften Format und zwar LaTeX. Wenn du dir auf meiner Website mal die Vorlage anguckst für
die Projektdokumentation für deine Abschlussprüfung, dann wirst du sehen, die ist in LaTeX entwickelt,
gibt es auch alle bei GitHub übrigens, kannst du dir angucken, kannst du gerne einen Pull-Request
auch aufmachen, mir irgendwelche Feedback-Sachen zuschicken und so weiter. Das ist auch Plain-Text,
das heißt, du kannst mit jedem Text jedes Zeug aufmachen und LaTeX ist ein komplettes
Textsatzsystem, das heißt, es gibt perfekten Textsatz in Anführungszeichen, das Ding ist
ausgereift, das ist Jahre alt, das ist etabliert und damit kannst du komplette Bücher setzen,
inklusive allem, was du brauchst, Index, Inhaltsverzeichnis, Querverweise, Fußnoten
natürlich, Listings, Grafiken, alles. Also LaTeX ist ein Textsatzsystem, das ist quasi ein
Konkurrenzprodukt zu Word, nur besser. Mit LaTeX kannst du alles machen und LaTeX ist, ich
weiß nicht, 20, 30 Jahre alt, funktioniert heute immer noch genau wie früher, das heißt, die
Langlebigkeit ist hier einfach das zentrale K.O.-Kriterium. Ich kann Dateien, die ich in
meinem Studium erstellt habe vor inzwischen 15 Jahren, heute noch aufmachen und kompilieren
und das Ding sieht genauso aus als PDF wie früher. Also das ist wirklich genial und wenn du dir das
noch nicht angeguckt hast, dann wird es jetzt Zeit, das zu tun, denn für so eine IHK-Projektdokumentation,
wo mal 50 Seiten bei rumkommen, kann ich das nur empfehlen. Die Hürde ist natürlich sehr hoch,
denn LaTeX ist schon ein komplexes System, insbesondere weil es halt für, du kannst damit
eben Bücher setzen, das heißt, der Sprachumfang ist auch enorm groß. Also du kannst ja nicht
einfach mal anfangen, hier Sternchen, du hast eine Aufzählung. Nein, du brauchst sehr viel mehr Befehle.
Du brauchst eine komplette Einleitung, in Anführungszeichen, um dein Dokumentformat zu
bestimmen. Du musst Seitenränder setzen, so was, Abstände setzen, Schriftgröße und also du musst
wirklich viel tun, damit es vernünftig aussieht. Aber die Einarbeitung lohnt sich, denn wenn du das
einmal fertig hast, und das habe ich ja schon für dich gemacht mit meiner LaTeX-Vorlage für die
Dokumentation, dann musst du nur noch deinen Text einfügen und dann aber eben auch noch die
entsprechenden Befehle, um Sachen hervorzuheben, wie zum Beispiel Fettdruck. Und nur mal als Vergleich,
LaTeX hat da vom Overhead schon ein bisschen mehr mit HTML gemeint, wie mit den anderen Sprachen.
Also ich nehme jetzt mal nur das Beispiel Fett, ja, da würdest du in Markdown zum Beispiel einfach
Sternchen um das Fette-Wort machen. Also, keine Ahnung, dies ist ein Text und Text soll Fett. Dann
würdest du schreiben, dies ist ein Sternchen, Sternchen, Text, Sternchen, Sternchen und dann würde Text
Fett gedruckt. Bei ASCII-Doc reicht ein Sternchen, ja, wäre es also Sternchen, Text, Sternchen und
andere Formate machen das vielleicht noch anders. In LaTeX brauchst du wirklich einen Befehl dafür und
der heißt zum Beispiel backslash text bf, geschweifelte Klammer auf, dann kommt der Text, geschweifelte
Klammer zu. Das heißt, du musst schon ein bisschen mehr tippen und eingeben, als du das bei den anderen
Formaten machen müsstest. Immer noch schöner, als mit Word zu arbeiten, weil du es halt einfach
eintippen kannst, ja, und nicht irgendwie markieren, Formatvorlage auswählen, also klicky-klicky. Von daher,
LaTeX ist mein absolutes Lieblingsprogramm immer noch, wenn ich komplexe, ja, Bücher fast setzen
will, ist aber eben auch ein ziemlicher Overhead und du brauchst halt auch ein Tool, also du brauchst
eine LaTeX-Distribution, um dann wirklich dein Dokument auch übersetzen zu können. Und da gibt es
ganz viele Plug-ins und erweiterte Bibliotheken, die du brauchst und so weiter und so fort. Das
heißt, die Infrastruktur ist schon ein bisschen komplexer, als wenn ich das mal mit Markdown
vergleiche, wo du wirklich nur einen Texteditor brauchst und kannst loslegen, ja. Also von daher, LaTeX,
ich kann es dir dringend empfehlen, guck's dir an. Meine Azubis benutzen das zum Beispiel, um ihr
Berichtsheft zu erstellen, ja. Also du kannst damit supergeile Sachen machen. Die Einstiegshürde ist aber
relativ groß, weil du dich da wirklich einarbeiten musst, ja. Also nur zum Vergleich, zu LaTeX gibt es
ganze Bücher, die erklären, wie man vernünftig mit LaTeX arbeiten sollte, ja. Einfach, weil es so umfangreich
ist. Nichtsdestotrotz, ich empfehle das, guck dir das an. Das Ding ist richtig geil, ja, ist aber eine
große Hürde, wie gesagt. Ja, und das letzte Format für heute wäre plant.uml. Das ist eine kleine
Subsprache, in Anführungszeichen, nur für UML-Diagramme. Das heißt, du kannst hier auf Plain-Text-Ebene deine
Klassendiagramme zum Beispiel beschreiben oder Aktivitätsdiagramme, Use-Cases, was auch immer. Das
unterstützt sehr viele Diagrammtypen. Und wie kannst du dir das vorstellen? Beim Klassendiagramm ist es
vielleicht noch am einfachsten zu verstehen, wenn du grob so eine Syntax von C-sharp, Java, PHP im Kopf
hast, also irgendwie class Auto, Geschweife, Klammer auf und dann irgendwie deine Variablen, Geschweife,
Klammer zu und so. Im Prinzip so ähnlich sieht ein Beispiel in plant.uml aus, ja. Und dann drückst du
quasi auf den Knopf und plant.uml macht daraus ein PNG, ein JPEG, was auch immer du haben willst. Und das
sieht dann wirklich so aus wie ein UML-Diagramm, wie du es kennst. Also die Klasse Auto wird dann
wirklich als Rechteck dargestellt mit den zwei waagerechten Strichen, wo die Attribute und Methoden
darunter stehen und so weiter. Das heißt, du tippst deine Klasse ein. Im besten Fall kannst du sie fast
eins zu eins aus deinem Code kopieren, ein bisschen anpassen, weil die Syntax nicht hundertprozentig so ist
wie Java, aber sehr, sehr, sehr ähnlich. Und dann kommt halt auf Knopfdruck ein schönes Bild raus. Und das ist
natürlich auch mega cool, wenn du das dann benutzt, um zum Beispiel deinen Code zu dokumentieren,
beispielsweise in Verbindung mit Asciidog. So habe ich das jetzt gemacht. Dann schreibst du deine
Dokumentation in Asciidog und dann gibt es ein Plugin für Asciidog, was direkt plant.uml in die
Sprache integriert. Das heißt, du kannst jetzt sowas sagen, so Sternchen, so im folgenden Beispiel siehst du
jetzt die Klasse als Diagramm und dann machst du Enter und gibst irgendwie sowas ein wie, ich sage
jetzt mal in Anführungszeichen, jetzt kommt plant.uml, dann tippst du deine Klasse ein, Ende plant.uml und dann
kannst du mit dem Asciidog-Übersetzer daraus ein PDF machen, wo dann zum Beispiel das plant.uml-Diagramm
direkt als Grafik drin ist. Das heißt, du kannst es nahtlos integrieren, schreibst Asciidog rundherum,
sagst dann jetzt kommt plant.uml, machst dein Diagramm, machst es wieder zu und weiter geht's. Und das ist
mega easy, alles plaintext, alles versionierbar, alles an einer Stelle und das ist einfach mega
cool. Und auch dafür gibt es sehr, sehr viele Plugins für Plattformen, wie zum Beispiel die
Projektverwaltungssoftware, die ich erwähnt hatte, Redmine, die wir in der AO zum Beispiel einsetzen
in der Firma, die hat ein Plugin dafür. Das heißt, du kannst sogar in deinen Wiki-Seiten oder deinen
Tickets zum Beispiel ein plant.uml-Diagramm reinschreiben und die Oberfläche rendert das dann für
dich und zeigt dir das als schönes Diagramm an. Und das ist natürlich mega cool, wenn du in deinem
Ticket zum Beispiel schreibst, hey, ich habe hier ein Workflow, keine Ahnung, so eine kleine
Aktivitätsdiagrammzeichnung oder so, kannst du einfach runterschreiben, drückst auf speichern und in
der HTML-Seite findest du eine schön gerenderte Grafik, um das darzustellen. Also mega cool, das
kann ich nur empfehlen, wenn du irgendwas mit Dokumentation machen musst, gerade im Entwicklungsumfeld
plant.uml, richtig coole Sache. Die Syntax ist für die einzelnen Diagrammtypen ähnlich, aber schon
noch ein bisschen, natürlich, weil die Diagramme auch unterschiedlich aussehen, ein bisschen anders.
Das heißt, du musst da schon ein bisschen Zeit investieren, aber um mit so einem simplen
Klassendiagramm zum Beispiel anzufangen, das schaffst du in 10 Minuten. Die Basic-Syntax hast
du drauf und du kannst dann schon mal anfangen, deine Software damit zu dokumentieren. Also
richtig, richtig gut, kann ich nur empfehlen, schau dir das mal an. Ja, und jetzt fällt mir
gerade auf, dass ich noch ein Format vergessen habe, und zwar Textile, das habe ich einfach
übersprungen. Textile hat auch den Ansatz wie Markdown möglichst einfach zu sein und wurde
auch erfunden, quasi um von diesem HTML-Zeug wegzukommen. Die Syntax ist ein bisschen anders
als bei Markdown, man merkt aber noch die HTML-Einflüsse. Also mal als Beispiel, in Markdown
wird eine Überschrift einfach mit einem Hash, also mit dem Lattenzaun quasi gemacht, Lattenzaun
Überschrift, dann hast du deine Überschrift. In Textile wird das zum Beispiel mit h1 Punkt oder
h2 Punkt gemacht. Und wenn du HTML kennst, h1, h2 sind ja die Tags für Überschriften. Das heißt,
Textile ist noch ein bisschen dichter dran als HTML, was ich persönlich aber ein bisschen blöder
finde als bei Markdown, denn normale Menschen, die HTML nicht kennen, die fragen sich, hä, h1, h2,
was soll das denn? Und bei Markdown machst du einfach Hash oder Doppel-Hash für Überschrift
2. Das ist also, finde ich, einfacher zu erklären und einfacher zu lesen. Deswegen
bevorzuge ich Markdown, ja. Aber vom Umfang ist Textile vergleichbar mit Markdown, kann auch
was Markdown kann, die üblichen Sachen, Verlinkung, Überschriften, FAT, Kursiv,
etc. kann es auch. Und ich benutze es eigentlich hauptsächlich deswegen, weil ich gezwungen werde,
nämlich Redmine, unsere Projektverwaltungssoftware, unterstützt leider nur das und nicht Markdown.
Deswegen muss ich es können quasi. Aber wenn ich die Wahl hätte, würde ich auf jeden Fall
Markdown bevorzugen, einfach weil es viel verbreiteter ist. Ich hatte schon gesagt,
GitHub und so weiter. Textile kann sein, dass einige Plattformen das unterstützen,
aber ich glaube, Markdown hat bei weitem die größere Verbreitung. So, das waren die Beispiele
für konkrete Markup-Formate. Ich fasse nochmal zusammen. Markdown unbedingt angucken, super
einfach zu lernen, wird fast überall unterstützt. Asciidoc, mega großer Sprachumfang, perfekt für
technische Dokumentation. Du kannst ganze Bücher damit setzen lassen. Textile, nettes Ding. Wenn
ich die Wahl hätte, würde ich Markdown nehmen. LaTeX, komplettes Textaussystem, mit dem du perfekt
Texte setzen kannst. Aber die Einstiegshöhe ist sehr groß und plant alles, was du mit UML-Diagrammen
machen willst, kannst du damit tun und lässt sich insbesondere zum Beispiel in Asciidoc perfekt
integrieren. So, jetzt habe ich aber gerade schon gesagt, Textile finde ich eigentlich blöd, ich
würde es lieber in Markdown machen, kann ich aber nicht, weil die Plattform das nicht unterstützt.
Und jetzt kommen wir zum weiteren Vorteil dieser Formate, denn, ich hatte gerade schon gesagt,
oder gerade zu Beginn, so diese Flexibilität, die die Formate mir erlauben, die kann ich jetzt
hier ausspielen. Und zwar, wenn ich gewohnt bin, Markdown zu schreiben, dann kann ich das jetzt
weiter tun. Wenn ich jetzt aber als Zielplattform Redmine zum Beispiel habe, wo ich Texteil brauche,
dann kann ich das ja automatisieren und die Formate einfach ineinander übertragen. Und
dafür gibt es ein mega cooles Tool, das ich unbedingt empfehlen möchte, und das heißt
Pandoc. Und das konvertiert automatisch Dateien von beliebigen Inputformaten in beliebige Outputformate.
Das heißt, ich könnte sowas sagen wie Pandoc, also das ist jetzt nicht die exakte Syntax,
aber nur zum Verständnis. Pandoc minus Input, Markdown, minus Output, Texteil. Und dann schreibe
ich die Datei dahin und dann nimmt er die Markdown-Datei, liest die ein und konvertiert
die in Texteil ins andere Format, aber in der gleichen Struktur natürlich. Also Beispiel,
wenn du in Texteil vielleicht Code-Blöcke mit At-Zeichen umschließen musst, in Markdown die
aber mit einem, was auch immer für ein Akzent es ist, Graf oder Tegül, ich weiß es nicht,
auf jeden Fall macht es dann quasi diese Konvertierung für dich. Also sieht Markdown,
oh, das ist ein Code-Block, dann konvertiert er das in die entsprechende Texteil-Syntax und macht
halt die Zeichen an, dass sie dafür benutzt werden. Und das ist mega, mega gut, denn das heißt,
du kannst auf der Konsole einfach aus deinem Markdown dein Texteil machen, kopierst das Texteil,
packst es in Redmond rein und bist fertig. Das heißt, egal welches Markup-Format du benutzt,
mit Pandoc kannst du es ineinander umwandeln. Und ich meine wirklich, egal welches. Du kannst mal
auf die Website gehen von Pandoc, alles in den Show Notes verlinkt, da findest du, ich glaube,
über 40 Formate, die Pandoc verarbeiten kann. Das ist mega geil. Dieses Tool ist wirklich richtig
gut. Du kannst unter anderem auch LaTeX erstellen lassen. Ich glaube, sogar Word-Dateien sind
inzwischen möglich. Also Pandoc ist ein mega Ding. Wenn du das noch nie gehört hast,
unbedingt angucken, denn da kannst du wirklich, und das Ding ist auch rattenschnell, Formate
ineinander umwandeln. Das ist genau das Problem. Wenn deine Plattform dein Lieblingsformat nicht
unterstützt, dann hast du jetzt keine Ausrede mehr, denn du nutzt einfach dein Lieblingsformat
Pandoc, einen Aufruf und du kannst das Zeug dann in deiner Plattform benutzen. Also unbedingt angucken.
Ansonsten ein Tool, was ich empfehlen kann, ist Visual Studio Code. Inzwischen wirklich
ein sehr cooler Editor, der von Microsoft verkommt. Visual Studio war ja die
original Entwicklungsumgebung von Microsoft, aber der Editor hat damit nicht
mehr viel zu tun. Also es ist wirklich ein eigenständiges Produkt und es ist
halt auch kostenfrei erhältlich und unterstützt so ziemlich jedes Format, was
ich heute erwähnt habe. Insbesondere auch Markdown, super Integration. Da habe ich
schon gesagt, du kannst eine Preview-Funktionalität, du kannst das Zeug
direkt aus dem Editor als HTML exportieren zum Beispiel. Wenn deine
Plattform gar kein Markup-Format unterstützt, machst du Visual Studio Code auf, gibst
Markup ein und machst rechtsklick Export als HTML oder so und kannst das HTML
irgendwo reinpasten. Also der Editor ist mega gut, hat natürlich auch Syntax-Highlighting,
hat sogar einen Linter für Markdown, was ich richtig gut finde. Linter, wenn du das
noch nie gehört hast, ist ein Tool, was deine Code-Qualität quasi prüft und dir
Verbesserungsvorschläge macht und ist jetzt mal nur ein Beispiel. Am Ende einer
Markdown-Datei sollte es zum Beispiel ein Zeilenumbruch sein. Wenn du den vergisst,
dann meckert Visual Studio Code rum, macht da so eine gelbe Schlange drunter und sagt
Hallo, bitte Zeilenumbruch einfügen. Also das Tool ist richtig, richtig gut, zeigt
dir also auch Syntax-Fehler, Verbesserungsvorschläge und so weiter und
eben diese Preview-Funktion finde ich auch sehr gut und dann kannst du beim
Tippen direkt sehen, wie es zum Beispiel in HTML nachher aussehen würde und ob
du es richtig gemacht hast. Also super Sache, kann ich nur empfehlen.
Ansonsten gibt es noch weitere konkrete Tools für einzelne Sprachen. Ich habe
zum Beispiel lange Zeit Markdown-Pad benutzt. Das ist ein Editor speziell nur
für Markdown und der hat auch gerade den großen Vorteil, dass ich mit
Rechtsklick sagen kann Copy as HTML und dann kann ich eben das HTML irgendwo
reinpasten. So habe ich zum Beispiel ganz viele Jahre lang inzwischen mein
Newsletter geschrieben. Mailchimp, meine Mail-Software, die ich dafür benutze,
unterstützt kein Markup, also kein Markdown oder sonst irgendwas. Das heißt,
ich musste immer HTML in die E-Mails pasten und das habe ich dann mit dem
Markdown-Pad gemacht. In Markdown geschrieben, Rechtsklick, Copy as HTML,
rüber in die E-Mail und fertig war ich. Und dafür gibt es natürlich noch
verschiedene weitere Editoren, die speziell für einzelne dieser Sprachen
geeignet sind. LaTeX zum Beispiel gibt es irgendwie fünf verschiedene Editoren,
die man nutzen kann. Du kannst es in Eclipse machen oder auch mit Visual
Studio Code natürlich. Also das ist eben, wie gesagt, der Vorteil. Den siehst du
jetzt hier, dieser Markup-Sprachen. Plaintext, du kannst irgendeinen Editor
nehmen. Der, der dir einfach am besten gefällt, den nimmst du und du musst
dich nicht darum kümmern, da großartig noch irgendwie eine andere Software zu
installieren oder sowas. Gut, damit wäre ich jetzt heute fertig. Ich habe viel
länger gequatscht, als ich es gedacht hätte, zu diesem kleinen Thema. Ich hoffe,
ich konnte ein bisschen was näher bringen, warum du dir das unbedingt
angucken solltest, so ein Plaintext-Format. Und ich empfehle, wie gesagt, kurze
Zusammenfassung, Markdown zum Einstieg, weil es einfach so weit verbreitet ist.
Und wenn du dann so ein bisschen auf den Geschmack gekommen bist, dann guck dir mal
die anderen Sachen an. Für Entwickler empfehle ich unbedingt ASCII-Doc und
Plant-URL. Und sobald du dich deiner Projektdokumentation näherst im dritten
Ausbildungsjahr, unbedingt mal LaTeX angucken. Noch hast du vielleicht genug
Zeit, um dich da einzuarbeiten. Wie gesagt, die Hürde ist hoch, aber je früher du
anfängst, umso wahrscheinlicher ist es, dass du deine Projektdokumentation
super damit umsetzen kannst. Als Editor empfehle ich Visual Studio Code oder ganz
klassisch den VI natürlich. Der geht auch. Der hat auch viele Erweiterungsmöglichkeiten
für die einzelnen Markup-Sprachen hier. Aber wie gesagt, du kannst irgendeinen
Editor nehmen, ist ganz egal. Als letztes noch eine kurze Literaturempfehlung. Ich
hatte es am Anfang schon erwähnt. Pragmatic Programmer, ein fantastisches
Buch. Nicht nur durch dieses eine Kapitel zum Thema Plaintext ist das zu
meiner Empfehlung geworden, sondern auch alles andere darin kannst du wunderbar
nutzen, um dich ein bisschen weiterzuentwickeln.
Es geht da nicht um konkrete Programmiersprachen, sondern es geht eher
um die Idee des Softwareentwicklers, welche Tools er einsetzen sollte, wie er
bei der Arbeit grundsätzlich vorgehen sollte und so weiter. Und eben eines
dieser Kapitel ist Plaintext. Ein anderes wäre zum Beispiel Versionsverwaltung,
warum das sinnvoll ist. Also es geht da wirklich um so absolute Grundlagen, die
für viele Softwareentwickler einfach relevant sind und deswegen kann ich das
uneingeschränkt empfehlen, dieses Buch. Sowohl die alte Version als auch die
neue. Die neue ist natürlich ein bisschen moderner gemacht. Da wird auch mal von
GIT geredet. Das gab es vor 20 Jahren noch gar nicht. Von daher, wenn du dich
entscheidest, nimm die neuere Version. Die ist natürlich viel relevanter als die
alte. Aber auch die alte war schon sehr sehr gut.
Ja, damit wäre ich jetzt mit dem Thema fertig. Ich hoffe, ich konnte mich ein
bisschen davon überzeugen, dass du dir Plaintext-Formate mal anguckst. Würde mich
freuen, wenn ich dir vielleicht so einen kleinen Einstieg hier ermöglicht habe.
Wenn du noch ein ganz anderes Format vielleicht einsetzt, was ich nicht genannt
habe heute, freue ich mich natürlich über dein Feedback. Wenn du noch ein
Format hast, was viel viel besser ist als alle, die ich heute genannt habe, dann
her damit. Schreib mir eine Mail, schreib mir einen Kommentar unter die Episode.
Shownotes mit Quelltext-Beispielen für alle Sprachen, die ich heute erwähnt
habe, findest du unter itberufepodcast.de
slash 155. Und da findest du auch alle Sprachen konkret verlinkt. Also kannst
du dich die Syntax im Detail angucken. Und auch die Tools, die ich erwähnt habe, sind
natürlich alle dort verlinkt. Also schau da gerne mal rein und bei der
Gelegenheit lass mir gerne einen Kommentar da.
Ja, in dem Sinne, dann bin ich fertig. Ich sage für heute erst mal vielen Dank für
die Aufmerksamkeit und bis zum nächsten Mal. Tschüss!










Lieber Stefan,
ich finde es mega Toll, dass du dieses Thema aufgreifst. Ich benutze seit Jahren PlantUML und Markdown usw. in unseren Git Projekten.
An alle Azubis, anhören, lernen und umsetzen. Es kostet auch keine „mehr Zeit“ in der Entwicklung.
Ich habe es unseren Azubi’s empfohlen sich anzuhören und durchzulesen. Danke Dir, für die tolle Ausarbeitung.
Liebe Grüße
Steffen Grabaum
Hallo Steffen, das freut mich! Danke für dein Feedback! 🙂
Super Folge mal wieder.
(Aha, Markdown wird in den Kommentaren unterstützt, sehr schön 🙂
Was ich an Markdown ziemlich cool finde ist, dass es ungerendert immer noch relativ gut lesbar bleibt, gerade weil die Syntax so einfach ist. Zudem bleibt die gerenderte Darstellung immer konsistent und wenn mir irgendwas nicht passt, kann ich sehr einfach die CSS ändern. Bei Word muss man selbst auf konsistente Darstellung achten, das macht aber kaum jemand und deswegen sehen viele Dokumente auch aus wie Kraut und Rüben. ^^
Selbst wenn man mit Markdown eher mit der Maus arbeiten möchte, kann man das, da es gute WYSIWYG-Editoren gibt (z.B. auch als Plugin für VS Code)
Mittlerweile gibt es sogar Flat File CMS, wo man einfach eine md-Datei hochlädt und das wars. Ich benutze gerne wikijs zum Dokumentieren. Das unterstützt sowohl HTML, als auch Markdown und AsciiDoc und ist Open Source (deswegen keine Werbung an der Stelle ^^)
Mermaid.js ist auch ziemlich cool, ähnlich
Leider hat sich das Unternehmen, in dem ich arbeite, zu sehr auf Microsoft Office eingeschossen und ich bekomme meine Kollegen nicht so einfach von den Vorteilen von plain Text überzeugt … Aber meine Azubis bekommen als allererste Aufgabe sich Markdown anzuschauen.
Schade, bei der Vorschau des Kommentars wurde MD noch gerendert, aber beim abgeschickten Kommentar nicht mehr. Naja, egal 🙂