Сравнение языков программирования по синтаксису
→ Сравнение языков программирования
Сравнение языков программирования по синтаксису — соотнесение языков программирования по синтаксису.
Сравнивается более 50 языков программирования по основным свойствам синтаксиса.
Выражения[править]
Выражения в языках программирования в широком смысле могут быть подразделены на 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[недоступная ссылка (Февраль 2020)]
- ↑ 2,0 2,1 для нескольких операторов на одной строке
- ↑ Три типа предложений, каждое разделяет части по-разному:
- последовательное предложение использует токен продолжения (точка с запятой ';'): begin a; b; c end — элементы исполняются по очереди.
- непоследовательное предложение использует токен и-также (запятая «,»): begin a, b, c end — очередность исполнения определяется оптимизатором компилятора..
- параллельное предложение использует токен и-также (запятая «,»): par begin a, b, c end — элементы необходимо исполнять в параллельных потоках.
- ↑ точка с запятой — спрятать результат оператора, запятая — показать результат
- ↑ Bash Reference Manual Архивная копия от 14 июля 2018 на Wayback Machine, 3.1.2.1 Escape Character Архивная копия от 14 июля 2018 на Wayback Machine
- ↑ Python Documentation Архивная копия от 20 июля 2006 на Wayback Machine, 2. Lexical analysis Архивная копия от 9 января 2018 на Wayback Machine: 2.1.5. Explicit line joining Архивная копия от 9 января 2018 на Wayback Machine
- ↑ Mathworks.com Архивировано из первоисточника 7 February 2010.
- ↑ Parenthesis/Brackets - Windows CMD - SS64.com. Архивировано из первоисточника 4 февраля 2019. Проверено 7 февраля 2019.
- ↑ Scripts - Definition & Usage | AutoHotkey. Архивировано из первоисточника 2 февраля 2019. Проверено 7 февраля 2019.
- ↑ Чтобы М-файл (код MATLAB) был доступен по имени, он должен находится в текущем каталоге либо, либо каталоге из пути поиска.
- ↑ Nim Manual. Архивировано из первоисточника 15 июня 2021. Проверено 7 февраля 2019.
- ↑ 12,0 12,1 Mathworks.com. Архивировано из первоисточника 21 ноября 2013.[недоступная ссылка] Проверено 25 июня 2013.
- ↑ Algol68_revised_report-AB.pdf стр. 61-62, в оригинале стр. 121-122. Архивировано из первоисточника 10 августа 2016. Проверено 27 мая 2014.
- ↑ HTML Пересмотренный доклад о языке Algol68. Архивировано из первоисточника 17 марта 2013. Проверено 27 мая 2014.
- ↑ 15,0 15,1 DLang.org, Lexical. Архивировано из первоисточника 8 ноября 2015. Проверено 27 мая 2014.
- ↑ AutoItScript.com Keyword Reference, #comments-start. Архивировано из первоисточника 4 ноября 2017. Проверено 27 мая 2014.
- ↑ slang-2.2.4/src/slprepr.c - line 43 to 113. Проверено 28 мая 2014.
- ↑ Документация Perl 6 (синтаксис). docs.perl6.org. Архивировано из первоисточника 22 июля 2019. Проверено 5 апреля 2017.
- ↑ Perl 6 POD Comments. Архивировано из первоисточника 9 февраля 2019. Проверено 7 февраля 2019.
- ↑ Perl 6 POD (Abbreviated Blocks). Архивировано из первоисточника 9 февраля 2019. Проверено 7 февраля 2019.
Ссылки[править]
- Эволюция современных языков программирования | Мир ПК | Издательство «Открытые системы»рус. osp.ru
- Компьютерра: Java vs .NETрус. computerra