Comparison of Programming Languages

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(added Categories)
(Features: Added wikitable formatting.)
Line 22: Line 22:
  
 
<!-- 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. -->
{| style="margin: 1em; margin-left: 0; background: #f9f9f9; border: 1px #aaa solid;"
+
{| {{wikitable}}
 
|-  
 
|-  
! Language
+
! {{wikitable-th}} Language
! [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Boo_(programming_language) Boo]
! [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/C_Sharp_(programming_language) C#]
! UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript]
+
! {{wikitable-th}} UnityScript/[http://en.wikipedia.org/wiki/JavaScript JavaScript]
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Programming_paradigm Paradigm](s)
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Programming_paradigm Paradigm](s)
|
+
| {{wikitable-td}}
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
 
* ?
 
* ?
|
+
| {{wikitable-td}}
 
* [http://en.wikipedia.org/wiki/Imperative_programming imperative]
 
* [http://en.wikipedia.org/wiki/Imperative_programming imperative]
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
Line 39: Line 39:
 
* [http://en.wikipedia.org/wiki/Generic_programming generic]
 
* [http://en.wikipedia.org/wiki/Generic_programming generic]
 
* [http://en.wikipedia.org/wiki/Reflective_programming reflective]
 
* [http://en.wikipedia.org/wiki/Reflective_programming reflective]
|
+
| {{wikitable-td}}
 
* [http://en.wikipedia.org/wiki/Imperative_programming imperative]
 
* [http://en.wikipedia.org/wiki/Imperative_programming imperative]
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
 
* [http://en.wikipedia.org/wiki/Object-oriented_programming object-oriented]
Line 45: Line 45:
 
* [http://en.wikipedia.org/wiki/Reflective_programming reflective]
 
* [http://en.wikipedia.org/wiki/Reflective_programming reflective]
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Standardization Standardized] Variation?
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Standardization Standardized] Variation?
| {{yes}}
+
| {{wikitable-yes}}
| {{yes}}, ECMA, ISO ECMA-334; ISO/IEC 23270:2006
+
| {{wikitable-yes}}, ECMA, ISO ECMA-334; ISO/IEC 23270:2006
| {{no}}
+
| {{wikitable-no}}
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Strongly-typed_programming_language Type Strength]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Strongly-typed_programming_language Type Strength]
| strong
+
| {{wikitable-td}} strong
| strong
+
| {{wikitable-td}} strong
| weak
+
| {{wikitable-td}} weak
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Type_safety Type Safety]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Type_safety Type Safety]
| safe
+
| {{wikitable-td}} safe
| safe
+
| {{wikitable-td}} safe
|  
+
| {{wikitable-td}}
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Type_system#Explicit_or_implicit_declaration_and_inference Expression of Types]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Type_system#Explicit_or_implicit_declaration_and_inference Expression of Types]
| implicit with optional explicit typing
+
| {{wikitable-td}} implicit with optional explicit typing
| explicit
+
| {{wikitable-td}} explicit
| implicit
+
| {{wikitable-td}} implicit
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Type_system#Compatibility:_equivalence_and_subtyping Compatibility Among Composite Types]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Type_system#Compatibility:_equivalence_and_subtyping Compatibility Among Composite Types]
|  
+
| {{wikitable-td}}
| name-based
+
| {{wikitable-td}} name-based
|  
+
| {{wikitable-td}}
 
|-
 
|-
! [http://en.wikipedia.org/wiki/Type_system#Type_checking Type Checking]
+
! {{wikitable-th}} [http://en.wikipedia.org/wiki/Type_system#Type_checking Type Checking]
| static with optional dynamic typing
+
| {{wikitable-td}} static with optional dynamic typing
| static with optional dynamic typing
+
| {{wikitable-td}} static with optional dynamic typing
| dynamic with optional static typing
+
| {{wikitable-td}} dynamic with optional static typing
|}
+
| {{wikitable-td}}
 +
}
  
 
== Type Identifiers ==
 
== Type Identifiers ==

Revision as of 05:21, 6 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 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