Программирование

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

Программи́рованиепроцесс и искусство создания компьютерных программ с помощью языков программирования[1][2].

Программирование сочетает в себе элементы искусства, науки, математики и инженерии.

В узком смысле слова, программирование рассматривается как кодирование — реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. В более широком смысле, программирование — процесс создания программ, то есть разработка программного обеспечения.

Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.

Различные языки программирования поддерживают различные стили программирования (т. н. парадигмы программирования). Отчасти, искусство программирования состоит в том, чтобы выбрать один из языков, наиболее полно подходящий для решения имеющейся задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).

Единственный язык, напрямую выполняемый процессором — это машинный язык (также называемый машинным кодом). Изначально, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого, программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.

В некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код "виртуальной машины", также называемый байт-кодом (byte-code). Такой подход применяется в Forth, Lisp, Java, Perl, Python а также в языках платформы Microsoft .NET.

Парадигмы программирования[править]

Функциональное программирование в соответствующем Вики-учебнике подробно изложено, поэтому поговорим об императивном программировании.

Для императивных языков программирования можно выделить 4 современных парадигмы программирования:

  1. Процедурное программирование (ПП)
  2. Объектно-ориентированное программирование (ООП)
  3. Компонентно-ориентированное программирование (КОП)
  4. Аспектно-ориентированное программирование (АОП)

Процедурное программирование[править]

Вот пример процедурного кода, выводящего строку:

<?php

echo "Hello, world!";

?>

Вот пример объектно-ориентированного кода, который делает то же самое:

<?php

class helloWorld { 
  function myPrint() { 
    echo "Hello, world!"; 
  } 
} 
$myHelloWorld = new helloWorld(); 
$myHelloWorld->myPrint();

?>

Методологии программирования[править]

Сравнение языков программирования[править]

Шаблон:Сравнения языков программирования В этой статье сравнивается более 50 языков программирования по основным свойствам синтаксиса.

Выражения[править]

Выражения в языках программирования в широком смысле могут быть подразделены на 4 типа по синтаксической структуре:

префиксная запись
инфиксная запись
суффиксная, постфиксная или Обратная польская запись
запись выражений в математическом стиле
  • Wolfram (2 + 3)(4^5) (* отметим неявный оператор умножения *)

Операторы[править]

Как правило в языках программирования имеются следующие соглашения по операторам:

  • о разделителях операторов;
  • о терминаторах операторов; и
  • о продолжении строки

Разделитель операторов используется для демаркации границы между двумя отдельными операторами. Терминатор операторов используется для маркировки конца отдельного оператора. Языки, которые интерпретируют конец строки как конец оператора называются однострочными[3] языками программирования.

«Продолжение строки» — это соглашение для однострочных языков о ситуациях, когда символ окончания строки может быть неправильно интерпретирован как окончание оператора. В таких языках «продолжение строки» позволяет оператору охватывать более одной строки.


Язык Разделитель-терминатор операторов Дополнительный разделитель[4]
ABAP разделитель — точка '.'
Ада (Ada) терминатор — точка с запятой ';'
Алгол (ALGOL) разделитель — точка с запятой ';'
Алгол 68 (ALGOL 68) разделитель — точка с запятой ';' и запятая ','[5]
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 терминатор — новая строка точка с запятой ';' или запятая ','[6]
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 терминатор — новая строка
Язык Разделитель-терминатор операторов Дополнительный разделитель[4]

Продолжение строки[править]

Операция продолжения строки обычно происходит на стадии лексического анализа: как правило символ новой строки не добавляет токен в соотв. список, если было обнаружено продолжение строки.

Символы пустого пространства — языки не требующие продолжения строки
  • Ада — Строка обрывается точкой с запятой
  • C# — Строка обрывается точкой с запятой
  • JavaScript — Строка обрывается точкой с запятой (возможен неявный обрыв)
  • Lua
  • OCaml
Амперсанд как последний символ строки
Обратная косая черта как последний символ строки
Гравис как последний символ строки
Дефис как последний символ строки
Подчёркивание как последний символ строки
Многоточие (три точки, а не отдельный спец. символ)
  • MATLAB: Многоточие не должно являться последним символом строки, однако все последующие символы игнорируются.[9] (По сути оно начинает комментарий, который продолжается и на следующей строке, в отличие от однострочного комментария, который продолжается лишь до окончания строки.)
Запятая как последний символ строки
  • Ruby (за запятой может быть комментарий)


Левая скобка как последний символ строки
Оператор в качестве последнего объекта строки
  • Ruby (за оператором может быть комментарий)
Оператор в начале продолжающейся строки
  • AutoHotkey: Любой оператор выражений за исключением ++ и --, а также точка или запятая[11]
Обратная косая черта в начале продолжающейся строки
Какая-либо форма однострочных комментариев как продолжение строки
Позиция символа
  • Фортран 77: Строка не являющаяся комментарием будет продолжением предыдущей строки не комментария в случае если на позиции 6 находится не пробел. Строки являющиеся комментариями не могут быть продолжены.
  • Кобол: Текстовые константы могут быть продолжены, если не закончить их в предложении PICTURE символом ', а затем вставить символ - в 7 м столбце (на той же позиции, на которой использовался символ * для комментария)
  • TUTOR: Строки, начинающиеся символом табуляции (после требуемого контекстом отступа) продолжают предыдущую команду.
