fbpx
Wikipedia

Comment (computer programming)

In computer programming, a comment is a programmer-readable explanation or annotation in the source code of a computer program. They are added with the purpose of making the source code easier for humans to understand, and are generally ignored by compilers and interpreters.[1][2] The syntax of comments in various programming languages varies considerably.

An illustration of Java source code with prologue comments indicated in red and inline comments in green. Program code is in blue.

Comments are sometimes also processed in various ways to generate documentation external to the source code itself by documentation generators, or used for integration with source code management systems and other kinds of external programming tools.

The flexibility provided by comments allows for a wide degree of variability, but formal conventions for their use are commonly part of programming style guides.

Overview edit

Comments are generally formatted as either block comments (also called prologue comments or stream comments) or line comments (also called inline comments).[3]

Block comments delimit a region of source code which may span multiple lines or a part of a single line. This region is specified with a start delimiter and an end delimiter. Some programming languages (such as MATLAB) allow block comments to be recursively nested inside one another, but others (such as Java) do not.[4][5][6]

Line comments either start with a comment delimiter and continue until the end of the line, or in some cases, start at a specific column (character line offset) in the source code, and continue until the end of the line.[6]

Some programming languages employ both block and line comments with different comment delimiters. For example, C++ has block comments delimited by /* and */ that can span multiple lines and line comments delimited by //. Other languages support only one type of comment. For example, Ada comments are line comments: they start with -- and continue to the end of the line.[6]

Uses edit

How best to make use of comments is subject to dispute; different commentators have offered varied and sometimes opposing viewpoints.[7][8] There are many different ways of writing comments and many commentators offer conflicting advice.[8]

Planning and reviewing edit

Comments can be used as a form of pseudocode to outline intention prior to writing the actual code. In this case it should explain the logic behind the code rather than the code itself.

/* loop backwards through all elements returned by the server  (they should be processed chronologically)*/ for (i = (numElementsReturned - 1); i >= 0; i--) {  /* process each element's data */  updatePattern(i, returnedElements[i]); } 

If this type of comment is left in, it simplifies the review process by allowing a direct comparison of the code with the intended results. A common logical fallacy is that code that is easy to understand does what it's supposed to do.

Code description edit

Comments can be used to summarize code or to explain the programmer's intent. According to this school of thought, restating the code in plain English is considered superfluous; the need to re-explain code may be a sign that it is too complex and should be rewritten, or that the naming is bad.

"Don't document bad code – rewrite it."[9]
"Good comments don't repeat the code or explain it. They clarify its intent. Comments should explain, at a higher level of abstraction than the code, what you're trying to do."[10]

Comments may also be used to explain why a block of code does not seem to fit conventions or best practices. This is especially true of projects involving very little development time, or in bug fixing. For example:

' Second variable dim because of server errors produced when reuse form data. No ' documentation available on server behavior issue, so just coding around it. vtx = server.mappath("local settings") 

Algorithmic description edit

Sometimes source code contains a novel or noteworthy solution to a specific problem. In such cases, comments may contain an explanation of the methodology. Such explanations may include diagrams and formal mathematical proofs. This may constitute explanation of the code, rather than a clarification of its intent; but others tasked with maintaining the code base may find such explanation crucial. This might especially be true in the case of highly specialized problem domains; or rarely used optimizations, constructs or function-calls.[11]

For example, a programmer may add a comment to explain why an insertion sort was chosen instead of a quicksort, as the former is, in theory, slower than the latter. This could be written as follows:

 list = [f (b), f (b), f (c), f (d), f (a), ...];  // Need a stable sort. Besides, the performance really does not matter.  insertion_sort (list); 

Resource inclusion edit

Logos, diagrams, and flowcharts consisting of ASCII art constructions can be inserted into source code formatted as a comment.[12] Further, copyright notices can be embedded within source code as comments. Binary data may also be encoded in comments through a process known as binary-to-text encoding, although such practice is uncommon and typically relegated to external resource files.

The following code fragment is a simple ASCII diagram depicting the process flow for a system administration script contained in a Windows Script File running under Windows Script Host. Although a section marking the code appears as a comment, the diagram itself actually appears in an XML CDATA section, which is technically considered distinct from comments, but can serve similar purposes.[13]

<!-- begin: wsf_resource_nodes --> <resource id="ProcessDiagram000"> <![CDATA[  HostApp (Main_process)  |  V script.wsf (app_cmd) --> ClientApp (async_run, batch_process)  |  |  V  mru.ini (mru_history)  ]]> </resource> 

Although this identical diagram could easily have been included as a comment, the example illustrates one instance where a programmer may opt not to use comments as a way of including resources in source code.[13]

Metadata edit

Comments in a computer program often store metadata about a program file.

In particular, many software maintainers put submission guidelines in comments to help people who read the source code of that program to send any improvements they make back to the maintainer.

Other metadata includes: the name of the creator of the original version of the program file and the date when the first version was created, the name of the current maintainer of the program, the names of other people who have edited the program file so far, the URL of documentation about how to use the program, the name of the software license for this program file, etc.

When an algorithm in some section of the program is based on a description in a book or other reference, comments can be used to give the page number and title of the book or Request for Comments or other reference.

Debugging edit

A common developer practice is to comment out a code snippet, meaning to add comment syntax causing that block of code to become a comment, so that it will not be executed in the final program. This may be done to exclude certain pieces of code from the final program, or (more commonly) it can be used to find the source of an error. By systematically commenting out and running parts of the program, the source of an error can be determined, allowing it to be corrected.

Many IDEs allow quick adding or removing such comments with single menu options or key combinations. The programmer has only to mark the part of text they want to (un)comment and choose the appropriate option.

Automatic documentation generation edit

Programming tools sometimes store documentation and metadata in comments.[14] These may include insert positions for automatic header file inclusion, commands to set the file's syntax highlighting mode,[15] or the file's revision number.[16] These functional control comments are also commonly referred to as annotations. Keeping documentation within source code comments is considered as one way to simplify the documentation process, as well as increase the chances that the documentation will be kept up to date with changes in the code.[17]

Examples of documentation generators include the programs Javadoc for use with Java, Ddoc for D, Doxygen for C, C++, Java, IDL, Visual Expert for PL/SQL, Transact-SQL, PowerBuilder, and PHPDoc for PHP. Forms of docstring are supported by Python, Lisp, Elixir, and Clojure.[18]

C#, F# and Visual Basic .NET implement a similar feature called "XML Comments" which are read by IntelliSense from the compiled .NET assembly.[19]

Syntax extension edit

Occasionally syntax elements that were originally intended to be comments are re-purposed to convey additional information to a program, such as "conditional comments". Such "hot comments" may be the only practical solution that maintains backward-compatibility, but are widely regarded as a kludge.[20]

Directive uses edit

There are cases where the normal comment characters are co-opted to create a special directive for an editor or interpreter.

Two examples of this directing an interpreter are:

  • The Unix "shebang" – #! – used on the first line of a script to point to the interpreter to be used.
  • "Magic comments" identifying the encoding a source file is using,[21] e.g. Python's PEP 263.[22]

The script below for a Unix-like system shows both of these uses:

#!/usr/bin/env python3 # -*- coding: UTF-8 -*- print("Testing") 

Somewhat similar is the use of comments in C to communicate to a compiler that a default "fallthrough" in a case statement has been done deliberately:

switch (command) {  case CMD_SHOW_HELP_AND_EXIT:  do_show_help();  /* Fall thru */  case CMD_EXIT:  do_exit();  break;  case CMD_OTHER:  do_other();  break;  /* ... etc. ... */  } 

Inserting such a /* Fall thru */ comment for human readers was already a common convention, but in 2017 the gcc compiler began looking for these (or other indications of deliberate intent), and, if not found, emitting: "warning: this statement may fall through".[23]

Many editors and IDEs will read specially formatted comments. For example, the "modeline" feature of Vim; which would change its handling of tabs while editing a source with this comment included near the top of the file:

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 

Stress relief edit

Sometimes programmers will add comments as a way to relieve stress by commenting about development tools, competitors, employers, working conditions, or the quality of the code itself.[24] The occurrence of this phenomenon can be easily seen from online resources that track profanity in source code.[25]

Normative views edit

There are various normative views and long-standing opinions regarding the proper use of comments in source code.[26][27] Some of these are informal and based on personal preference, while others are published or promulgated as formal guidelines for a particular community.[28]

Need for comments edit

Experts have varying viewpoints on whether, and when, comments are appropriate in source code.[9][29] Some assert that source code should be written with few comments, on the basis that the source code should be self-explanatory or self-documenting.[9] Others suggest code should be extensively commented (it is not uncommon for over 50% of the non-whitespace characters in source code to be contained within comments).[30][31]

