Сравнение языков программирования по синтаксису
→ Сравнение языков программирования
Сравнение языков программирования по синтаксису — соотнесение языков программирования по синтаксису.
Сравнивается более 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 | * InlineComment command $$ InlineComment
|
|
Visual Basic | ' InlineComment Rem InlineComment
|
|
Visual Basic .NET | ' InlineComment
|
|
Visual Prolog | % InlineComment
|
/* BlockComment */
|
Wolfram | (* BlockComment *)
| |
Xojo | ' InlineComment // InlineComment rem InlineComment
|
Источники[править]
- ↑ https://translate.yandex.ru/&text=line-oriented&lang=en-ru[недоступная ссылка]
- ↑ 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. Проверено 7 февраля 2019.
- ↑ Scripts - Definition & Usage | AutoHotkey. Проверено 7 февраля 2019.
- ↑ Чтобы М-файл (код MATLAB) был доступен по имени, он должен находится в текущем каталоге либо, либо каталоге из пути поиска.
- ↑ Nim Manual. Проверено 7 февраля 2019.
- ↑ 12,0 12,1 Mathworks.com. Архивировано из первоисточника 21 ноября 2013.[недоступная ссылка] Проверено 25 июня 2013.
- ↑ Algol68_revised_report-AB.pdf стр. 61-62, в оригинале стр. 121-122. Проверено 27 мая 2014.
- ↑ HTML Пересмотренный доклад о языке Algol68. Архивировано из первоисточника 17 марта 2013. Проверено 27 мая 2014.
- ↑ 15,0 15,1 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. Проверено 7 февраля 2019.
- ↑ Perl 6 POD (Abbreviated Blocks). Проверено 7 февраля 2019.
Ссылки[править]
- Эволюция современных языков программирования | Мир ПК | Издательство «Открытые системы»(рус.) osp.ru
- Компьютерра: Java vs .NET(рус.) computerra