HOME

TheInfoList



OR:

This article compares a large number of
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
s by tabulating their
data type In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
s, their expression, statement, and declaration
syntax In linguistics, syntax () is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure ( constituenc ...
, and some common operating-system interfaces. __TOC__


Conventions of this article

Generally, ''var'', , or is how variable names or other non-literal values to be interpreted by the reader are represented. The rest is literal code.
Guillemet Guillemets (, also , , ) are a pair of punctuation marks in the form of sideways double chevrons, and , used as quotation marks in a number of languages. In some of these languages "single" guillemets, and , are used for a quotation inside a ...
s ( and ) enclose optional sections. indicates a necessary (whitespace) indentation. Note that the tables are not sorted lexicographically ascending by programming-language name by default, and that some programming languages have entries in some tables but not others.


Type identifiers


Integer An integer is the number zero (), a positive natural number (, , , etc.) or a negative integer with a minus sign ( −1, −2, −3, etc.). The negative numbers are the additive inverses of the corresponding positive numbers. In the languag ...
s

* The ''standard'' constants and can be used to determine how many s and s can be usefully prefixed to and . The actual sizes of , , and are available as the constants , , and etc. * Commonly used for characters. * The ALGOL 68, C and C++ languages do not specify the exact width of the integer types , , , and ( C99,
C++11 C11, C.XI, C-11 or C.11 may refer to: Transport * C-11 Fleetster, a 1920s American light transport aircraft for use of the United States Assistant Secretary of War * Fokker C.XI, a 1935 Dutch reconnaissance seaplane * LET C-11, a license-build ...
) , so they are implementation-dependent. In C and C++ , , and types are required to be at least 16, 32, and 64 bits wide, respectively, but can be more. The type is required to be at least as wide as and at most as wide as , and is typically the width of the word size on the processor of the machine (i.e. on a 32-bit machine it is often 32 bits wide; on 64-bit machines it is sometimes 64 bits wide). C99 and
C++11 C11, C.XI, C-11 or C.11 may refer to: Transport * C-11 Fleetster, a 1920s American light transport aircraft for use of the United States Assistant Secretary of War * Fokker C.XI, a 1935 Dutch reconnaissance seaplane * LET C-11, a license-build ...
also define the exact-width types in the
stdint.h In the C programming language, data types constitute the semantics and characteristics of storage of data elements. They are expressed in the language syntax in form of declarations for memory locations or variables. Data types also determin ...
header. See C syntax#Integral types for more information. In addition the types and are defined in relation to the address size to hold unsigned and signed integers sufficiently large to handle array indices and the difference between pointers. * Perl 5 does not have distinct types. Integers, floating point numbers, strings, etc. are all considered "scalars". * PHP has two arbitrary-precision libraries. The BCMath library just uses strings as datatype. The GMP library uses an internal "resource" type. * The value of is provided by the intrinsic function. *
ALGOL 68 ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously d ...
G's runtime option can set precision for s to the required "number" significant digits. The ''standard'' constants and can be used to determine actual precision. *
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily u ...
allows the specification of a required precision and will automatically select an available type capable of representing the specified precision. "", for example, would require a signed variable of four decimal digits precision. If specified as a binary field, this would select a 16-bit signed type on most platforms. *
Smalltalk Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan ...
automatically chooses an appropriate representation for integral numbers. Typically, two representations are present, one for integers fitting the native word size minus any tag bit () and one supporting arbitrary sized integers (). Arithmetic operations support polymorphic arguments and return the result in the most appropriate compact representation. *
Ada Ada may refer to: Places Africa * Ada Foah, a town in Ghana * Ada (Ghana parliament constituency) * Ada, Osun, a town in Nigeria Asia * Ada, Urmia, a village in West Azerbaijan Province, Iran * Ada, Karaman, a village in Karaman Province, T ...
range types are checked for boundary violations at run-time (as well as at compile-time for static expressions). Run-time boundary violations raise a "constraint error" exception. Ranges are not restricted to powers of two. Commonly predefined Integer subtypes are: Positive (range 1 .. Integer'Last) and Natural (range 0 .. Integer'Last). (8 bits), (16 bits) and (64 bits) are also commonly predefined, but not required by the Ada standard. Runtime checks can be disabled if performance is more important than integrity checks. *
Ada Ada may refer to: Places Africa * Ada Foah, a town in Ghana * Ada (Ghana parliament constituency) * Ada, Osun, a town in Nigeria Asia * Ada, Urmia, a village in West Azerbaijan Province, Iran * Ada, Karaman, a village in Karaman Province, T ...
modulo types implement modulo arithmetic in all operations, i.e. no range violations are possible. Modulos are not restricted to powers of two. * Commonly used for characters like Java's char. * in PHP has the same width as type in C has on that system. * Erlang is dynamically typed. The type identifiers are usually used to specify types of record fields and the argument and return types of functions. * When it exceeds one word.


Floating point In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can ...

* The ''standard'' constants and can be used to determine how many s and s can be usefully prefixed to and . The actual sizes of , , and are available as the constants , and etc. With the constants , and available for each type's
machine epsilon Machine epsilon or machine precision is an upper bound on the relative approximation error due to rounding in floating point arithmetic. This value characterizes computer arithmetic in the field of numerical analysis, and by extension in the sub ...
. * declarations of single precision often are not honored * The value of is provided by the intrinsic function. *
ALGOL 68 ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously d ...
G's runtime option can set precision for s to the required "number" significant digits. The ''standard'' constants and can be used to determine actual precision. * These
IEEE The Institute of Electrical and Electronics Engineers (IEEE) is a 501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operati ...
floating-point types will be introduced in the next COBOL standard. * Same size as on many implementations. * Swift supports 80-bit
extended precision Extended precision refers to floating-point number formats that provide greater precision than the basic floating-point formats. Extended precision formats support a basic format by minimizing roundoff and overflow errors in intermediate value ...
floating point type, equivalent to in C languages.


Complex number In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the fo ...
s

* The value of is provided by the intrinsic function. * Generic type which can be instantiated with any base floating point type.


Other variable types

* specifically, strings of arbitrary length and automatically managed. * This language represents a boolean as an integer where false is represented as a value of zero and true by a non-zero value. * All values evaluate to either true or false. Everything in ' evaluates to true and everything in ' evaluates to false. * This language does not have a separate character type. Characters are represented as strings of length 1. * Enumerations in this language are algebraic types with only nullary constructors * The value of ' is provided by the intrinsic function.


Derived types


Array An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...

* In most expressions (except the sizeof and operators), values of array types in C are automatically converted to a pointer of its first argument. See C syntax#Arrays for further details of syntax and pointer operations. * The C-like ''type'' x[] works in Java, however ''type''[] x is the preferred form of array declaration. * Subranges are used to define the bounds of the array. * JavaScript's array are a special kind of object. * The clause in COBOL does not create a ''true'' variable length array and will always allocate the maximum size of the array.


Other types

* Only classes are supported. * s in C++ are actually classes, but have default public visibility and ''are'' also POD objects. C++11 extended this further, to make classes act identically to POD objects in many more cases. * pair only * Although Perl doesn't have records, because Perl's type system allows different data types to be in an array, "hashes" (associative arrays) that don't have a variable index would effectively be the same as records. * Enumerations in this language are algebraic types with only nullary constructors


Variable and constant declarations

* Pascal has declaration blocks. See functions. * Types are just regular objects, so you can just assign them. * In Perl, the "my" keyword scopes the variable into the block. * Technically, this does not declare ''name'' to be a mutable variable—in ML, all names can only be bound once; rather, it declares ''name'' to point to a "reference" data structure, which is a simple mutable cell. The data structure can then be read and written to using the and operators, respectively. * If no initial value is given, an invalid value is automatically assigned (which will trigger a run-time exception if it used before a valid value has been assigned). While this behaviour can be suppressed it is recommended in the interest of predictability. If no invalid value can be found for a type (for example in case of an unconstraint integer type), a valid, yet predictable value is chosen instead. * In Rust, if no initial value is given to a or variable and it is never assigned to later, there is a
"unused variable" warning
If no value is provided for a or or variable, there is an error. There is

error for non-uppercase variables. After it is defined, a variable can only be assigned to in an block or function.


Control flow In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...


Conditional Conditional (if then) may refer to: *Causal conditional, if X then Y, where X is a cause of Y *Conditional probability, the probability of an event A given that another event B has occurred *Conditional proof, in logic: a proof that asserts a co ...
statements

* A single instruction can be written on the same line following the colon. Multiple instructions are grouped together in a block which starts on a newline (The indentation is required). The conditional expression syntax does not follow this rule. * This is
pattern matching In computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually has to be exact: "either it will or will not be ...
and is similar to select case but not the same. It is usually used to deconstruct
algebraic data type In computer programming, especially functional programming and type theory, an algebraic data type (ADT) is a kind of composite type, i.e., a type formed by combining other types. Two common classes of algebraic types are product types (i.e., ...
s. * In languages of the Pascal family, the semicolon is not part of the statement. It is a separator between statements, not a terminator. * END-IF may be used instead of the period at the end. * In Rust, the comma () at the end of a match arm can be omitted after the last match arm, or after any match arm in which the expression is a block (ends in possibly empty matching brackets ).


Loop statements

* "step n" is used to change the loop interval. If "step" is omitted, then the loop interval is 1. * This implements the
universal quantifier In mathematical logic, a universal quantification is a type of quantifier, a logical constant which is interpreted as "given any" or "for all". It expresses that a predicate can be satisfied by every member of a domain of discourse. In other ...
("for all" or "\forall") as well as the
existential quantifier In predicate logic, an existential quantification is a type of quantifier, a logical constant which is interpreted as "there exists", "there is at least one", or "for some". It is usually denoted by the logical operator symbol ∃, which, w ...
("there exists" or "\exists"). * THRU may be used instead of THROUGH. * «IS» GREATER «THAN» may be used instead of >. * Type of set expression must implement trait std::iter::IntoIterator.


Exceptions

* Common Lisp allows , and to define restarts for use with . Unhandled conditions may cause the implementation to show a restarts menu to the user before unwinding the stack. * Uncaught exceptions are propagated to the innermost dynamically enclosing execution. Exceptions are not propagated across tasks (unless these tasks are currently synchronised in a rendezvous).


Other control flow statements

* Pascal has declaration blocks. See functions. * label must be a number between 1 and 99999.


Functions

See
reflection Reflection or reflexion may refer to: Science and technology * Reflection (physics), a common wave phenomenon ** Specular reflection, reflection from a smooth surface *** Mirror image, a reflection in a mirror or in water ** Signal reflection, in ...
for calling and declaring functions by strings. * Pascal requires "" for
forward declaration In computer programming, a forward declaration is a declaration of an identifier (denoting an entity such as a type, a variable, a constant, or a function) for which the programmer has not yet given a complete definition. It is required for a com ...
s. * Eiffel allows the specification of an application's root class and feature. * In Fortran, function/subroutine parameters are called arguments (since is a language keyword); the keyword is required for subroutines. * Instead of using , a string variable may be used instead containing the same value.


Type conversion In computer science, type conversion, type casting, type coercion, and type juggling are different ways of changing an expression from one data type to another. An example would be the conversion of an integer value into a floating point valu ...
s

Where ''string'' is a signed decimal number: * JavaScript only uses floating point numbers so there are some technicalities. * Perl doesn't have separate types. Strings and numbers are interchangeable. * or may be used instead of . *

is available to convert any type that has an implementation of th

trait. Both an

return a that contains the specified type if there is no error. The turbofish () on can be omitted if the type can be inferred from context.


Standard stream I/O

* ALGOL 68 additionally as the "unformatted" transput routines: read, write, get, and put. * gets(x) and
fgets The C programming language provides many standard library functions for file input and output. These functions make up the bulk of the C standard library header . The functionality descends from a "portable I/O package" written by Mike Lesk at ...
(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 stderr * are defined in the module.


Reading command-line arguments

* In Rust, and return iterators, and respectively. converts each argument to a and it panics if it reaches an argument that cannot be converted to
UTF-8 UTF-8 is a variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''. UTF-8 is capable of e ...
. returns a non-lossy representation of the raw strings from the operating system (), which can be invalid UTF-8. * In Visual Basic, command-line arguments are not separated. Separating them requires a split function Split(''string''). * The COBOL standard includes no means to access command-line arguments, but common compiler extensions to access them include defining parameters for the main program or using statements.


Execution of commands

Fortran 2008 or newer.


References

{{Reflist Programming constructs *Basic instructions