Komentarz (informatyka)
Z Wikipedii
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.
Spis treści |
[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 implementację sposób.
[edytuj] Podział ze względu na składnię
Ze względu na składnię komentarze dzieli się na:
- blokowe
- liniowe
- obejmujące całą linię
- obejmujące linię od określonego znaku/znaków do końca linii
- inne, specjalne.
Komentarze 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 "/*" i znaki zamykające "*/"
- powyższe daje możliwość:
- umieszczania komentarzy wewnątrz linii kodu źródłowego (patrz wyżej),
- tworzenia komentarzy 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 komentarzy 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); | |
| Bash | liniowy | #komentarz |
| 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 |
| Wiki | blokowy | <!--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 | ||
|
Algol 60 | ||
| <!--komentarz--> | Wiki | ||
| 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ż
| Obama zamierza stworzyć 2,5 mln miejsc pracy |
|
Amerykański prezydent-elekt Barack Obama oświadczył w sobotę, iż zamierza w ciągu pierwszych dwóch lat kadencji stworzyć 2,5 mln miejsc pracy.
|
| APEC: wolny handel pozwoli zwalczyć kryzys |
|
Przywódcy państw Azji i obu Ameryk, uczestniczący w szczycie państw regionu w Limie, uznali w sobotę, że wolny handel i reformy międzynarodowych instytucji kredytowych pozwolą światu na uniknięcie głębszego kryzysu.
|
| "Bogate kraje wykupują ziemię w krajach biednych" |
|
Rządy i narodowe korporacje z bogatych państw wykupują miliony hektarów ziemi uprawnej w krajach rozwijających się, by zapewnić sobie dostawy żywności w dłuższym okresie - pisze w sobotnim wydaniu brytyjski dziennik "The Guardian".
|
| Berlusconi: nadchodzi kryzys, który może być bardzo głęboki |
|
Premier Włoch Silvio Berlusconi po raz pierwszy ostrzegł swych rodaków, że nadchodzi kryzys, który - jak dodał - może być "bardzo głęboki".
|
| Szczyt APEC: przywódcy 21 państw radzą w Limie jak pokonać kryzys |
|
Przywódcy 21 krajów z regionu Azji i Pacyfiku, którzy rozpoczynają w sobotę wieczorem (czasu polskiego) dwudniowe obrady w Limie, uznają zagrożenie dla świata, jakie stanowi obecny kryzys gospodarczy.
|