Сравнение языков программирования (синтаксис)
В этой статье сравнивается более 50 языков программирования по основным свойствам синтаксиса.
| Сравнения языков программирования | |
|---|---|
| Общее сравнение | |
| Основной синтаксис | |
| Основные инструкции | |
| Массивы | |
| Ассоциативные массивы | |
| Операции со строками | |
| Строковые функции | |
| List comprehension | |
| Объектно-ориентированное программирование | |
| Объектно-ориентированные конструкторы | |
| Доступ к базам данных | |
| СУБД баз данных | |
| Оценка стратегии | |
| Список программ «hello world» | |
| Влияние ALGOL 58 на ALGOL 60 | |
| ALGOL 60: Сравнения с другими языками | |
| Сравнение ALGOL 68 и C++ | |
| ALGOL 68: Сравнения с другими языками | |
| Совместимость C и C++ | |
| Сравнение Pascal и Borland Delphi | |
| Сравнение Object Pascal и C | |
| Сравнение Pascal и C | |
| Сравнение Java и C++ | |
| Сравнение C# и Java | |
| Сравнение C# и Visual Basic .NET | |
Выражения
Выражения в языках программирования в широком смысле могут быть подразделены на 4 типа по синтаксической структуре:
- префиксная запись
- Лисп (* (+ 2 3) (expt 4 5))
- инфиксная запись
- Фортран (2 + 3) * (4 ** 5)
- суффиксная, постфиксная или Обратная польская запись
- Форт 2 3 + 4 5 ** *
- запись выражений в математическом стиле
- Wolfram (2 + 3)(4^5) (* отметим неявный оператор умножения *)
Операторы
Как правило в языках программирования имеются следующие соглашения по операторам:
- о разделителях операторов;
- о терминаторах операторов; и
- о продолжении строки
Разделитель операторов используется для демаркации границы между двумя отдельными операторами. Терминатор операторов используется для маркировки конца отдельного оператора. Языки, которые интерпретируют конец строки как конец оператора называются однострочными[1] языками программирования.
«Продолжение строки» — это соглашение для однострочных языков о ситуациях, когда символ окончания строки может быть неправильно интерпретирован как окончание оператора. В таких языках «продолжение строки» позволяет оператору охватывать более одной строки.
| Язык | Разделитель-терминатор операторов | Дополнительный разделитель[2] |
|---|---|---|
| ABAP | разделитель — точка '.' | |
| Ада (Ada) | терминатор — точка с запятой ';' | |
| Алгол (ALGOL) | разделитель — точка с запятой ';' | |
| Алгол 68 (ALGOL 68) | разделитель — точка с запятой ';' и запятая ','[3] | |
| APL | терминатор — новая строка | разделитель — ⋄ |
| AppleScript | терминатор — новая строка | |
| AutoHotkey | терминатор — новая строка | |
| Бейсик (BASIC) | терминатор — новая строка | разделитель — двоеточие ':' |
| Boo | терминатор — новая строка | |
| Си (C) | терминатор — точка с запятой ';' | разделитель выражений — запятая ',' |
| C++ | терминатор — точка с запятой ';' | разделитель выражений — запятая ',' |
| C# | терминатор — точка с запятой ';' | |
| Кобол (COBOL) | разделитель — пробел, иногда точка '.', имеется возможность разделять запятыми ',' и точками с запятыми ';'. | |
| Cobra | терминатор — новая строка | |
| CoffeeScript | терминатор — новая строка | |
| D | терминатор — точка с запятой ';' | |
| Eiffel | терминатор — новая строка | точка с запятой ';' |
| Erlang | разделитель — двоеточие ':', терминатор — точка '.' | |
| F# | терминатор — новая строка | точка с запятой ';' |
| Фортран (Fortran) | терминатор — новая строка | точка с запятой ';' |
| Форт (Forth) | терминатор определений слов — точка с запятой ';' | |
| GFA BASIC | терминатор — новая строка | |
| Go | разделитель — точка с запятой ';' (вставляется компилятором) | |
| Haskell (в do-нотации) | разделитель — новая строка | |
| Haskell (в do-нотации, при использовании скобок) | разделитель — точка с запятой ';' | |
| Java | терминатор — точка с запятой ';' | |
| JavaScript | разделитель — точка с запятой ';' (иногда неявно делится по новой строке) | |
| Kotlin | разделитель — точка с запятой ';' (иногда неявно делится по новой строке) | |
| Lua | разделитель — пробел (возможна точка с запятой ';') | |
| Mathematica | разделитель — точка с запятой ';' | |
| MATLAB | терминатор — новая строка | точка с запятой ';' или запятая ','[4] |
| Object Pascal (Delphi) | разделитель — точка с запятой ';' | |
| Objective-C | терминатор — точка с запятой ';' | |
| OCaml | разделитель — точка с запятой ';' | |
| Паскаль (Pascal) | разделитель — точка с запятой ';' | |
| Perl | разделитель — точка с запятой ';' | |
| Perl 6 | разделитель — точка с запятой ';' | |
| PHP | терминатор — точка с запятой ';' | |
| Pick Basic | терминатор — новая строка | разделитель — точка с запятой ';' |
| PowerShell | терминатор — новая строка | разделитель — точка с запятой ';' |
| Пролог (Prolog) | терминатор — точка '.' | |
| Python | терминатор — новая строка | точка с запятой ';' |
| Ruby | терминатор — новая строка | точка с запятой ';' |
| Rust | терминатор операторов — точка с запятой ';' | разделитель выражений — запятая ',' |
| Scala | терминатор — новая строка (возможна точка с запятой ';') | точка с запятой ';' |
| Seed7 | разделитель — точка с запятой ';' (возможность использовать как терминатор) | |
| Симула (Simula) | разделитель — точка с запятой ';' | |
| S-Lang | разделитель — точка с запятой ';' | |
| Smalltalk | разделитель — точка '.' | |
| Standard ML | разделитель — точка с запятой ';' | |
| Swift | разделитель — точка с запятой ';' (вставляется компилятором) | |
| Visual Basic | терминатор — новая строка | разделитель — двоеточие ':' |
| Visual Basic .NET | терминатор — новая строка | разделитель — двоеточие ':' |
| Wolfram | разделитель — точка с запятой ';' | |
| Xojo | терминатор — новая строка | |
| Язык | Разделитель-терминатор операторов | Дополнительный разделитель[2] |
Продолжение строки
Операция продолжения строки обычно происходит на стадии лексического анализа: как правило символ новой строки не добавляет токен в соотв. список, если было обнаружено продолжение строки.
- Символы пустого пространства — языки не требующие продолжения строки
- Ада — Строка обрывается точкой с запятой
- C# — Строка обрывается точкой с запятой
- JavaScript — Строка обрывается точкой с запятой (возможен неявный обрыв)
- Lua
- OCaml
- Амперсанд как последний символ строки
- Обратная косая черта как последний символ строки
- Bash[5] и др. оболочки Unix
- Препроцессор Си и Си++
- Mathematica and Wolfram Language
- Python[6]
- Ruby
- JavaScript — в текстовых константах, обрамлённых одной или двумя кавычками
- Гравис как последний символ строки
- Дефис как последний символ строки
- Подчёркивание как последний символ строки
- Многоточие (три точки, а не отдельный спец. символ)
- MATLAB: Многоточие не должно являться последним символом строки, однако все последующие символы игнорируются.[7] (По сути оно начинает комментарий, который продолжается и на следующей строке, в отличие от однострочного комментария, который продолжается лишь до окончания строки.)
- Запятая как последний символ строки
- Ruby (за запятой может быть комментарий)
- Левая скобка как последний символ строки
- Bat-файл: начало блока, обрамленного скобками разрешает продолжение строки[8]
- Ruby: Левая скобка — круглая, квадратная либо фигурная
- Оператор в качестве последнего объекта строки
- Ruby (за оператором может быть комментарий)
- Оператор в начале продолжающейся строки
- AutoHotkey: Любой оператор выражений за исключением ++ и --, а также точка или запятая[9]
- Обратная косая черта в начале продолжающейся строки
- Какая-либо форма однострочных комментариев как продолжение строки
- Turbo Assembler:
\ - m4:
dnl - TeX:
%
- Позиция символа
- Фортран 77: Строка не являющаяся комментарием будет продолжением предыдущей строки не комментария в случае если на позиции 6 находится не пробел. Строки являющиеся комментариями не могут быть продолжены.
- Кобол: Текстовые константы могут быть продолжены, если не закончить их в предложении PICTURE символом
', а затем вставить символ-в 7 м столбце (на той же позиции, на которой использовался символ*для комментария) - TUTOR: Строки, начинающиеся символом табуляции (после требуемого контекстом отступа) продолжают предыдущую команду.
- Использование кавычек
Библиотеки
Импорт библиотеки — это способ добавить внешние (возможно откомпилированные) процедуры, программы или пакеты. Импорты классифицируют по уровню (модуль, пакет, класс, процедура,…) и по синтаксису (директивы, атрибуты,…)
- Импорт файлов
- ASP:
#include file="filename" - AutoHotkey, AutoIt, Си, Си++:
#include "filename",#include <filename> - Кобол:
COPY filename. - Falcon:
load "filename" - Фортран:
include 'filename' - Lua:
require("filename") - Mathematica и Wolfram:
Import["filename"] - MATLAB:
addpath(directory)[10] - Objective-C:
#import "filename",#import <filename> - Perl:
require "filename"; - PHP:
include "filename";,require "filename"; - Pick Basic:
include [filename] program,#include [filename] program - R:
source(""filename"") - Rust:
include!( "filename");
- Импорт пакетов
- Ада:
with package - Си, Си++:
#include filename - Cobra:
use Package.Name - D:
import package.module;,import altname = package.module; - Falcon:
load module,load module.submodule - Фортран 90+:
use module,use module, only : identifier - Go:
import altname "package/name" - Haskell:
import Module,import qualified Module as M - Java, MATLAB, Kotlin:
import package.* - JavaScript:
import altname from "modname";,import "modname"; - Lua:
require("modname") - Mathematica и Wolfram:
<<name - Оберон (Oberon):
IMPORT module - Objective-C:
@import module; - Паскаль:
uses unit - Perl:
use Module;,use Module qw(import options); - Python:
import module,from module import * - Rust:
mod modname;,#[path = "filename"] mod altname;,extern crate libname;,extern crate libname as altname; - R:
library("package") - Scala:
import package._,import package - Swift:
import module
- Импорт классов
- Falcon:
import class - Java, MATLAB, Kotlin:
import package.class - JavaScript:
import class from "modname";,import {class} from "modname";,import {class as altname} from "modname"; - PHP:
use Namespace\ClassName;,use Namespace\ClassName as AliasName; - Python:
from module import class - Scala:
import package.class,import package.{ class1 => alternativeName, class2 },import package._
- Импорт процедур/функций
- D:
import package.module : symbol;,import package.module : altsymbolname = symbol; - Haskell:
import Module (function) - JavaScript:
import function from "modname";,import {function} from "modname";,import {function as altname} from "modname"; - MATLAB:
import package.function - Perl:
use Module ('symbol'); - PHP:
use function Namespace\function_name;,use Namespace\function_name as function_alias_name; - Python:
from module import function - Rust:
use module::submodule::symbol;,use module::submodule::{symbol1, symbol2};,use module::submodule::symbol as altname; - Scala:
import package.class.function,import package.class.{ function => alternativeName, otherFunction }
- Импорт констант
- PHP:
use const Namespace\CONST_NAME;
Вышеуказанные операторы также могут быть разделены на 2 группы — являются ли они синтаксическим удобством (просто добавляют элементам краткое название, при этом элементы всё равно доступны по своему полному названию), либо нужны для доступа к коду (без этого оператора доступ к элементам невозможен даже при наличии полного имени).
- Синтаксическое удобство
- Необходимы для доступа к коду
- Go:
import altname "package/name" - JavaScript:
import altname from "modname"; - Python:
import module
Блоки
Блок представляет собой способ группировки двух или более отдельных операторов, выражений или иных элементов кода, которые должны представлять собой целое..
- Скобки (фигурные скобки)
{…}
- Си, Си++, Objective-C, Go, Java, JavaScript/ECMAScript, C#, D, Perl, PHP (циклы
forиloop, передача блоков как аргументов), Rust, Scala, S-Lang, Swift, Windows PowerShell, Haskell (в do-нотации), AutoHotkey
см. также Curly bracket programming language
- Круглые скобки
(…)
- Квадратные скобки
[…]
- Smalltalk (блоки — объекты первого класса, т. н. замыкания)
begin…end
do…end
do…done
- Bash (циклы
forиwhile), Visual Basic, Фортран, TUTOR (тело блока обязано быть с отступом), Visual Prolog
do…end
- X …
end(напр.if…end):
- Ruby (операторы
if,while,until,def,class,module), OCaml (циклыforиwhile), MATLAB (операторыifиswitch, циклыforиwhile, предложениеtry, блокиpackage,classdef,properties,methods,eventsиfunction), Lua (then/elseиfunction)
- (
begin…)
- (progn …)
- (
do…)
- Отступы
- Значимые (см. Off-side rule languages): Cobra, CoffeeScript, F#, Haskell (в do-нотации без скобок), Occam, Python
- Не имеют значения (см. Free-form languages): потомки Алгола (включая Си, Паскаль и Perl); языки семейства Лисп
- Другое
- Ада, Visual Basic, Seed7:
if…end if - Bash, sh, and ksh:
if…fi,do…done,case…esac; - Алгол 68:
begin…end,(…),if…fi,do…od - Lua, Паскаль (язык программирования), Модула-2, Seed7:
repeat…until - Кобол:
IF…END-IF,PERFORM…END-PERFORMи т. д. для операторов; ….для предложений. - Visual Basic .NET:
If…End If,For…Next,Do…Loop - Small Basic:
If…EndIf,For…EndFor,While…EndWhile
Комментарии
Комментарии подразделяются по:
- стилю (однострочные/многострочные)
- правилам разбора/трансляции (ингорируются/интерполируются/сохраняются в памяти)
- рекурсивности (вкладываемые/не-вкладываемые)
- использованию (для документации (см. docstrings)/отбрасываемые/другие)
Однострочные комментарии
Как правило эти комментарии простираются до символа перевода строки, и используют оговоренную последовательность токенов для индикации начала комментария.
Примеры:
| Символ | Языки |
|---|---|
C |
Фортран от I до Фортрана (C в первом столбце) |
REM |
Бейсик, Bat-файлы |
:: |
Bat-файлы, COMMAND.COM, Cmd.exe |
NB. |
J; от аббревиатуры Nota bene (с лат. — «заметь хорошо»). |
⍝ |
APL; используется функциональный глиф (up shoe jot — U+235D) напоминающий лампу («освещающий» комментируемое). |
# |
sh и другие оболочки UNIX, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, make, Maple, Elixir, Nim[11] |
% |
TeX, Пролог, MATLAB,[12] Erlang, S-Lang, Visual Prolog |
// |
ActionScript, C (C99), Си++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, Sass, Swift, Xojo |
' |
Monkey, Visual Basic, VBScript Small Basic, Gambas, Xojo |
! |
Фортран, Basic Plus, Inform, Pick Basic |
; |
Assembly x86, AutoHotkey, AutoIt, Лисп, Common Lisp, Clojure, REBOL, Scheme, |
-- |
Euphoria, Haskell, SQL, Ада, AppleScript, Eiffel, Lua, VHDL, SGML |
* |
Assembler S/360 (* в первом столбце), Кобол от I до Коболa 85, PAW, Фортран от IV до Фортрана 77 (* в первом столбце), Pick Basic |
|| |
Curl |
" |
Vimscript, ABAP |
\ |
Форт |
*> |
Кобол 90 |
Многострочные комментарии
Как правило многострочные комментарии используют оговоренные последовательности символов для маркировки начала и конца комментария. В этом контексте символы пустого места или перевода строки игнорируются.
Примеры:
| Символ | Языки |
|---|---|
comment ~ ; |
Алгол 60, Симула |
¢ ~ ¢,# ~ #, co ~ co,comment ~ comment |
Алгол 68[13][14] |
/* ~ */ |
ActionScript, AutoHotkey, Си, Си++, C#, D[15] Go, Java, JavaScript, Kotlin, Objective-C, PHP, ПЛ/1, Rexx, Rust (могут быть вложенными), Scala (могут быть вложенными), SAS, Sass, SQL, Swift, Visual Prolog, CSS |
#cs ~ #ce |
AutoIt[16] |
/+ ~ +/ |
D (могут быть вложенными)[15] |
/# ~ #/ |
Cobra (могут быть вложенными) |
<# ~ #> |
Powershell |
=begin ~ =cut |
Perl |
#`( ~ ) |
Perl 6 (можно использовать любые скобки — (), <>, {}, [], зеркальные пары символов Юникода, а также символы Юникода со свойствами Ps/Pe/Pi/Pf) |
=begin ~ =end |
Ruby |
#<TAG> ~ #</TAG>, #stop ~ EOF,#iffalse ~ #endif, #ifntrue ~ #endif,#if false ~ #endif, #if !true ~ #endif |
S-Lang[17] |
{- ~ -} |
Haskell (могут быть вложенными) |
(* ~ *) |
ML, Mathematica, Object Pascal (Delphi), Паскаль, Seed7, Applescript, OCaml (могут быть вложенными), Standard ML (могут быть вложенными), Maple, Newspeak, F# |
{ ~ } |
Object Pascal (Delphi), Паскаль |
|# ~ #| |
Curl |
%{ ~ %} |
MATLAB[12] (символы должны быть в отдельной строке) |
#| ~ |# |
Лисп, Scheme, Racket (во всех трёх могут быть вложенными). |
--[[ ~ ]],--[=[ ~ ]=] |
Lua (первая форма может включаться во вторую) |
" ~ " |
Smalltalk |
(comment ~ ) |
Clojure |
Фортран
- Решающее значение в Фортранe 66/77 имеют отступы. Основной оператор находится в столбцах с 7 по 72. Любой не пробел в столбце 6 указывает на то, что строка является продолжением предыдущей строки. Символ '
C' в первом столбце указывает на то, что строка является комментарием . Столбцы с 1-го по 5-й могут содержать число, являющееся меткой. Столбцы с 73-го по 80-й игнорируются и могут быть комментарием; ранее в этих местах наносился номер перфокарты, что позволяло отсортировать их в случае падения колоды. В Фортране 90 правило отступов было упразднено и были добавлены однострочные комментарии с использованием символа!.
Кобол
- Отступы значимы в формате фиксированного кода. Содержание столбцов с 1-го по 6-й и после 73-го игнорируется. Если в 7-м столбце содержался символ
*или/строка являлась комментарием. До версии Кобол 2002 если строка содержала в 7-м столбце символDилиd— это обозначало отладочную строку, которая могла игнорироваться в зависимости от режима компилирования.
Cobra
- Cobra поддерживает многострочные комментарии «
/#…#/» похожие на встречающиеся в Си-подобных языках «/*…*/», однако с некоторыми отличиями. Символ#используется в однострочной форме комментариев «#…» и многострочные комментарии могут быть вложенными, что удобно при комментировании больших кусков кода.
Curl
- Curl поддерживает многострочные комментарии при помощи пользовательских тегов
|foo# ... #foo|.
Lua
- Как и в текстовых константах, в многострочном комментарии может использоваться произвольное число символов
=, при условии, что такое же их число используется и в закрывающей последовательности; это позволяет реализовать множественное вложение комментариев и текстовых констант если все они используют различное количество знаков=в обрамляющих тегах:--[[comment --[=[ nested comment ]=] ]]. Lua игнорирует первый перенос строки, который следует сразу за открывающим тегом.
Perl 5
- Многострочные комментарии в Perl 5 считаются частью документации и именуются «Простая старая документация» (англ. Plain Old Documentation — POD). Технически в Perl 5 нет соглашения о многострочных комментариях, но POD повсеместно используются в этом качестве.
Perl 6
- В Perl 6 для многострочных комментариев используется конструкция
#`(...).[18] Фактически Perl 6 позволяет использовать любые пары скобок после#`(напр.#`(...),#`[...],#`{...},#`<...>, и даже более сложные#`{{...}}являются полноценными комментариями). Скобки также можно вкладывать внутри комментариев (напр. в конструкции#`{ a { b } c }комментарий продолжается до последней закрывающей скобки).
PHP
- PHP поддерживает стандартные комментарии в стиле C/C++, а также комментарии в стиле Perl.
Python
- Иногда для комментирования строк кода используются три двойных кавычки
""". На самом деле они создают не комментарий, а пустой оператор с текстовой константой, который Python игнорирует (за исключением случая, когда текстовая константа — первый оператор в теле модуля, класса или функции; см docstring)
Ruby
- Также как Python и Perl, Ruby не имеет определённого синтаксиса многострочных комментариев. Однако в качестве комментариев, как и в Perl, могут использоваться блоки документации, поскольку интерпретатор игнорирует их.
S-Lang
- Интерпретатор игнорирует регион кода обрамленный
#<tag>и#</tag>. Имя тега может быть любой алфавитно-цифровой последовательностью символов и указывать на способ обработки кода. Например,#<latex>может указывать на документацию в формате LaTeX.
Scheme and Racket
- Следующий полный синтаксический элемент (s-выражение) может быть откомментирован при помощи
#;.
ABAP
- ABAP поддерживает два типа комментариев. Если первый символ строки (вкл. отступ) является звёздочкой (
*) вся строка считается комментарием, а кавычками (") начинается комментарий до конца строки. Комментарии в ABAP невозможны между операторамиEXEC SQLиENDEXECпоскольку в SQL имеется другое применение этим символам. В большинстве диалектов SQL вместо этого используется двойной дефис (--).
Эзотерические языки программирования
- Большинство эзотерических языков программирования следует соглашению о том, что любой не исполняющийся (напр. Befunge) или не имеющий значения (напр. Brainfuck) кусок кода считается комментарием.
Сравнение комментариев
Существует большое разнообразие способов объявления комментариев в исходном коде.
BlockComment курсивом указывает многострочное тело комментария.
InlineComment курсивом указывает однострочное тело комментария.
| Язык | Однострочный комментарий | Многострочный комментарий |
|---|---|---|
| Ада, Eiffel, Euphoria, Occam, SPARK, ANSI SQL, и VHDL | -- InlineComment |
|
| Алгол 60 (ALGOL 60) | comment BlockComment; | |
| Алгол 68 (ALGOL 68) | ¢ BlockComment ¢
| |
| APL | ⍝ InlineComment |
|
| AppleScript | -- InlineComment |
(* BlockComment *) |
| Язык ассемблера (разн.) | ; InlineComment только один пример (в большинстве ассемблеров есть только комментарии-строки) |
|
| AutoHotkey | ; InlineComment |
/* BlockComment */ |
| AWK, Bash, Bourne shell, C shell, Maple, R, Tcl, и Windows PowerShell | # InlineComment |
<# BlockComment #> |
| Бейсик (BASIC) разл. диалекты: | 'InlineComment (not all dialects)
|
|
| Си (K&R, ANSI/C89/C90), CHILL, ПЛ/1 (PL/I) и REXX | /* BlockComment */ | |
| C (C99), C++, Go и JavaScript | // InlineComment |
/* BlockComment */ |
| C# | // InlineComment/// InlineComment (XML комментарий-документация) |
/* BlockComment *//** BlockComment */ (XML комментарий-документация) |
| Кобол (COBOL) от I до Кобол 85 | * InlineComment (* в столбце 7) |
|
| Кобол 2002 | *> InlineComment |
|
| Curl | || InlineComment |
|# BlockComment #|
|
| Cobra | # InlineComment |
/# BlockComment #/ (вкладываемые) |
| D | // InlineComment/// Documentation InlineComment (en:ddoc комментарии) |
/* BlockComment *//** Documentation BlockComment */ (en:ddoc комментарии)
|
| DCL | $! InlineComment |
|
| ECMAScript (JavaScript, ActionScript и т. д.) | // InlineComment |
/* BlockComment */ |
| Форт (Forth) | \ InlineComment |
( BlockComment ) (одно и многострочные)
|
| Фортран от I Фортран77 | C InlineComment (C в первом столбце) |
|
| Фортран 90 | ! InlineComment |
|
| Haskell | -- InlineComment |
{- BlockComment -} |
| Java | // InlineComment |
/* BlockComment */
|
| Лисп (Lisp) и Scheme | ; InlineComment |
#| BlockComment |# |
| Lua | -- InlineComment |
--[==[ BlockComment]==] (варьируемое количество знаков =) |
| Maple | # InlineComment |
(* BlockComment *) |
| Mathematica | (* BlockComment *) | |
| Matlab | % InlineComment |
%{Отметьте: оба символа процент-скобка должны быть единственными не пустыми символами (пробелами, табуляциями и др.) на своих строках. |
| Object Pascal (Delphi) | // InlineComment |
(* BlockComment *){ BlockComment } |
| OCaml | (* BlockComment (* вкладываемые *) *) | |
| Паскаль (Pascal), Модула-2, Модула-3 (Modula-2,3), Оберон (Oberon) и ML: | (* BlockComment *) | |
| Perl и Ruby | # InlineComment |
=begin (=end в Ruby) (POD комментарий-документация)
|
| Perl 6 | # InlineComment |
#`{
|
| PHP | # InlineComment// InlineComment |
/* BlockComment *//** документация BlockComment */ (PHP комментарий-документация) |
| PILOT | R:InlineComment |
|
| PLZ/SYS | ! BlockComment ! | |
| PL/SQL and TSQL | -- InlineComment |
/* BlockComment */ |
| Python | # InlineComment |
''' BlockComment '''(Комментарий-документация если это первая строка модуля, класса, метода или функции) |
| Rust | // InlineComment
|
/* BlockComment */ (вкладываемый)
|
| SAS | * BlockComment;/* BlockComment */ | |
| Seed7 | # InlineComment |
(* BlockComment *) |
| Симула (Simula) | comment BlockComment;! BlockComment; | |
| Smalltalk | "BlockComment" | |
| Smarty | {* BlockComment *} | |
| Standard ML | (* BlockComment *) | |
| TeX, LaTeX, PostScript, Erlang, Elixir and S-Lang | % InlineComment |
|
| Texinfo | @c InlineComment
|
|
| TUTOR | * InlineCommentcommand $ InlineComment |
|
| Visual Basic | ' InlineCommentRem InlineComment |
|
| Visual Basic .NET | ' InlineComment
|
|
| Visual Prolog | % InlineComment |
/* BlockComment */ |
| Wolfram | (* BlockComment *) | |
| Xojo | ' InlineComment// InlineCommentrem InlineComment |
Примечания
- https://translate.yandex.ru/&text=line-oriented&lang=en-ru (недоступная+ссылка)
- для нескольких операторов на одной строке
- Три типа предложений, каждое разделяет части по-разному:
- последовательное предложение использует токен продолжения (точка с запятой ';'): begin a; b; c end — элементы исполняются по очереди.
- непоследовательное предложение использует токен и-также (запятая «,»): begin a, b, c end — очередность исполнения определяется оптимизатором компилятора..
- параллельное предложение использует токен и-также (запятая «,»): par begin a, b, c end — элементы необходимо исполнять в параллельных потоках.
- точка с запятой — спрятать результат оператора, запятая — показать результат
- Bash Reference Manual, 3.1.2.1 Escape Character
- Python Documentation, 2. Lexical analysis: 2.1.5. Explicit line joining
- Mathworks.com Архивировано 7 февраля 2010 года.
- Parenthesis/Brackets - Windows CMD - SS64.com
- Scripts - Definition & Usage | AutoHotkey
- Чтобы М-файл (код MATLAB) был доступен по имени, он должен находится в текущем каталоге либо, либо каталоге из пути поиска.
- Nim Manual
- Mathworks.com (недоступная ссылка). Дата обращения: 25 июня 2013. Архивировано 21 ноября 2013 года.
- Algol68_revised_report-AB.pdf стр. 61-62, в оригинале стр. 121-122. Дата обращения: 27 мая 2014.
- HTML Пересмотренный доклад о языке Algol68 (недоступная ссылка). Дата обращения: 27 мая 2014. Архивировано 17 марта 2013.
- DLang.org, Lexical. Дата обращения: 27 мая 2014.
- AutoItScript.com Keyword Reference, #comments-start. Дата обращения: 27 мая 2014.
- slang-2.2.4/src/slprepr.c - line 43 to 113. Дата обращения: 28 мая 2014.
- Документация Perl 6 (синтаксис). docs.perl6.org. Дата обращения: 5 апреля 2017.
- Perl 6 POD Comments.
- Perl 6 POD (Abbreviated Blocks).