Comparison of Programming Languages
From Unify Community Wiki
(Difference between revisions)
(→Comparison: removed see also; pending merger) |
(merged in "Comparison of Basic Instructions of Programming Languages" article) |
||
Line 1: | Line 1: | ||
− | This is a comparison of the | + | This is a comparison of the features and instructions of the three high-level programming languages offered by Unity: [http://en.wikipedia.org/wiki/JavaScript JavaScript], [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#], and [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo]. |
+ | |||
+ | |||
+ | |||
+ | == Conventions of This Article == | ||
+ | |||
+ | The '''bold''' is the literal code. The non-bold is interpreted by the reader. Statements in [http://en.wikipedia.org/wiki/Guillemets guillemets] (« … ») are optional. {{keypress|tab}} indicates a necessary indent. | ||
+ | |||
+ | The following tables compare code differences of the Unity programming languages. See also the [[Comparison of Programming Languages]] for general information. | ||
+ | |||
+ | |||
== Features == | == Features == | ||
− | The following tables compares | + | The following tables compares features of the Unity programming languages. |
<!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
Line 58: | Line 68: | ||
| static with optional dynamic typing | | static with optional dynamic typing | ||
| dynamic with optional static typing | | dynamic with optional static typing | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | == Type Identifiers == | ||
+ | |||
+ | |||
+ | === [http://en.wikipedia.org/wiki/Integer_(computer_science) Integer] === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! 8 bit ([http://en.wikipedia.org/wiki/Byte byte]) Signed | ||
+ | | | ||
+ | | sbyte | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 8 bit ([http://en.wikipedia.org/wiki/Byte byte]) Unsigned | ||
+ | | byte | ||
+ | | byte | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 16 bit ([http://en.wikipedia.org/wiki/Short_integer short integer]) Signed | ||
+ | | short | ||
+ | | short | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 16 bit ([http://en.wikipedia.org/wiki/Short_integer short integer]) Unsigned | ||
+ | | | ||
+ | | ushort | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 32 bit Signed | ||
+ | | int | ||
+ | | int | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 32 bit Unsigned | ||
+ | | | ||
+ | | uint | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 64 bit ([http://en.wikipedia.org/wiki/Long_integer long integer]) Signed | ||
+ | | long | ||
+ | | long | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! 64 bit [http://en.wikipedia.org/wiki/Long_integer long integer]) Unsigned | ||
+ | | | ||
+ | | ulong | ||
+ | | {{n/a}} | ||
+ | |} | ||
+ | |||
+ | === [http://en.wikipedia.org/wiki/Floating_point Floating Point] === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Single_precision Single Precision] | ||
+ | | single | ||
+ | | float | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Double_precision Double Precision] | ||
+ | | double | ||
+ | | double | ||
+ | | Number | ||
+ | |- | ||
+ | ! Arbitrarily Precise ([http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic bignum]) | ||
+ | | decimal | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Other Types === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! Text [http://en.wikipedia.org/wiki/Character_(computing) Character] | ||
+ | | {{n/a}} | ||
+ | | char | ||
+ | | {{n/a}} | ||
+ | |- | ||
+ | ! Text [http://en.wikipedia.org/wiki/String_(computer_science) String] | ||
+ | | string | ||
+ | | string | ||
+ | | String | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Boolean_datatype Boolean]) | ||
+ | | bool | ||
+ | | bool | ||
+ | | Boolean | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Object_(computer_science) Object]/[http://en.wikipedia.org/wiki/Universal_type Universal]) | ||
+ | | object | ||
+ | | object | ||
+ | | Object | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | == Derived Types == | ||
+ | |||
+ | === [http://en.wikipedia.org/wiki/Array_data_type Array] === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! one-dimensional fixed size array | ||
+ | | '''('''type''')''' | ||
+ | | type'''['''size''']''' | ||
+ | | type'''[]''' | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Array#Multi-dimensional_array multi-dimensional] fixed size array | ||
+ | | | ||
+ | | type'''['''size<sub>1</sub>''', '''size<sub>2</sub>''','''...''']''' | ||
+ | | | ||
+ | |- | ||
+ | ! one-dimensional dynamic size array | ||
+ | | List | ||
+ | | '''System.Collections.ArrayList'''<br/>or<br/>'''System.Collections.Generic.List<'''type'''>''' | ||
+ | | Array | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Array#Multi-dimensional_array multi-dimensional] dynamic size array | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Other Types === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Record_(computer_science) Record] Simple Composite Types | ||
+ | | | ||
+ | | '''struct''' name '''{'''type name''';'''...'''}''' | ||
+ | | | ||
+ | |- | ||
+ | ! [http://en.wikipedia.org/wiki/Enumerated_type Enumeration] Simple Composite Types | ||
+ | | | ||
+ | '''enum''' condition''':'''<br/> | ||
+ | {{keypress|tab}} '''item<sub>1</sub>'''<br/> | ||
+ | {{keypress|tab}} «'''item<sub>2</sub>'''<br/> | ||
+ | {{keypress|tab}} …»<br/> | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | == Basic Unity-Specific Types == | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | == Declarations == | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | == Flow Control == | ||
+ | |||
+ | === Conditional Statements === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Loop Statements === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Exceptions === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Other Flow Control Statements === | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | == Functions == | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | == Type Conversions == | ||
+ | |||
+ | <!-- This table would be tons easier to read if we had tables styles with cell borders and header cell support. --> | ||
+ | {| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;" | ||
+ | |- | ||
+ | ! Language | ||
+ | ! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo] | ||
+ | ! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#] | ||
+ | ! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | | | ||
|} | |} | ||
Revision as of 04:25, 4 August 2009
This is a comparison of the features and instructions of the three high-level programming languages offered by Unity: JavaScript, C#, and Boo.
Contents |
Conventions of This Article
The bold is the literal code. The non-bold is interpreted by the reader. Statements in guillemets (« … ») are optional. tab indicates a necessary indent.
The following tables compare code differences of the Unity programming languages. See also the Comparison of Programming Languages for general information.
Features
The following tables compares features of the Unity programming languages.
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Paradigm(s) | |||
Standardized Variation? | Yes | Yes, ECMA, ISO ECMA-334; ISO/IEC 23270:2006 | No |
Type Strength | strong | strong | weak |
Type Safety | safe | safe | |
Expression of Types | implicit with optional explicit typing | explicit | implicit |
Compatibility Among Composite Types | name-based | ||
Type Checking | static with optional dynamic typing | static with optional dynamic typing | dynamic with optional static typing |
Type Identifiers
Integer
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
8 bit (byte) Signed | sbyte | N/A | |
8 bit (byte) Unsigned | byte | byte | N/A |
16 bit (short integer) Signed | short | short | N/A |
16 bit (short integer) Unsigned | ushort | N/A | |
32 bit Signed | int | int | N/A |
32 bit Unsigned | uint | N/A | |
64 bit (long integer) Signed | long | long | N/A |
64 bit long integer) Unsigned | ulong | N/A |
Floating Point
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Single Precision | single | float | N/A |
Double Precision | double | double | Number |
Arbitrarily Precise (bignum) | decimal |
Other Types
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Text Character | N/A | char | N/A |
Text String | string | string | String |
Boolean) | bool | bool | Boolean |
Object/Universal) | object | object | Object |
Derived Types
Array
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
one-dimensional fixed size array | (type) | type[size] | type[] |
multi-dimensional fixed size array | type[size1, size2,...] | ||
one-dimensional dynamic size array | List | System.Collections.ArrayList or System.Collections.Generic.List<type> |
Array |
multi-dimensional dynamic size array |
Other Types
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Record Simple Composite Types | struct name {type name;...} | ||
Enumeration Simple Composite Types |
enum condition: |
Basic Unity-Specific Types
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Declarations
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Flow Control
Conditional Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Loop Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Exceptions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Other Flow Control Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Functions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Type Conversions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|