Comparison of Programming Languages
m (removed whining comments; I figured out a solution to my styling woes) |
(Added row headers for all the tables currently in.) |
||
Line 75: | Line 75: | ||
|} | |} | ||
<sup>1</sup> Normally Javascript in Unity uses type inference to statically type all variables when possible, in cases where the type is not explicitly stated. Dynamic typing can be forced if desired, and, in certain circumstances, dynamic typing is used unless forced otherwise. Use of the "#pragma strict" directive disables all dynamic typing. | <sup>1</sup> Normally Javascript in Unity uses type inference to statically type all variables when possible, in cases where the type is not explicitly stated. Dynamic typing can be forced if desired, and, in certain circumstances, dynamic typing is used unless forced otherwise. Use of the "#pragma strict" directive disables all dynamic typing. | ||
+ | |||
+ | |||
== Type Identifiers == | == Type Identifiers == | ||
Line 240: | Line 242: | ||
{{keypress|tab}} «'''item<sub>2</sub>'''<br/> | {{keypress|tab}} «'''item<sub>2</sub>'''<br/> | ||
{{keypress|tab}} …»<br/> | {{keypress|tab}} …»<br/> | ||
+ | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
|} | |} | ||
Line 268: | Line 271: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} variable |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} constant | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} type synonym | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 275: | Line 288: | ||
− | == Flow Control == | + | == Flow of Control == |
=== Conditional Statements === | === Conditional Statements === | ||
Line 286: | Line 299: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} if |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} else if | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/Switch_statement select case] | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/Conditional_(programming)#If_expressions conditional expression] | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 302: | Line 330: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/While_loop while] |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/Do_while_loop do while] | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/For_loop for i = first to last] | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/Foreach foreach] | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 318: | Line 361: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} throw |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} handler | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} assertion | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 325: | Line 378: | ||
− | === Other Flow Control Statements === | + | === Other Flow of Control Statements === |
{| {{wikitable}} | {| {{wikitable}} | ||
Line 334: | Line 387: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} exit block(break) |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} continue | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} [http://en.wikipedia.org/wiki/Label_(programming_language) label] | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} branch ([http://en.wikipedia.org/wiki/Goto goto]) | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} return value from generator | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 350: | Line 423: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} calling a function |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} basic/void function | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} value-returning function | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
Line 366: | Line 449: | ||
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript] | ||
|- | |- | ||
− | ! {{wikitable-th}} | + | ! {{wikitable-th}} basic type to basic type |
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} string to basic type | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} basic type to string | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} complex type to string | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | | {{wikitable-td}} | ||
+ | |- | ||
+ | ! {{wikitable-th}} complex type to complex type | ||
| {{wikitable-td}} | | {{wikitable-td}} | ||
| {{wikitable-td}} | | {{wikitable-td}} |
Revision as of 06:01, 15 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 major 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 | strong1 |
Type Safety | safe | safe | safe |
Expression of Types | implicit with optional explicit typing | explicit | implicit with optional explicit typing |
Compatibility Among Composite Types | name-based | ||
Type Checking | static with optional dynamic typing | static with optional dynamic typing | static with optional dynamic typing |
1 Normally Javascript in Unity uses type inference to statically type all variables when possible, in cases where the type is not explicitly stated. Dynamic typing can be forced if desired, and, in certain circumstances, dynamic typing is used unless forced otherwise. Use of the "#pragma strict" directive disables all dynamic typing.
Type Identifiers
Integer
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
8 bit (byte) Signed | sbyte | sbyte | |
8 bit (byte) Unsigned | byte | byte | byte |
16 bit (short integer) Signed | short | short | short |
16 bit (short integer) Unsigned | ushort | ushort | |
32 bit Signed | int | int | int |
32 bit Unsigned | uint | uint | |
64 bit (long integer) Signed | long | long | long |
64 bit long integer) Unsigned | ulong | ulong |
Floating Point
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Single Precision | single | float | float |
Double Precision | double | double | double |
Arbitrarily Precise (bignum) | decimal |
Other Types
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
Text Character | N/A | char | char |
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[size] |
multi-dimensional fixed size array | type[size1, size2,...] | type[size1, size2,...] (note: currently these types of arrays can be created implicitly and used, but cannot be created explicitly) | |
one-dimensional dynamic size array | List | System.Collections.ArrayList or System.Collections.Generic.List<type> |
Array or System.Collections.ArrayList |
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 |
---|---|---|---|
variable | |||
constant | |||
type synonym |
Flow of Control
Conditional Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
if | |||
else if | |||
select case | |||
conditional expression |
Loop Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
while | |||
do while | |||
for i = first to last | |||
foreach |
Exceptions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
throw | |||
handler | |||
assertion |
Other Flow of Control Statements
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
exit block(break) | |||
continue | |||
label | |||
branch (goto) | |||
return value from generator |
Functions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
calling a function | |||
basic/void function | |||
value-returning function |
Type Conversions
Language | Boo | C# | UnityScript/JavaScript |
---|---|---|---|
basic type to basic type | |||
string to basic type | |||
basic type to string | |||
complex type to string | |||
complex type to complex type |