Functional languages such as Lisp, Haskell, Ml, try to do everything in the structure of function rather than the control flow. The avoid state and mutable variables; it says that given the same argument, the function always returns the same,thus it avoid the side effect. An important concept in functional programming is Lambda calculus, which is actually a small function that can be an argument to another lambda calculus, or be the output of another lambda calculus. Python for some reason, also has Lambda, so i can also use python to do function programming, though it does has many features that a pure function language requires.
imperative languages are based on state of the program, because it basically is a advanced form of machine language, and the languages's statement are executed one by one. There are Four main kind of statement, including assignment statement, looping statement, conditional statement and unconditional statement.
object is a collection of nouns(numbers strings or variables) or verbs(calculation, functions). Unlike conventional view who sees a program as a list of tasks, object-oriented programming sees everything in a program is an object. Each object should relatively independent, they should be able to receive data ,process data and send data.
Non-oop code tends to be a long list of many commands, with many global variables used， which means when you modify small part of it, the effects can be very broad.
Statically typed languages define the class of variables at first, and such class can not be changed during program running. The goodness is that this make the program more stable, and make it easy for debugging. The bad thing is that it makes the code complicated, which makes it hard to read.
Comparatively, dynamically typed language check the class of variable when they are assigned value, and such class can be changed when different class of value is assigned. Such programming style makes it easy to read but hard to debug.
Basically, compiled language need to be complied before running, so it requires a pre-run time. Actually, complied is quite vague an idea, because Theoretically any languages can be compiled using a interpreter.
However, practically , there are languages that are not compiled, such as python, perl. Their just interpret each source code line to machine code while running. People can also type sentence one by one in the interpreter to achieve the same result.
Besides the technically elements, what are other reasons that make a programming language a good language?
Would a computer language be able to create new language by itself? and revising it by itself?
What exactly is programming in Logic?