Dynamically Typed vs Statically Typed

Dynamically Typed

# python is a Dynamically Typed language, hence the following is allowed:
x = 5
x = "koraytugay"

Statically Typed

// Java is a Statically Typed language, hence the following is not allowed:
class _{
    int x = 5;
    // x = "koraytugay"; Not allowed!    


Strongly Typed vs Weakly Typed


First Class Citizens vs Second Class Citizens

First Class Citizens

.. note that the whole point of a programming language is to manipulate values, which, following historical programming-language tradition, are therefore called first-class values (or citizens)

Second Class Citizens

.. other structures in programming languages, which are used for expressing the structure of values but which can't be passed around during program execution, are second-class citizens