Использование кавычек
  • Препроцессор Си и Си++: Использование кавычки в начале строки продолжает предыдущую строку после обычного окончания.

Библиотеки[править]

Импорт библиотеки — это способ добавить внешние (возможно откомпилированные) процедуры, программы или пакеты. Импорты классифицируют по уровню (модуль, пакет, класс, процедура,…) и по синтаксису (директивы, атрибуты,…)

Импорт файлов
Импорт пакетов
  • Ада: 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 группы — являются ли они синтаксическим удобством (просто добавляют элементам краткое название, при этом элементы всё равно доступны по своему полному названию), либо нужны для доступа к коду (без этого оператора доступ к элементам невозможен даже при наличии полного имени).

Синтаксическое удобство
  • Java: import package.*, import package.class
  • OCaml: open module
Необходимы для доступа к коду
  • Go: import altname "package/name"
  • JavaScript: import altname from "modname";
  • Python: import module

Блоки[править]

Блок представляет собой способ группировки двух или более отдельных операторов, выражений или иных элементов кода, которые должны представлять собой целое..

Скобки (фигурные скобки) {}

см. также Curly bracket programming language

Круглые скобки ()
Квадратные скобки []
  • Smalltalk (блоки — объекты первого класса, т. н. замыкания)
beginend
doend
dodone
doend
  • Lua, Ruby (блоки передаются как аргументы, цикл for), Seed7 (тело цикла заключено между do и end)
X … end (напр. ifend):
  • 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 …)
Отступы
Другое

Комментарии[править]

