Language Types
OOP, Functional, Declaritive
OOP(Object Oriented Programming)
Encapsulate and inherit data and functions in objects/classes, mutable (C++, Java, Javascript)
Declarative
Express logic in code, and control flow is deduced
E.g SQL, Prolog
Functional
functions are first class, immutable (Elixir, Haskell)
Pros
simpler rules
better parallelism because no race conditions
more bug free/easier to debug
Cons
performance can be bad
harder to logic sometimes
harder to hire for
Statically Typed: Variables have specific types at compiletime
Dynamically Typed: Variables define their type at runtime
Strongly vs Weakly Typed : About if it automatically converts float to integers or strings or it must be explicit
Compiled Vs Interpreted
In principle, not a lang characteristic as you can compile or interpret a lang
Compiled
C++ and Java are compiled meaning they are turned in byte code and need to be precompiled
Interpreted
Python, JS is interpretrated meaning it is turned into byte code as needed
Garbage collection
dont have to define types
Other Paradigms
Map Reduce
Map ft - process key/value to generate intermediate key/value
Reduce ft - merges all intermediate values with same key
Implementation handles parallelization, machine failure, and data locality/optimization
Ship computation to machine that holds needed data instead of data to compution
Implementation: Master Slave with 64MB block size and redundancy, commodity machines
Last updated