There is a very good concept called "Unknown Unknown", meaning that if you do not know a thing, you do not know that you do not know it.
It is well known that the mainstream programming idea that everyone is familiar with is still object-oriented programming, however, it does not exist only in this way. We should get used to doubting some of the established theories and methods of life and work, there is no conclusive theoretical basis for the emergence, we still have to believe that there are other circumstances, but we have not found it.
Object Oriented OOP
The most important feature of object-oriented programming is that you can write the data types you need to better solve the problem. A class is a collection that describes a set of identical attributes (attributes) and the same behavior (methods).
Abstraction has become one of the most important issues. For example, if you have a question, "How much does a brick have?" "As soon as we get the title, we will simply think about the most common ways of thinking in the brain, deciding to build a house and hit people ... We can systematically go from the various properties of the bricks to abstract, "cuboid, angular, hard, there is a certain volume, there is a certain quality, etc.", the same attributes of the relevant objects are the use of bricks, however, we can not be limited to itself, we may do some "operation" modification behavior, (size can be adjusted, Solids can become powder, angular can be polished, shape can be changed, etc.), for how to program, different language grammar is different, but the idea is so, we have to learn or programming behind the way of thinking, rather than the language itself.
Functional programming FP
Csuzi, and Turing's contemporaries ' genius, proposed the idea of lambda operator from an abstract point of view, when Turing's abstract design tended to be hardware, and he abstracted from a mathematical perspective, in which the abstract beauty emerged from the functional programming language of this flower. Although the essence originates from the abstract way of the lambda operator theory, some languages appear (Lisp,scheme,haskell ... Because the abstract way does not conform to people's thinking habits can not become the mainstream programming language. But these are still active in the computer science, the birth of Swift.
Functional programming is a mathematical-oriented abstraction, in the use of the feature is that you no longer know where the data came from, each function is to use small functions organized into a larger function, function parameters are functions, functions returned is also a function, the calculation is described as an expression evaluation, A functional program is an expression.
More content to discuss
The idea of recursion combined with the operator to understand.
Characteristics
Object-oriented:
Tightly coupled data and operation of the data
Objects hide implementation Details of their operations, and other objects invoke these operations only through interfaces.
The core abstract model is the data itself
Core activities are the combination of new objects and the expansion of existing objects, which are implemented by adding new methods.
Function Programming:
The data is loosely coupled to the function
Functions hide their implementations, language abstractions are functions, and functions are combined to express them.
The core abstract model is a function, not a data structure
The core activity is to write new functions.
Variable default is constant, reducing the use of variable variables, concurrency is good
What is the idea of programming?