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
Where is C++ used?
games, systems programming, embedded systems, squeeze out last bit of performance
Most AAA-games, Unity, Unreal, browsers
known for: low level (higher than C), complex language
Where is Python used?
data analysis, machine learning, server side web programming
YouTube, Instagram, AlphaGo
known for: slow, easy to get started, whitespace indentation, initially developed at “centrum wiskunde & informatica”
Where is C# used?
business, web, games
Stack overflow, banks, indie games, unity in-engine language
known for: developed by Microsoft, similar to Java
Where is PHP used?
web back end
Facebook, Wikipedia
known for: used with HTML, considered badly designed, intended for non-programmers
Where is JavaScript used?
web front-end
any interactive webpage
known for: the only language for client side web programming, nothing to do with Java, developed in 10 days, confusing
Where is Haskell used?
finance, programming language research
Facebook spam filter, Standard Chartered trading software, Glasgow Haskell Compiler
known for: influential, lazy evaluation, type inference, type classes(monads)
Where is Kotlin used?
android development, banking software
android apps
known for: new JVM language, endorsed by Google, string cannot be null
Where is Rust used?
systems programming, as modern and safe alternative to C and C++
Firefox, Libra, Discord
know for: ownership types instead of manual management, functional systems programming
Where is Lisp used?
programming language research in the past, AI research in the past, Web back end(Clojure)
Emacs LISP, Walmart Data management systems
known for: minimal, code as data(homoiconic), metaprogramming(macros), very influential, used for books about structure and interpretations of computer programs
TIOBE
programming language popularity index based on numbers of search engine results
PYPL
ranks based on number of search engine searches
IEEE
ranks based on a combination of engine