Comparison of Programming Languages

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(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 major features 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].
+
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 technical information of the Unity programming languages.
+
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:
tab item1
tab «item2
tab …»

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



Programming Index

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox