- dynamically typed 
A language in which types are discovered at execution time; the opposite of statically typed. VBScript and Python are dynamically typed, because they figure out what type a variable is when you first assign it a value.
- functional programming 
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.
- High Level 
A high-level programming language has strong abstraction from the details of the computer.
- IMPERATIVE PROGRAMMING 
Imperative programming is a programming paradigm that describes computation in terms of statements that change a program state.
- interpreted language 
programming language whose programs are translated to machine code at the time of execution and it's implementation often takes the form of an interpreter.
- loose coupling 
loose coupling is a software-development approach that values the importance of making pieces interchangeable. If two pieces of code are loosely coupled, then changes made to one of the pieces will have little or no effect on the other.
- Multi Paradigm 
A multi-paradigm is a programming language that supports more than one programming paradigm.
- Object Oriented 
Object-oriented programming (OOP) is a programming paradigm that uses objects – data structures consisting of datafields and methods together with their interactions – to design applications and computer programs.
- statically typed 
A language in which types are fixed at compile time. Most statically typed languages enforce this by requiring you to declare all variables with their datatypes before using them. Java and C are statically typed languages.
- strongly typed 
A language in which types are always enforced. Java and Python are strongly typed. If you have an integer, you can't treat it like a string without explicitly converting it.