Программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Отмена правки 154063, сделанной 5.35.86.113 (обсуждение)
Метка: отмена
Строка 50:
==Методологии программирования==
* [[w:Экстремальное программирование|Экстремальное программирование]]
==Сравнение языков программирования==
 
{{Сравнения языков программирования}}
В этой статье сравнивается более 50 [[язык программирования|языков программирования]] по основным свойствам [[Синтаксис (программирование)|синтаксиса]].<br>
 
== Выражения ==
[[Выражение (информатика)|Выражения]] в языках программирования в широком смысле могут быть подразделены на 4 типа по синтаксической структуре:
 
;префиксная запись
* [[Лисп]] <tt>(* (+ 2 3) (expt 4 5))</tt>
;инфиксная запись
* [[Фортран]] <tt>(2 + 3) * (4 ** 5)</tt>
;суффиксная, постфиксная или [[Обратная польская запись]]
* [[Форт (язык программирования)|Форт]] <tt>2 3 + 4 5 ** *</tt>
;запись выражений в математическом стиле
* [[Wolfram (язык программирования)|Wolfram]] <tt>(2 + 3)(4^5) (* отметим неявный оператор умножения *)</tt>
 
== Операторы ==
Как правило в языках программирования имеются следующие соглашения по [[Оператор (программирование)|операторам]]:
 
* о разделителях операторов;
* о терминаторах операторов; и
* о продолжении строки
 
Разделитель операторов используется для демаркации границы между двумя отдельными операторами. Терминатор операторов используется для маркировки конца отдельного оператора. Языки, которые интерпретируют конец строки как конец оператора называются однострочными<ref>https://translate.yandex.ru/?utm_source=wizard&text=line-oriented&lang=en-ru</ref> языками программирования.
 
