This article needs additional citations for verification. (February 2009) |
В этой статье сравнивается большое количество языков программирования путем составления таблиц их типов данных , выражений , операторов и синтаксисов объявлений , а также некоторых распространенных интерфейсов операционных систем.
Обычно var , var или var — это то, как представляются имена переменных или другие нелитеральные значения, которые должен интерпретировать читатель. Остальное — буквенный код. Гильеметы ( «
и »
) заключают в себе необязательные разделы. Tab ↹указывает на необходимый (пробел) отступ.
Таблицы по умолчанию не отсортированы в лексикографическом порядке по названию языка программирования, и некоторые языки имеют записи в некоторых таблицах, но не в других.
8 бит ( байт ) | 16 бит ( короткое целое ) | 32 бит | 64 бит ( длинное целое ) | Размер слова | Произвольно точный ( bignum ) | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Подписано | Неподписанный | Подписано | Неподписанный | Подписано | Неподписанный | Подписано | Неподписанный | Подписано | Неподписанный | ||
Ада [1] | range -2**7 .. 2**7 - 1 [дж] | range 0 .. 2**8 - 1 [дж] или mod 2**8 [к] | range -2**15 .. 2**15 - 1 [дж] | range 0 .. 2**16 - 1 [дж] или mod 2**16 [к] | range -2**31 .. 2**31 - 1 [дж] | range 0 .. 2**32 - 1 [дж] или mod 2**32 [к] | range -2**63 .. 2**63 - 1 [дж] | mod 2**64 [к] | Integer [дж] | range 0 .. 2**Integer' [дж] или [к]mod Integer' | — |
АЛГОЛ 68 (переменной ширины) | short short int [с] | — | short int [с] | — | int [с] | — | long int [с] | — | int [с] | — | long long int [а] [г] |
bytes иbits | |||||||||||
C ( C99 фиксированной ширины) | int8_t | uint8_t | int16_t | uint16_t | int32_t | uint32_t | int64_t | uint64_t | intptr_t [с] | size_t [с] | — |
C++ ( C++11 фиксированной ширины) | |||||||||||
C ( переменная ширина C99 ) | signed char | unsigned char | short [с] | unsigned short [с] | long [с] | unsigned long [с] | long long [с] | unsigned long long [с] | int [с] | unsigned int [с] | |
C++ ( C++11 переменная ширина) | |||||||||||
Objective-C ( Cocoa ) | signed char илиint8_t | unsigned char илиuint8_t | short илиint16_t | unsigned short илиuint16_t | int илиint32_t | unsigned int илиuint32_t | long long илиint64_t | unsigned long long илиuint64_t | NSInteger илиlong | NSUInteger илиunsigned long | |
С# | sbyte | byte | short | ushort | int | uint | long | ulong | IntPtr | UIntPtr | System.Numerics. (.NET 4.0) |
Ява | byte | — | char [б] | — | — | — | — | java.math. | |||
Идти | int8 | uint8 илиbyte | int16 | uint16 | int32 | uint32 | int64 | uint64 | int | uint | big.Int |
Ржавчина | i8 | u8 | i16 | u16 | i32 | u32 | i64 | u64 | isize | usize | — |
Быстрый | Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Int | UInt | |
Д | byte | ubyte | short | ushort | int | uint | long | ulong | — | — | BigInt |
Общий Лисп [2] | (signed-byte 8) | (unsigned-byte 8) | (signed-byte 16) | (unsigned-byte 16) | (signed-byte 32) | (unsigned-byte 32) | (signed-byte 64) | (unsigned-byte 64) | bignum | ||
Схема | |||||||||||
ИСЛИСП [3] | bignum | ||||||||||
Паскаль ( FPC ) | shortint | byte | smallint | word | longint | longword | int64 | qword | integer | cardinal | — |
Визуальный базовый | — | Byte | Integer | — | Long | — | — | — | — | ||
Visual Basic .NET | SByte | Short | UShort | Integer | UInteger | Long | ULong | System.Numerics (.NET 4.0) | |||
FreeBasic | Byte илиInteger<8> | UByte илиUInteger<8> | Short илиInteger<16> | UShort илиUInteger<16> | Long илиInteger<32> | ULong илиUInteger<32> | LongInt илиInteger<64> | ULongInt илиUInteger<64> | Integer | UInteger | — |
Питон 2.x | — | — | — | — | int | — | long | ||||
Питон 3.x | — | — | — | — | — | int | |||||
Сленг | — | — | — | — | — | — | |||||
Фортран | INTEGER [ф] | — | INTEGER [ф] | — | INTEGER [ф] | — | INTEGER [ф] | — | |||
PHP | — | — | int [м] | — | int [м] | — | — | [э] | |||
Перл 5 | — [д] | — [д] | — [д] | — [д] | — [д] | Math::BigInt | |||||
Раку | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | Int | — | |
Рубин | — | — | — | — | Fixnum | — | Bignum | ||||
Эрланг [сущ.] | — | — | — | — | integer() | — | integer() [о] | ||||
Скала | Byte | — | Short | Char [л] | Int | — | Long | — | — | — | scala.math.BigInt |
Семя7 | — | — | — | — | — | — | integer | — | — | — | bigInteger |
Smalltalk | — | — | — | — | SmallInteger [я] | — | LargeInteger [я] | ||||
Windows PowerShell | — | — | — | — | — | — | |||||
OCaml | — | — | int32 | — | int64 | — | int илиnativeint | open Big_int;; илиbig_int | |||
Фа# | sbyte | byte | int16 | uint16 | int32 илиint | uint32 | uint64 | nativeint | unativeint | bigint | |
Стандартный МЛ | — | Word8.word | — | Int32.int | Word32.word | Int64.int | Word64.word | int | word | LargeInt.int илиIntInf.int | |
Хаскелл ( GHC ) | «import Int» илиInt8 | «import Word» илиWord8 | «import Int» илиInt16 | «import Word» илиWord16 | «import Int» илиInt32 | «import Word» илиWord32 | «import Int» илиInt64 | «import Word» илиWord64 | Int | «import Word» илиWord | Integer |
Эйфелева | INTEGER_8 | NATURAL_8 | INTEGER_16 | NATURAL_16 | INTEGER_32 | NATURAL_32 | INTEGER_64 | NATURAL_64 | INTEGER | NATURAL | — |
КОБОЛ [ч] | BINARY-CHAR «SIGNED» | BINARY-CHAR UNSIGNED | BINARY-SHORT «SIGNED» | BINARY-SHORT UNSIGNED | BINARY-LONG «SIGNED» | BINARY-LONG UNSIGNED | BINARY-DOUBLE «SIGNED» | BINARY-DOUBLE UNSIGNED | — | — | — |
Математика | — | — | — | — | — | Integer | |||||
Язык Вольфрама | — | — | — | — | — | Integer |
int shorts
int lengths
short
long
short int
long int
short int
int
long int
short max int
max int
long max int
short
,int
,long
, и ( C99 , C++11 )long long
, поэтому они зависят от реализации. В C и C++short
,long
, иlong long
должны быть не менее 16, 32 и 64 бит соответственно, но могут быть и больше.int
Тип должен быть не менееshort
и не болееlong
, и обычно равен размеру слова на процессоре машины (т. е. на 32-битной машине он часто имеет ширину 32 бита; на 64-битных машинах он иногда имеет ширину 64 бита). C99 и C++11 [ требуется ссылка ] также определяют[u]intN_t
типы точной ширины в заголовке stdint.h . Для получения дополнительной информации см. Синтаксис C#Целочисленные типы . Кроме того, типыsize_t
иptrdiff_t
определены в зависимости от размера адреса для хранения беззнаковых и знаковых целых чисел, достаточно больших для обработки индексов массива и разницы между указателями.n
предоставляетсяSELECTED_INT_KIND
внутренней функцией [4] .--precision "number"
может установить точность дляlong long int
s до требуемого "числа" значащих цифр. Стандартные константыlong long int width
иlong long max int
могут использоваться для определения фактической точности.PIC S9999
Например, " " потребует знаковую переменную с точностью в четыре десятичных знака. Если указать как двоичное поле, то на большинстве платформ будет выбран 16-битный знаковый тип.range 1 .. Integer'Last
) и Natural (range 0 .. Integer'Last
).Short_Short_Integer
(8 бит),Short_Integer
(16 бит) иLong_Integer
(64 бита) также обычно предопределены, но не требуются стандартом Ada. Проверки во время выполнения можно отключить, если производительность важнее проверок целостности.int
в PHP имеет ту же ширину, что иlong
тип в C в этой системе. [c]Одинарная точность | Двойная точность | Другая точность | Зависит от процессора | |
---|---|---|---|---|
Ада [1] | Float | Long_Float | — | |
АЛГОЛ 68 | real [а] | long real [а] | short real , long long real , и т.д. [г] | |
С | float [б] | double | long double [ф] | |
С++ (STL) | ||||
Objective-C ( Cocoa ) | CGFloat | |||
С# | float | — | ||
Ява | ||||
Идти | float32 | float64 | ||
Ржавчина | f32 | f64 | ||
Быстрый | Float илиFloat32 | Double илиFloat64 | Float80 [г] | CGFloat |
Д | float | double | real | |
Общий Лисп | single-float | double-float | float, short-float, long-float | |
Схема | ||||
ИСЛИСП | ||||
Паскаль ( FPC ) | single | double | real | |
Визуальный базовый | Single | Double | — | |
Visual Basic .NET | ||||
Ксоджо | ||||
Питон | — | float | ||
JavaScript | Number [7] | — | ||
Сленг | ||||
Фортран | REAL(KIND = n) [с] | |||
PHP | float | |||
Перл | ||||
Раку | num32 | num64 | Num | |
Рубин | — | Float | — | |
Скала | Float | Double | ||
Семя7 | — | float | ||
Smalltalk | Float | Double | ||
Windows PowerShell | ||||
OCaml | — | float | — | |
Фа# | float32 | |||
Стандартный МЛ | — | real | ||
Хаскелл ( GHC ) | Float | Double | ||
Эйфелева | REAL_32 | REAL_64 | ||
КОБОЛ | FLOAT-BINARY-7 [э] | FLOAT-BINARY-34 [э] | FLOAT-SHORT , FLOAT-LONG ,FLOAT-EXTENDED | |
Математика | — | — | Real |
real shorts
real lengths
short
long
short real
long real
short real
real
long real
short max real
max real
long max real
short small real
small real
long small real
n
предоставляетсяSELECTED_REAL_KIND
внутренней функцией [8] .--precision "number"
может установить точность дляlong long real
s до требуемого "числа" значащих цифр. Стандартные константыlong long real width
иlong long max real
могут использоваться для определения фактической точности.double
во многих реализациях.long double
в языках C.Целое число | Одинарная точность | Двойная точность | Половинная и учетверенная точность и т.д. | |
---|---|---|---|---|
Ада [1] | — | Complex [б] | Complex [б] | Complex [б] |
АЛГОЛ 68 | — | compl | long compl и т. д. | short compl и т.д. и long long compl т.п. |
С ( С99 ) [9] | — | float complex | double complex | — |
С++ (STL) | — | std::complex<float> | std::complex<double> | |
С# | — | — | System.Numerics.Complex (.NET 4.0) | |
Ява | — | — | — | |
Идти | — | complex64 | complex128 | |
Д | — | cfloat | cdouble | |
Objective-C | — | — | — | |
Общий Лисп | (комплексное целое число) | (сложный однопоплавковый) | (сложный двойной поплавок) | сложный |
Схема | — | |||
Паскаль | — | — | ||
Визуальный базовый | — | — | ||
Visual Basic .NET | — | — | System.Numerics.Complex (.NET 4.0) | |
Перл | Math::Complex | |||
Раку | complex64 | complex128 | Complex | |
Питон | complex | — | ||
JavaScript | — | — | ||
Сленг | — | — | ||
Фортран | COMPLEX(KIND = n) [а] | |||
Рубин | Complex | — | Complex | |
Скала | — | — | — | |
Семя7 | — | — | complex | |
Smalltalk | Complex | Complex | Complex | |
Windows PowerShell | — | — | ||
OCaml | — | — | Complex.t | |
Фа# | System.Numerics.Complex (.NET 4.0) | |||
Стандартный МЛ | — | — | — | |
Хаскелл ( GHC ) | — | Complex.Complex Float | Complex.Complex Double | |
Эйфелева | — | — | — | |
КОБОЛ | — | — | — | |
Математика | Complex | — | — | Complex |
n
предоставляетсяSELECTED_REAL_KIND
внутренней функцией [8] .Текст | Булев | Перечисление | Объект / Универсальный | ||
---|---|---|---|---|---|
Характер | Строка [а] | ||||
Ада [1] | Character | String , Bounded_String ,Unbounded_String | Boolean | (item1, item2, ...) | tagged null record |
АЛГОЛ 68 | char | string ,bytes | bool ,bits | — - Определяется пользователем | — |
С ( С99 ) | char ,wchar_t | — | bool [б] | enum «name» { item1, item2, ... }; | void * |
С++ (STL) | «std::»string | ||||
Objective-C | unichar | NSString * | BOOL | id | |
С# | char | string | bool | enum name { item1« = value», item2« = value», ... } | объект |
Ява | String | boolean | enum name { item1, item2, ... } | Object | |
Идти | byte ,rune | string | bool | const ( | interface{} |
Ржавчина | char | String | bool | enum name { item1« = value», item2« = value», ... } | std::any::Any |
Быстрый | Character | String | Bool | enum name { case item1, item2, ... } | Any |
Д | char | string | bool | enum name { item1, item2, ... } | std.variant.Variant |
Общий Лисп | character | string | boolean | (member item1 item2 ...) | t |
Схема | |||||
ИСЛИСП | |||||
Паскаль (ИСО) | char | — | boolean | ( item1, item2, ... ) | — |
Объектный Паскаль ( Delphi ) | string | variant | |||
Визуальный базовый | — | String | Boolean | Enum name | [[Variant type|Variant]] |
Visual Basic .NET | Char | Object | |||
Ксоджо | — | Object илиVariant | |||
Питон | — [д] | str | bool | from enum import Enum | object |
JavaScript | — [д] | String | Boolean | Object | |
Сленг | |||||
Фортран | CHARACTER(LEN = *) | CHARACTER(LEN = :), allocatable | LOGICAL(KIND = n) [ф] | CLASS(*) | |
PHP | — [д] | string | bool | (декларация типа опущена) | |
Перл | — [д] | UNIVERSAL | |||
Раку | Char | Str | Bool | enum name<item1 item2 ...> enum name <<:item1(value) :item2(value) ..>> | Mu |
Рубин | — [д] | String | Object [с] | Object | |
Скала | Char | String | Boolean | object name extends Enumeration { | Any |
Семя7 | char | string | boolean | const type: name is new enum | |
Windows PowerShell | |||||
OCaml | char | string | bool | — [э] | — |
Фа# | type name = item1 = value |item2 = value | ... | obj | |||
Стандартный МЛ | — [э] | — | |||
Хаскелл ( GHC ) | Char | String | Bool | — [э] | — |
Эйфелева | CHARACTER | STRING | BOOLEAN | — | ANY |
КОБОЛ | PIC X | PIC X(string length) илиPIC X«X...» | PIC 1«(number of digits)» илиPIC 1«1...» | — | OBJECT REFERENCE |
Математика | — [д] | String | — |
TrueClass
оценивается как истина, а все вFalseClass
оценивается как ложь.n
предоставляетсяSELECTED_INT_KIND
внутренней функцией [4] .массив фиксированного размера | динамический размер массива | |||
---|---|---|---|---|
одномерный массив | многомерный массив | одномерный массив | многомерный массив | |
Ада [1] | array (<first> .. <last>) of <type> или array (<discrete_type>) of <type> | array (<first1> .. <last1>, <first2> .. <last2>, ...) of <type> или array (<discrete_type1>, <discrete_type2>, ...) of <type> | array (<discrete_type> range <>) of <type> | array (<discrete_type1> range <>, <discrete_type2> range <>, ...) of <type> |
АЛГОЛ 68 | [first:last] или просто: [size] | [first1:last1, first2:last2] или т.п. [first1:last1][first2:last2] | flex[first:last] или просто: flex[size] | flex[first1:last1, first2:last2] или flex[first1:last1] |
С ( С99 ) | type name[size] [а] | type name[size1][size2] [а] | type *name или внутри блока: int n = ...; type name[n] | |
С++ (STL) | «std::»array<type, size> (С++11) | «std::»vector<type> | ||
С# | type[] | type[,,...] | System или System | |
Ява | type[] [б] | type[][]... [б] | ArrayList or ArrayList<type> | |
Д | type[size] | type[size1][size2] | type[] | |
Идти | [size]type | [size1][size2]...type | []type | [][]type |
Ржавчина | [type; size] | [[type; size1]; size2] | Vec<type> | Vec<Vec<type>> |
Быстрый | [type] илиArray<type> | [[type]] илиArray<Array<type>> | ||
Objective-C | NSArray | NSMutableArray | ||
JavaScript | — | — | Array [г] | |
Общий Лисп | (simple-array type (dimension)) | (simple-array type (dimension1 dimension2)) | (array type (dimension)) | (array type (dimension1 dimension2)) |
Схема | ||||
ИСЛИСП | ||||
Паскаль | array[first..last] of type [с] | array[first1..last1] of array[first2..last2] ... of type [с]или [с] array[first1..last1, first2..last2, ...] of type | — | — |
Объектный Паскаль ( Delphi ) | array of type | array of array ... of type | ||
Визуальный базовый | Dim x(last) As type | Dim x(last1, last2,...) As type | ||
Visual Basic .NET | type() | type(,,...) | System или System | |
Питон | list | |||
Сленг | x = type[size]; | x = type[size1, size2, ...]; | ||
Фортран | type :: name(size) | type :: name(size1, size2,...) | type, ALLOCATABLE :: name(:) | type, ALLOCATABLE :: name(:,:,...) |
PHP | array | |||
Перл | ||||
Раку | Array[type] or Array of type | |||
Рубин | x = Array.new(size1){ Array.new(size2) } | Array | ||
Скала | Array[type] | Array[...[Array[type]]...] | ArrayBuffer[type] | |
Семя7 | array type или array [idxType] type | array array type или array [idxType] array [idxType] type | array type или array [idxType] type | array array type или array [idxType] array [idxType] type |
Smalltalk | Array | OrderedCollection | ||
Windows PowerShell | type[] | type[,,...] | ||
OCaml | type array | type array ... array | ||
Фа# | type [] или type array | type [,,...] | System или System | |
Стандартный МЛ | type vector or type array | |||
Хаскелл ( GHC ) | x = Array.array (0, size-1) list_of_association_pairs | x = Array.array ((0, 0,...), (size1-1, size2-1,...)) list_of_association_pairs | ||
КОБОЛ | level-number type OCCURS size «TIMES». | определение одномерного массива... | level-number type OCCURS min-size TO max-size «TIMES» DEPENDING «ON» size. [э] | — |
sizeof
и&
) значения типов массивов в C автоматически преобразуются в указатель своего первого аргумента. См. Синтаксис C#Массивы для получения дополнительных сведений о синтаксисе и операциях с указателями.type x[]
работает в Java, однакоtype[] x
является предпочтительной формой объявления массива.DEPENDING ON
в COBOL не создает настоящий массив переменной длины и всегда выделяет максимальный размер массива.Простые составные типы | Алгебраические типы данных | Профсоюзы | ||
---|---|---|---|---|
Записи | Выражение кортежа | |||
Ада [1] | type name is «abstract» «tagged» «limited» [record | — | Любая комбинация записей, объединений и перечислений (а также ссылок на них, позволяющих использовать рекурсивные типы). | type name (variation : discrete_type) is record |
АЛГОЛ 68 | struct (modename «fieldname», ...); | Требуемые типы и операторы могут быть определены пользователем. | union (modename, ...); | |
С ( С99 ) | struct «name» {type name;...}; | — | — | union {type name;...}; |
Objective-C | ||||
С++ | struct «name» {type name;...}; [б] | «std::»tuple<type1..typen> | ||
С# | struct name {type name;...} | (val1, val2, ... ) | — | |
Ява | — [а] | |||
JavaScript | — | |||
Д | struct name {type name;...} | std.variant.Algebraic!(type,...) | union {type name;...} | |
Идти | struct { | |||
Ржавчина | struct name {name: type, ...} | (val1, val2, ... ) | enum name { Foo(types), ...} | union name {name: type, ...} |
Быстрый | struct name { | («name1:» val1, «name2:» val2, «name3:» val3, ... ) | enum name { case Foo«(types)» case Bar «(types)» ... } | |
Общий Лисп | (defstruct name slot-name (slot-name initial-value) (slot-name initial-value :type type) ...) | (cons val1 val2) [с] | ||
Схема | — | |||
ИСЛИСП | ||||
Паскаль | record | — | — | record |
Визуальный базовый | ||||
Visual Basic .NET | Structure name | (val1, val2, ... ) | ||
Питон | — [а] | «(»val1, val2, val3, ... «)» | — | |
Сленг | struct {name [=value], ...} | |||
Фортран | TYPE name | |||
PHP | — [а] | |||
Перл | — [д] | — | ||
Раку | — [а] | |||
Рубин | OpenStruct.new({:name => value}) | |||
Скала | case class name(«var» name: type, ...) | (val1, val2, val3, ... ) | abstract class name или или комбинация классов case и объектов case abstract class name | |
Windows PowerShell | ||||
OCaml | type name = {«mutable» name : type;...} | «(»val1, val2, val3, ... «)» | type name = Foo «of type» | Bar «of type» | ... | — |
Фа# | ||||
Стандартный МЛ | type name = {name : type,...} | (val1, val2, val3, ... ) | datatype name = Foo «of type» | Bar «of type» | ... | |
Хаскелл | data Name = Constr {name :: type,...} | data Name = Foo «types» | Bar «types» | ... | ||
КОБОЛ | level-number name type clauses. | — | — | name REDEFINES variable type. |
struct
в C++ на самом деле являются классами, но имеют публичную видимость по умолчанию итакже являются объектами POD . C++11 расширил это еще больше, чтобы заставить классы действовать идентично объектам POD во многих других случаях.переменная | постоянный | тип синоним | |
---|---|---|---|
Ада [1] | identifier : type« := initial_value» [э] | identifier : constant type := final_value | subtype identifier is type |
АЛГОЛ 68 | modename name« := initial_value»; | modename name = value; | mode synonym = modename; |
С ( С99 ) | type name« = initial_value»; | enum{ name = value }; | typedef type synonym; |
Objective-C | |||
С++ | const type name = value; | ||
С# | type name1« = initial_value», name2« = initial_value», ...; или var name = initial_value; | const type name = value, name = value, ...; или readonly type name = value, name = value, ... ; | using synonym = type; |
Д | type name« = initial_value»; или auto name = value; | const type name = value; или immutable type name = value; | alias type synonym; |
Ява | type name« = initial_value»; | final type name = value; | — |
JavaScript | var name« = initial_value»; или (начиная с ECMAScript 2015)let name« = initial_value»; | const name = value; (начиная с ECMAScript 2015) | |
Идти | var name type« = initial_value» или name := initial_value | const name «type» = value | type synonym type |
Ржавчина [ж] | let mut name«: type»« = initial_value»; static mut NAME: type = value; | let name«: type»« = initial_value»; const NAME: type = value; static NAME: type = value; | type synonym = typename; |
Быстрый | var name «: type»« = initial_value» | let name «: type» = value | typealias synonym = type |
Общий Лисп | (defparameter name initial-value) или (defvar name initial-value) | (defconstant name value) | (deftype synonym () 'type) |
Схема | (define name initial_value) | ||
ИСЛИСП | (defglobal name initial_value) или (defdynamic name initial_value) | (defconstant name value) | — |
Паскаль [а] | name: type« = initial_value» | name = value | synonym = type |
Визуальный базовый | Dim name «As type» | См. примечания слева. Константы используют тот же синтаксис, а именно:
| |
Visual Basic .NET [10] | Синтаксис объявления переменных в VB.NET необычайно сложно точно описать. Учитывая, что существуют суффиксы идентификаторов («модификаторы»):
и что
Допустимые операторы объявления имеют вид
, где для целей семантического анализа необходимо преобразовать в список только отдельных деклараторов:
и для которого, для каждого
Если | Imports synonym = type | |
Ксоджо | Dim name «As type»« = initial_value» | — | |
Питон | name«: type» = initial_value | — | synonym = type [б] |
CoffeeScript | name = initial_value | ||
Сленг | name = initial_value; | typedef struct {...} typename | |
Фортран | type :: name | type, PARAMETER :: name = value | |
PHP | $name = initial_value; | define("name", value); | — |
Перл | «my» $name« = initial_value»; [с] | use constant name => value; | |
Раку | «my «type»» $name« = initial_value»; [с] | «my «type»» constant name = value; | ::synonym ::= type |
Рубин | name = initial_value | Name = value | synonym = type [б] |
Скала | var name«: type» = initial_value | val name«: type» = value | type synonym = type |
Windows PowerShell | «[type]» $name = initial_value | — | — |
Оболочка Bash | name=initial_value | — | — |
OCaml | let name« : type ref» = ref value [г] | let name «: type» = value | type synonym = type |
Фа# | let mutable name «: type» = value | ||
Стандартный МЛ | val name «: type ref» = ref value [г] | val name «: type» = value | |
Хаскелл | «name::type;» name = value | type Synonym = type | |
Вперед | VARIABLE name (в некоторых системах вместо этого используйте)value VARIABLE name | value CONSTANT name | |
КОБОЛ | level-number name type clauses. | «0»1 name CONSTANT «AS» value. | level-number name type clauses «IS» TYPEDEF. |
Математика | name=initial_value | — | — |
!
и:=
соответственно.let
В Rust, если переменной или не задано начальное значениеlet mut
и она никогда не присваивается позже, возникает предупреждение "неиспользуемая переменная". Если для переменной или не задано значениеconst
,возникает ошибка. Для переменных, не являющихся заглавными, возникает ошибка "глобальные переменные не в верхнем регистре". После определения переменнаяstatic
бытьприсвоена только вблоке или функции.static mut
const
static mut
unsafe
если | иначе если | выберите случай | условное выражение | |
---|---|---|---|---|
Ада [1] | if condition then | if condition1 then | case expression is | (if condition1 then или (case expression is |
Семя7 | if condition then | if condition1 then | case expression of | |
Модула-2 | if condition then | if condition1 then | case expression of | |
АЛГОЛ 68 | if condition then statements «else statements» fi | if condition then statements elif condition then statements fi | case switch in statements, statements«,... out statements» esac | ( condition | valueIfTrue | valueIfFalse ) |
АЛГОЛ 68 (краткая форма) | ( condition | statements «| statements» ) | ( condition | statements |: condition | statements ) | ( variable | statements,... «| statements» ) | |
АПЛ | :If condition | :If condition | :Select expression | {condition:valueIfTrue ⋄ valueIfFalse} |
С ( С99 ) | if (condition) instructions instructions может быть отдельным оператором или блоком в форме:{ statements } | if (condition) instructions или if (condition) instructions | switch (variable) { | condition ? valueIfTrue : valueIfFalse |
Objective-C | ||||
С++ (STL) | ||||
Д | ||||
Ява | ||||
JavaScript | ||||
PHP | ||||
С# | if (condition) instructions
| if (condition) instructions | switch (variable) Все непустые случаи должны заканчиваться оператором | condition ? valueIfTrue : valueIfFalse |
Windows PowerShell | if (condition) instruction | if (condition) { instructions } | switch (variable) { case1{instructions «break;» } ... «default { instructions }»} | |
Идти | if condition {instructions} | if condition {instructions} или switch { | switch variable { | |
Быстрый | if condition {instructions} | if condition {instructions} | switch variable { | |
Перл | if (condition) {instructions} или unless (notcondition) {instructions} | if (condition) {instructions} или unless (notcondition) {instructions} | use feature "switch"; | condition ? valueIfTrue : valueIfFalse |
Раку | if condition {instructions} или unless notcondition {instructions} | if condition {instructions} | given variable { | condition ?? valueIfTrue !! valueIfFalse |
Рубин | if condition | if condition | case variable | condition ? valueIfTrue : valueIfFalse |
Скала | if (condition) {instructions} | if (condition) {instructions} | expression match { [б] | if (condition) valueIfTrue else valueIfFalse |
Smalltalk | condition ifTrue: | condition ifTrue: trueBlock ifFalse: falseBlock | ||
Общий Лисп | (when condition или или (unless condition (if condition | (cond (condition1 instructions) | (case expression | (if test then else) или (cond (test1 value1) (test2 value2) ...)) |
Схема | (when condition instructions) или (if condition (begin instructions) «(begin instructions)») | (cond (condition1 instructions) (condition2 instructions) ... «(else instructions)») | (case (variable) ((case1) instructions) ((case2) instructions) ... «(else instructions)») | (if condition valueIfTrue valueIfFalse) |
ИСЛИСП | (if condition | (cond (condition1 instructions) | (case expression | (if condition valueIfTrue valueIfFalse) |
Паскаль | if condition then begin [с] | if condition then begin [с] | case variable of [с] | |
Визуальный базовый | If condition Then Однострочный, instructions когда :instruction1 : instruction2 : ... If condition Then instructions «Else instructions» | If condition Then Однострочный: см. примечание о языках типа C; Else предложение однострочного If оператора может содержать другой однострочный If оператор. | Select« Case» variable | IIf(condition, valueIfTrue, valueIfFalse) |
Visual Basic .NET | If(condition, valueIfTrue, valueIfFalse) | |||
Ксоджо | ||||
Питон [а] | if condition : | if condition : | Питон 3.10+:match variable: | Питон 2.5+:valueIfTrue if condition else valueIfFalse |
Сленг | if (condition) { instructions } «else { instructions }» | if (condition) { instructions } else if (condition) { instructions } ... «else { instructions }» | switch (variable) { case case1: instructions } { case case2: instructions } ... | |
Фортран | IF (condition) THEN | IF (condition) THEN | SELECT CASE(variable) | |
Вперед | condition IF instructions « ELSE instructions» THEN | condition IF instructions ELSE condition IF instructions THEN THEN | value CASE | condition IF valueIfTrue ELSE valueIfFalse THEN |
OCaml | if condition then begin instructions end «else begin instructions end» | if condition then begin instructions end else if condition then begin instructions end ... «else begin instructions end» | match value with [б] | if condition then valueIfTrue else valueIfFalse |
Фа# | Облегченный режим синтаксиса: Либо в одну строку, либо с отступом, как показано ниже: Режим подробного синтаксиса: такой же, как в стандартном ML. | Режим облегченного синтаксиса: в одну строку или с отступом, как показано ниже: Режим подробного синтаксиса: такой же, как и в стандартном ML. if condition then | ||
Стандартный МЛ | if condition then «(»instructions «)» | if condition then «(»instructions «)» | case value of [б] | |
Хаскелл ( GHC ) | if condition then expression else expression или или when condition (do instructions) unless notcondition (do instructions) | result | condition = expression | case value of { [б] | |
Оболочка Bash | if condition-command; then | if condition-command; then | case "$variable" in | |
CoffeeScript | if condition then expression «else expression» или или или или if condition expression if condition unless condition expression unless condition | if condition then expression else if condition then expression «else expression» или или if condition unless condition | switch expression или switch expression | Все условия являются выражениями. |
КОБОЛ | IF condition «THEN» [г] | EVALUATE expression «ALSO expression...» | ||
Ржавчина | if condition { | if condition { | match variable { [ быть] | Все условия являются выражениями |
если | иначе если | выберите случай | условное выражение |
END-IF
Вместо точки в конце можно использовать ^d .,
) в конце ветви сопоставления может быть опущена после последней ветви сопоставления или после любой ветви сопоставления, в которой выражение является блоком (заканчивается возможно пустыми скобками сопоставления{}
).цикл while | цикл do while | (контролируемый подсчет) цикл for | foreach | |
---|---|---|---|---|
Ада [1] | while condition loop | loop | for index in «reverse» [first .. last | discrete_type] loop | for item of «reverse» iterator loop или [б] (for [all | some] [in | of] [first .. last | discrete_type | iterator] => predicate) |
АЛГОЛ 68 | «for index» «from first» «by increment» «to last» «while condition» do statements od | for key «to upb list» do «typename val=list[key];» statements od | ||
«while condition» | «while statements; condition» | «for index» «from first» «by increment» «to last» do statements od | ||
АПЛ | :While condition | :Repeat | :For var«s» :In list | :For var«s» :InEach list |
С ( С99 ) | instructions может быть отдельным оператором или блоком в форме:{ statements } while (condition) instructions | do instructions while (condition); | for («type» i = first; i <= last; i++) instructions | — |
Objective-C | for (type item in set) instructions | |||
С++ (STL) | «std::»for_each(start, end, function) Начиная с C++11 : for (type item : set) instructions | |||
С# | foreach (type item in set) instructions | |||
Ява | for (type item : set) instructions | |||
JavaScript | for (var i = first; i <= last; i++) instructions | Начиная с EcmaScript 2015: [11]
| ||
PHP | foreach (range(first, last) as $i) instructions или for ($i = first; $i <= last; $i++) instructions | foreach (set as item) instructions или foreach (set as key => item) instructions | ||
Windows PowerShell | for ($i = first; $i -le last; $i++) instructions | foreach (item in set) instructions | ||
Д | foreach (i; first ... last) instructions | foreach («type» item; set) instructions | ||
Идти | for condition { instructions } | for i := first; i <= last; i++ { instructions } | for key, item := range set { instructions } | |
Быстрый | while condition { instructions } | 2.х: 1.х:repeat { instructions } while condition do { instructions } while condition | for i = first ... last { instructions } или или for i = first ..< last+1 { instructions } for var i = first; i <= last; i++ { instructions } | for item in set { instructions } |
Перл | while (condition) { instructions } или until (notcondition) { instructions } | do { instructions } while (condition) или do { instructions } until (notcondition) | for«each» «$i» (first .. last) { instructions } или for ($i = first; $i <= last; $i++) { instructions } | for«each» «$item» (set) { instructions } |
Раку | while condition { instructions } или until notcondition { instructions } | repeat { instructions } while condition или repeat { instructions } until notcondition | for first..last -> $i { instructions } или loop ($i = first; $i <=last; $i++) { instructions } | for set« -> $item» { instructions } |
Рубин | while condition или until notcondition | begin или begin | for i in first..last или или for i in first...last+1 first.upto(last) { |i| instructions } | for item in set или set.each { |item| instructions } |
Оболочка Bash | while condition ;do или until notcondition ;do | — | for ((i = first; i <= last; ++i)) ; do | for item in set ;do |
Скала | while (condition) { instructions } | do { instructions } while (condition) | for (i <- first to last «by 1») { instructions } или first to last «by 1» foreach (i => { instructions }) | for (item <- set) { instructions } или set foreach (item => { instructions }) |
Smalltalk | conditionBlock whileTrue: | loopBlock doWhile: | first to: last do: | collection do: |
Общий Лисп | (loop или (do () (notcondition) | (loop | (loop или или (dotimes (i N) (do ((i first (1+ i))) ((>=i last)) | (loop или или или или (loop (dolist (item list) (mapc function list) (map type function sequence) |
Схема | (do () (notcondition) instructions) или (let loop () (if condition (begin instructions (loop)))) | (let loop () (instructions (if condition (loop)))) | (do ((i first (+ i 1))) ((>= i last)) instructions) или (let loop ((i first)) (if (< i last) (begin instructions (loop (+ i 1))))) | (for-each (lambda (item) instructions) list) |
ИСЛИСП | (while condition instructions) | (tagbody loop instructions (if condition (go loop)) | (for ((i first (+ i 1))) ((>= i last)) instructions) | (mapc (lambda (item) instructions) list) |
Паскаль | while condition do begin | repeat | for i := first «step 1» to last do begin [а] | for item in set do instructions |
Визуальный базовый | Do While condition или или (Visual Basic .NET использует вместо этого) Do Until notcondition While condition End While | Do или Do | i необходимо объявить заранее.
| For Each item In set |
Visual Basic .NET | For i« As type» = first To last« Step 1» [а] | For Each item« As type» In set | ||
Ксоджо | While condition | Do Until notcondition или Do | ||
Питон | while condition : | — | Питон 3.x: Питон 2.x:for i in range(first, last+1): for i in xrange(first, last+1): | for item in set: |
Сленг | while (condition) { instructions } «then optional-block» | do { instructions } while (condition) «then optional-block» | for (i = first; i <= last; i++) { instructions } «then optional-block» | foreach item(set) «using (what)» { instructions } «then optional-block» |
Фортран | DO WHILE (condition) | DO | DO I = first,last | — |
Вперед | BEGIN «instructions» condition WHILE instructions REPEAT | BEGIN instructions condition UNTIL | limit start DO instructions LOOP | — |
OCaml | while condition do instructions done | — | for i = first to last do instructions done | Array.iter (fun item -> instructions) array или List.iter (fun item -> instructions) list |
Фа# | while condition do | — | for i = first to last do | foritem in set do или Seq.iter (fun item -> instructions) set |
Стандартный МЛ | while condition do ( instructions ) | — | Array.app (fn item => instructions) array или app (fn item => instructions) list | |
Хаскелл ( GHC ) | — | Control.Monad.forM_ [first..last] (\i -> do instructions) | Control.Monad.forM_list (\item -> do instructions) | |
Эйфелева | from | |||
CoffeeScript | while condition или или или или или expression while condition while condition then expression until condition expression until condition until expression then condition | — | for i in [first..last] или или for i in [first..last] then expression expression for i in [first..last] | for item in set или или for item in set then expression expression for item in set |
КОБОЛ | PERFORM procedure-1 «THROUGH procedure-2» ««WITH» TEST BEFORE» UNTIL condition [с]или PERFORM ««WITH» TEST BEFORE» UNTIL condition | PERFORM procedure-1 «THROUGH procedure-2» «WITH» TEST AFTER UNTIL condition [с]или PERFORM «WITH» TEST AFTER UNTIL condition | PERFORM procedure-1 «THROUGH procedure-2» VARYING i FROM first BY increment UNTIL i > last [д]или [д] PERFORM VARYING i FROM first BY increment UNTIL i > last | — |
Ржавчина | while condition { | loop { | for i in first..last+1 { или for i in first..=last { | for item in set { [е]или [е] set.into_iter().for_each(|item| expression); |
step
n" используется для изменения интервала цикла. Если "step
" опущено, то интервал цикла равен 1.THRU
Вместо можно использовать ^cTHROUGH
.«IS» GREATER «THAN»
Вместо можно использовать ^d>
.std::iter::IntoIterator
.бросать | обработчик | утверждение | |
---|---|---|---|
Ада [1] | raise exception_name «with string_expression» | begin [б] | pragma Assert («Check =>» boolean_expression ««Message =>» string_expression») |
АПЛ | «string_expression» ⎕SIGNAL number_expression | :Trap number«s»_expression | «string_expression» ⎕SIGNAL 98/⍨~condition |
С ( С99 ) | longjmp(state, exception); | switch (setjmp(state)) { case 0: instructions break; case exception: instructions ... } | assert(condition); |
С++ | throw exception; | try { instructions } catch «(exception)» { instructions } ... | |
С# | try { instructions } catch «(exception« name»)» { instructions } ... «finally { instructions }» | System.Diagnostics.Debug.Assert(condition); или System.Diagnostics.Trace.Assert(condition); | |
Ява | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert condition «: description»; | |
JavaScript | try { instructions } catch (exception) { instructions} «finally { instructions }» | ? | |
Д | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert(condition); | |
PHP | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert(condition); | |
Сленг | try { instructions } catch «exception» { instructions } ... «finally { instructions }» | ? | |
Windows PowerShell | trap «[exception]» { instructions } ... instructions или try { instructions } catch «[exception]» { instructions } ... «finally { instructions }» | [Debug]::Assert(condition) | |
Objective-C | @throw exception; | @try { instructions } @catch (exception) { instructions } ... «@finally { instructions }» | NSAssert(condition, description); |
Быстрый | throw exception (2.х) | do { try expression ... instructions } catch exception { instructions } ... (2.х) | assert(condition«, description») |
Перл | die exception; | eval { instructions }; if ($@) { instructions } | ? |
Раку | try { instructions CATCH { when exception { instructions } ...}} | ? | |
Рубин | raise exception | begin | |
Smalltalk | exception raise | instructionBlock on: exception do: handlerBlock | assert: conditionBlock |
Общий Лисп | (error "exception") или или (error (error (make-condition | (handler-case или [а] (handler-bind | (assert condition) или или (assert condition (check-type var type) |
Схема ( R 6 RS ) | (raise exception) | (guard (con (condition instructions) ...) instructions) | ? |
ИСЛИСП | (error "error-string" objects) или (signal-condition condition continuable) | (with-handler | ? |
Паскаль | raise Exception.Create() | try Except on E: exception do begin instructions end; end; | ? |
Визуальный базовый | Err.Raise ERRORNUMBER | With New Try: On Error Resume Next '*** Попробуйте класс *** Частный mstrDescription As String Частный mlngNumber As Long Public Sub Catch () mstrDescription = Err . Описание mlngNumber = Err . Номер End Sub Открытое свойство Get Number () As Long Number = mlngNumber End Property Публичное свойство Получить описание () Как строковое описание = mstrDescription Конец свойства | Debug.Assert condition |
Visual Basic .NET | Throw exception или Error errorcode | Try | System.Diagnostics. Debug.Assert(condition) или System.Diagnostics.Trace.Assert(condition) |
Ксоджо | Raise exception | Try | — |
Питон | raise exception | try: | assert condition |
Фортран | — | ||
Вперед | code THROW | xt CATCH ( code or 0 ) | — |
OCaml | raise exception | try expression with pattern -> expression ... | assert condition |
Фа# | try expression with pattern -> expression ... или try expression finally expression | ||
Стандартный МЛ | raise exception «arg» | expression handle pattern => expression ... | |
Хаскелл ( GHC ) | throw exception или throwError expression | catch tryExpression catchExpression или catchError tryExpression catchExpression | assert condition expression |
КОБОЛ | RAISE «EXCEPTION» exception | USE «AFTER» EXCEPTION OBJECT class-name. или или или USE «AFTER» EO class-name. USE «AFTER» EXCEPTION CONDITION exception-name «FILE file-name». USE «AFTER» EC exception-name «FILE file-name». | — |
Ржавчина | Нет [13] | assert!(condition) |
with-simple-restart
,restart-case
иrestart-bind
определять перезапуски для использования сinvoke-restart
. Необработанные условия могут привести к тому, что реализация покажет пользователю меню перезапусков перед тем, как развернуть стек.выходной блок (перерыв) | продолжать | этикетка | ветвь ( перейти ) | возвращаемое значение от генератора | |
---|---|---|---|---|---|
Ада [1] | exit «loop_name» «when condition» | — | label: | goto label | — |
АЛГОЛ 68 | value exit; ... | do statements; skip exit; label: statements od | label: ... | go to label; ... | yield(value) ( Обратный звонок ) [14] |
АПЛ | :Leave | :Continue | label: | →label или :GoTo label | — |
С ( С99 ) | break; | continue; | label: | goto label; | — |
Objective-C | |||||
С++ (STL) | |||||
Д | |||||
С# | yield return value; | ||||
Ява | break «label»; | continue «label»; | — | ||
JavaScript | yield value«;» | ||||
PHP | break «levels»; | continue «levels»; | goto label; | yield «key =>» value; | |
Перл | last «label»; | next «label»; | |||
Раку | |||||
Идти | break «label» | continue «label» | goto label | ||
Быстрый | break «label» | continue «label» | — | ||
Оболочка Bash | break «levels» | continue «levels» | — | — | — |
Общий Лисп | (return) или или (return-from block) (loop-finish) | (tagbody tag | (go tag) | ||
Схема | |||||
ИСЛИСП | (return-from block) | (tagbody tag | (go tag) | ||
Паскаль (ИСО) | — | label: [а] | goto label; | — | |
Паскаль ( FPC ) | break; | continue; | |||
Визуальный базовый | Exit block В качестве альтернативы, для методов,Return | — | label: | GoTo label | |
Ксоджо | Continue block | ||||
Visual Basic .NET | Yield value | ||||
Питон | break | continue | — | yield value | |
РПГ IV | LEAVE; | ITER; | |||
Сленг | break; | continue; | |||
Фортран | EXIT | CYCLE | label [б] | GOTO label | — |
Рубин | break | next | |||
Windows PowerShell | break «label» | continue | |||
OCaml | — | ||||
Фа# | |||||
Стандартный МЛ | |||||
Хаскелл ( GHC ) | |||||
КОБОЛ | EXIT PERFORM или EXIT PARAGRAPH или EXIT SECTION илиEXIT. | EXIT PERFORM CYCLE | label «SECTION». | GO TO label | — |
См. рефлексивное программирование для вызова и объявления функций с помощью строк.
вызов функции | базовая/пустая функция | функция возврата значения | требуемая основная функция | |
---|---|---|---|---|
Ада [1] | foo «(parameters)» | procedure foo «(parameters)» is begin statements end foo | function foo «(parameters)» return type is begin statements end foo | — |
АЛГОЛ 68 | foo «(parameters)»; | proc foo = «(parameters)» void: ( instructions ); | proc foo = «(parameters)» rettype: ( instructions ...; retvalue ); | — |
АПЛ | «parameters» foo parameters | foo←{ statements } | foo←{ statements } | — |
С ( С99 ) | foo(«parameters») | void foo(«parameters») { instructions } | type foo(«parameters») { instructions ... return value; } | «global declarations» |
Objective-C | ||||
С++ (STL) | ||||
Ява | public static void main(String[] args) { instructions } или public static void main(String... args) { instructions } | |||
Д | int main(«char[][] args») { instructions} или или или int main(«string[] args») { instructions} void main(«char[][] args») { instructions} void main(«string[] args») { instructions} | |||
С# | То же, что и выше; альтернативно, если только одно утверждение:
| То же, что и выше; альтернативно, если достаточно просто, чтобы быть выражением:
| static void Main(«string[] args») method_body Вместо этого может возвращать int . (начиная с C# 7.1:) Может возвращать Task или Task<int> , и если так, то может быть async . | |
JavaScript | function foo(«parameters») { instructions } или или var foo = function («parameters») { instructions } var foo = new Function ("«parameter»", ..., "«last parameter»" "instructions"); | function foo(«parameters») { instructions ... return value; } | — | |
Идти | func foo(«parameters») { instructions } | func foo(«parameters») type { instructions ... return value } | func main() { instructions } | |
Быстрый | func foo(«parameters») { instructions } | func foo(«parameters») -> type { instructions ... return value } | — | |
Общий Лисп | (foo «parameters») | (defun foo («parameters») или (setf (symbol-function 'symbol) | (defun foo («parameters») | — |
Схема | (define (foo parameters) instructions) или (define foo (lambda (parameters) instructions)) | (define (foo parameters) instructions... return_value) или (define foo (lambda (parameters) instructions... return_value)) | ||
ИСЛИСП | (defun foo («parameters») | (defun foo («parameters») | ||
Паскаль | foo«(parameters)» | procedure foo«(parameters)»; «forward;»[a] | function foo«(parameters)»: type; «forward;»[a] | program name; |
Визуальный базовый | Foo(«parameters») | Sub Foo«(parameters)» | Function Foo«(parameters)»« As type» | Sub Main() |
Visual Basic .NET | То же, что и выше; альтернативно:
| Sub Main(««ByVal »args() As String») илиFunction Main(««ByVal »args() As String») As Integer | ||
Ксоджо | ||||
Питон | foo(«parameters») | def foo(«parameters»): | def foo(«parameters»): | — |
Сленг | foo(«parameters» «;qualifiers») | define foo («parameters») { instructions } | define foo («parameters») { instructions ... return value; } | public define slsh_main () { instructions } |
Фортран | foo («arguments») [с] | SUBROUTINE sub_foo («arguments») [с] | type FUNCTION foo («arguments») [с] | PROGRAM main |
Вперед | «parameters» FOO | : FOO « stack effect comment: ( before -- ) » | : FOO « stack effect comment: ( before -- after ) » | — |
PHP | foo(«parameters») | function foo(«parameters») { instructions } | function foo(«parameters») { instructions ... return value; } | — |
Перл | foo(«parameters») или &foo«(parameters)» | sub foo { «my (parameters) = @_;» instructions } | sub foo { «my (parameters) = @_;» instructions... «return» value; } | |
Раку | foo(«parameters») или &foo«(parameters)» | «multi »sub foo(parameters) { instructions } | «our «type» »«multi »sub foo(parameters) { instructions ... «return» value; } | |
Рубин | foo«(parameters)» | def foo«(parameters)» | def foo«(parameters)» | |
Ржавчина | foo(«parameters») | fn foo(«parameters») { instructions } | fn foo(«parameters») -> type { instructions } | fn main() { instructions } |
Скала | foo«(parameters)» | def foo«(parameters)»«: Unit =» { instructions } | def foo«(parameters)»«: type» = { instructions ... «return» value } | def main(args: Array[String]) { instructions } |
Windows PowerShell | foo «parameters» | function foo { instructions }; или function foo { «param(parameters)» instructions } | function foo «(parameters)» { instructions ... return value }; или function foo { «param(parameters)» instructions ... return value } | — |
Оболочка Bash | foo «parameters» | function foo { или foo () { | function foo { или foo () { | |
| ||||
OCaml | foo parameters | let «rec» foo parameters = instructions | let «rec» foo parameters = instructions... return_value | |
Фа# | [<EntryPoint>] let main args = instructions | |||
Стандартный МЛ | fun foo parameters = ( instructions ) | fun foo parameters = ( instructions... return_value ) | ||
Хаскелл | foo parameters = do | foo parameters = return_value или foo parameters = do | «main :: IO ()» | |
Эйфелева | foo («parameters») | foo («parameters») | foo («parameters»): type | [б] |
CoffeeScript | foo() | foo = -> | foo = -> value | — |
foo parameters | foo = () -> | foo = ( parameters ) -> value | ||
КОБОЛ | CALL "foo" «USING parameters» [г] | «IDENTIFICATION DIVISION.» | «IDENTIFICATION DIVISION.» | — |
«FUNCTION» foo«(«parameters»)» | — |
forward;
" для предварительных объявлений .PARAMETER
— ключевое слово языка);CALL
ключевое слово является обязательным для подпрограмм."foo"
можно использовать строковую переменную, содержащую то же значение.Where string is a signed decimal number:
string to integer | string to long integer | string to floating point | integer to string | floating point to string | |
---|---|---|---|---|---|
Ada[1] | Integer'Value (string_expression) | Long_Integer'Value (string_expression) | Float'Value (string_expression) | Integer'Image (integer_expression) | Float'Image (float_expression) |
ALGOL 68 with general, and then specific formats | With prior declarations and association of: string buf := "12345678.9012e34 "; file proxy; associate(proxy, buf); | ||||
get(proxy, ivar); | get(proxy, livar); | get(proxy, rvar); | put(proxy, ival); | put(proxy, rval); | |
getf(proxy, ($g$, ivar)); or getf(proxy, ($dddd$, ivar)); | getf(proxy, ($g$, livar)); or getf(proxy, ($8d$, livar)); | getf(proxy, ($g$, rvar)); or getf(proxy, ($8d.4dE2d$, rvar)); | putf(proxy, ($g$, ival)); or putf(proxy, ($4d$, ival)); | putf(proxy, ($g(width, places, exp)$, rval)); or putf(proxy, ($8d.4dE2d$, rval)); | |
APL | ⍎string_expression | ⍎string_expression | ⍎string_expression | ⍕integer_expression | ⍕float_expression |
C (C99) | integer = atoi(string); | long = atol(string); | float = atof(string); | sprintf(string, "%i", integer); | sprintf(string, "%f", float); |
Objective-C | integer = [string intValue]; | long = [string longLongValue]; | float = [string doubleValue]; | string = [NSString stringWithFormat | string = [NSString stringWithFormat |
C++ (STL) | «std::»istringstream(string) >> number; | «std::»ostringstream o; o << number; string = o.str(); | |||
C++11 | integer = «std::»stoi(string); | long = «std::»stol(string); | float = «std::»stof(string); double = «std::»stod(string); | string = «std::»to_string(number); | |
C# | integer = int.Parse | long = long.Parse | float = float.Parse double = double.Parse | string = number | |
D | integer = std.conv.to!int | long = std.conv.to!long | float = std.conv.to!float double = std.conv.to!double | string = std.conv.to!string | |
Java | integer = Integer.parseInt | long = Long.parseLong | float = Float.parseFloat double = Double.parseDouble | string = Integer.toString string = String.valueOf | string = Float.toString string = Double.toString |
JavaScript[a] | integer = parseInt(string); | float = parseFloat(string); float = new Number (string); float = Number (string); float = +string; | string = number.toString (); string = String (number); string = number+""; string = `${number}` | ||
Go | integer, error = strconv.Atoi(string) | long, error = strconv.ParseInt | float, error = strconv.ParseFloat | string = strconv.Itoa(integer) string = strconv.FormatInt string = fmt.Sprint(integer) | string = strconv.FormatFloat string = fmt.Sprint |
Rust[d] | string.parse::<i32>() i32::from_str(string) | string.parse::<i64>() i64::from_str(string) | string.parse::<f64>() f64::from_str(string) | integer.to_string() | float.to_string() |
Common Lisp | (setf integer (parse-integer string)) | (setf float (read-from-string string)) | (setf string (princ-to-string number)) | ||
Scheme | (define number (string->number string)) | (define string (number->string number)) | |||
ISLISP | (setf integer (convert string <integer>)) | (setf float (convert string <float>)) | (setf string (convert number <string>)) | ||
Pascal | integer := StrToInt(string); | float := StrToFloat(string); | string := IntToStr(integer); | string := FloatToStr(float); | |
Visual Basic | integer = CInt(string) | long = CLng(string) | float = CSng(string) | string = CStr(number) | |
Visual Basic .NET (can use both VB syntax above and .NET methods shown right) | integer = Integer.Parse | long = Long.Parse | float = Single.Parse double = Double.Parse | string = number | |
Xojo | integer = Val(string) | long = Val(string) | double = Val(string) double = CDbl(string) | string = CStr(number) or string = Str(number) | |
Python | integer = int(string) | long = long(string) | float = float(string) | string = str(number) | |
S-Lang | integer = atoi(string); | long = atol(string); | float = atof(string); | string = string(number); | |
Fortran | READ(string,format) number | WRITE(string,format) number | |||
PHP | integer = intval(string); or integer = (int)string; | float = floatval(string); float = (float)string; | string = "$number"; or string = strval(number); or string = (string)number; | ||
Perl[b] | number = 0 + string; | string = "number"; | |||
Raku | number = +string; | string = ~number; | |||
Ruby | integer = string.to_i or integer = Integer(string) | float = string.to_f float = Float(string) | string = number.to_s | ||
Scala | integer = string.toInt | long = string.toLong | float = string.toFloat double = string.toDouble | string = number.toString | |
Smalltalk | integer := Integer readFrom: string | float := Float readFrom: string | string := number asString | ||
Windows PowerShell | integer = [int]string | long = [long]string | float = [float]string | string = [string]number; or string = "number"; or string = (number).ToString() | |
OCaml | let integer = int_ | let float = float_ | let string = string_ | let string = string_ | |
F# | let integer = int string | let integer = int64 string | let float = float string | let string = string number | |
Standard ML | val integer = Int | val float = Real | val string = Int | val string = Real | |
Haskell (GHC) | number = read string | string = show number | |||
COBOL | MOVE «FUNCTION» NUMVAL(string)[c] TO number | MOVE number TO numeric-edited |
NUMVAL-C
or NUMVAL-F
may be used instead of NUMVAL
.str::parse
and FromStr::from_str return a Result
that contains the specified type if there is no error. The turbofish (::<_>
) on str::parse
can be omitted if the type can be inferred from context.read from | write to | ||
---|---|---|---|
stdin | stdout | stderr | |
Ada[1] | Get (x) | Put (x) | Put (Standard_Error, x) |
ALGOL 68 | readf(($format$, x)); or getf(stand in, ($format$, x)); | printf(($format$, x)); or putf(stand out, ($format$, x)); | putf(stand error, ($format$, x)); [a] |
APL | x←⎕ | ⎕←x | ⍞←x |
C (C99) | scanf(format, &x); or fscanf(stdin, format, &x); [b] | printf(format, x); or fprintf(stdout, format, x); [c] | fprintf(stderr, format, x); [d] |
Objective-C | data = [[NSFileHandle fileHandleWithStandardInput] readDataToEndOfFile]; | [[NSFileHandle fileHandleWithStandardOutput] writeData:data]; | [[NSFileHandle fileHandleWithStandardError] writeData:data]; |
C++ | «std::»cin >> x; or «std::»getline(«std::»cin, str); | «std::»cout << x; | «std::»cerr << x; or «std::»clog << x; |
C# | x = Console.Read(); or x = Console.ReadLine(); | Console.Write(«format, »x); or Console.WriteLine(«format, »x); | Console.Error or Console.Error |
D | x = std.stdio.readln() | std.stdio.write(x) or std.stdio.writeln(x) or std.stdio.writef(format, x) or std.stdio.writefln(format, x) | stderr.write(x) or stderr.writeln(x) or std.stdio or std.stdio |
Java | x = System.in.read(); or x = new Scanner(System.in).nextInt(); or x = new Scanner(System.in).nextLine(); | System.out.print(x); or System.out.printf(format, x); or System.out.println(x); | System.err.print(x); or System.err.printf(format, x); or System.err.println(x); |
Go | fmt.Scan(&x) or fmt.Scanf(format, &x) or x = bufio.NewReader(os.Stdin).ReadString('\n') | fmt.Println(x) or fmt.Printf(format, x) | fmt.Fprintln(os.Stderr, x) or fmt.Fprintf(os.Stderr, format, x) |
Swift | x = readLine() (2.x) | print(x) (2.x)println(x) (1.x) | |
JavaScript Web Browser implementation | document.write(x) | ||
JavaScript Active Server Pages | Response.Write(x) | ||
JavaScript Windows Script Host | x = WScript.StdIn.Read(chars) or x = WScript.StdIn.ReadLine() | WScript.Echo(x) or WScript.StdOut.Write(x) or WScript.StdOut.WriteLine(x) | WScript.StdErr.Write(x) or WScript.StdErr.WriteLine(x) |
Common Lisp | (setf x (read-line)) | (princ x) or (format t format x) | (princ x *error-output*) or
|
Scheme (R6RS) | (define x (read-line)) | (display x) or
| (display x (current-error-port)) or
|
ISLISP | (setf x (read-line)) |
|
|
Pascal | read(x); or readln(x); | write(x); or writeln(x); | write(stderr, x); or writeln(stderr, x); |
Visual Basic | Input« prompt,» x | Print x or ? x | — |
Visual Basic .NET | x = Console.Read() or x = Console.ReadLine() | Console.Write(«format,»x) or Console.WriteLine(«format, »x) | Console.Error or Console.Error |
Xojo | x = StandardInputStream.Read() or x = StandardInputStreame.ReadLine() | StandardOutputStream.Write(x) or StandardOutputStream.WriteLine(x) | StdErr.Write(x) or StdErr.WriteLine(x) |
Python 2.x | x = raw_input(«prompt») | print x or sys.stdout.write(x) |
or sys.stderr.write(x) |
Python 3.x | x = input(«prompt») | print(x«, end=""») | print(x«, end=""», file=sys.stderr) |
S-Lang | fgets (&x, stdin) | fputs (x, stdout) | fputs (x, stderr) |
Fortran | READ(*,format) variable names or READ(INPUT_UNIT,format) variable names [e] | WRITE(*,format) expressions or WRITE(OUTPUT_UNIT,format) expressions [e] | WRITE(ERROR_UNIT,format) expressions [e] |
Forth | buffer length ACCEPT ( # chars read ) | buffer length TYPE | — |
PHP | $x = fgets(STDIN); or $x = fscanf(STDIN, format); | print x; or echo x; or printf(format, x); | fprintf(STDERR, format, x); |
Perl | $x = <>; or $x = <STDIN>; | print x; or printf format, x; | print STDERR x; or printf STDERR format, x; |
Raku | $x = $*IN.get; | x.print or x.say | x.note or $*ERR.print(x) or $*ERR.say(x) |
Ruby | x = gets | puts x or printf(format, x) | $stderr.puts(x) or $stderr.printf(format, x) |
Windows PowerShell | $x = Read-Host«« -Prompt» text»; or $x = [Console]::Read(); or $x = [Console]::ReadLine() | x; or Write-Output x; or echo x | Write-Error x |
OCaml | let x = read_int () or let str = read_line () or Scanf.scanf format (fun x ... -> ...) | print_int x or print_endline str or Printf.printf format x ... | prerr_int x or prerr_endline str or Printf.eprintf format x ... |
F# | let x = System.Console.ReadLine() | printf format x ... or printfn format x ... | eprintf format x ... or eprintfn format x ... |
Standard ML | val str = TextIO.inputLIne TextIO.stdIn | print str |
|
Haskell (GHC) | x <- readLn or str <- getLine | print x or putStrLn str | hPrint stderr x or hPutStrLn stderr str |
COBOL | ACCEPT x | DISPLAY x |
read
, write
, get
, and put
.gets(x)
and fgets(x, length, stdin)
read unformatted text from stdin. Use of gets is not recommended.puts(x)
and fputs(x, stdout)
write unformatted text to stdout.fputs(x, stderr)
writes unformatted text to stderrArgument values | Argument counts | Program name / Script name | |
---|---|---|---|
Ada[1] | Argument (n) | Argument_Count | Command_Name |
C (C99) | argv[n] | argc | first argument |
Objective-C | |||
C++ | |||
C# | args[n] | args.Length | Assembly.GetEntryAssembly() |
Java | args.length | ||
D | first argument | ||
JavaScript Windows Script Host implementation | WScript.Arguments(n) | WScript.Arguments.length | WScript.ScriptName or WScript.ScriptFullName |
Go | os.Args[n] | len(os.Args) | first argument |
Rust[a] | std::env::args().nth(n) std::env::args_os().nth(n) | std::env::args().count() std::env::args_os().count() | std::env::args().next() std::env::args_os().next() |
Swift | Process.arguments[n] orProcess.unsafeArgv[n] | Process.arguments.count orProcess.argc | first argument |
Common Lisp | ? | ? | ? |
Scheme (R6RS) | (list-ref (command-line) n) | (length (command-line)) | first argument |
ISLISP | — | — | — |
Pascal | ParamStr(n) | ParamCount | first argument |
Visual Basic | Command [b] | — | App.Path |
Visual Basic .NET | CmdArgs(n) | CmdArgs.Length | [Assembly].GetEntryAssembly().Location |
Xojo | System.CommandLine | (string parsing) | Application.ExecutableFile.Name |
Python | sys.argv[n] | len(sys.argv) | first argument |
S-Lang | __argv[n] | __argc | first argument |
Fortran | DO i = 1,argc | argc = COMMAND_ARGUMENT_COUNT () | CALL GET_COMMAND_ARGUMENT (0,progname) |
PHP | $argv[n] | $argc | first argument |
Bash shell | $n ($1, $2, $3, ...) $@ (all arguments) | $# | $0 |
Perl | $ARGV[n] | scalar(@ARGV) | $0 |
Raku | @*ARGS[n] | @*ARGS.elems | $PROGRAM_NAME |
Ruby | ARGV[n] | ARGV.size | $0 |
Windows PowerShell | $args[n] | $args.Length | $MyInvocation.MyCommand |
OCaml | Sys.argv.(n) | Array.length Sys.argv | first argument |
F# | args.[n] | args.Length | Assembly.GetEntryAssembly() |
Standard ML | List.nth (CommandLine.arguments (), n) | length (CommandLine.arguments ()) | CommandLine.name () |
Haskell (GHC) | do { args <- System.getArgs; return length args !! n } | do { args <- System.getArgs; return length args } | System.getProgName |
COBOL | [c] | — |
std::env::args
and std::env::args_os
return iterators, std::env::Args
and std::env::ArgsOs
respectively. Args
converts each argument to a String
and it panics if it reaches an argument that cannot be converted to UTF-8. ArgsOs
returns a non-lossy representation of the raw strings from the operating system (std::ffi::OsString
), which can be invalid UTF-8.Split(string)
.ACCEPT
statements.Shell command | Execute program | Replace current program with new executed program | |
---|---|---|---|
Ada[1] | Not part of the language standard. Commonly done by compiler provided packages or by interfacing to C or POSIX.[16] | ||
C | system("command"); | execl(path, args); or execv(path, arglist); | |
C++ | |||
Objective-C | [NSTask launchedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)arguments]; | ||
C# | System.Diagnostics | ||
F# | |||
Go | exec.Run(path, argv, envv, dir, exec.DevNull, exec.DevNull, exec.DevNull) | os.Exec(path, argv, envv) | |
Visual Basic | Interaction.Shell(command «, WindowStyle» «, isWaitOnReturn») | ||
Visual Basic .NET | Microsoft.VisualBasic | System.Diagnostics | |
Xojo | Shell.Execute(command «, Parameters») | FolderItem.Launch(parameters, activate) | — |
D | std.process.system("command"); | std.process.execv(path, arglist); | |
Java | Runtime.exec(command); or new ProcessBuilder(command).start(); | ||
JavaScript Windows Script Host implementation |
| WshShell.Exec(command) | |
Common Lisp | (uiop:run-program command) | ||
Scheme | (system command) | ||
ISLISP | — | — | — |
Pascal | system(command); | ||
OCaml | Sys.command command, Unix.open_process_full command env (stdout, stdin, stderr),... | Unix.create_process prog args new_stdin new_stdout new_stderr, ... | Unix.execv prog args or Unix.execve prog args env |
Standard ML | OS.Process.system command | Unix.execute (path, args) | Posix.Process.exec (path, args) |
Haskell (GHC) | System.system command | System.Process | Posix.Process |
Perl | system(command) or $output = `command` or $output = qx(command) | exec(path, args) | |
Ruby | system(command) or output = `command` | exec(path, args) | |
PHP | system(command) or $output = `command` or exec(command) or passthru(command) | ||
Python | os.system(command) or subprocess.Popen(command) | subprocess.call(["program", "arg1", "arg2", ...]) | os.execv(path, args) |
S-Lang | system(command) | ||
Fortran | CALL EXECUTE_COMMAND_LINE (COMMAND «, WAIT» «, EXITSTAT» «, CMDSTAT» «, CMDMSG») [a] | ||
Windows PowerShell | [Diagnostics.Process]::Start(command) | «Invoke-Item »program arg1 arg2 ... | |
Bash shell | output=`command` or output=$(command) | program arg1 arg2 ... |
^a Fortran 2008 or newer.[17]