Komentarz (informatyka)
Komentarz – 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 |
Zasady stosowania komentarzy[edytuj]
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[1].
Generalnie jednak wśród dobrych programistów panuje zgoda, iż jeśli pisze się komentarz, to komentowany powinien być powód, dla którego kod robi to, co robi, lub został napisany tak, a nie inaczej; nie powinien natomiast opisywać tego, co można z łatwością wyczytać - winien opisywać rzeczy, które nie są widoczne na pierwszy rzut oka patrząc na dany kawałek źródeł. Komentarz również nie powinien być błędny, gdyż powoduje to problemy podczas sprawdzania i konserwacji kodu. Nie powinno się również używać komentarzy do prowadzenia notatek, a jeśli już jego prowadzenie jest potrzebne ze względu na długie tworzenie kodu komentarze powinno się usunąć po uzupełnieniu programu[1].
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[2][3]), treści dla parserów tworzących dokumentacje, czy wręcz całe procedury (JavaScript wewnątrz HTML[4][5]).
Rodzaje komentarzy[edytuj]
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ę.
Podział ze względu na interpretację[edytuj]
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[6][7], choć komentarz jest ignorowany, to poprzedzony etykietą umożliwia skok do tego miejsca w programie
- w inny określony przez implementację sposób.
Podział ze względu na składnię[edytuj]
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[8][9][10]: 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[6][7]:
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
Zestawienie komentarzy[edytuj]
Komentarze w językach programowania[edytuj]
| Język programowania | Rodzaj | Składnia |
|---|---|---|
| Assembler[11], AutoLISP | liniowy | [instrukcja] ; komentarz |
| Algol 60[12] | 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[6][7], Visual Basic[13][14] | liniowy | [nr linii] REM komentarz |
| liniowy | [nr linii] [Instrukcja] ' komentarz | |
| PL/I[15][16], PL/M[17][18] | blokowy | /* komentarz */ |
| C[8][9][10], C++[10] | blokowy | /* komentarz */ |
| liniowy | // komentarz | |
| Clipper[19] | liniowy1) | * komentarz |
| liniowy | && komentarz | |
| liniowy | // komentarz | |
| DBase[20][21] | liniowy | [instrukcja] && komentarz |
| liniowy1) | * komentarz | |
| Fortran 77[22] | liniowy1) | C komentarz |
| liniowy1) | * komentarz | |
| Forth[23][24] | blokowy | ( komentarz ) |
| Icon[25], Perl[26] | liniowy | [instrukcje] # komentarz |
| Jean[27][28] | liniowy1) | * komentarz |
| Logo[29] | liniowy1) | ; komentarz |
| Makefile (Borland)[3] | liniowy | [instrukcje] # komentarz |
| Modula 2[30] | blokowy | (* komentarz *) |
| Pascal[2][3] | blokowy | { komentarz } |
| blokowy | (* komentarz *) | |
| Prolog[31] | liniowy | % komentarz |
| blokowy | /* komentarz */ | |
| Python | liniowy | [instrukcje] # komentarz |
| Simula 67[32] | blokowy | comment komentarz; |
| Snobol[33] | liniowy1) | * komentarz |
| 1) Znak komentarza musi być pierwszym znakiem w linii kodu: | ||
Zestawienie według rodzajów[edytuj]
| rodzaj | typ, uwagi | składnia | języki programowania |
|---|---|---|---|
| liniowy | cała linia, znak komentarza musi być pierwszym znakiem | * komentarz | Clipper[19], Cobol[34], DBase[20][21], Fortran 77[22], Snobol[33], Jean[27][28] |
| C komentarz | Fortran 77[22] | ||
| ; komentarz | Logo[29] | ||
| może być poprzedzony wyłącznie określoną jednostką leksykalną | [nr_linii] REM komentarz | Basic[6][7], Visual Basic[13][14] | |
| może być poprzedzony instrukcją/instrukcjami | [instr.] ' komentarz | Basic (niektóre dialekty), Visual Basic[13][14] | |
| [instr.] ; komentarz | Asembler[11], AutoLISP | ||
| [instr.] // komentarz | C++[10], Clipper[19] | ||
| [instr.] && komentarz | Clipper[19], DBase[20][21] | ||
| [instr.] % komentarz | Prolog[31] | ||
| [instr.] # komentarz | Icon[25], Perl[26], Makefile (Borland)[3] | ||
| blokowy | o zapisie swobodnym | { komentarz } | Pascal[2][3] |
| (* komentarz *) | Pascal, Modula 2[30], ML, Mathematica, Applescript, Ocaml | ||
| ( komentarz ) | Forth[23][24] | ||
| /* komentarz */ | C[8][9][10], C++[10], C♯, Java, JavaScript[4][5], PHP[35], SQL, Visual Prolog, CSS, PL/I[15][16], PL/M[17][18], Prolog[31] | ||
| instrukcja; comment komentarz; instrukcje ... | Algol 60[12], Simula 67[32] | ||
|
Algol 60[12] | ||
| <!--komentarz--> | Wiki | ||
| inne | opis parametrów podprogramów | nazwa_proc(par1) komentarz_2:(par2) komentarz_3:(par3) ... komentarz_n(par_n); | Algol[12] - można stosować w deklaracji i wywołaniu procedury |
Przypisy
- ↑ 1,0 1,1 Stephan Dewhurst: C++ Kruczki i fortele w programowaniu. Gliwice: Helion, 2004, s. 13. ISBN 83-7361-346-3.
- ↑ 2,0 2,1 2,2 Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. wydanie trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)
- ↑ 3,0 3,1 3,2 3,3 3,4 Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)
- ↑ 4,0 4,1 Wojciech Romowicz: HTML i JavaScript. HELION, 1998. ISBN 83-7197-046-3. (pol.)
- ↑ 5,0 5,1 Kurs języka JavaScript (pol.). Poradnik Webmastera. [dostęp 2011-02-09].
- ↑ 6,0 6,1 6,2 6,3 Zbigniew Czech, Krzysztof Nałęcki, Stanisław Wołek: Programowanie w języku BASIC. Wyd. drugie uzupełnione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1985. ISBN 83-204-0776-1. (pol.)
- ↑ 7,0 7,1 7,2 7,3 Wacław Iszkowski: Nauka programowania w języku BASIC dla początkujących. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Mikrokomputery. ISBN 83-204-0834-2. (pol.)
- ↑ 8,0 8,1 8,2 Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.)
- ↑ 9,0 9,1 9,2 Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
- ↑ 10,0 10,1 10,2 10,3 10,4 10,5 Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
- ↑ 11,0 11,1 Leo J. Scanlon, tłumaczenie: Lucyna Stanikowska: Assembler 8086/8088/80286. Warszawa: Intersoftland, 1992. ISBN 83-85515-03-8. (pol.)
- ↑ 12,0 12,1 12,2 12,3 Joanna Jonkisz, Jan Makuch, Stanisław Starzak: Programowanie w językach Algol 60 i Fortran 1900. Łódź: Wydawnictwo Politechniki Łódzkiej, Politechnika Łódzka, Ośrodek Elektronicznej Techniki Obliczeniowej, 1982, seria: Skrypty dla szkół wyższych. (pol.)
- ↑ 13,0 13,1 13,2 Podręcznik Visual Basic na Wikibooks
- ↑ 14,0 14,1 14,2 John Walkenbach: Excel 2003 PL. Programowanie w VBA.. HELION, 2004. ISBN 837361-504-0. (pol.)
- ↑ 15,0 15,1 Jan Bielecki: Rozszerzony PL/I i JCL w systemie OS/RIAD. Warszawa: Państwowe Wydawnictwo Naukowe, 1986, seria: Biblioteka Informatyki. ISBN 83-01-06146-4. (pol.)
- ↑ 16,0 16,1 M. I. Auguston i inni: Programowanie w języku PL/1 OS JS. Warszawa: Państwowe Wydawnictwo Naukowe, 1988. ISBN 83-01-07463-9. (pol.)
- ↑ 17,0 17,1 Jan Bielecki: PL/M język programowania mikroprocesorów. Wyd. wydanie drugie uzupełnione. Warszawa: Wydawnictwa Komunikacji i Łączności, 1987, seria: Elektronizacja. zeszyt 25. (pol.)
- ↑ 18,0 18,1 Jan Bielecki: System operacyjny ISIS-II. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Mikrokomputery. ISBN 83-204-0893-8. (pol.)
- ↑ 19,0 19,1 19,2 19,3 Wojciech Rogowski, Arkadiusz Serodziński: Clipper 5.0. Warszawa: Wydawnictwo PLJ, 1991. ISBN 83-85190-20-1. (pol.)
- ↑ 20,0 20,1 20,2 Tadeusz Mykowiecki: dBase, FoxBase, bazy danych. Warszawa: Wydawnictwa Naukowo-Techniczne, 1992. ISBN 83-204-1345-1. (pol.)
- ↑ 21,0 21,1 21,2 Piotr J. Jasiński, Zbigniew Królikowski, Jacek Szulczyński: Mikrokomputerowe bazy danych z programowaniem w dBase IV. Warszawa: Poznań, 1992, seria: Biblioteka Użytkownika Mikrokomputerów tom 7. ISSN 0867-6011. ISBN 83-85060-44-8. (pol.)
- ↑ 22,0 22,1 22,2 Ryszard K. Kott, Krzysztof Walczak: Programowanie w języku Fortran 77. Warszawa: Wydawnictwa Naukowo-Techniczne, 1991. ISBN 83-204-1362-1. (pol.)
- ↑ 23,0 23,1 Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.)
- ↑ 24,0 24,1 Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.)
- ↑ 25,0 25,1 Ralph E. Griswold, Madge T. Griswold: Icon. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN ISBN 83-204-0871-7. (pol.)
- ↑ 26,0 26,1 Podręcznik języka Perl na Wikibooks
- ↑ 27,0 27,1 Jerzy Bettek, Bronisław Rudak, Barbara Rudakowa: Język konwersacyjny JEAN. Wrocław: Wydawnictwo Politechniki Wrocławskiej, 1975, seria: Skrypt wydany w serii Biblioteka WASC. (pol.)
- ↑ 28,0 28,1 Kazimierz Orlicz: Język konwersacyjny JEAN z elementami programowania w Fortranie. Wrocław: Wydawnictwo Politechniki Wrocławskiej, 1977, seria: Skrypt wydany w serii Biblioteka WASC. (pol.)
- ↑ 29,0 29,1 Stanisław Waligórski: LOGO na Sinclair Spectrum. Instytut Wydawniczy Związków Zawodowych, seria: Seria 12+12=102. (pol.)
- ↑ 30,0 30,1 Niklaus Wirth: Modula 2. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISSN 0867-6011. ISBN 83-204-0828-8. (pol.)
- ↑ 31,0 31,1 31,2 Janusz Szajna, Marian Adamski, Tomasz Kozłowski: Turbo Prolog. Programowanie w języku logiki.. Warszawa: Wydawnictwa Naukowo-Techniczne, 1991, seria: Mikrokomputery. ISBN 83-204-1395-8. (pol.)
- ↑ 32,0 32,1 Hanna Oktaba, Wiesław Ratajczak: Simula 67. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0128-3. (pol.)
- ↑ 33,0 33,1 Paweł Gizbert-Studnicki, Jerzy Kaczmarczuk: Snobol4. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0546-7. (pol.)
- ↑ Eugeniusz Kurzydrem, Andrzej Macieliński, Urszula Szmidt, Eugeniusz Więcek: COBOL. Język programowania.. Wyd. drugie. Warszawa: Państwowe Wydawnictwo Ekonomiczne, 1978. (pol.)
- ↑ Podręcznik języka PHP na Wikibooks
Bibliografia[edytuj]
- Michael Marcotty, Henry Ledgord, tłumaczenie: Krystyna Jerzykiewicz: W kręgu języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1342-7. (pol.)
- John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.)