Kommentare sindAnnotationen innerhalb vonProgrammiersprachen undTextbeschreibungssprachen. Alle diese Sprachen bestehen ausAnweisungen für den Computer (Code) und Hinweisen für Textbearbeiter (Kommentaren). Kommentare dienen dazu, denQuelltext für den Menschen leichter verständlich zu machen. Wird der Quelltext weiterverarbeitet (kompiliert,interpretiert,geparst etc.), dann werden Kommentare von der verarbeitenden Software ignoriert und haben daher keinen Einfluss auf das Ergebnis. Der Nutzer bzw. Betrachter des Ergebnisses kann daher auch nicht mehr auf die Existenz der Kommentare rückschließen; sie dienen nur zur Dokumentation, vor allem für künftige Bearbeiter des Textes.
Dieser Gebrauch des WortesKommentar weicht insofern von derBedeutung dieses Wortes in der Literatur- und Geschichtswissenschaft oder der Jurisprudenz ab, als hier nicht jemand ein vorliegendes Werk eines anderen erläutert, sondern der Verfasser selbst Anmerkungen zum Verständnis anbringt, die nicht Bestandteil des Programms oder Texts werden sollen.
Vereinzelt werden Kommentare allerdings auch zur Speicherung maschinenlesbarerMetainformationen oder zur Ergänzung einer Sprache genutzt (siehe#Verwendung entgegen der Definition).
Für eine Sprache ist festgelegt, wo ein Kommentar beginnt und wo er endet. Man unterscheidet allgemein zwischen Block- und Zeilenkommentaren. Zeilenkommentare enden automatisch am Zeilenende. Blockkommentare (auch mehrzeilige Kommentare genannt) können sich über mehrere Zeilen erstrecken und enden nach der Einleitung erst bei dem Endzeichen. In manchen Sprachen sind Blockkommentare auch innerhalb eines einzelnen Code-Befehls erlaubt. Dies wird jedoch selten genutzt.
Der Inhalt eines Kommentars und somit auch sein Nutzen kann vom Bearbeiter frei gewählt werden und unterliegt keiner verbindlichen Syntax, außer dass bei Blockkommentaren die Kommentar-Endmarkierung im Kommentar selbst nicht enthalten sein darf. In der Regel werden Kommentare in „menschlicher“ Sprache festgehalten, entweder in der Muttersprache des Autors oder in einer Allerweltssprache. Kommentare bestehen meist nur aus Text (d. h. keine Formatierungen, Grafiken, Klänge usw.), da die meisten Sprachen nur solche Kommentare zulassen.
Trotz der freien Verwendbarkeit werden Kommentare besonders oft in folgender Weise verwendet:
Viele dieser Verwendungen sind allerdings umstritten.Robert Cecil Martin unterscheidet beispielsweise zwischen folgenden „guten“ und „schlechten“ Kommentaren:[1]
Heutzutage gibt es auch oftmals feste Formate für Kommentare, die beispielsweise Ein- und Ausgabeparameter einer Funktion oder Methode einzeln erläutern. Dadurch können diese von automatischen Dokumentationsprogrammen wiedoxygen oderjavadoc verwendet werden, um vollautomatisch eine menschenlesbare Dokumentation zu generieren.
Ausnahmen von der obigen Definition von Kommentaren (Kommentare, die vom Computer nicht immer ignoriert werden) sind unter anderem:
Die Syntax von Kommentaren ist in den verschiedenen Sprachen unterschiedlich. Hier einige Beispiele, das WortCode steht dabei als Platzhalter für beliebigen ausführbaren Programmcode und soll verdeutlichen, dass es in einigen Fällen nicht nötig ist, für einen Kommentar oder die Fortsetzung desQuelltextes eine neue Zeile zu beginnen:
Sprache | Variante | Syntax |
---|---|---|
Fortran | Zeilenkommentar | C ein Kommentar bis zum Zeilenende * ein Kommentar bis zum Zeilenende Code! So kann man auch mitten in einer Zeile einen Kommentar beginnen |
Algol 60 | Blockkommentar | begincomment ein Kommentar nachbegin bis zum Semikolon; Code;comment genauso auch nach Semikolon;Code endein Kommentar nach der Endeklammer, beendet durch bestimmte Zeichen im nachfolgenden CodeCode |
C,C++,C#,D,JavaScript,PHP,Java,CSS,SQL | Blockkommentar | Code/* Ein Kommentar, der auch Zeilenumbrüche enthalten darf. */Code |
C,C++,C#,D, JavaScript,PHP,Java | Blockkommentar | $x = 5 * (2 +/* Ein Kommentar innerhalb einer Anweisung */3); |
D | Blockkommentar (geschachtelt) | Code/+ Ein Kommentar, /+ der auch Unterkommentare +/ enthalten darf. +/Code |
Pascal,Modula-2,Oberon,Seed7,AppleScript | Blockkommentar | Code(* Ein Kommentar, mit Zeilenumbrüchen *)Code |
Pascal | Blockkommentar | Code{ Ein Kommentar, mit Zeilenumbrüchen }Code |
AutoIt | Blockkommentar | Code#cs Ein Kommentar, mit Zeilenumbrüchen #ceCode |
C,C++,C#,Pascal,Object Pascal,JavaScript,PHP,Java,Bourne-Shell,PowerFlex,Scilab | Zeilenkommentar | Code// Kommentar, der bis zum Zeilenende geht // Soll er weitergehen, muss die Zeile mit \ einem Backslash enden |
Shellskript,Perl,Python,R,Ruby,PHP (selten),Windows PowerShell,Seed7,Tcl,awk | Zeilenkommentar | Code # ein Kommentar bis zum Zeilenende |
Assembler,Lisp,INI-Datei,AutoIt,Zonendatei | Zeilenkommentar | Code; Kommentar bis zum Zeilenende |
BASIC,Batch (cmd.exe, …) | Zeilenkommentar | REM Kommentar bis zum Zeilenende |
BASIC,Visual Basic | Zeilenkommentar | Code' Kommentar bis zum Zeilenende |
SGML (HTML1 bis HTML4) | Blockkommentar | Nur außerhalb von Tags und Deklarationen:<!-- Kommentartext -->
Mehrfachkommentare sind zulässig |
SGML (HTML1 bis HTML4) | Blockkommentar | Nur innerhalb von Tags und Deklarationen:-- Kommentartext --
|
XML (z. B.XHTML),HTML,JavaScript[5] | Blockkommentar | Nur außerhalb von Tags und Deklarationen:<!-- Kommentartext -->
|
Ada,AppleScript,SQL,Haskell,VHDL,Lua | Zeilenkommentar | Code-- ein Kommentar bis zum Zeilenende |
Erlang,LaTeX,Matlab,PostScript,TeX | Zeilenkommentar | Code % ein Kommentar bis zum Zeilenende |
Matlab | Blockkommentar (ab Version 7.x) | Code %{ Ein Kommentar, der auch Zeilenumbrüche enthalten darf. %} Code |
ABAP | Zeilenkommentar | Code" ein Kommentar bis zum Zeilenende |
Code * ein Kommentar bis zum Zeilenende * ein Kommentar bis zum Zeilenende Code | ||
M4 | Zeilenkommentar | Codednl ein Kommentar bis zum Zeilenende |
LaTeX | Blockkommentar (Nur mit zusätzlichen Paketen wie „verbatim“ oder „comment“) | Code \begin{comment} Ein Kommentar, mit Zeilenumbrüchen \end{comment} Code |
Mathematica | Blockkommentar | Code(* Ein Kommentar, der auch Zeilenumbrüche enthalten darf. *)Code |
Python | Blockkommentar | Code""" Ein Kommentar, der auch Zeilenumbrüche enthalten darf. """Code |
Vimscript | Zeilenkommentar | Code" ein Kommentar bis zum Zeilenende |
Lisp | Zeilenkommentar | Code;; ein Kommentar bis zum Zeilenende ; Manche LISP-Dialekte benötigen zwei und manche einen ; |
Haskell | Blockkommentar (geschachtelt) | Code {- Ein Kommentar, mit Zeilenumbrüchen und einem geschachtelten Kommentar: {- Ich bin der innere Kommentar und nur ich werde durch die folgende Zeichenkombination geschlossen: -} , der durch die folgende Zeichenkombination geschlossen wird: -} Code} |
Eine interessante Möglichkeit, Kommentare einzusetzen, bieten dieesoterischen Programmiersprachenbrainfuck undINTERCAL (letztere in Verbindung mit dem Compiler „ick“[6]): Alles, was keinen gültigen Befehl darstellt, wird vom Interpreter bzw. Compiler ignoriert. Kommentare müssen also nicht besonders ausgezeichnet werden.