|
|
Komentarz (informatyka)
Komentarz to fragment kodu źródłowego, którego jedynym celem istnienia jest informowanie o czymś osoby czytającej źródła, a który nie ma żadnego wpływu na program - i jest zazwyczaj przez kompilator czy też interpreter pomijany.
Komentarz to typowy lukier składniowy.
[edytuj] Zasady stosowania komentarzy
Istnieją różne szkoły pisania komentarzy - od jednej skrajności, mówiącej, że z komentarzy powinno się móc wywnioskować wszystko co program robi, bez oglądania reszty źródeł, do drugiej, mówiącej, że jeśli kod nie jest oczywisty bez komentarzy, to jest to zły kod, a komentarze są właściwie zbędne.
Generalnie jednak panuje zgoda, że jeśli pisze się komentarz, komentowane powinno być to co kod robi, a nie jak to robi.
Właściwość komentarzy polegająca na ich "niewidzialności" z punktu widzenia kompilatora jest szeroko wykorzystywana jako metoda rozszerzania właściwości języka. W sekcjach stanowiących komentarze zapisywane są dyrektywy dla kompilatora (pascal), treści dla parserów tworzących dokumentacje, czy wręcz całe procedury (JavaScript wewnątrz HTML).
[edytuj] Rodzaje komentarzy
Podział komentarzy w językach programowania można dokonać na podstawie różnych kryteriów:
- podział ze względu na sposób traktowania komentarzy przez translator
- podział ze względu na składnię.
[edytuj] Podział ze względu na interpretację
Komentarz (wraz ze znakami wydzielającymi komentarz z kodu źródłowego) mogą być traktowane przez translator:
- tak, jakby ich nie było, jako znak pusty (oznacza to możliwość wstawienia komentarza wewnątrz literału, np. wh{pętla}ile ; przy czym napis ten przez translator zostanie uznany za napis "while"
- tak, jak odstęp, np. tak jak spację, np. while{początek pętli}a<b do ; komentarz traktowany jak spacja oddzieli słowo kluczowe "while" od identyfikatora "a"
- tak, jak instrukcja pusta, np. REM w Basic-u, choć komentarz jest ignorowany, to poprzedzony etykietą umożliwia skok do tego miejsca w programie
- w inny określony przez implementacje sposób.
[edytuj] Podział ze względu na składnię
Ze względu na składnię komentarz dzieli się na:
- blokowe
- liniowe
- obejmujące całą linię
- obejmujące linię od określonego znaku/znaków do końca linii
- inne, specjalne.
Komentarz blokowe charakteryzują się tym, że
- mają znak lub znaki otwierające komentarz i znak lub znaki zamykające komentarz, np. w języku C: znaki otwierające "http://pl.wikipedia.org/*" i znaki zamykające "*/"
- powyższe daje możliwość:
- umieszczania komentarzy wewnątrz linii kodu źródłowego (patrz wyżej)
- tworzenia komentarz składających się z wielu linii tekstu bez konieczności poprzedzania każdej linii znakiem komentarza.
Komentarze liniowe to komentarze, które rozpoczynają się od określonego znaku/znaków, a kończą znakiem/znakami końca linii (np. znakiem o kodzie ASCII 13 lub parą znaków 13 i 10, albo innymi przyjętymi w danym systemie). Tworzenie komentarz składających się z kilku linii wymaga poprzedzania wszystkich linii tekstu znakami komentarza. Rozróżnić można dwa przypadki:
- komentarzem musi być cała linia tekstu
- komentarz rozpoczyna się w dowolnym miejscu linii kodu źródłowego od określonego znaku/znaków, a końcem komentarza jest koniec linii.
Przykład w języku Basic:
10 REM To jest komentarz składający się z całej linii kodu źródłowego
20 LET A=1 ' A to komentarz od znaku ' do końca linii
[edytuj] Zestawienie komentarzy
[edytuj] Komentarze w językach programowania
| Język programowania |
Rodzaj |
Składnia |
| Assembler, AutoLISP |
liniowy |
[instrukcja] ; komentarz |
| Algol 60 |
blokowy |
begin comment komentarz; instrukcje ... end; instrukcje ... |
| blokowy |
[[instrukcja]]; comment komentarz; instrukcje ... |
| blokowy |
end komentarz <; lub end lub else> |
| inny: w delkaracji i wywołaniu procedury |
nazwa_proc(par1) komentarz_2:(par2) komentarz_3:(par3) ... komentarz_n(par_n); |
| Basic, Visual Basic |
liniowy |
[nr linii] REM komentarz |
| liniowy |
[nr linii] [Instrukcja] ' komentarz |
| C, PL/I, PL/M |
blokowy |
/* komentarz */ |
| C++ |
blokowy |
/* komentarz */ |
| liniowy |
[instr.] // komentarz |
| Clipper |
liniowy1) |
* komentarz |
| liniowy |
&& komentarz |
| liniowy |
// komentarz |
| DBase |
liniowy |
[instrukcja] && komentarz |
| liniowy1) |
* komentarz |
| Fortran 77 |
liniowy1) |
C komentarz |
| liniowy1) |
* komentarz |
| Forth |
blokowy |
( komentarz ) |
| Icon, Perl |
liniowy |
[instrukcje] # komentarz |
| Jean |
liniowy1) |
* komentarz |
| Logo |
liniowy1) |
; komentarz |
| Modula 2 |
blokowy |
(* komentarz *) |
| Pascal |
blokowy |
{ komentarz } |
| blokowy |
(* komentarz *) |
| Prolog |
liniowy |
% komentarz |
| blokowy |
/* komentarz */ |
| Simula 67 |
blokowy |
comment komentarz; |
| Snobol |
liniowy1) |
* komentarz |
| 1) Znak komentarza musi być pierwszym znakiem w linii kodu: |
[edytuj] Zestawienie według rodzajów
| rodzaj |
typ, uwagi |
składnia |
języki programowania |
| liniowy |
cała linia, znak komentarza musi być pierwszym znakiem |
* komentarz |
Clipper, Cobol, DBase, Fortran 77, Snobol, Jean |
| C komentarz |
Fortran 77 |
| ; komentarz |
Logo |
| może być poprzedzony wyłącznie określoną jednostką leksykalną |
[nr_linii] REM komentarz |
Basic, Visual Basic |
| może być poprzedzony instrukcją/instrukcjami |
[instr.] ' komentarz |
Basic (niektóre dialekty), Visual Basic |
| [instr.] ; komentarz |
Asembler, AutoLISP |
| [instr.] // komentarz |
C++, Clipper |
| [instr.] && komentarz |
Clipper, DBase |
| [instr.] % komentarz |
Prolog |
| [instr.] # komentarz |
Icon, Perl |
| blokowy |
o zapisie swobodnym |
{ komentarz } |
Pascal |
| (* komentarz *) |
Pascal, Modula 2, ML, Mathematica, Applescript, Ocaml |
| ( komentarz ) |
Forth |
| /* komentarz */ |
C, C++, C♯, Java, JavaScript, PHP, SQL, Visual Prolog, CSS, PL/I, PL/M, Prolog |
| instrukcja; comment komentarz; instrukcje ... |
Algol 60, Simula 67 |
- begin comment komentarz; instrukcje ... end;
- end komentarz <; | end | else>
|
Algol 60 |
| inne |
opis parametrów podprogramów |
nazwa_proc(par1) komentarz_2:(par2) komentarz_3:(par3) ... komentarz_n(par_n); |
Algol - można stosować w delkaracji i wywołaniu procedury |
[edytuj] Zobacz też
|