Комментарии подразделяются по:

  • стилю (однострочные/многострочные)
  • правилам разбора/трансляции (ингорируются/интерполируются/сохраняются в памяти)
  • рекурсивности (вкладываемые/не-вкладываемые)
  • использованию (для документации (см. 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[13]
% TeX, Пролог, MATLAB,[14] 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[15][16]
/* ~ */ ActionScript, AutoHotkey, Си, Си++, C#, D[17] Go, Java, JavaScript, Kotlin, Objective-C, PHP, ПЛ/1, Rexx, Rust (могут быть вложенными), Scala (могут быть вложенными), SAS, SASS, SQL, Swift, Visual Prolog, CSS
#cs ~ #ce AutoIt[18]
/+ ~ +/ D (могут быть вложенными)[17]
/# ~ #/ Cobra (могут быть вложенными)
<# ~ #> Powershell
=begin ~ =cut Perl
#`( ~ ) Perl6 (можно использовать любые скобки — (), <>, {}, [], зеркальные пары символов Юникода, а также символы Юникода со свойствами Ps/Pe/Pi/Pf)
=begin ~ =end Ruby
#<TAG> ~ #</TAG>, #stop ~ EOF,
#iffalse ~ #endif, #ifntrue ~ #endif,
#if false ~ #endif, #if !true ~ #endif
S-Lang[19]
{- ~ -} Haskell (могут быть вложенными)
(* ~ *) ML, Mathematica, Object Pascal (Delphi), Паскаль, Seed7, Applescript, OCaml (могут быть вложенными), Standard ML (могут быть вложенными), Maple, Newspeak, F#
{ ~ } Object Pascal (Delphi), Паскаль
|# ~ #| Curl
%{ ~ %} MATLAB[14] (символы должны быть в отдельной строке)
#| ~ |# Лисп, 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 для многострочных комментариев используется конструкция #`(...).[20] Фактически 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 вместо этого используется двойной дефис (--).

Эзотерические языки программирования[править]

Сравнение комментариев[править]

Существует большое разнообразие способов объявления комментариев в исходном коде. BlockComment курсивом указывает многострочное тело комментария. InlineComment курсивом указывает однострочное тело комментария.

Язык Однострочный комментарий Многострочный комментарий
Ада, Eiffel, Euphoria, Occam, SPARK, ANSI SQL, и VHDL -- InlineComment
Алгол 60 (ALGOL 60) comment BlockComment;
Алгол 68 (ALGOL 68) ¢ BlockComment ¢

comment BlockComment comment
co BlockComment co
# BlockComment #
£ 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)

REM InlineComment

Си (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 #|

|foo# BlockComment #|

Cobra # InlineComment /# BlockComment #/ (вкладываемые)
D // InlineComment
/// Documentation InlineComment (en:ddoc комментарии)
/* BlockComment */
/** Documentation BlockComment */ (en:ddoc комментарии)

/+ BlockComment +/ (nestable)
/++ Documentation BlockComment +/ (вкладываемые, en:ddoc комментарии)

DCL $! InlineComment
ECMAScript (JavaScript, ActionScript и т. д.) // InlineComment /* BlockComment */
Форт (Forth) \ InlineComment ( BlockComment ) (одно и многострочные)

( before -- after ) стековые комментарии

Фортран от I Фортран77 C InlineComment (C в первом столбце)
Фортран 90 ! InlineComment
Haskell -- InlineComment {- BlockComment -}
Java // InlineComment /* BlockComment */

/** BlockComment */ (Javadoc комментарий-документация)

Лисп (Lisp) и Scheme ; InlineComment #| BlockComment |#
Lua -- InlineComment --[==[ BlockComment]==] (варьируемое количество знаков =)
Maple # InlineComment (* BlockComment *)
Mathematica (* BlockComment *)
Matlab % InlineComment %{
BlockComment (nestable)
%}

Отметьте: оба символа процент-скобка должны быть единственными не пустыми символами (пробелами, табуляциями и др.) на своих строках.
Object Pascal (Delphi) // InlineComment (* BlockComment *)
{ BlockComment }
OCaml (* BlockComment (* вкладываемые *) *)
Паскаль (Pascal), Модула-2, Модула-3 (Modula-2,3), Оберон (Oberon) и ML: (* BlockComment *)
Perl и Ruby # InlineComment =begin
BlockComment
=cut
(=end в Ruby) (POD комментарий-документация)

__END__
Комментарии после окончания кода

Perl 6 # InlineComment #`{
BlockComment
}

=comment
    Комментарий продолжается до следующей POD директивы
     или первой пустой строки.
[21][22]

PHP # InlineComment
// InlineComment
/* BlockComment */
/** документация BlockComment */ (PHP комментарий-документация)
PILOT R:InlineComment
PLZ/SYS ! BlockComment !
PL/SQL and TSQL -- InlineComment /* BlockComment */
Python # InlineComment ''' BlockComment '''
""" BlockComment """

(Комментарий-документация если это первая строка модуля, класса, метода или функции)

Rust // InlineComment

/// InlineComment («Внешний» комментарий rustdoc)
//! InlineComment («Внутренний» комментарий rustdoc)

/* BlockComment */ (вкладываемый)

/** BlockComment */ («Внешний» комментарий rustdoc)
/*! BlockComment */ («Внутренний» комментарий rustdoc)

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

@comment InlineComment

TUTOR * InlineComment
command $$ InlineComment
Visual Basic ' InlineComment
Rem InlineComment
Visual Basic .NET ' InlineComment

''' InlineComment (XML комментарий-документация)
Rem InlineComment

Visual Prolog % InlineComment /* BlockComment */
Wolfram (* BlockComment *)
Xojo ' InlineComment
// InlineComment
rem InlineComment

Примеры функций[править]

abs() — математическая функция из библиотеки stdlib.h для вычисления модуля числа. Принимает и возвращает значения типа int.

labs() — тоже вычисляет модуль числа, но принимает и возвращает значения типа long.

Пример[править]

# include <stdlib.h>
# include <stdio.h>

int main()
{
    int distance, x1, x2;
    scanf("%d%d", &x1, &x2);
    distance = abs(x1 - x2);
    printf("Расстояние: %d", distance);
    return 0;
}


См. также[править]

Литература[править]

Примечания[править]

  1. нет АИ
  2. см.также wikt:программирование
  3. https://translate.yandex.ru/?utm_source=wizard&text=line-oriented&lang=en-ru
  4. а б для нескольких операторов на одной строке
  5. Три типа предложений, каждое разделяет части по-разному:
      1. последовательное предложение использует токен продолжения (точка с запятой ';'): begin a; b; c end — элементы исполняются по очереди.
      2. непоследовательное предложение использует токен и-также (запятая «,»): begin a, b, c end — очередность исполнения определяется оптимизатором компилятора..
      3. параллельное предложение использует токен и-также (запятая «,»): par begin a, b, c end — элементы необходимо исполнять в параллельных потоках.
  6. точка с запятой — спрятать результат оператора, запятая — показать результат
  7. Bash Reference Manual, 3.1.2.1 Escape Character
  8. Python Documentation, 2. Lexical analysis: 2.1.5. Explicit line joining
  9. Mathworks.com Шаблон:Webarchive
  10. https://ss64.com/nt/syntax-brackets.html
  11. https://autohotkey.com/docs/Scripts.htm#continuation
  12. Чтобы М-файл (код MATLAB) был доступен по имени, он должен находится в текущем каталоге либо, либо каталоге из пути поиска.
  13. https://nim-lang.org/docs/manual.html#lexical-analysis-comments
  14. а б Mathworks.com Проверено 25 июня 2013 г.
  15. Algol68_revised_report-AB.pdf стр. 61-62, в оригинале стр. 121-122 Проверено 27 мая 2014 г.
  16. HTML Пересмотренный доклад о языке Algol68 Проверено 27 мая 2014 г. Архивировано из первоисточника 17 марта 2013.
  17. а б DLang.org, Lexical Проверено 27 мая 2014 г.
  18. AutoItScript.com Keyword Reference, #comments-start Проверено 27 мая 2014 г.
  19. slang-2.2.4/src/slprepr.c - line 43 to 113 Проверено 28 мая 2014 г.
  20. Документация Perl 6 (синтаксис). docs.perl6.org. Проверено 2017-04-05 г.
  21. Perl 6 POD Comments
  22. Perl 6 POD (Abbreviated Blocks)