«Продолжение строки» — это соглашение для однострочных языков о ситуациях, когда символ окончания строки может быть неправильно интерпретирован как окончание оператора. В таких языках «продолжение строки» позволяет оператору охватывать более одной строки.
 
 
{| class="wikitable sortable"
|-
! Язык
! Разделитель-терминатор операторов
! Дополнительный разделитель<ref name="ss1">для нескольких операторов на одной строке</ref>
|-
| [[ABAP/4|ABAP]]
| разделитель — точка '.'
|-
| [[Ада (язык программирования)|Ада]] (Ada)
| терминатор — точка с запятой ';'
|-
| [[Алгол]] (ALGOL)
| разделитель — точка с запятой ';'
|-
| [[Алгол 68]] (ALGOL 68)
| разделитель — точка с запятой ';' и запятая ','<ref>Три типа предложений, каждое разделяет части по-разному:
*# последовательное предложение использует ''[[Токен (лексический анализ)|токен]] продолжения'' (точка с запятой ';'): '''begin''' a; b; c '''end''' — элементы исполняются по очереди.
*# непоследовательное предложение использует ''[[Токен (лексический анализ)|токен]] и-также'' (запятая «,»): '''begin''' a, b, c '''end''' — очередность исполнения определяется оптимизатором компилятора..
*# параллельное предложение использует ''[[Токен (лексический анализ)|токен]] и-также'' (запятая «,»): '''par begin''' a, b, c '''end''' — элементы необходимо исполнять в параллельных потоках.
</ref>
|-
| [[APL (язык программирования)|APL]]
| терминатор — новая строка
| разделитель — <tt>⋄</tt>
|-
| [[AppleScript]]
| терминатор — новая строка
|-
| [[AutoHotkey]]
| терминатор — новая строка
|-
| [[Бейсик]] (BASIC)
| терминатор — новая строка
| разделитель — двоеточие ':'
|-
| [[Boo]]
| терминатор — новая строка
|-
| [[Си (язык программирования)|Си]] (C)
| терминатор — точка с запятой ';'
| разделитель выражений — запятая ','
|-
| [[C++]]
| терминатор — точка с запятой ';'
| разделитель выражений — запятая ','
|-
| [[C Sharp|C#]]
| терминатор — точка с запятой ';'
|-
| [[Кобол]] (COBOL)
| разделитель — пробел, иногда точка '.', имеется возможность разделять запятыми ',' и точками с запятыми ';'.
|
|-
| [[Cobra (язык программирования)|Cobra]]
| терминатор — новая строка
|-
| [[CoffeeScript]]
| терминатор — новая строка
|-
| [[D (язык программирования)|D]]
| терминатор — точка с запятой ';'
|-
| [[Eiffel]]
| терминатор — новая строка
| точка с запятой ';'
|-
| [[Erlang]]
| разделитель — двоеточие ':', терминатор — точка '.'
|-
| [[F Sharp|F#]]
| терминатор — новая строка
| точка с запятой ';'
|-
| [[Фортран]] (Fortran)
| терминатор — новая строка
| точка с запятой ';'
|-
| [[Форт (язык программирования)|Форт]] (Forth)
| терминатор определений слов — точка с запятой ';'
|-
| [[:en:GFA BASIC|GFA BASIC]]
| терминатор — новая строка
|-
| [[Go]]
| разделитель — точка с запятой ';' (вставляется компилятором)
|-
| [[Haskell]] (в do-нотации)
| разделитель — новая строка
|-
| [[Haskell]] (в do-нотации, при использовании скобок)
| разделитель — точка с запятой ';'
|-
| [[Java]]
| терминатор — точка с запятой ';'
|-
| [[JavaScript]]
| разделитель — точка с запятой ';' (иногда неявно делится по новой строке)
|-
|[[Kotlin]]
| разделитель — точка с запятой ';' (иногда неявно делится по новой строке)
|-
| [[Lua]]
| разделитель — пробел (возможна точка с запятой ';')
|-
| [[Mathematica]]
| разделитель — точка с запятой ';'
|-
| [[MATLAB]]
| терминатор — новая строка
| точка с запятой ';' или запятая ','<ref>точка с запятой — спрятать результат оператора, запятая — показать результат</ref>
|-
| [[Object Pascal]] ([[Delphi (среда разработки)|Delphi]])
| разделитель — точка с запятой ';'
|-
| [[Objective-C]]
| терминатор — точка с запятой ';'
|-
| [[OCaml]]
| разделитель — точка с запятой ';'
|-
| [[Паскаль (язык программирования)|Паскаль]] (Pascal)
| разделитель — точка с запятой ';'
|-
| [[Perl]]
| разделитель — точка с запятой ';'
|-
| [[Perl 6]]
| разделитель — точка с запятой ';'
|-
| [[PHP]]
| терминатор — точка с запятой ';'
|-
| [[:en:Pick Basic|Pick Basic]]
| терминатор — новая строка
| разделитель — точка с запятой ';'
|-
| [[PowerShell]]
| терминатор — новая строка
| разделитель — точка с запятой ';'
|-
| [[Пролог (язык программирования)|Пролог]] (Prolog)
| терминатор — точка '.'
|-
| [[Python]]
| терминатор — новая строка
| точка с запятой ';'
|-
| [[Ruby]]
| терминатор — новая строка
| точка с запятой ';'
|-
| [[Rust (язык программирования)|Rust]]
| терминатор операторов — точка с запятой ';'
| разделитель выражений — запятая ','
|-
| [[Scala (язык программирования)|Scala]]
| терминатор — новая строка (возможна точка с запятой ';')
| точка с запятой ';'
|-
| [[Seed7]]
| разделитель — точка с запятой ';' (возможность использовать как терминатор)
|-
| [[Симула]] (Simula)
| разделитель — точка с запятой ';'
|-
| [[S-Lang]]
| разделитель — точка с запятой ';'
|-
| [[Smalltalk]]
| разделитель — точка '.'
|-
| [[Standard ML]]
| разделитель — точка с запятой ';'
|-
| [[Swift (язык программирования)|Swift]]
| разделитель — точка с запятой ';' (вставляется компилятором)
|-
| [[Visual Basic]]
| терминатор — новая строка
| разделитель — двоеточие ':'
|-
| [[Visual Basic .NET]]
| терминатор — новая строка
| разделитель — двоеточие ':'
|-
| [[Wolfram (язык программирования)|Wolfram]]
| разделитель — точка с запятой ';'
|-
| [[Xojo]]
| терминатор — новая строка
|-
|-class="sortbottom"
! Язык
! Разделитель-терминатор операторов
! Дополнительный разделитель<ref name="ss1"/>
|}
 
=== Продолжение строки ===
Операция продолжения строки обычно происходит на стадии [[Лексический анализ|лексического анализа]]: как правило символ новой строки не добавляет [[Токен (лексический анализ)|токен]] в соотв. список, если было обнаружено продолжение строки.
 
;[[Пробел|Символы пустого пространства]] — языки не требующие продолжения строки
* [[Ада (язык программирования)|Ада]] — Строка обрывается точкой с запятой
* [[C Sharp|C#]] — Строка обрывается точкой с запятой
* [[JavaScript]] — Строка обрывается точкой с запятой (возможен неявный обрыв)
* [[Lua]]
* [[OCaml]]
 
;[[Амперсанд]] как последний символ строки
* [[Фортран#Fortran 90 (1991)|Фортран 90]], [[Фортран#Fortran 95 (1997)|Фортран 95]], [[Фортран#Fortran 2003 (2004)|Фортран 2003]], [[Фортран#Fortran 2008 (2010)|Фортран 2008]]
 
;[[Обратная косая черта]] как последний символ строки
* [[Bash]]<ref>''[https://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual],'' [https://www.gnu.org/software/bash/manual/bashref.html#Escape-Character 3.1.2.1 Escape Character]</ref> и др. оболочки Unix
* Препроцессор [[Си (язык программирования)|Си]] и [[C++|Си++]]
* [[Mathematica]] and [[Wolfram (язык программирования)|Wolfram Language]]
* [[Python]]<ref>[https://docs.python.org/ Python Documentation], [https://docs.python.org/3/reference/lexical_analysis.html 2. Lexical analysis]: [https://docs.python.org/3/reference/lexical_analysis.html#explicit-line-joining 2.1.5. Explicit line joining]</ref>
* [[Ruby]]
* [[JavaScript]] — в текстовых константах, обрамлённых одной или двумя кавычками
 
;[[Гравис]] как последний символ строки
* [[PowerShell]]
 
;[[Дефис]] как последний символ строки
* [[SQL*Plus]]
 
;[[Подчёркивание]] как последний символ строки
* [[AutoIt]]
* [[Cobra (язык программирования)|Cobra]]
* [[Visual Basic]]
* [[Xojo]]
 
;[[Многоточие]] (три точки, а не отдельный спец. символ)
* [[MATLAB]]: Многоточие не должно являться последним символом строки, однако все последующие символы игнорируются.<ref>[http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_env/f0-5789.html Mathworks.com] {{webarchive|url=https://web.archive.org/web/20100207151905/http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_env/f0-5789.html |date=7 February 2010 }}</ref> (По сути оно начинает комментарий, который продолжается и на следующей строке, в отличие от однострочного комментария, который продолжается лишь до окончания строки.)
 
;[[Запятая]] как последний символ строки
* Ruby (за запятой может быть комментарий)
 
 
;[[Скобки|Левая скобка]] как последний символ строки
* [[Пакетный файл|Bat-файл]]: начало блока, обрамленного скобками разрешает продолжение строки<ref>https://ss64.com/nt/syntax-brackets.html</ref>
* [[Ruby]]: [[Скобки|Левая скобка — круглая, квадратная либо фигурная]]
 
;[[Операция (программирование)|Оператор]] в качестве последнего объекта строки
* [[Ruby]] (за оператором может быть комментарий)
 
;[[Операция (программирование)|Оператор]] в начале продолжающейся строки
* [[AutoHotkey]]: Любой оператор выражений за исключением ++ и --, а также точка или запятая<ref>https://autohotkey.com/docs/Scripts.htm#continuation</ref>
 
;[[Обратная косая черта]] в начале продолжающейся строки
* [[Vim]]script
 
;Какая-либо форма [[#Однострочные комментарии|однострочных комментариев]] как продолжение строки
* [[TASM|Turbo Assembler]]: <code>\</code>
* [[Макропроцессор m4|m4]]: <code>dnl</code>
* [[TeX]]: <code>%</code>
 
;Позиция символа
* [[Фортран#FORTRAN 77 (1980)|Фортран 77]]: Строка не являющаяся комментарием будет продолжением предыдущей строки не комментария в случае если на позиции 6 находится не пробел. Строки являющиеся комментариями не могут быть продолжены.
* [[Кобол]]: Текстовые константы могут быть продолжены, если не закончить их в предложении PICTURE символом <code>'</code>, а затем вставить символ <code>-</code> в 7 м столбце (на той же позиции, на которой использовался символ <code>*</code> для комментария)
* [[:en:TUTOR (programming language)|TUTOR]]: Строки, начинающиеся символом табуляции (после требуемого контекстом отступа) продолжают предыдущую команду.
 
;Использование кавычек
* Препроцессор [[Си (язык программирования)|Си]] и [[C++|Си++]]: Использование кавычки в начале строки продолжает предыдущую строку после обычного окончания.
 
== Библиотеки ==
'''Импорт''' [[Библиотека (программирование)|библиотеки]] — это способ добавить внешние (возможно откомпилированные) процедуры, программы или пакеты. Импорты классифицируют по уровню (модуль, пакет, класс, процедура,…) и по синтаксису (директивы, атрибуты,…)
 
;Импорт файлов
* [[Active Server Pages|ASP]]: <code>#include file="''filename''"</code>
* [[AutoHotkey]], [[AutoIt]], [[Си (язык программирования)|Си]], [[C++|Си++]]: <code>#include "''filename''"</code>, <code>#include <''filename''></code>
* [[Кобол]]: <code>COPY filename.</code>
* [[:en:Falcon (programming language)|Falcon]]: <code>load "''filename''"</code>
* [[Фортран]]: <code>include 'filename'</code>
* [[Lua]]: <code>require("''filename''")</code>
* [[Mathematica]] и [[Wolfram (язык программирования)|Wolfram]]: <code>Import["filename"]</code>
* [[MATLAB]]: <code>addpath(''directory'')</code><ref>Чтобы М-файл (код MATLAB) был доступен по имени, он должен находится в текущем каталоге либо, либо каталоге из пути поиска.</ref>
* [[Objective-C]]: <code>#import "''filename''"</code>, <code>#import <''filename''></code>
* [[Perl]]: <code>require "''filename''";</code>
* [[PHP]]: <code>include "''filename''";</code>, <code>require "''filename''";</code>
* [[:en:Pick Basic|Pick Basic]]: <code>include [filename] program</code>, <code>#include [filename] program</code>
* [[R (язык программирования)|R]]: <code>source(""filename"")</code>
* [[Rust (язык программирования)|Rust]]: <code>include!( "''filename''");</code>
 
;Импорт пакетов
* [[Ада (язык программирования)|Ада]]: <code>with ''package''</code>
* [[Си (язык программирования)|Си]], [[C++|Си++]]: <code>#include ''filename''</code>
* [[Cobra (язык программирования)|Cobra]]: <code>use Package.Name</code>
* [[D (язык программирования)|D]]: <code>import ''package.module'';</code>, <code>import ''altname'' = ''package.module'';</code>
* [[:en:Falcon (programming language)|Falcon]]: <code>load ''module''</code>, <code>load ''module.submodule''</code>
* [[Фортран#Fortran 90 (1991)|Фортран 90]]+: <code>use ''module''</code>, <code>use ''module'', only : ''identifier''</code>
* [[Go]]: <code>import altname "''package/name''"</code>
* [[Haskell]]: <code>import ''Module''</code>, <code>import qualified ''Module'' as ''M''</code>
* [[Java]], [[MATLAB]], [[Kotlin]]: <code>import ''package''.*</code>
* [[JavaScript]]: <code>import ''altname'' from "''modname''";</code>, <code>import "''modname''";</code>
* [[Lua]]: <code>require("''modname''")</code>
* [[Mathematica]] и [[Wolfram (язык программирования)|Wolfram]]: <code><<''name''</code>
* [[Оберон (язык программирования)|Оберон]] (Oberon): <code>IMPORT ''module''</code>
* [[Objective-C]]: <code>@import ''module'';</code>
* [[Паскаль (язык программирования)|Паскаль]]: <code>uses ''unit''</code>
* [[Perl]]: <code>use Module;</code>, <code>use Module qw(''import options'');</code>
* [[Python]]: <code>import ''module''</code>, <code>from ''module'' import *</code>
* [[Rust (язык программирования)|Rust]]: <code>mod ''modname'';</code>, <code>#[path = "''filename''"] mod ''altname'';</code>, <code>extern crate ''libname'';</code>, <code>extern crate ''libname'' as ''altname'';</code>
* [[R (язык программирования)|R]]: <code>library("package")</code>
* [[Scala (язык программирования)|Scala]]: <code>import ''package''._</code>, <code>import ''package''</code>
* [[Swift (язык программирования)|Swift]]: <code>import ''module''</code>
 
;Импорт классов
* [[:en:Falcon (programming language)|Falcon]]: <code>import ''class''</code>
* [[Java]], [[MATLAB]], [[Kotlin]]: <code>import ''package''.''class''</code>
* [[JavaScript]]: <code>import ''class'' from "modname";</code>, <code>import {''class''} from "''modname''";</code>, <code>import {''class'' as ''altname''} from "''modname''";</code>
* [[PHP]]: <code>use ''Namespace\ClassName'';</code>, <code>use ''Namespace\ClassName as AliasName'';</code>
* [[Python]]: <code>from ''module'' import ''class''</code>
* [[Scala (язык программирования)|Scala]]: <code>import ''package''.''class''</code>, <code>import ''package''.{ ''class1'' => ''alternativeName'', ''class2'' }</code>, <code>import ''package''._</code>
 
;Импорт процедур/функций
* [[D (язык программирования)|D]]: <code>import ''package.module'' : ''symbol'';</code>, <code>import ''package.module'' : ''altsymbolname'' = ''symbol'';</code>
* [[Haskell]]: <code>import ''Module'' (''function'')</code>
* [[JavaScript]]: <code>import ''function'' from "modname";</code>, <code>import {''function''} from "''modname''";</code>, <code>import {''function'' as ''altname''} from "''modname''";</code>
* [[MATLAB]]: <code>import ''package''.''function''</code>
* [[Perl]]: <code>use Module ('symbol');</code>
* [[PHP]]: <code>use function ''Namespace\function_name'';</code>, <code>use ''Namespace\function_name as function_alias_name'';</code>
* [[Python]]: <code>from ''module'' import ''function''</code>
* [[Rust (язык программирования)|Rust]]: <code>use ''module''::''submodule''::''symbol'';</code>, <code>use ''module''::''submodule''::{''symbol1'', ''symbol2''};</code>, <code>use ''module''::''submodule''::''symbol'' as ''altname'';</code>
* [[Scala (язык программирования)|Scala]]: <code>import ''package''.''class''.''function''</code>, <code>import ''package''.''class''.{ ''function'' => ''alternativeName'', ''otherFunction'' }</code>
 
;Импорт констант
* [[PHP]]: <code>use const ''Namespace\CONST_NAME'';</code>
 
Вышеуказанные операторы также могут быть разделены на 2 группы — являются ли они синтаксическим удобством (просто добавляют элементам краткое название, при этом элементы всё равно доступны по своему полному названию), либо нужны для доступа к коду (без этого оператора доступ к элементам невозможен даже при наличии полного имени).
 
;Синтаксическое удобство
* [[Java]]: <code>import ''package''.*</code>, <code>import ''package''.''class''</code>
* [[OCaml]]: <code>open ''module''</code>
 
;Необходимы для доступа к коду
* [[Go]]: <code>import altname "''package/name''"</code>
* [[JavaScript]]: <code>import ''altname'' from "''modname''";</code>
* [[Python]]: <code>import ''module''</code>
 
== Блоки ==
'''Блок''' представляет собой способ группировки двух или более отдельных операторов, выражений или иных элементов кода, которые должны представлять собой целое..
 
;Скобки (фигурные скобки) <code>{</code> … <code>}</code>:
* [[Си (язык программирования)|Си]], [[C++|Си++]], [[Objective-C]], [[Go]], [[Java]], [[JavaScript]]/[[ECMAScript]], [[C Sharp|C#]], [[D (язык программирования)|D]], [[Perl]], [[PHP]] (циклы <code>for</code> и <code>loop</code> , передача блоков как аргументов), [[Rust (язык программирования)|Rust]], [[Scala (язык программирования)|Scala]], [[S-Lang]], [[Swift (язык программирования)|Swift]], [[PowerShell|Windows PowerShell]], [[Haskell]] (в do-нотации), [[AutoHotkey]]
см. также [[:en:Curly bracket programming language|Curly bracket programming language]]
 
;Круглые скобки <code>(</code> … <code>)</code>
* [[OCaml]], [[Standard ML]]
;Квадратные скобки <code>[</code> … <code>]</code>
* [[Smalltalk]] (блоки — объекты первого класса, т. н. замыкания)
;<code>begin</code> … <code>end</code>:
* [[Ада (язык программирования)|Ада]], [[Алгол]], [[Паскаль (язык программирования)|Паскаль]], [[Ruby]] (циклы <code>for</code>, <code>do/while</code> и <code>do/until</code>), [[OCaml]], [[Simula]], [[Erlang]].
;<code>do</code> … <code>end</code>:
* [[ПЛ/1]] (PL/I), [[REXX]]
;<code>do</code> … <code>done</code>:
* [[Bash]] (циклы <code>for</code> и <code>while</code>), [[Visual Basic]], [[Фортран]], [[:en:TUTOR (programming language)|TUTOR]] (тело блока обязано быть с отступом), [[Visual Prolog]]
;<code>do</code> … <code>end</code>
* [[Lua]], [[Ruby]] (блоки передаются как аргументы, цикл <code>for</code>), [[Seed7]] (тело цикла заключено между '''<code>do</code>''' и '''<code>end</code>''')
;X … <code>end</code>''' (напр. <code>if</code> … <code>end</code>):'''
* [[Ruby]] (операторы <code>if</code>, <code>while</code>, <code>until</code>, <code>def</code>, <code>class</code>, <code>module</code>), [[OCaml]] (циклы <code>for</code> и <code>while</code>), [[MATLAB]] (операторы <code>if</code> и <code>switch</code>, циклы <code>for</code> и <code>while</code>, предложение <code>try</code> , блоки <code>package</code>, <code>classdef</code>, <code>properties</code>, <code>methods</code>, <code>events</code> и <code>function</code>), [[Lua]] (<code>then</code> / <code>else</code> и <code>function</code>)
;(<code>begin</code> …):
* [[Scheme]]
;(progn …):
* [[Лисп]]
;(<code>do</code> …):
* [[Clojure]]
 
;Отступы
* Значимые (см. [[:en:Off-side rule#Off-side rule languages|Off-side rule languages]]): [[Cobra (язык программирования)|Cobra]], [[CoffeeScript]], [[F Sharp|F#]], [[Haskell]] (в do-нотации без скобок), [[Occam]], [[Python]]
* Не имеют значения (см. [[:en:Free-form language|Free-form languages]]): потомки [[Алгол]]а (включая [[Си (язык программирования)|Си]], [[Паскаль (язык программирования)|Паскаль]] и [[Perl]]); языки семейства [[Лисп]]
 
;Другое
* [[Ада (язык программирования)|Ада]], [[Visual Basic]], [[Seed7]]: <code>if</code> … <code>end if</code>
* [[Bash]], [[Bourne shell|sh]], and [[Korn shell|ksh]]: <code>if</code> … <code>fi</code>, <code>do</code> … <code>done</code>, <code>case</code> … <code>esac</code>;
* [[Алгол 68]]: <code>begin</code> … <code>end</code>, <code>(</code> … <code>)</code>, <code>if</code> … <code>fi</code>, <code>do</code> … <code>od</code>
* [[Lua]], [[Паскаль (язык программирования)]], [[Модула-2]], [[Seed7]]: <code>repeat</code> … <code>until</code>
* [[Кобол]]: <code>IF</code> … <code>END-IF</code>, <code>PERFORM</code> … <code>END-PERFORM</code> и т. д. для операторов; … <code>.</code> для предложений.
* [[Visual Basic .NET]]: <code>If</code> … <code>End If</code>, <code>For</code> … <code>Next</code>, <code>Do</code> … <code>Loop</code>
* [[Microsoft Small Basic|Small Basic]]: <code>If</code> … <code>EndIf</code>, <code>For</code> … <code>EndFor</code>, <code>While</code> … <code>EndWhile</code>
 
== Комментарии ==
[[Комментарии (программирование)|Комментарии]] подразделяются по:
* стилю (однострочные/многострочные)
* правилам разбора/[[Трансляция|трансляции]] (ингорируются/интерполируются/сохраняются в памяти)
* рекурсивности (вкладываемые/не-вкладываемые)
* использованию (для документации (см. [[:en:docstring|docstrings]])/отбрасываемые/другие)
 
=== Однострочные комментарии ===
Как правило эти комментарии простираются до [[Перевод строки|символа перевода строки]], и используют оговоренную последовательность [[Токен (лексический анализ)|токенов]] для индикации начала комментария.
 
Примеры:
 
{| class="wikitable"
|-
! Символ
! Языки
|-
|<code>C</code>
|[[Фортран]] от I до Фортрана (C в первом столбце)
|-
|<code>REM</code>
|[[Бейсик]], [[Пакетный файл|Bat-файлы]]
|-
|<code>::</code>
|[[Пакетный файл|Bat-файлы]], [[COMMAND.COM]], [[Cmd.exe]]
|-
|-
|<code>NB.</code>
|[[J (язык программирования)|J]]; от аббревиатуры [[Nota bene]] (с [[Латинский язык|лат]]. — «заметь хорошо»).
|-
|-
|<code>⍝</code>
|[[APL (язык программирования)|APL]]; используется функциональный глиф (up shoe jot — U+235D) напоминающий лампу («освещающий» комментируемое).
|-
|<code>#</code>
|[[Bourne shell|sh]] и другие [[Командная оболочка Unix|оболочки UNIX]], [[Cobra (язык программирования)|Cobra]], [[Perl]], [[Python]], [[Ruby]], [[Seed7]], [[Windows PowerShell]], [[PHP]], [[R (язык программирования)|R]], [[make]], [[Maple]], [[Elixir (язык программирования)|Elixir]], [[Nim]]<ref>https://nim-lang.org/docs/manual.html#lexical-analysis-comments</ref>
|-
|<code>%</code>
|[[TeX]], [[Пролог (язык программирования)|Пролог]], [[MATLAB]],<ref name=Mathworks.com>{{cite web|title=Mathworks.com|url=http://www.mathworks.de/de/help/matlab/matlab_prog/comments.html|accessdate=25 июня 2013}}</ref> [[Erlang]], [[S-Lang]], [[Visual Prolog]]
|-
|<code>//</code>
|[[ActionScript]], [[Си (язык программирования)|Си)|C (C99)]], [[C++|Си++]], [[C Sharp|C#]], [[D (язык программирования)|D]], [[F Sharp|F#]], [[Go]], [[Java]], [[JavaScript]], [[Kotlin]], [[Object Pascal]] (Delphi), [[Objective-C]], [[PHP]], [[Rust (язык программирования)|Rust]], [[Scala (язык программирования)|Scala]], [[Sass]], [[Swift (язык программирования)|Swift]], [[Xojo]]
|-
|<code>'</code>
|[[Monkey (язык программирования)|Monkey]], [[Visual Basic]], [[VBScript]] [[Microsoft Small Basic|Small Basic]], [[Gambas]], [[Xojo]]
|-
|<code>!</code>
|[[Фортран]], Basic Plus, Inform, [[:en:Pick Basic|Pick Basic]]
|-
|<code>;</code>
|[[Язык ассемблера|Assembly x86]], [[AutoHotkey]], [[AutoIt]], [[Лисп]], [[Common Lisp]], [[Clojure]], [[REBOL]], [[Scheme]],
|-
|<code><nowiki>--</nowiki></code>
|[[Euphoria (язык программирования)|Euphoria]], [[Haskell]], [[SQL]], [[Ада (язык программирования)|Ада]], [[AppleScript]], [[Eiffel]], [[Lua]], [[VHDL]], [[SGML]]
|-
|<code>*</code>
|[[IBM System/360|Assembler S/360]] (* в первом столбце), [[Кобол]] от I до Коболa 85, [[:en:Physics Analysis Workstation|PAW]], Фортран от IV до Фортрана 77 (* в первом столбце), [[:en:Pick Basic|Pick Basic]]
|-
|<code><nowiki>||</nowiki></code>
|[[Curl (язык программирования)|Curl]]
|-
|<code><nowiki>"</nowiki></code>
|[[Vim]]script, [[ABAP/4|ABAP]]
|-
|<code><nowiki>\</nowiki></code>
|[[Форт (язык программирования)|Форт]]
|-
|<code>*></code>
|Кобол 90
|}
 
=== Многострочные комментарии ===
Как правило многострочные комментарии используют оговоренные последовательности символов для маркировки начала и конца комментария. В этом контексте символы [[Пробел|пустого места]] или [[Перевод строки|перевода строки]] игнорируются.
 
Примеры:
 
{| class="wikitable"
|-
! Символ
! Языки
|-
| <code>comment</code> ~ <code>;</code>
| [[Алгол]] 60, [[Симула]]
|-
| <code>¢</code> ~ <code>¢</code>,<br><code>#</code> ~ <code>#</code>, <code>co</code> ~ <code>co</code>,<br><code>comment</code> ~ <code>comment</code>
| [[Алгол 68]]<ref name=algolcomments>{{cite web|title=Algol68_revised_report-AB.pdf стр. 61-62, в оригинале стр. 121-122|url=http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf|accessdate=27 мая 2014}}</ref><ref name=algolcomments2>{{cite web|title=HTML Пересмотренный доклад о языке Algol68|url=http://jmvdveer.home.xs4all.nl/report.html#941h|accessdate=27 мая 2014|deadurl=yes|archiveurl=https://web.archive.org/web/20130317015548/http://jmvdveer.home.xs4all.nl/report.html#941h|archivedate=17 марта 2013|df=dmy-all}}</ref>
|-
| <code>/*</code> ~ <code>*/</code>
| [[ActionScript]], [[AutoHotkey]], [[Си (язык программирования)|Си]], [[C++|Си++]], [[C Sharp|C#]], [[D (язык программирования)|D]]<ref name=dcomments>{{cite web|title=DLang.org, Lexical|url=http://dlang.org/lex.html#comment|accessdate=27 мая 2014}}</ref> [[Go]], [[Java]], [[JavaScript]], [[Kotlin]], [[Objective-C]], [[PHP]], [[ПЛ/1]], [[Rexx]], [[Rust (язык программирования)|Rust]] (могут быть вложенными), [[Scala (язык программирования)|Scala]] (могут быть вложенными), [[:en:SAS language|SAS]], [[SASS]], [[SQL]], [[Swift (язык программирования)|Swift]], [[Visual Prolog]], [[CSS]]
|-
| <code>#cs</code> ~ <code>#ce</code>
| [[AutoIt]]<ref name=autoitscriptcomments>{{cite web|title=AutoItScript.com Keyword Reference, #comments-start|url=https://www.autoitscript.com/autoit3/docs/keywords/comments-start.htm|accessdate=27 мая 2014}}</ref>
|-
| <code>/+</code> ~ <code>+/</code>
| [[D (язык программирования)|D]] (могут быть вложенными)<ref name=dcomments/>
|-
| <code>/#</code> ~ <code>#/</code>
| [[Cobra (язык программирования)|Cobra]] (могут быть вложенными)
|-
| <code>&lt;#</code> ~ <code>#&gt;</code>
| [[Powershell]]
|-
| <code>=begin</code> ~ <code>=cut</code>
| [[Perl]]
|-
| <code>#`(</code> ~ <code>)</code>
| [[Perl6]] (можно использовать любые скобки — (), <>, {}, [], зеркальные пары символов [[Юникод]]а, а также символы [[Юникод]]а со свойствами [[:en:Unicode character property#General Category|Ps/Pe/Pi/Pf]])
|-
| <code>=begin</code> ~ <code>=end</code>
| [[Ruby]]
|-
| <code>#<[[Тег (метаданные)|TAG]]></code> ~ <code>#</[[Тег (метаданные)|TAG]]></code>, <code>#stop</code> ~ <code>[[EOF]]</code>,<br><code>#iffalse</code> ~ <code>#endif</code>, <code>#ifntrue</code> ~ <code>#endif</code>,<br> <code>#if false</code> ~ <code>#endif</code>, <code>#if !true</code> ~ <code>#endif</code>
| [[S-Lang]]<ref>{{cite web|title=slang-2.2.4/src/slprepr.c - line 43 to 113|url=ftp://space.mit.edu/pub/davis/slang/v2.2/slang-2.2.4.tar.bz2|accessdate=28 мая 2014}}</ref>
|-
| <code>{-</code> ~ <code>-}</code>
| [[Haskell]] (могут быть вложенными)
|-
| <code>(*</code> ~ <code>*)</code>
| [[ML]], [[Mathematica]], [[Object Pascal]] (Delphi), [[Паскаль (язык программирования)|Паскаль]], [[Seed7]], [[Applescript]], [[OCaml]] (могут быть вложенными), [[Standard ML]] (могут быть вложенными), [[Maple]], [[:en:Newspeak (programming language)|Newspeak]], [[F Sharp|F#]]
|-
| <code>{</code> ~ <code>}</code>
| [[Object Pascal]] (Delphi), [[Паскаль (язык программирования)|Паскаль]]
|-
| <code><nowiki>|#</nowiki></code> ~ <code><nowiki>#|</nowiki></code>
| [[Curl (язык программирования)|Curl]]
|-
| <code>%{</code> ~ <code>%}</code>
| [[MATLAB]]<ref name="Mathworks.com"/> (символы должны быть в отдельной строке)
|-
| <code><nowiki>#|</nowiki></code> ~ <code><nowiki>|#</nowiki></code>
| [[Лисп]], [[Scheme]], [[Racket (язык программирования)|Racket]] (во всех трёх могут быть вложенными).
|-
| <code>--[[</code> ~ <code>]]</code>,<br><code>--[=[</code> ~ <code>]=]</code>
| [[Lua]] (первая форма может включаться во вторую)
|-
| <code>"</code> ~ <code>"</code>
| [[Smalltalk]]
|-
| <code>(comment</code> ~ <code>)</code>
|[[Clojure]]
|}
 
=== Уникальные варианты ===
 
==== Фортран ====
* Решающее значение в [[Фортран]]e 66/77 имеют отступы. Основной оператор находится в столбцах с 7 по 72. Любой не пробел в столбце 6 указывает на то, что строка является продолжением предыдущей строки. Символ '<code>C</code>' в первом столбце указывает на то, что строка является комментарием . Столбцы с 1-го по 5-й могут содержать число, являющееся меткой. Столбцы с 73-го по 80-й игнорируются и могут быть комментарием; ранее в этих местах наносился номер [[Перфокарта|перфокарты]], что позволяло отсортировать их в случае падения колоды. В Фортране 90 правило отступов было упразднено и были добавлены однострочные комментарии с использованием символа <code>!</code>.
 
==== Кобол ====
* Отступы значимы в формате фиксированного кода. Содержание столбцов с 1-го по 6-й и после 73-го игнорируется. Если в 7-м столбце содержался символ <code>*</code> или <code>/</code> строка являлась комментарием. До версии [[Кобол]] 2002 если строка содержала в 7-м столбце символ <code>D</code> или <code>d</code> — это обозначало отладочную строку, которая могла игнорироваться в зависимости от режима компилирования.
 
==== Cobra ====
* [[Cobra (язык программирования)|Cobra]] поддерживает многострочные комментарии «<code>/#</code> … <code>#/</code>» похожие на встречающиеся в Си-подобных языках «<code>/*</code> … <code>*/</code>», однако с некоторыми отличиями. Символ <code>#</code> используется в однострочной форме комментариев «<code>#</code> …» и многострочные комментарии могут быть вложенными, что удобно при комментировании больших кусков кода.
 
==== Curl ====
* [[Curl (язык программирования)|Curl]] поддерживает многострочные комментарии при помощи пользовательских тегов <code>|foo# ... #foo|</code>.
 
==== Lua ====
* Как и в текстовых константах, в многострочном комментарии может использоваться произвольное число символов <code>=</code>, при условии, что такое же их число используется и в закрывающей последовательности; это позволяет реализовать множественное вложение комментариев и текстовых констант если все они используют различное количество знаков <code>=</code> в обрамляющих тегах: <code>--[[comment --[=[ nested comment ]=] ]]</code>. [[Lua]] игнорирует первый перенос строки, который следует сразу за открывающим тегом.
 
==== Perl 5 ====
* Многострочные комментарии в Perl 5 считаются частью документации и именуются «[[Простая старая документация]]» (англ. Plain Old Documentation — POD). Технически в Perl 5 нет соглашения о многострочных комментариях, но POD повсеместно используются в этом качестве.
 
==== Perl 6 ====
* В [[Perl 6]] для многострочных комментариев используется конструкция <code>#`(...)</code>.<ref>{{cite web|url=https://docs.perl6.org/language/syntax#Comments |title=Документация Perl 6 (синтаксис) |at=Comments |publisher=docs.perl6.org |date= |accessdate=2017-04-05}}</ref> Фактически Perl 6 позволяет использовать любые пары скобок после <code>#`</code> (напр. <code>#`(...)</code>, <code>#`[...]</code>, <code>#`{...}</code>, <code>#`<...></code>, и даже более сложные <code>#`&#123;{...}&#125;</code> являются полноценными комментариями). Скобки также можно вкладывать внутри комментариев (напр. в конструкции <code>#`{ a { b } c }</code> комментарий продолжается до последней закрывающей скобки).
 
==== PHP ====
{{Основная статья|PHP#Синтаксис}}
 
* [[PHP]] поддеживает стандартные комментарии в стиле C/C++ а также комментарии в стиле Perl.
 
==== Python ====
* Иногда для комментирования строк кода используются три двойных кавычки <code>"""</code>. На самом деле они создают не комментарий, а пустой оператор с текстовой константой, который [[Python]] игнорирует (за исключением случая, когда текстовая константа — первый оператор в теле модуля, класса или функции; см [[:en:docstring|docstring]])
 
==== Ruby ====
* Также как Python и Perl, Ruby не имеет определённого синтаксиса многострочных комментариев. Однако в качестве комментариев, как и в Perl, могут использоваться блоки документации, поскольку интерпретатор игнорирует их.
 
==== S-Lang ====
* Интерпретатор игнорирует регион кода обрамленный <code><nowiki>#&lt;tag&gt;</nowiki></code> и <code><nowiki>#&lt;/tag&gt;</nowiki></code>. Имя тега может быть любой алфавитно-цифровой последовательностью символов и указывать на способ обработки кода. Например, <code><nowiki>#&lt;latex&gt;</nowiki></code> может указывать на документацию в формате LaTeX.
 
==== Scheme and Racket ====
* Следующий полный синтаксический элемент (s-выражение) может быть откомментирован при помощи <code>#;</code> .
 
==== ABAP ====
* [[ABAP/4|ABAP]] поддерживает два типа комментариев. Если первый символ строки (вкл. отступ) является звёздочкой (<code>*</code>) вся строка считается комментарием, а кавычками (<code>"</code>) начинается комментарий до конца строки. Комментарии в ABAP невозможны между операторами <code>EXEC SQL</code> и <code>ENDEXEC</code> поскольку в SQL имеется другое применение этим символам. В большинстве диалектов SQL вместо этого используется двойной дефис (<code>--</code>).
 
==== Эзотерические языки программирования ====
* Большинство [[Эзотерический язык программирования|эзотерических языков программирования]] следует соглашению о том, что любой не [[Счётчик команд|исполняющийся]] (напр. [[Befunge]]) или не имеющий значения (напр. [[Brainfuck]]) кусок кода считается комментарием.
 
=== Сравнение комментариев ===
Существует большое разнообразие способов объявления комментариев в исходном коде.
<code>''BlockComment''</code> курсивом указывает многострочное тело комментария.
<code>''InlineComment''</code> курсивом указывает однострочное тело комментария.
<!--ПОМЕТКА: 20061101 ;; dreftymac
Указание на «многострочный» или «однострочный» комментарий могут быть некорректными, если Вы увидите ошибку в описании для известного Вам языка, пожалуйста замените здесь и в англ. версии страницы.
-->
 
{| class="wikitable"
|-
!width=30%| Язык
!width=30%| Однострочный комментарий
!width=40%| Многострочный комментарий
|-
|[[Ада (язык программирования)|Ада]], [[Eiffel]], [[Euphoria (язык программирования)|Euphoria]], [[Occam]], [[:en:SPARK (programming language)|SPARK]], ANSI [[SQL]], и [[VHDL]]
|<code>-- ''InlineComment''</code>
|
|-
|[[Алгол]] 60 (ALGOL 60)
|
|<code>comment ''BlockComment'';</code>
|-
|[[Алгол 68]] (ALGOL 68)
|
|<code>¢ ''BlockComment'' ¢</code><br>
<code><u>comment</u> ''BlockComment'' <u>comment</u></code><br>
<code><u>co</u> ''BlockComment'' <u>co</u></code><br>
<code># ''BlockComment'' #</code><br>
<code>£ ''BlockComment'' £</code><br>
|-
|[[APL (язык программирования)|APL]]
|<code>⍝ ''InlineComment''</code>
|
|-
|[[AppleScript]]
|<code>-- ''InlineComment''</code>
|<code>(* ''BlockComment'' *)</code>
|-
|[[Язык ассемблера]] (разн.)
|<code>; ''InlineComment''</code> только один пример (в большинстве ассемблеров есть только комментарии-строки)
|
|-
|[[AutoHotkey]]
|<code>; ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code>
|-
|[[AWK]], [[Bash]], [[Bourne shell]], [[csh|C shell]], [[Maple]], [[R (язык программирования)|R]], [[Tcl]], и [[Windows PowerShell]]
|<code># ''InlineComment''</code>
|<code><# ''BlockComment'' #></code>
|-
|[[Бейсик]] (BASIC) разл. диалекты:
|<code>&#39;''InlineComment''</code> (not all dialects)<!-- заметьте, что символ &#39; не разрушает синтаксический разбор --><br>
<code>REM ''InlineComment''</code>
|
|-
|[[Си (язык программирования)|Си]] (K&R, ANSI/C89/C90), [[CHILL]], [[ПЛ/1]] (PL/I) и [[REXX]]
|
|<code>/* ''BlockComment'' */</code>
|-
|[[C99|C (C99)]], [[C++]], [[Go]] и [[JavaScript]]
|<code>// ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code>
|-
|[[C Sharp|C#]]
|<code>// ''InlineComment''</code><br><code>/// ''InlineComment''</code> (XML комментарий-документация)
|<code>/* ''BlockComment'' */</code><br><code>/** ''BlockComment'' */</code> (XML комментарий-документация)
|-
|[[Кобол]] (COBOL) от I до Кобол 85
|<code> * ''InlineComment''</code> (* в столбце 7)
|
|-
|Кобол 2002
|<code>*> ''InlineComment''</code>
|
|-
|[[Curl (язык программирования)|Curl]]
|<code>&#124;&#124; ''InlineComment''</code>
|<code>&#124;# ''BlockComment'' #&#124;</code><br>
<code>&#124;foo# ''BlockComment'' #&#124;</code>
|-
|[[Cobra (язык программирования)|Cobra]]
|<code># ''InlineComment''</code>
|<code>/# ''BlockComment'' #/</code> (вкладываемые)
|-
|[[D (язык программирования)|D]]
|<code>// ''InlineComment''</code><br><code>/// Documentation ''InlineComment''</code> ([[:en:ddoc]] комментарии)
|<code>/* ''BlockComment'' */</code><br><code>/** Documentation ''BlockComment'' */</code> ([[:en:ddoc]] комментарии)<br>
<code>/+ ''BlockComment'' +/</code> (nestable)<br><code>/++ Documentation ''BlockComment'' +/</code> (вкладываемые, [[:en:ddoc]] комментарии)
|-
|[[DIGITAL Command Language|DCL]]
|<code>$! ''InlineComment''</code>
|
|-
|[[ECMAScript]] ([[JavaScript]], [[ActionScript]] и т. д.)
|<code>// ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code>
|-
|[[Форт (язык программирования)|Форт]] (Forth)
|<code>\ ''InlineComment''</code>
|<code>( ''BlockComment'' )</code> (одно и многострочные)<br>
<code>( ''before'' -- ''after'' )</code> стековые комментарии
|-
|[[Фортран]] от I Фортран77
|<code>C ''InlineComment''</code> (C в первом столбце)
|
|-
|[[Фортран#Fortran 90 (1991)|Фортран 90]]
|<code>! ''InlineComment''</code>
|
|-
|[[Haskell]]
|<code>-- ''InlineComment''</code>
|<code>{- ''BlockComment'' -}</code>
|-
|[[Java]]
|<code>// ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code><br>
<code>/** ''BlockComment'' */</code> ([[Javadoc]] комментарий-документация)
|-
|[[Лисп]] (Lisp) и [[Scheme]]
|<code>; ''InlineComment''</code>
|<code>#&#124; ''BlockComment'' &#124;#</code>
|-
|[[Lua]]
|<code>-- ''InlineComment''</code>
|<code><nowiki> --[==[ </nowiki>''BlockComment''<nowiki>]==]</nowiki></code> (варьируемое количество знаков =)
|-
|[[Maple]]
|<code># ''InlineComment''</code>
|<code>(* ''BlockComment'' *)</code>
|-
|[[Mathematica]]
|
|<code>(* ''BlockComment'' *)</code>
|-
|[[Matlab]]
|<code>% ''InlineComment''</code>
|<code>%{<br>''BlockComment (nestable)''<br>%}</code><br>Отметьте: оба символа процент-скобка должны быть единственными не пустыми символами (пробелами, табуляциями и др.) на своих строках.
|-
|[[Object Pascal|Object Pascal (Delphi)]]
|<code>// ''InlineComment''</code>
|<code>(* ''BlockComment'' *)</code><br><code>{ ''BlockComment'' }</code>
|-
|[[OCaml]]
|
|<code>(* ''BlockComment (* вкладываемые *)'' *)</code>
|-
|[[Паскаль (язык программирования)|Паскаль]] (Pascal), [[Модула-2]], [[Модула-3]] (Modula-2,3), [[Оберон (язык программирования)|Оберон]] (Oberon) и [[ML]]:
|
|<code>(* ''BlockComment'' *)</code>
|-
|[[Perl]] и [[Ruby]]
|<code># ''InlineComment'' </code>
|<code>=begin<br/>''BlockComment''<br/>=cut</code> (<code>=end</code> в Ruby) ([[Простая старая документация|POD]] комментарий-документация)<br>
<code><nowiki>__END__</nowiki><br>''Комментарии после окончания кода''</code>
|-
|[[Perl 6]]
|<code># ''InlineComment'' </code>
|<code>#`{<br/>''BlockComment''<br/>}</code><br>
<code>=comment<br/>''&nbsp;&nbsp;&nbsp;&nbsp;Комментарий продолжается до следующей POD директивы''<br/>''&nbsp;&nbsp;&nbsp;&nbsp; или первой пустой строки.''</code><ref>{{cite web |url=https://docs.perl6.org/language/pod#Pod_comments |title=Perl 6 POD Comments}}</ref><ref>{{cite web |url=https://docs.perl6.org/language/pod#Abbreviated_blocks |title=Perl 6 POD (Abbreviated Blocks)}}</ref>
|-
|[[PHP]]
|<code># ''InlineComment''</code><br><code>// ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code><br><code>/** документация ''BlockComment'' */</code> ([[PHPDoc|PHP комментарий-документация]])
|-
|[[:en:PILOT|PILOT]]
|<code>R:''InlineComment''</code>
|
|-
|[[PLZ/SYS]]
|
|<code>! ''BlockComment'' !</code>
|-
|[[PL/SQL]] and [[Transact-SQL|TSQL]]
|<code>-- ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code>
|-
|[[Python]]
|<code># ''InlineComment'' </code>
|<code><nowiki>'''</nowiki> ''BlockComment'' <nowiki>'''</nowiki><br>""" ''BlockComment'' """</code><br>
([[:en:Docstring|Комментарий-документация]] если это первая строка модуля, класса, метода или функции)
|-
|[[Rust (язык программирования)|Rust]]
|<code>// ''InlineComment''</code><br>
<code>/// ''InlineComment''</code> («Внешний» комментарий rustdoc)<br>
<code>//! ''InlineComment''</code> («Внутренний» комментарий rustdoc)
|<code>/* ''BlockComment'' */</code> (вкладываемый)<br>
<code>/** ''BlockComment'' */</code> («Внешний» комментарий rustdoc)<br>
<code>/*! ''BlockComment'' */</code> («Внутренний» комментарий rustdoc)
|-
|[[:en:SAS System|SAS]]
|
|<code>* ''BlockComment'';</code><br><code>/* ''BlockComment'' */</code>
|-
|[[Seed7]]
|<code># ''InlineComment''</code>
|<code>(* ''BlockComment'' *)</code>
|-
|[[Симула]] (Simula)
|
|<code>comment ''BlockComment'';</code><br><code>! ''BlockComment'';</code>
|-
|[[Smalltalk]]
|
|<code>"''BlockComment''"</code>
|-
|[[Smarty]]
|
|<code>{* ''BlockComment'' *}</code>
|-
|[[Standard ML]]
|
|<code>(* ''BlockComment'' *)</code>
|-
|[[TeX]], [[LaTeX]], [[PostScript]], [[Erlang]], [[Elixir (язык программирования)|Elixir]] and [[S-Lang]]
|<code>% ''InlineComment''</code>
|
|-
|[[Texinfo]]
|<code>@c ''InlineComment''</code>
<code>@comment ''InlineComment''</code>
|
|-
|[[:en:TUTOR (programming language)|TUTOR]]
|<code>* ''InlineComment''</code><br><code>''command'' $$ ''InlineComment''</code>
|
|-
|[[Visual Basic]]
|<code><nowiki>'</nowiki> ''InlineComment''</code><br><code>Rem ''InlineComment''</code>
|
|-
|[[Visual Basic .NET]]
|<code><nowiki>'</nowiki> ''InlineComment''</code><br>
<code><nowiki>'''</nowiki> ''InlineComment''</code> (XML комментарий-документация)<br>
<code>Rem ''InlineComment''</code>
|
|-
|[[Visual Prolog]]
|<code>% ''InlineComment''</code>
|<code>/* ''BlockComment'' */</code>
|-
|[[Wolfram (язык программирования)|Wolfram]]
|
|<code>(* ''BlockComment'' *)</code>
|-
|[[Xojo]]
|<code>' ''InlineComment''</code><br><code>// ''InlineComment''</code><br><code>rem ''InlineComment''</code>
|
|}
 
== См. также ==