What is a system, what is an algorithm--lemon OA System Learning Summary

Source: Internet
Author: User

First, the understanding of the Module division

For a large (here is only a medium-sized system) system, the code is written not a day, the level of detail is not a glance can see clearly.

In this case, you need to think well, preferably from top to bottom.

The ability to partition the best in a modular way, so that the task can be assigned well during development (which is useful for project managers). There is also the benefit of functional isolation, which can be tested individually to make a particular module very thin.

The writing of the operating system is also divided into various modules, although the association between the various modules is particularly serious, but through the middle layer, through the interface, eventually still be able to implement the module writing.

Why? I have a formula:

system = Algorithm of combination module = Algorithm

Why the above formula?

The characteristics of the algorithm:    1. Designed to solve a particular problem;    2. Input data is relatively single;    3. Operation mode is relatively single. 

What are the characteristics of the module?

Features of the module:    1. Designed to solve a particular problem;    2. Theinput data is relatively single;    3. Operation mode is relatively single. 

So, the design system is thinking about how each module is combined.

Design system = clarify + design The combination of each module call relationship

The idea of designing a module is to work on a particular function.

Module design:    1. Define the logic of the specific problem;    2. Design the input interface;    3. Design the output interface;    4. Design the internal algorithm logic. 

Write code, not write pseudo-code, pseudo-code is not context, but write code need to consider the relationship between the context.

A few steps to make a system:        1. Clarify and design the combination and invocation relationships between each module.    2. The second step is not coding, because the first part is still pseudo-code, but the granularity of the pseudo-code is the individual modules.    The first step is to continue the technology selection, select the code's running Environment (LINUX,WINDOWS,MAC), the call combination between modules, through the middle-tier framework such as spring, the configuration file, or the operating system service, or through the network RPC call.    and each module should be done with what molding technology components, or the design of the algorithm from scratch. Need to be considered in this step.        and in this step, the system is structured well.    How to make a schema is a specific operating system, a specific IDE, using a specific programming language to create these modules. 

Writing here, I'm wondering what the variables are for,

In a large system, from a higher dimension (right!) What I'm talking about is the ascending dimension.

The function of a variable is always only two:    one, storage,    second, transmission. The data that the modules call each other, although the data structure is complex, the data volume is huge. But if the abstract is a variable, it is the same truth, that is, these two functions, has never changed.

Again, for the design of software systems, I still feel a bit chaotic, how to do it?

I think of Wittgenstein's words, about the language,

The reason why people can't understand each other is because of the differences in language. and the language that one speaks reflects the contents of the person's brain.

Back to the software design, that is (this is my own words),

We can design a software, in fact, we can fully understand our problem, fully understand its needs. When we are together with the problem, we can communicate with the problem. Although the problem is dead, people are alive. However, we and the problem, in spirit have already had the common language.

Modules are the languages in which we think in higher dimensions, and the algorithms (within modules) are the languages in which we think in the lower dimensions.

So, here I think of a conclusion, the next definition of the algorithm:

    

An algorithm is a language that solves a particular problem, a domain-specific language. When we are unable to design good algorithms, it is because we have not had a good understanding of the problem. When we are able to describe the resolution steps of the problem, we can start coding, and the logical basis of the code is the problem steps can be described. When we fully understand the nature of the problem, we can use "more sophisticated algorithms, and even mathematical formulas" to solve the problem. Algorithm is not a universal algorithm is to solve specific problems exist, this is the fate of the algorithm.

So, through my nonsense, what is the ingenious algorithm in the introduction of algorithms?

is a new description language after a full understanding of a problem. Yes, the algorithm is not advanced, the algorithm is only a description of the way. The algorithm is a new language. Understand the problem and think about it. Dialogue with the problem, we can design our own algorithm.

Oh, I was talking about algorithms.

I really understand, now I, is to use this vision to see the world.

What is a system, what is an algorithm--lemon OA System Learning Summary

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.