Language ZOO Flashcards
Scala
typing: static
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: yes
pattern matching: yes
default API Mutability: immutable/mutable
first class functions: yes
parametric polymorphism: yes
Java
typing: static
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: yes
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: yes
C
typing: static
garbage collection: no
Objects, subtyping, inheritance: no
traits: no
pattern matching: no
default API Mutability: mutable
first class functions: no(function pointers, no closures)
parametric polymorphism: no (use macros)
C++
typing: static
garbage collection: no
Objects, subtyping, inheritance: yes
traits: no
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: yes(templates)
Python
typing: dynamic
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: no
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: no(dynamically typed)
C#
typing: static
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: yes
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: yes
PHP
typing: dynamic
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: no
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: no
JavaScript
typing: dynamic
garbage collection: yes
Objects, subtyping, inheritance: yes/no
traits: no
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: no
Haskell
typing: static
garbage collection: yes
Objects, subtyping, inheritance: no
traits: yes/no (type classes)
pattern matching: yes
default API Mutability: immutable
first class functions: yes
parametric polymorphism: yes
Kotlin
typing: static
garbage collection: yes
Objects, subtyping, inheritance: yes
traits: yes
pattern matching: no
default API Mutability: mutable
first class functions: yes
parametric polymorphism: yes
Rust
typing: static
garbage collection: no
Objects, subtyping, inheritance: no
traits: yes/no (type classes)
pattern matching: yes
default API Mutability: mutable
first class functions: yes
parametric polymorphism: yes
Lisp
typing: dynamic
garbage collection: yes
Objects, subtyping, inheritance: no(library)
traits: no
pattern matching: no(library)
default API Mutability: mutable(common LISP/Scheme); immutable(Clojure)
first class functions: yes
parametric polymorphism: no
Where is Scala used?
finance, web
Twitter, Coursera, NYT, Guardian
known for: mixing object-oriented and functional programming
Where is used?
web back ends, android apps, business
Minecraft
known for: JVM platform, bit verbose, FoobarFactoryFacadeImplementation
Where is C used?
systems programming, embedded systems, squeeze out last bit of performance
DOOM, Linux/Unix/Windows/OSX Kernel, Git
known for: small language, low level