In between these views is the assertion that comments are neither beneficial nor harmful by themselves, and what matters is that they are correct and kept in sync with the source code, and omitted if they are superfluous, excessive, difficult to maintain or otherwise unhelpful.[32][33]

Comments are sometimes used to document contracts in the design by contract approach to programming.

Level of detail edit

Depending on the intended audience of the code and other considerations, the level of detail and description may vary considerably.

For example, the following Java comment would be suitable in an introductory text designed to teach beginning programming:

String s = "Wikipedia"; /* Assigns the value "Wikipedia" to the variable s. */ 

This level of detail, however, would not be appropriate in the context of production code, or other situations involving experienced developers. Such rudimentary descriptions are inconsistent with the guideline: "Good comments ... clarify intent."[10] Further, for professional coding environments, the level of detail is ordinarily well defined to meet a specific performance requirement defined by business operations.[31]

Styles edit

There are many stylistic alternatives available when considering how comments should appear in source code. For larger projects involving a team of developers, comment styles are either agreed upon before a project starts, or evolve as a matter of convention or need as a project grows. Usually programmers prefer styles that are consistent, non-obstructive, easy to modify, and difficult to break.[34]

Block comment edit

The following code fragments in C demonstrate just a tiny example of how comments can vary stylistically, while still conveying the same basic information:

/*  This is the comment body.  Variation One. */ 
/***************************\ * * * This is the comment body. * * Variation Two. * * * \***************************/ 

Factors such as personal preference, flexibility of programming tools, and other considerations tend to influence the stylistic variants used in source code. For example, Variation Two might be disfavored among programmers who do not have source code editors that can automate the alignment and visual appearance of text in comments.

Software consultant and technology commentator Allen Holub[35] is one expert who advocates aligning the left edges of comments:[36]

 /* This is the style recommended by Holub for C and C++.  * It is demonstrated in ''Enough Rope'', in rule 29.  */ 
 /* This is another way to do it, also in C.  ** It is easier to do in editors that do not automatically indent the second  ** through last lines of the comment one space from the first.  ** It is also used in Holub's book, in rule 31.  */ 

The use of /* and */ as block comment delimiters was inherited from PL/I into the B programming language, the immediate predecessor of the C programming language.[37]

Line comments edit

Line comments generally use an arbitrary delimiter or sequence of tokens to indicate the beginning of a comment, and a newline character to indicate the end of a comment.

In this example, all the text from the ASCII characters // to the end of the line is ignored.

// ------------------------- // This is the comment body. // ------------------------- 

Often such a comment has to begin at far left and extend to the whole line. However, in many languages, it is also possible to put a comment inline with a command line, to add a comment to it – as in this Perl example:

print $s . "\n"; # Add a newline character after printing 

If a language allows both line comments and block comments, programming teams may decide upon a convention of using them differently: e.g. line comments only for minor comments, and block comments to describe higher-level abstractions.

Tags edit

Programmers may use informal tags in comments to assist in indexing common issues. They may then be able to be searched for with common programming tools, such as the Unix grep utility or even syntax-highlighted within text editors. These are sometimes referred to as "codetags"[38][39] or "tokens", and the development tools might even assist you in listing all of them.[40]

Such tags differ widely, but might include:

  • BUG, DEBUG — a known bug that should be corrected.
  • FIXME — should be corrected.
  • HACK, BODGE, KLUDGE — a workaround.
  • TODO — something to be done.
  • NOTE — used to highlight especially notable gotchas.
  • UNDONE — a reversal or "roll back" of previous code.
  • XXX — warn other programmers of problematic or misguiding code

Examples edit

Comparison edit

Typographic conventions to specify comments vary widely. Further, individual programming languages sometimes provide unique variants.

Ada edit

The Ada programming language uses '--' to indicate a comment up to the end of the line.

For example:

 -- the air traffic controller task takes requests for takeoff and landing task type Controller (My_Runway: Runway_Access) is -- task entries for synchronous message passing entry Request_Takeoff (ID: in Airplane_ID; Takeoff: out Runway_Access); entry Request_Approach(ID: in Airplane_ID; Approach: out Runway_Access); end Controller; 

APL edit

APL uses to indicate a comment up to the end of the line.

For example:

⍝ Now add the numbers: ca+b ⍝ addition 

In dialects that have the ("left") and ("right") primitives, comments can often be inside or separate statements, in the form of ignored strings:

d2×c 'where' ca+ 'bound' b 

AppleScript edit

This section of AppleScript code shows the two styles of comments used in that language.

(* This program displays a greeting. *) on greet(myGreeting) display dialog myGreeting & " world!" end greet -- Show the greeting greet("Hello") 

BASIC edit

In this classic early BASIC code fragment the REM ("Remark") keyword is used to add comments.

10 REM This BASIC program shows the use of the PRINT and GOTO Statements. 15 REM It fills the screen with the phrase "HELLO" 20 PRINT "HELLO" 30 GOTO 20 

In later Microsoft BASICs, including Quick Basic, Q Basic, Visual Basic, Visual Basic .NET, and VB Script; and in descendants such as FreeBASIC and Gambas any text on a line after an ' (apostrophe) character is also treated as a comment.

An example in Visual Basic .NET:

Public Class Form1  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  ' The following code is executed when the user  ' clicks the button in the program's window.  rem comments still exist.  MessageBox.Show("Hello, World") 'Show a pop-up window with a greeting  End Sub End Class 

C edit

This C code fragment demonstrates the use of a prologue comment or "block comment" to describe the purpose of a conditional statement. The comment explains key terms and concepts, and includes a short signature by the programmer who authored the code.

 /*  * Check if we are over our maximum process limit, but be sure to  * exclude root. This is needed to make it possible for login and  * friends to set the per-user process limit to something lower  * than the amount of processes root is running. -- Rik  */  if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur  && !capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE))  goto bad_fork_free; 

Since C99, it has also been possible to use the // syntax from C++, indicating a single-line comment.


The availability of block comments allows for marking structural breakouts, i.e. admissible violations of the single-entry/single-exit rule of Structured Programming, visibly, like in the following example:

static Edge edge_any(Node n, Node m) {  // Returns whether any edge is between nodes $n and $m.  Edge e;  for (e=n->edges; e; e=e->next) {  if (e->dst == m) { /*********/ return e; } }  for (e=m->edges; e; e=e->next) {  if (e->dst == n) {  /*****/ break; } }  return e; } 

In many languages lacking a block comment, e.g. awk, you can use sequences of statement seperators like ; instead. But it's impossible in languages using indentation as a rigid indication of intended block structure, like Python.

Cisco IOS and IOS-XE configuration edit

The exclamation point (!) may be used to mark comments in a Cisco router's configuration mode, however such comments are not saved to non-volatile memory (which contains the startup-config), nor are they displayed by the "show run" command.[41][42]

It is possible to insert human-readable content that is actually part of the configuration, and may be saved to the NVRAM startup-config via:

  • The "description" command, used to add a description to the configuration of an interface or of a BGP neighbor
  • The "name" parameter, to add a remark to a static route
  • The "remark" command in access lists
! Paste the text below to reroute traffic manually config t int gi0/2 no shut ip route 0.0.0.0 0.0.0.0 gi0/2 name ISP2 no ip route 0.0.0.0 0.0.0.0 gi0/1 name ISP1 int gi0/1 shut exit 

ColdFusion edit

ColdFusion uses comments similar to HTML comments, but instead of two dashes, it uses three. These comments are caught by the ColdFusion engine and not printed to the browser.

Such comments are nestable.

 <!--- This prints "Hello World" to the browser.  <!--- This is a comment used inside the first one.  --->  ---> <cfoutput> Hello World<br /> </cfoutput> 

D edit

D uses C++-style comments, as well as nestable D-style multiline comments, which start with '/+' and end with '+/'.

// This is a single-line comment. /* This is a multiline comment. */ /+ This is a  /+ nested +/  comment +/ 

Fortran IV edit

This Fortran IV code fragment demonstrates how comments are used in that language, which is very column-oriented. A letter "C" in column 1 causes the entire line to be treated as a comment.

C C Lines that begin with 'C' (in the first or 'comment' column) are comments C   WRITE (6,610)  610 FORMAT(12H HELLO WORLD)   END 

Note that the columns of a line are otherwise treated as four fields: 1 to 5 is the label field, 6 causes the line to be taken as a continuation of the previous statement; and declarations and statements go in 7 to 72.

Fortran 90 edit

This Fortran code fragment demonstrates how comments are used in that language, with the comments themselves describing the basic formatting rules.

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * !* All characters after an exclamation mark are considered as comments * !* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * program comment_test  print '(A)', 'Hello world' ! Fortran 90 introduced the option for inline comments. end program 

Haskell edit

Line comments in Haskell start with '--' (two hyphens) until the end of line, and multiple line comments start with '{-' and end with '-}'.

{- this is a comment on more lines -} -- and this is a comment on one line putStrLn "Wikipedia" -- this is another comment 

Haskell also provides a literate programming method of commenting known as "Bird Style".[43] In this all lines starting with > are interpreted as code, everything else is considered a comment. One additional requirement is that you always leave a blank line before and after the code block:

In Bird-style you have to leave a blank before the code. > fact :: Integer -> Integer > fact 0 = 1 > fact (n+1) = (n+1) * fact n And you have to leave a blank line after the code as well. 

Literate programming can also be done in Haskell, using LaTeX. The code environment can be used instead of the Richard Bird's style: In LaTeX style this is equivalent to the above example, the code environment could be defined in the LaTeX preamble. Here is a simple definition:

\usepackage{verbatim} \newenvironment{code}{\verbatim}{\endverbatim} 

later in

% the LaTeX source file The \verb|fact n| function call computes $n!$ if $n\ge 0$, here is a definition:\\ \begin{code} fact :: Integer -> Integer fact 0 = 1 fact (n+1) = (n+1) * fact n \end{code} Here more explanation using \LaTeX{} markup 

Java edit

This Java code fragment shows a block comment used to describe the setToolTipText method. The formatting is consistent with Sun Microsystems Javadoc standards. The comment is designed to be read by the Javadoc processor.

/**  * This is a block comment in Java.  * The setToolTipText method registers the text to display in a tool tip.  * The text is displayed when the cursor lingers over the component.  *  * @param text The string to be displayed. If 'text' is null,  * the tool tip is turned off for this component.  */ public void setToolTipText(String text) {  // This is an inline comment in Java. TODO: Write code for this method. } 

JavaScript edit

JavaScript uses // to precede comments and /* */ for multi-line comments.

// A single line JavaScript comment var iNum = 100; var iTwo = 2; // A comment at the end of line /* multi-line JavaScript comment */ 

Lua edit

The Lua programming language uses double-hyphens, --, for single line comments in a similar way to Ada, Eiffel, Haskell, SQL and VHDL languages. Lua also has block comments, which start with --[[ and run until a closing ]]

For example:

--[[A multi-line long comment ]] print(20) -- print the result 

A common technique to comment out a piece of code,[44] is to enclose the code between --[[ and --]], as below:

--[[ print(10) --]] -- no action (commented out) 

In this case, it's possible to reactivate the code by adding a single hyphen to the first line:

---[[ print(10) --]] --> 10 

In the first example, the --[[ in the first line starts a long comment, and the two hyphens in the last line are still inside that comment. In the second example, the sequence ---[[ starts an ordinary, single-line comment, so that the first and the last lines become independent comments. In this case, the print is outside comments. In this case, the last line becomes an independent comment, as it starts with --.

Long comments in Lua can be more complex than these, as you can read in the section called "Long strings" c.f. Programming in Lua.

MATLAB edit

In MATLAB's programming language, the '%' character indicates a single-line comment. Multi line comments are also available via %{ and %} brackets and can be nested, e.g.

% These are the derivatives for each term d = [0 -1 0]; %{   %{  (Example of a nested comment, indentation is for cosmetics (and ignored).)   %}  We form the sequence, following the Taylor formula.  Note that we're operating on a vector. %} seq = d .* (x - c).^n ./(factorial(n)) % We add-up to get the Taylor approximation approx = sum(seq) 

Nim edit

Nim uses the '#' character for inline comments. Multi-line block comments are opened with '#[' and closed with ']#'. Multi-line block comments can be nested.

Nim also has documentation comments that use mixed Markdown and ReStructuredText markups. The inline documentation comments use '##' and multi-line block documentation comments are opened with '##[' and closed with ']##'. The compiler can generate HTML, LaTeX and JSON documentation from the documentation comments. Documentation comments are part of the abstract syntax tree and can be extracted using macros.[45]

## Documentation of the module *ReSTructuredText* and **MarkDown** # This is a comment, but it is not a documentation comment. type Kitten = object ## Documentation of type  age: int ## Documentation of field proc purr(self: Kitten) =  ## Documentation of function  echo "Purr Purr" # This is a comment, but it is not a documentation comment. # This is a comment, but it is not a documentation comment. 

OCaml edit

OCaml uses nestable comments, which is useful when commenting a code block.

codeLine(* comment level 1(*comment level 2*)*) 

Pascal, Delphi edit

In Pascal and Delphi, comments are delimited by '{ ... }'. Comment lines can also start with '\\' . As an alternative, for computers that do not support these characters, '(* ... *)' are allowed.[46]

In Niklaus Wirth's more modern family of languages (including Modula-2 and Oberon), comments are delimited by '(* ... *)'.[47][48]

For example:

(* test diagonals *) columnDifference := testColumn - column; if (row + columnDifference = testRow) or  ....... 

Comments can be nested. // can be included in a {} and {} can be included in a (**).

Perl edit

Line comments in Perl, and many other scripting languages, begin with a hash (#) symbol.

# A simple example #  my $s = "Wikipedia"; # Sets the variable s to "Wikipedia". print $s . "\n"; # Add a newline character after printing 

Instead of a regular block commenting construct, Perl uses Plain Old Documentation, a markup language for literate programming,[49] for instance:[50]

=item Pod::List-E<gt>new() Create a new list object. Properties may be specified through a hash reference like this:  my $list = Pod::List->new({ -start => $., -indent => 4 }); See the individual methods/properties for details. =cut sub new {  my $this = shift;  my $class = ref($this) || $this;  my %params = @_;  my $self = {%params};  bless $self, $class;  $self->initialize();  return $self; } 

R edit

R only supports inline comments started by the hash (#) character.

# This is a comment print("This is not a comment") # This is another comment 

Raku edit

Raku (previously called Perl 6) uses the same line comments and POD Documentation comments as regular Perl (see Perl section above), but adds a configurable block comment type: "multi-line / embedded comments".[51]

These start with a hash character, followed by a backtick, and then some opening bracketing character, and end with the matching closing bracketing character.[51] The content can not only span multiple lines, but can also be embedded inline.

#`{{ "commenting out" this version  toggle-case(Str:D $s) Toggles the case of each character in a string:  my Str $toggled-string = toggle-case("mY NAME IS mICHAEL!"); }} sub toggle-case(Str:D $s) #`( this version of parens is used now ){ ... } 

PHP edit

Comments in PHP can be either in C++ style (both inline and block), or use hashes. PHPDoc is a style adapted from Javadoc and is a common standard for documenting PHP code.

Starting in PHP 8, the # sign can only mean a comment if it's not immediately followed by '['. Otherwise, it will mean a function attribute, which runs until ']':

/**  * This class contains a sample documentation.  *   * @author Unknown  */ #[Attribute] class MyAttribute { const VALUE = 'value'; // This is an inline comment. It starts with '//', like in C++. private $value; # This is a Unix-style inline comment, which starts with '#'. public function __construct($value = null) { $this->value = $value; } /*  This is a multiline comment.  These comments cannot be nested.  */ } 

PowerShell edit

Comments in Windows PowerShell

# Single line comment Write-Host "Hello, World!" <# Multi  Line  Comment #> Write-Host "Goodbye, world!" 

Python edit

Inline comments in Python use the hash (#) character, as in the two examples in this code:

# This program prints "Hello World" to the screen print("Hello World!") # Note the new syntax 

Block comments, as defined in this article, do not technically exist in Python.[52] A bare string literal represented by a triple-quoted string can be used,[53] but is not ignored by the interpreter in the same way that "#" comment is.[52] In the examples below, the triple double-quoted strings act in this way as comments, but are also treated as docstrings:

""" Assuming this is file mymodule.py, then this string, being the first statement in the file, will become the "mymodule" module's docstring when the file is imported. """ class MyClass:  """The class's docstring""" def my_method(self):  """The method's docstring""" def my_function():  """The function's docstring""" 

Ruby edit

Inline comments in Ruby start with the # character.

To create a multiline comment, one must place "=begin" at the start of a line, and then everything until "=end" that starts a line is ignored. Including a space after the equals sign in this case throws a syntax error.

puts "This is not a comment" # this is a comment puts "This is not a comment" =begin whatever goes in these lines is just for the human reader =end puts "This is not a comment" 

SQL edit

Standard comments in SQL are in single-line-only form, using two dashes:

-- This is a single line comment -- followed by a second line SELECT COUNT(*)  FROM Authors  WHERE Authors.name = 'Smith'; -- Note: we only want 'smith'  -- this comment appears after SQL code 

Alternatively, a comment format syntax identical to the "block comment" style used in the syntax for C and Java is supported by Transact-SQL, MySQL, SQLite, PostgreSQL, and Oracle.[54][55][56][57][58]

MySQL also supports comments from the hash (#) character to the end of the line.

Swift edit

Single-line comments begin with two forward-slashes (//):

// This is a comment. 

Multiline comments start with a forward-slash followed by an asterisk (/*) and end with an asterisk followed by a forward-slash (*/):

/* This is also a comment  but is written over multiple lines. */ 

Multiline comments in Swift can be nested inside other multiline comments. You write nested comments by starting a multiline comment block and then starting a second multiline comment within the first block. The second block is then closed, followed by the first block:

/* This is the start of the first multiline comment.  /* This is the second, nested multiline comment. */  This is the end of the first multiline comment. */ 

XML (or HTML) edit

Comments in XML (or HTML) are introduced with

<!-- 

and can spread over several lines until the terminator,

--> 

For example,

<!-- select the context here --> <param name="context" value="public" /> 

For compatibility with SGML, the string "--" (double-hyphen) is not allowed inside comments.

Security issues edit

In interpreted languages the comments are viewable to the end user of the program. In some cases, such as sections of code that are "commented out", this may present a security vulnerability.[59]

See also edit

Notes and references edit

  1. ^ Source code can be divided into program code (which consists of machine-translatable instructions); and comments (which include human-readable notes and other kinds of annotations in support of the program code).Penny Grubb, Armstrong Takang (2003). Software Maintenance: Concepts and Practice. World Scientific. pp. 7, plese start120–121. ISBN 978-981-238-426-3.
  2. ^ For purposes of this article, programming language comments are treated as indistinct from comments that appear in markup languages, configuration files and other similar contexts. Moreover, markup language is often closely integrated with programming language code, especially in the context of code generation. See e.g., Ganguli, Madhushree (2002). Making Use of Jsp. New York: Wiley. ISBN 978-0-471-21974-3., Hewitt, Eben (2003). Java for Coldfusion Developers. Upper Saddle River: Pearson Education. ISBN 978-0-13-046180-3.
  3. ^ Dixit, J.B. (2003). Computer Fundamentals and Programming in C. Laxmi Publications. ISBN 978-81-7008-882-0.
  4. ^ Higham, Desmond (2005). MATLAB Guide. SIAM. ISBN 978-0-89871-578-1.
  5. ^ Vermeulen, Al (2000). The Elements of Java Style. Cambridge University Press. ISBN 978-0-521-77768-1.
  6. ^ a b c "Using the right comment in Java". 2000-03-04. Retrieved 2007-07-24.
  7. ^ W. R., Dietrich (2003). Applied Pattern Recognition: Algorithms and Implementation in C++. Springer. ISBN 978-3-528-35558-6. offers viewpoints on proper use of comments in source code. p. 66.
  8. ^ a b Keyes, Jessica (2003). Software Engineering Handbook. CRC Press. ISBN 978-0-8493-1479-7. discusses comments and the "Science of Documentation" p. 256.
  9. ^ a b c The Elements of Programming Style, Kernighan & Plauger
  10. ^ a b Code Complete, McConnell
  11. ^ Spinellis, Diomidis (2003). Code reading: The Open Source Perspective. Addison-Wesley. ISBN 978-0-201-79940-8.
  12. ^ . Archived from the original on 2007-07-14. Retrieved 2007-07-24.
  13. ^ a b Niederst, Jennifer (2006). Web Design in a Nutshell: A Desktop Quick Reference. O'Reilly. ISBN 978-0-596-00987-8.Sometimes the difference between a "comment" and other syntax elements of a programming or markup language entails subtle nuances. Niederst indicates one such situation by stating: "Unfortunately, XML software thinks of comments as unimportant information and may simply remove the comments from a document before processing it. To avoid this problem, use an XML CDATA section instead."
  14. ^ See e.g., Wynne-Powell, Rod (2008). Mac OS X for Photographers: Optimized Image Workflow for the Mac User. Oxford: Focal Press. p. 243. ISBN 978-0-240-52027-8.
  15. ^ Lamb, Linda (1998). Learning the VI Editor. Sebastopol: O'Reilly & Associates. ISBN 978-1-56592-426-0. describes the use of modeline syntax in Vim configuration files.
  16. ^ See e.g., Berlin, Daniel (2006). Practical Subversion, Second Edition. Berkeley: APress. p. 168. ISBN 978-1-59059-753-8.
  17. ^ Ambler, Scott (2004). The Object Primer: Agile Model-Driven Development with UML 2.0. Cambridge University Press. ISBN 978-1-397-80521-8.
  18. ^ Function definition with docstring in Clojure
  19. ^ Murach. C# 2005. p. 56.
  20. ^ c2: HotComments
  21. ^ "class Encoding". Ruby. ruby-lang.org. Retrieved 5 December 2018.
  22. ^ "PEP 263 – Defining Python Source Code Encodings". Python.org. Retrieved 5 December 2018.
  23. ^ Polacek, Marek (2017-03-10). "-Wimplicit-fallthrough in GCC 7". Red Hat Developer. Red Hat. Retrieved 10 February 2019.
  24. ^ Lisa Eadicicco (27 March 2014). . Business Insider Australia. Archived from the original on 29 December 2016.
  25. ^ (see e.g., Linux Swear Count).
  26. ^ Goodliffe, Pete (2006). Code Craft. San Francisco: No Starch Press. ISBN 978-1-59327-119-0.
  27. ^ Smith, T. (1991). Intermediate Programming Principles and Techniques Using Pascal. Belmont: West Pub. Co. ISBN 978-0-314-66314-6.
  28. ^ See e.g., Koletzke, Peter (2000). Oracle Developer Advanced Forms & Reports. Berkeley: Osborne/McGraw-Hill. ISBN 978-0-07-212048-6. page 65.
  29. ^ "Worst Practice - Bad Comments". Retrieved 2007-07-24.
  30. ^ Morelli, Ralph (2006). Java, Java, Java: object-oriented problem solving. Prentice Hall College. ISBN 978-0-13-147434-5.
  31. ^ a b "How to Write Doc Comments for the Javadoc Tool". Retrieved 2007-07-24. Javadoc guidelines specify that comments are crucial to the platform. Further, the appropriate level of detail is fairly well-defined: "We spend time and effort focused on specifying boundary conditions, argument ranges and corner cases rather than defining common programming terms, writing conceptual overviews, and including examples for developers."
  32. ^ Yourdon, Edward (2007). Techniques of Program Structure and Design. University of Michigan. 013901702X.Non-existent comments can make it difficult to comprehend code, but comments may be detrimental if they are obsolete, redundant, incorrect or otherwise make it more difficult to comprehend the intended purpose for the source code.
  33. ^ Dewhurst, Stephen C (2002). C++ Gotchas: Avoiding Common Problems in Coding and Design. Addison-Wesley Professional. ISBN 978-0-321-12518-7.
  34. ^ . Archived from the original on 2007-08-08. Retrieved 2007-07-24.
  35. ^ . Archived from the original on 2007-07-20. Retrieved 2007-07-24.
  36. ^ Allen Holub, Enough Rope to Shoot Yourself in the Foot, ISBN 0-07-029689-8, 1995, McGraw-Hill
  37. ^ Ken Thompson. "Users' Reference to B". Retrieved 2017-07-21.
  38. ^ "PEP 0350 – Codetags", Python Software Foundation
  39. ^ "Never Forget Anything Before, After and While Coding", Using "codetag" comments as productive remainders
  40. ^ "Using the Task List", msdn.microsoft.com
  41. ^ "Leave a comment in running-config". Cisco Learning Network (discussion forum).
  42. ^ "Managing Configuration Files Configuration Guide, Cisco IOS XE Release 3S (ASR 900 Series)".
  43. ^ "Literate programming". haskell.org.
  44. ^ "Programming in Lua 1.3". www.Lua.org. Retrieved 2017-11-08.
  45. ^ macros.extractDocCommentsAndRunnables
  46. ^ Kathleen Jensen, Niklaus Wirth (1985). Pascal User Manual and Report. Springer-Verlag. ISBN 0-387-96048-1.
  47. ^ Niklaus Wirth (1983). Programming in Modula-2. Springer-Verlag. ISBN 0-387-15078-1.
  48. ^ *Martin Reiser, Niklaus Wirth (1992). Programming in Oberon. Addison-Wesley. ISBN 0-201-56543-9.
  49. ^ "perlpod – the Plain Old Documentation format". Retrieved 2011-09-12.
  50. ^ "Pod::ParseUtils – helpers for POD parsing and conversion". Retrieved 2011-09-12.
  51. ^ a b "Perl 6 Documentation – Syntax (Comments)". Retrieved 2017-04-06.
  52. ^ a b . Archived from the original on 19 August 2021. Retrieved 25 February 2019. Triple quotes are treated as regular strings with the exception that they can span multiple lines. By regular strings I mean that if they are not assigned to a variable they will be immediately garbage collected as soon as that code executes. hence are not ignored by the interpreter in the same way that #a comment is.
  53. ^ "Python tip: You can use multi-line strings as multi-line comments", 11 September 2011, Guido van Rossum
  54. ^ Talmage, Ronald R. (1999). Microsoft SQL Server 7. Prima Publishing. ISBN 978-0-7615-1389-6.
  55. ^ "MySQL 8.0 Reference Manual". Oracle Corporation. Retrieved January 2, 2020.
  56. ^ "SQL As Understood By SQLite". SQLite Consortium. Retrieved January 2, 2020.
  57. ^ "PostgreSQL 10.11 Documentation". The PostgreSQL Global Development Group. Retrieved January 2, 2020.
  58. ^ "Oracle® Database SQL Reference". Oracle Corporation. Retrieved January 2, 2020.
  59. ^ Andress, Mandy (2003). Surviving Security: How to Integrate People, Process, and Technology. CRC Press. ISBN 978-0-8493-2042-2.

Further reading edit

  • Movshovitz-Attias, Dana and Cohen, William W. (2013) Natural Language Models for Predicting Programming Comments. In Association for Computational Linguistics (ACL), 2013.

External links edit

  • by Denis Krukovsky
  • by PTLogica
  • How to Write Comments for the Javadoc Tool

comment, computer, programming, comments, wikipedia, markup, help, wiki, markup, character, formatting, comment, redirect, here, their, wikipedia, edit, summaries, help, edit, summary, section, editing, computer, programming, comment, programmer, readable, exp. For comments in Wikipedia markup see Help Wiki markup Character formatting and WP COMMENT and redirect here For their use in Wikipedia edit summaries see Help Edit summary Section editing In computer programming a comment is a programmer readable explanation or annotation in the source code of a computer program They are added with the purpose of making the source code easier for humans to understand and are generally ignored by compilers and interpreters 1 2 The syntax of comments in various programming languages varies considerably An illustration of Java source code with prologue comments indicated in red and inline comments in green Program code is in blue Comments are sometimes also processed in various ways to generate documentation external to the source code itself by documentation generators or used for integration with source code management systems and other kinds of external programming tools The flexibility provided by comments allows for a wide degree of variability but formal conventions for their use are commonly part of programming style guides Contents 1 Overview 2 Uses 2 1 Planning and reviewing 2 2 Code description 2 3 Algorithmic description 2 4 Resource inclusion 2 5 Metadata 2 6 Debugging 2 7 Automatic documentation generation 2 8 Syntax extension 2 9 Directive uses 2 10 Stress relief 3 Normative views 3 1 Need for comments 3 2 Level of detail 4 Styles 4 1 Block comment 4 2 Line comments 5 Tags 6 Examples 6 1 Comparison 6 1 1 Ada 6 1 2 APL 6 1 3 AppleScript 6 1 4 BASIC 6 1 5 C 6 1 6 Cisco IOS and IOS XE configuration 6 1 7 ColdFusion 6 1 8 D 6 1 9 Fortran IV 6 1 10 Fortran 90 6 1 11 Haskell 6 1 12 Java 6 1 13 JavaScript 6 1 14 Lua 6 1 15 MATLAB 6 1 16 Nim 6 1 17 OCaml 6 1 18 Pascal Delphi 6 1 19 Perl 6 1 20 R 6 1 21 Raku 6 1 22 PHP 6 1 23 PowerShell 6 1 24 Python 6 1 25 Ruby 6 1 26 SQL 6 1 27 Swift 6 1 28 XML or HTML 7 Security issues 8 See also 9 Notes and references 10 Further reading 11 External linksOverview editComments are generally formatted as either block comments also called prologue comments or stream comments or line comments also called inline comments 3 Block comments delimit a region of source code which may span multiple lines or a part of a single line This region is specified with a start delimiter and an end delimiter Some programming languages such as MATLAB allow block comments to be recursively nested inside one another but others such as Java do not 4 5 6 Line comments either start with a comment delimiter and continue until the end of the line or in some cases start at a specific column character line offset in the source code and continue until the end of the line 6 Some programming languages employ both block and line comments with different comment delimiters For example C has block comments delimited by and that can span multiple lines and line comments delimited by Other languages support only one type of comment For example Ada comments are line comments they start with and continue to the end of the line 6 Uses editHow best to make use of comments is subject to dispute different commentators have offered varied and sometimes opposing viewpoints 7 8 There are many different ways of writing comments and many commentators offer conflicting advice 8 Planning and reviewing edit Comments can be used as a form of pseudocode to outline intention prior to writing the actual code In this case it should explain the logic behind the code rather than the code itself loop backwards through all elements returned by the server they should be processed chronologically for i numElementsReturned 1 i gt 0 i process each element s data updatePattern i returnedElements i If this type of comment is left in it simplifies the review process by allowing a direct comparison of the code with the intended results A common logical fallacy is that code that is easy to understand does what it s supposed to do Code description edit Comments can be used to summarize code or to explain the programmer s intent According to this school of thought restating the code in plain English is considered superfluous the need to re explain code may be a sign that it is too complex and should be rewritten or that the naming is bad Don t document bad code rewrite it 9 Good comments don t repeat the code or explain it They clarify its intent Comments should explain at a higher level of abstraction than the code what you re trying to do 10 Comments may also be used to explain why a block of code does not seem to fit conventions or best practices This is especially true of projects involving very little development time or in bug fixing For example Second variable dim because of server errors produced when reuse form data No documentation available on server behavior issue so just coding around it vtx server mappath local settings Algorithmic description edit Sometimes source code contains a novel or noteworthy solution to a specific problem In such cases comments may contain an explanation of the methodology Such explanations may include diagrams and formal mathematical proofs This may constitute explanation of the code rather than a clarification of its intent but others tasked with maintaining the code base may find such explanation crucial This might especially be true in the case of highly specialized problem domains or rarely used optimizations constructs or function calls 11 For example a programmer may add a comment to explain why an insertion sort was chosen instead of a quicksort as the former is in theory slower than the latter This could be written as follows list f b f b f c f d f a Need a stable sort Besides the performance really does not matter insertion sort list Resource inclusion edit Logos diagrams and flowcharts consisting of ASCII art constructions can be inserted into source code formatted as a comment 12 Further copyright notices can be embedded within source code as comments Binary data may also be encoded in comments through a process known as binary to text encoding although such practice is uncommon and typically relegated to external resource files The following code fragment is a simple ASCII diagram depicting the process flow for a system administration script contained in a Windows Script File running under Windows Script Host Although a section marking the code appears as a comment the diagram itself actually appears in an XML CDATA section which is technically considered distinct from comments but can serve similar purposes 13 lt begin wsf resource nodes gt lt resource id ProcessDiagram000 gt lt CDATA HostApp Main process V script wsf app cmd gt ClientApp async run batch process V mru ini mru history gt lt resource gt Although this identical diagram could easily have been included as a comment the example illustrates one instance where a programmer may opt not to use comments as a way of including resources in source code 13 Metadata edit Main article Metadata Comments in a computer program often store metadata about a program file In particular many software maintainers put submission guidelines in comments to help people who read the source code of that program to send any improvements they make back to the maintainer Other metadata includes the name of the creator of the original version of the program file and the date when the first version was created the name of the current maintainer of the program the names of other people who have edited the program file so far the URL of documentation about how to use the program the name of the software license for this program file etc When an algorithm in some section of the program is based on a description in a book or other reference comments can be used to give the page number and title of the book or Request for Comments or other reference Debugging edit A common developer practice is to comment out a code snippet meaning to add comment syntax causing that block of code to become a comment so that it will not be executed in the final program This may be done to exclude certain pieces of code from the final program or more commonly it can be used to find the source of an error By systematically commenting out and running parts of the program the source of an error can be determined allowing it to be corrected Many IDEs allow quick adding or removing such comments with single menu options or key combinations The programmer has only to mark the part of text they want to un comment and choose the appropriate option Automatic documentation generation edit Main article Documentation generator Programming tools sometimes store documentation and metadata in comments 14 These may include insert positions for automatic header file inclusion commands to set the file s syntax highlighting mode 15 or the file s revision number 16 These functional control comments are also commonly referred to as annotations Keeping documentation within source code comments is considered as one way to simplify the documentation process as well as increase the chances that the documentation will be kept up to date with changes in the code 17 Examples of documentation generators include the programs Javadoc for use with Java Ddoc for D Doxygen for C C Java IDL Visual Expert for PL SQL Transact SQL PowerBuilder and PHPDoc for PHP Forms of docstring are supported by Python Lisp Elixir and Clojure 18 C F and Visual Basic NET implement a similar feature called XML Comments which are read by IntelliSense from the compiled NET assembly 19 Syntax extension edit Occasionally syntax elements that were originally intended to be comments are re purposed to convey additional information to a program such as conditional comments Such hot comments may be the only practical solution that maintains backward compatibility but are widely regarded as a kludge 20 Directive uses edit There are cases where the normal comment characters are co opted to create a special directive for an editor or interpreter Two examples of this directing an interpreter are The Unix shebang used on the first line of a script to point to the interpreter to be used Magic comments identifying the encoding a source file is using 21 e g Python s PEP 263 22 The script below for a Unix like system shows both of these uses usr bin env python3 coding UTF 8 print Testing Somewhat similar is the use of comments in C to communicate to a compiler that a default fallthrough in a case statement has been done deliberately switch command case CMD SHOW HELP AND EXIT do show help Fall thru case CMD EXIT do exit break case CMD OTHER do other break etc Inserting such a Fall thru comment for human readers was already a common convention but in 2017 the gcc compiler began looking for these or other indications of deliberate intent and if not found emitting warning this statement may fall through 23 Many editors and IDEs will read specially formatted comments For example the modeline feature of Vim which would change its handling of tabs while editing a source with this comment included near the top of the file vim tabstop 8 expandtab shiftwidth 4 softtabstop 4 Stress relief edit Sometimes programmers will add comments as a way to relieve stress by commenting about development tools competitors employers working conditions or the quality of the code itself 24 The occurrence of this phenomenon can be easily seen from online resources that track profanity in source code 25 Normative views editThere are various normative views and long standing opinions regarding the proper use of comments in source code 26 27 Some of these are informal and based on personal preference while others are published or promulgated as formal guidelines for a particular community 28 Need for comments edit Experts have varying viewpoints on whether and when comments are appropriate in source code 9 29 Some assert that source code should be written with few comments on the basis that the source code should be self explanatory or self documenting 9 Others suggest code should be extensively commented it is not uncommon for over 50 of the non whitespace characters in source code to be contained within comments 30 31 In between these views is the assertion that comments are neither beneficial nor harmful by themselves and what matters is that they are correct and kept in sync with the source code and omitted if they are superfluous excessive difficult to maintain or otherwise unhelpful 32 33 Comments are sometimes used to document contracts in the design by contract approach to programming Level of detail edit Depending on the intended audience of the code and other considerations the level of detail and description may vary considerably For example the following Java comment would be suitable in an introductory text designed to teach beginning programming String s Wikipedia Assigns the value Wikipedia to the variable s This level of detail however would not be appropriate in the context of production code or other situations involving experienced developers Such rudimentary descriptions are inconsistent with the guideline Good comments clarify intent 10 Further for professional coding environments the level of detail is ordinarily well defined to meet a specific performance requirement defined by business operations 31 Styles editThere are many stylistic alternatives available when considering how comments should appear in source code For larger projects involving a team of developers comment styles are either agreed upon before a project starts or evolve as a matter of convention or need as a project grows Usually programmers prefer styles that are consistent non obstructive easy to modify and difficult to break 34 Block comment edit The following code fragments in C demonstrate just a tiny example of how comments can vary stylistically while still conveying the same basic information This is the comment body Variation One This is the comment body Variation Two Factors such as personal preference flexibility of programming tools and other considerations tend to influence the stylistic variants used in source code For example Variation Two might be disfavored among programmers who do not have source code editors that can automate the alignment and visual appearance of text in comments Software consultant and technology commentator Allen Holub 35 is one expert who advocates aligning the left edges of comments 36 This is the style recommended by Holub for C and C It is demonstrated in Enough Rope in rule 29 This is another way to do it also in C It is easier to do in editors that do not automatically indent the second through last lines of the comment one space from the first It is also used in Holub s book in rule 31 The use of and as block comment delimiters was inherited from PL I into the B programming language the immediate predecessor of the C programming language 37 Line comments edit Line comments generally use an arbitrary delimiter or sequence of tokens to indicate the beginning of a comment and a newline character to indicate the end of a comment In this example all the text from the ASCII characters to the end of the line is ignored This is the comment body Often such a comment has to begin at far left and extend to the whole line However in many languages it is also possible to put a comment inline with a command line to add a comment to it as in this Perl example print s n Add a newline character after printing If a language allows both line comments and block comments programming teams may decide upon a convention of using them differently e g line comments only for minor comments and block comments to describe higher level abstractions Tags editProgrammers may use informal tags in comments to assist in indexing common issues They may then be able to be searched for with common programming tools such as the Unix grep utility or even syntax highlighted within text editors These are sometimes referred to as codetags 38 39 or tokens and the development tools might even assist you in listing all of them 40 Such tags differ widely but might include BUG DEBUG a known bug that should be corrected FIXME should be corrected HACK BODGE KLUDGE a workaround TODO something to be done NOTE used to highlight especially notable gotchas UNDONE a reversal or roll back of previous code XXX warn other programmers of problematic or misguiding codeExamples editComparison edit Main article Comparison of programming languages syntax Comments Typographic conventions to specify comments vary widely Further individual programming languages sometimes provide unique variants Ada edit The Ada programming language uses to indicate a comment up to the end of the line For example the air traffic controller task takes requests for takeoff and landing task type Controller My Runway Runway Access is task entries for synchronous message passing entry Request Takeoff ID in Airplane ID Takeoff out Runway Access entry Request Approach ID in Airplane ID Approach out Runway Access end Controller APL edit APL uses to indicate a comment up to the end of the line For example Now add the numbers c a b addition In dialects that have the left and right primitives comments can often be inside or separate statements in the form of ignored strings d 2 c where c a bound b AppleScript edit This section of AppleScript code shows the two styles of comments used in that language This program displays a greeting on greet myGreeting display dialog myGreeting amp world end greet Show the greeting greet Hello BASIC edit In this classic early BASIC code fragment the REM Remark keyword is used to add comments 10 REM This BASIC program shows the use of the PRINT and GOTO Statements 15 REM It fills the screen with the phrase HELLO 20 PRINT HELLO 30 GOTO 20 In later Microsoft BASICs including Quick Basic Q Basic Visual Basic Visual Basic NET and VB Script and in descendants such as FreeBASIC and Gambas any text on a line after an apostrophe character is also treated as a comment An example in Visual Basic NET Public Class Form1 Private Sub Button1 Click sender As Object e As EventArgs Handles Button1 Click The following code is executed when the user clicks the button in the program s window rem comments still exist MessageBox Show Hello World Show a pop up window with a greeting End Sub End Class C edit This C code fragment demonstrates the use of a prologue comment or block comment to describe the purpose of a conditional statement The comment explains key terms and concepts and includes a short signature by the programmer who authored the code Check if we are over our maximum process limit but be sure to exclude root This is needed to make it possible for login and friends to set the per user process limit to something lower than the amount of processes root is running Rik if atomic read amp p gt user gt processes gt p gt rlim RLIMIT NPROC rlim cur amp amp capable CAP SYS ADMIN amp amp capable CAP SYS RESOURCE goto bad fork free Since C99 it has also been possible to use the syntax from C indicating a single line comment The availability of block comments allows for marking structural breakouts i e admissible violations of the single entry single exit rule of Structured Programming visibly like in the following example static Edge edge any Node n Node m Returns whether any edge is between nodes n and m Edge e for e n gt edges e e e gt next if e gt dst m return e for e m gt edges e e e gt next if e gt dst n break return e In many languages lacking a block comment e g awk you can use sequences of statement seperators like instead But it s impossible in languages using indentation as a rigid indication of intended block structure like Python Cisco IOS and IOS XE configuration edit The exclamation point may be used to mark comments in a Cisco router s configuration mode however such comments are not saved to non volatile memory which contains the startup config nor are they displayed by the show run command 41 42 It is possible to insert human readable content that is actually part of the configuration and may be saved to the NVRAM startup config via The description command used to add a description to the configuration of an interface or of a BGP neighbor The name parameter to add a remark to a static route The remark command in access lists Paste the text below to reroute traffic manually config t int gi0 2 no shut ip route 0 0 0 0 0 0 0 0 gi0 2 name ISP2 no ip route 0 0 0 0 0 0 0 0 gi0 1 name ISP1 int gi0 1 shut exit ColdFusion edit ColdFusion uses comments similar to HTML comments but instead of two dashes it uses three These comments are caught by the ColdFusion engine and not printed to the browser Such comments are nestable lt This prints Hello World to the browser lt This is a comment used inside the first one gt gt lt cfoutput gt Hello World lt br gt lt cfoutput gt D edit D uses C style comments as well as nestable D style multiline comments which start with and end with This is a single line comment This is a multiline comment This is a nested comment Fortran IV edit This Fortran IV code fragment demonstrates how comments are used in that language which is very column oriented A letter C in column 1 causes the entire line to be treated as a comment C C Lines that begin with C in the first or comment column are comments C WRITE 6 610 610 FORMAT 12 H HELLO WORLD END Note that the columns of a line are otherwise treated as four fields 1 to 5 is the label field 6 causes the line to be taken as a continuation of the previous statement and declarations and statements go in 7 to 72 Fortran 90 edit This Fortran code fragment demonstrates how comments are used in that language with the comments themselves describing the basic formatting rules All characters after an exclamation mark are considered as comments program comment test print A Hello world Fortran 90 introduced the option for inline comments end program Haskell edit Line comments in Haskell start with two hyphens until the end of line and multiple line comments start with and end with this is a comment on more lines and this is a comment on one line putStrLn Wikipedia this is another comment Haskell also provides a literate programming method of commenting known as Bird Style 43 In this all lines starting with gt are interpreted as code everything else is considered a comment One additional requirement is that you always leave a blank line before and after the code block In Bird style you have to leave a blank before the code gt fact Integer gt Integer gt fact 0 1 gt fact n 1 n 1 fact n And you have to leave a blank line after the code as well Literate programming can also be done in Haskell using LaTeX The code environment can be used instead of the Richard Bird s style In LaTeX style this is equivalent to the above example the code environment could be defined in the LaTeX preamble Here is a simple definition usepackage verbatim newenvironment code verbatim endverbatim later in the LaTeX source file The verb fact n function call computes n if n ge 0 here is a definition begin code fact Integer gt Integer fact 0 1 fact n 1 n 1 fact n end code Here more explanation using LaTeX markup Java edit This Java code fragment shows a block comment used to describe the setToolTipText method The formatting is consistent with Sun Microsystems Javadoc standards The comment is designed to be read by the Javadoc processor This is a block comment in Java The setToolTipText method registers the text to display in a tool tip The text is displayed when the cursor lingers over the component param text The string to be displayed If text is null the tool tip is turned off for this component public void setToolTipText String text This is an inline comment in Java TODO Write code for this method JavaScript edit JavaScript uses to precede comments and for multi line comments A single line JavaScript comment var iNum 100 var iTwo 2 A comment at the end of line multi line JavaScript comment Lua edit The Lua programming language uses double hyphens for single line comments in a similar way to Ada Eiffel Haskell SQL and VHDL languages Lua also has block comments which start with and run until a closing For example A multi line long comment print 20 print the result A common technique to comment out a piece of code 44 is to enclose the code between and as below print 10 no action commented out In this case it s possible to reactivate the code by adding a single hyphen to the first line print 10 gt 10 In the first example the in the first line starts a long comment and the two hyphens in the last line are still inside that comment In the second example the sequence starts an ordinary single line comment so that the first and the last lines become independent comments In this case the print is outside comments In this case the last line becomes an independent comment as it starts with Long comments in Lua can be more complex than these as you can read in the section called Long strings c f Programming in Lua MATLAB edit In MATLAB s programming language the character indicates a single line comment Multi line comments are also available via and brackets and can be nested e g These are the derivatives for each term d 0 1 0 Example of a nested comment indentation is for cosmetics and ignored We form the sequence following the Taylor formula Note that we re operating on a vector seq d x c n factorial n We add up to get the Taylor approximation approx sum seq Nim edit Nim uses the character for inline comments Multi line block comments are opened with and closed with Multi line block comments can be nested Nim also has documentation comments that use mixed Markdown and ReStructuredText markups The inline documentation comments use and multi line block documentation comments are opened with and closed with The compiler can generate HTML LaTeX and JSON documentation from the documentation comments Documentation comments are part of the abstract syntax tree and can be extracted using macros 45 Documentation of the module ReSTructuredText and MarkDown This is a comment but it is not a documentation comment type Kitten object Documentation of type age int Documentation of field proc purr self Kitten Documentation of function echo Purr Purr This is a comment but it is not a documentation comment This is a comment but it is not a documentation comment OCaml edit OCaml uses nestable comments which is useful when commenting a code block codeLine comment level 1 comment level 2 Pascal Delphi edit In Pascal and Delphi comments are delimited by Comment lines can also start with As an alternative for computers that do not support these characters are allowed 46 In Niklaus Wirth s more modern family of languages including Modula 2 and Oberon comments are delimited by 47 48 For example test diagonals columnDifference testColumn column if row columnDifference testRow or Comments can be nested can be included in a and can be included in a Perl edit Line comments in Perl and many other scripting languages begin with a hash symbol A simple example my s Wikipedia Sets the variable s to Wikipedia print s n Add a newline character after printing Instead of a regular block commenting construct Perl uses Plain Old Documentation a markup language for literate programming 49 for instance 50 item Pod List E lt gt gt new Create a new list object Properties may be specified through a hash reference like this my list Pod List gt new start gt indent gt 4 See the individual methods properties for details cut sub new my this shift my class ref this this my params my self params bless self class self gt initialize return self R edit R only supports inline comments started by the hash character This is a comment print This is not a comment This is another comment Raku edit Raku previously called Perl 6 uses the same line comments and POD Documentation comments as regular Perl see Perl section above but adds a configurable block comment type multi line embedded comments 51 These start with a hash character followed by a backtick and then some opening bracketing character and end with the matching closing bracketing character 51 The content can not only span multiple lines but can also be embedded inline commenting out this version toggle case Str D s Toggles the case of each character in a string my Str toggled string toggle case mY NAME IS mICHAEL sub toggle case Str D s this version of parens is used now PHP edit Comments in PHP can be either in C style both inline and block or use hashes PHPDoc is a style adapted from Javadoc and is a common standard for documenting PHP code Starting in PHP 8 the sign can only mean a comment if it s not immediately followed by Otherwise it will mean a function attribute which runs until This class contains a sample documentation author Unknown Attribute class MyAttribute const VALUE value This is an inline comment It starts with like in C private value This is a Unix style inline comment which starts with public function construct value null this gt value value This is a multiline comment These comments cannot be nested PowerShell edit Comments in Windows PowerShell Single line comment Write Host Hello World lt Multi Line Comment gt Write Host Goodbye world Python edit Inline comments in Python use the hash character as in the two examples in this code This program prints Hello World to the screen print Hello World Note the new syntax Block comments as defined in this article do not technically exist in Python 52 A bare string literal represented by a triple quoted string can be used 53 but is not ignored by the interpreter in the same way that comment is 52 In the examples below the triple double quoted strings act in this way as comments but are also treated as docstrings Assuming this is file mymodule py then this string being the first statement in the file will become the mymodule module s docstring when the file is imported class MyClass The class s docstring def my method self The method s docstring def my function The function s docstring Ruby edit Inline comments in Ruby start with the character To create a multiline comment one must place begin at the start of a line and then everything until end that starts a line is ignored Including a space after the equals sign in this case throws a syntax error puts This is not a comment this is a comment puts This is not a comment begin whatever goes in these lines is just for the human reader end puts This is not a comment SQL edit Standard comments in SQL are in single line only form using two dashes This is a single line comment followed by a second line SELECT COUNT FROM Authors WHERE Authors name Smith Note we only want smith this comment appears after SQL code Alternatively a comment format syntax identical to the block comment style used in the syntax for C and Java is supported by Transact SQL MySQL SQLite PostgreSQL and Oracle 54 55 56 57 58 MySQL also supports comments from the hash character to the end of the line Swift editSingle line comments begin with two forward slashes This is a comment Multiline comments start with a forward slash followed by an asterisk and end with an asterisk followed by a forward slash This is also a comment but is written over multiple lines Multiline comments in Swift can be nested inside other multiline comments You write nested comments by starting a multiline comment block and then starting a second multiline comment within the first block The second block is then closed followed by the first block This is the start of the first multiline comment This is the second nested multiline comment This is the end of the first multiline comment XML or HTML editComments in XML or HTML are introduced with lt and can spread over several lines until the terminator gt For example lt select the context here gt lt param name context value public gt For compatibility with SGML the string double hyphen is not allowed inside comments Security issues editIn interpreted languages the comments are viewable to the end user of the program In some cases such as sections of code that are commented out this may present a security vulnerability 59 See also editDocstring a specific type of comment that is parsed and retained throughout the runtime of the program Shebang the use of as an interpreter directive in scripts on Unix like systems HTML comment tag Literate programming alternative documentation paradigm Syntax of comments in various programming languages COMMENT CONFIG SYS directive REM CONFIG SYS directive Notes and references edit Source code can be divided into program code which consists of machine translatable instructions and comments which include human readable notes and other kinds of annotations in support of the program code Penny Grubb Armstrong Takang 2003 Software Maintenance Concepts and Practice World Scientific pp 7 plese start120 121 ISBN 978 981 238 426 3 For purposes of this article programming language comments are treated as indistinct from comments that appear in markup languages configuration files and other similar contexts Moreover markup language is often closely integrated with programming language code especially in the context of code generation See e g Ganguli Madhushree 2002 Making Use of Jsp New York Wiley ISBN 978 0 471 21974 3 Hewitt Eben 2003 Java for Coldfusion Developers Upper Saddle River Pearson Education ISBN 978 0 13 046180 3 Dixit J B 2003 Computer Fundamentals and Programming in C Laxmi Publications ISBN 978 81 7008 882 0 Higham Desmond 2005 MATLAB Guide SIAM ISBN 978 0 89871 578 1 Vermeulen Al 2000 The Elements of Java Style Cambridge University Press ISBN 978 0 521 77768 1 a b c Using the right comment in Java 2000 03 04 Retrieved 2007 07 24 W R Dietrich 2003 Applied Pattern Recognition Algorithms and Implementation in C Springer ISBN 978 3 528 35558 6 offers viewpoints on proper use of comments in source code p 66 a b Keyes Jessica 2003 Software Engineering Handbook CRC Press ISBN 978 0 8493 1479 7 discusses comments and the Science of Documentation p 256 a b c The Elements of Programming Style Kernighan amp Plauger a b Code Complete McConnell Spinellis Diomidis 2003 Code reading The Open Source Perspective Addison Wesley ISBN 978 0 201 79940 8 CodePlotter 1 6 Add and edit diagrams in your code with this Visio like tool Archived from the original on 2007 07 14 Retrieved 2007 07 24 a b Niederst Jennifer 2006 Web Design in a Nutshell A Desktop Quick Reference O Reilly ISBN 978 0 596 00987 8 Sometimes the difference between a comment and other syntax elements of a programming or markup language entails subtle nuances Niederst indicates one such situation by stating Unfortunately XML software thinks of comments as unimportant information and may simply remove the comments from a document before processing it To avoid this problem use an XML CDATA section instead See e g Wynne Powell Rod 2008 Mac OS X for Photographers Optimized Image Workflow for the Mac User Oxford Focal Press p 243 ISBN 978 0 240 52027 8 Lamb Linda 1998 Learning the VI Editor Sebastopol O Reilly amp Associates ISBN 978 1 56592 426 0 describes the use of modeline syntax in Vim configuration files See e g Berlin Daniel 2006 Practical Subversion Second Edition Berkeley APress p 168 ISBN 978 1 59059 753 8 Ambler Scott 2004 The Object Primer Agile Model Driven Development with UML 2 0 Cambridge University Press ISBN 978 1 397 80521 8 Function definition with docstring in Clojure Murach C 2005 p 56 c2 HotComments class Encoding Ruby ruby lang org Retrieved 5 December 2018 PEP 263 Defining Python Source Code Encodings Python org Retrieved 5 December 2018 Polacek Marek 2017 03 10 Wimplicit fallthrough in GCC 7 Red Hat Developer Red Hat Retrieved 10 February 2019 Lisa Eadicicco 27 March 2014 Microsoft Programmers Hid A Bunch Of Profanity In Early Software Code Business Insider Australia Archived from the original on 29 December 2016 see e g Linux Swear Count Goodliffe Pete 2006 Code Craft San Francisco No Starch Press ISBN 978 1 59327 119 0 Smith T 1991 Intermediate Programming Principles and Techniques Using Pascal Belmont West Pub Co ISBN 978 0 314 66314 6 See e g Koletzke Peter 2000 Oracle Developer Advanced Forms amp Reports Berkeley Osborne McGraw Hill ISBN 978 0 07 212048 6 page 65 Worst Practice Bad Comments Retrieved 2007 07 24 Morelli Ralph 2006 Java Java Java object oriented problem solving Prentice Hall College ISBN 978 0 13 147434 5 a b How to Write Doc Comments for the Javadoc Tool Retrieved 2007 07 24 Javadoc guidelines specify that comments are crucial to the platform Further the appropriate level of detail is fairly well defined We spend time and effort focused on specifying boundary conditions argument ranges and corner cases rather than defining common programming terms writing conceptual overviews and including examples for developers Yourdon Edward 2007 Techniques of Program Structure and Design University of Michigan 013901702X Non existent comments can make it difficult to comprehend code but comments may be detrimental if they are obsolete redundant incorrect or otherwise make it more difficult to comprehend the intended purpose for the source code Dewhurst Stephen C 2002 C Gotchas Avoiding Common Problems in Coding and Design Addison Wesley Professional ISBN 978 0 321 12518 7 Coding Style Archived from the original on 2007 08 08 Retrieved 2007 07 24 Allen Holub Archived from the original on 2007 07 20 Retrieved 2007 07 24 Allen Holub Enough Rope to Shoot Yourself in the Foot ISBN 0 07 029689 8 1995 McGraw Hill Ken Thompson Users Reference to B Retrieved 2017 07 21 PEP 0350 Codetags Python Software Foundation Never Forget Anything Before After and While Coding Using codetag comments as productive remainders Using the Task List msdn microsoft com Leave a comment in running config Cisco Learning Network discussion forum Managing Configuration Files Configuration Guide Cisco IOS XE Release 3S ASR 900 Series Literate programming haskell org Programming in Lua 1 3 www Lua org Retrieved 2017 11 08 macros extractDocCommentsAndRunnables Kathleen Jensen Niklaus Wirth 1985 Pascal User Manual and Report Springer Verlag ISBN 0 387 96048 1 Niklaus Wirth 1983 Programming in Modula 2 Springer Verlag ISBN 0 387 15078 1 Martin Reiser Niklaus Wirth 1992 Programming in Oberon Addison Wesley ISBN 0 201 56543 9 perlpod the Plain Old Documentation format Retrieved 2011 09 12 Pod ParseUtils helpers for POD parsing and conversion Retrieved 2011 09 12 a b Perl 6 Documentation Syntax Comments Retrieved 2017 04 06 a b Python 3 Basic Syntax Archived from the original on 19 August 2021 Retrieved 25 February 2019 Triple quotes are treated as regular strings with the exception that they can span multiple lines By regular strings I mean that if they are not assigned to a variable they will be immediately garbage collected as soon as that code executes hence are not ignored by the interpreter in the same way that a comment is Python tip You can use multi line strings as multi line comments 11 September 2011 Guido van Rossum Talmage Ronald R 1999 Microsoft SQL Server 7 Prima Publishing ISBN 978 0 7615 1389 6 MySQL 8 0 Reference Manual Oracle Corporation Retrieved January 2 2020 SQL As Understood By SQLite SQLite Consortium Retrieved January 2 2020 PostgreSQL 10 11 Documentation The PostgreSQL Global Development Group Retrieved January 2 2020 Oracle Database SQL Reference Oracle Corporation Retrieved January 2 2020 Andress Mandy 2003 Surviving Security How to Integrate People Process and Technology CRC Press ISBN 978 0 8493 2042 2 Further reading editMovshovitz Attias Dana and Cohen William W 2013 Natural Language Models for Predicting Programming Comments In Association for Computational Linguistics ACL 2013 External links editHow to Write Comments by Denis Krukovsky Source Code Documentation as a Live User Manual by PTLogica How to Write Comments for the Javadoc Tool Retrieved from https en wikipedia org w index php title Comment computer programming amp oldid 1218304271, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.