wiki:Documentation/UILanguage

GUI languages comparison

[WiP] languages comparison for GUI.

C

Current language for GUI.

  • Pros:
    • Well-known
    • Excellent tools support
    • Fast and light
    • Static typing
  • Cons:
    • No garbage collection
    • No type inference
    • No closures, higher-order functions and flexible containers
    • No memory protection
    • Somewhat weak type system

C++

  • Pros (compared to C):
    • Better containers
    • Easier memory/resource management (RAII)
  • Cons (compared to C):
    • Complex and hard to use
    • Ugly

Lua+MetaLua

  • Pros:
    • Relatively well-known
    • Good tools support
    • Compact and easy to learn
    • Garbage collection
    • Easy C bindings
    • REPL available on device
    • Architecture-independent code
    • Extensible syntax
    • Fast and light (with LNUM patch)
    • Memory protection
    • Closures, higher-order functions, flexible containers
    • Strong type system (with "No implicit type conversions" patch)
  • Cons:
    • Dynamic typing, lacks most of error checking before run time.

HaXe (over Neko VM)

  • Pros:
    • Static typing with type inference
    • Compact and easy to learn
    • Easy C bindings
    • Architecture-independent code
    • Garbage collection
    • Memory protection
    • Relatively fast and light
    • Closures, higher-order functions, flexible containers
    • Strong type system
  • Cons:
    • Obscure
    • Bad tools support

NekoML

  • Pros:
    • Static typing with type inference
    • Compact and easy to learn
    • Easy C bindings
    • Architecture-independent code
    • Garbage-collection
    • Memory protection
    • Fast and light
    • Closures, higher-order functions, flexible containers
    • Strong type system
  • Cons:
    • Obscure
    • Bad tools support

librep

  • Pros:
    • Compact lisp dialect (hybrid of elisp and scheme)
    • Easy C bindings
    • Architecture-independent (byte-)code
    • REPL available on device
    • Memory protection
    • Garbage-collection
    • Strong type system
    • Closures, higher-order functions, flexible containers
    • Compact and easy to learn
  • Cons:
    • Dynamic typing, lacks most of error checking before run time.
    • Obscure
    • Virtually no tools support

ocaml

  • Pros:
    • Static typing with type inference
    • Easy to learn
    • Easy C bindings
    • Architecture-independent code
    • Garbage collection
    • Memory protection
  • Cons:
    • Ugly stdlib
    • Softfloat on armel not supported in stable branches
    • Compiler is no longer maintained

Vala

  • Pros
    • Direct C access
    • Static typing, type inference for local variables
    • Easy to learn
    • Refcounting
    • Fast and lean, directly translated to C
  • Cons
    • Object system is based on GObject
    • Still needs bindings, though those are easy to write
    • No full type inference
    • No full garbage collection