Architects and Math

Source: Internet
Author: User

Remember when I was in grade five, my math teacher asked every classmate in the class why he studied maths. I can't remember what my answer is, it's probably a superficial statement like bookkeeping and measurement. In fact, vaguely hidden in the innermost heart there is a vague idea, math is more fun, interesting. It may be the longing for the unknown, the so-called curiosity. Because in my childhood that just can eat full meal, interesting things really not much, so, can only take mathematics to dine, elementary school mathematics actually should be called arithmetic.

Does math and software architect really matter? From the utilitarian point of view, mathematics knowledge can be directly applied in many fields, as the computer software closely related to mathematics is no exception. For example, probability theory and mathematical statistics are the basis of the language model, and the language model is a necessary module for the application of natural language comprehension, such as search engine, machine translation and speech recognition. Undoubtedly, do not understand probability theory and mathematical statistics, can not talk about understanding, design, development of such software programs. Of course, not all people engaged in the field of software is directly related to mathematics, so, there are also commentators that I have been a software architect for many years, participated in many projects, in addition to the general subtraction, has never applied a little bit more advanced mathematical knowledge. The conclusion is that ignorance of mathematics does not affect the professional development of software architects.

This childish view and my answer to my primary school teacher's question sounded as insignificant as it sounds. The significance of mathematics to software architects is not limited to the direct application of mathematical knowledge. Saying goes, kung fu is outside the poem. Lu you think, learn to write poetry, can not "but want to work algae painting", only in rhetoric, skills, form efforts. The poem's superiority is more focused on the poet's life experience, the spiritual realm and the knowledge accomplishment, these metaphysical things are the so-called "Kung Fu" outside the poem. Wang Guowei in the "human Cihua" said: "The word to the realm." There is a state of self-made high lattice, own famous. "That's the same truth. If the schema can be compared to a poem, then its rhyme tends to fall on the concept of mathematics. Mathematics is a software architect's poetry.

So what is the relationship between math and software architects? It is necessary for us to discuss what kind of role the software Architect is, the problem seems to be too simple, as the name implies, is not the software architect design and architecture software systems or applications? Is he? Here, we might as well ask, if so? In fact, as long as we question a little bit, there are many things in the world that cannot withstand careful scrutiny. Does a software organization really have so many architecture work to do that it has to have a dedicated software architect's role to bear? Most of what I have observed is not the case, for example, a software product-driven company that constantly develops new features and releases new versions based on the needs of users or the market. In this process, the product architecture is already doomed, but also the structure of what? Even if some of the refactoring work, but most of the time, I am afraid will not make drastic changes. What about a project-driven company? Each project is not the same, do not have to structure it? Although the project is different, the environment for developing these projects, such as databases, programming tools, and integration frameworks is not the same, so the system for architecting these projects is basically extrapolate, and there is not much surprising. This is especially true of the various applications of Internet companies, such as on-the-go, both front-end and back-end, with increasingly sophisticated technical frameworks, which themselves determine the structure of the application and do not have much to do with architecture. Simply put, architecture is actually a skill of decomposition and connection. A large application system is decomposed into different levels of functional sub-modules, and then define the interface between sub-modules of data exchange, the sub-modules in accordance with a certain logical connection, of course, also take care of the consistency and scalability of the function. Not only architects, but is it not always a problem for any programmer to write a program?

This shows that in actual software practice, there are not many things that really need architecture. Moreover, any programmer will be more or less involved in the architecture of the problem, so the role of the software Architect is not so sacred, and even there is no clear definition. So where is the role and value of the software architect? I think that the software architect should be a problem-solving expert, and the role and value of it is here. In the process of software product or project development, there is a problem of performance or functional uncertainty at any time. For example, how to use time to change space and space for the art of time to achieve a breakthrough in performance bottlenecks. In the face of the problem, the software architect must have the means to know where to start, set goals and directions, and have the ability to organize the men and the difficult. In his career, a software architect has accumulated a great deal of knowledge and experience in a certain area, forming his own unique problem-solving methodology. The mathematical accomplishment of the software architect determines the level and height of TA's understanding and problem solving.

The main method of mathematics is the art of logical reasoning in which ideas and techniques (technique) are intertwined. Given a question, first of all, the mathematical thought reorganize out the approximate direction, and then, the mathematical skills to complete the concrete steps, eventually, to achieve the desired goal. For example, if we want to be poor, Lingao is a technique for thinking, and going upstairs or climbing. To see a classic example of mathematics, the proof of Gödel's incompleteness theorem (incompleteness theorem) covers the unthinkable mathematical thinking and mathematical techniques. Prior to Gödel, the discussion of the consistency and integrity of the so-called axiomatic arithmetic (arithmatics) system in the Hilbert program (Hilbert's programme) was confined to meta-mathematics (meta-mathematics), No one has a clear understanding of the proof of the meta-mathematical proposition, not to mention how to prove it. And Gödel the idea of the mathematical system's meta-mathematics of the coherence and the integrity of the arithmetic systems to the arithmetic of the arithmetic system itself, which makes the problem enlightened; To accomplish this mapping, Gödel proves that the skills embodied in the 46 pre-defined and important lemma used, such as the famous number of Gödel and corresponding lemma. These creative ideas and techniques seem to be Tian Shou and non-human. Looking at a mathematical example, in proving that the set of real numbers is not counted, the German mathematician Cantor the idea of judging whether the two sets are equal in size, that is, if a mapping can be found so that all elements of the two set correspond to one by one, then two sets are equal. And in the process of proving, Cantor invented the famous diagonal method, it is very ingenious. Although Cantor's work has aroused great controversy in the mathematical world, the result of this evidence has led us to realize that infinity is not only meaningful, and infinity is not the same as infinity, that is, there are many different kinds of infinity that cannot be underestimated.

It should be pointed out that there is only a general distinction between thought and skill, there is no strict definition, and of course there is absolutely no need for precise definition of ideas and techniques. However, it is certain that many methodologies in the field of science and technology will not go beyond the realm of thought and skill, and that the proportion of ideas and techniques in different fields may vary. As a model to solve the problem, we should not despise the important role of thought and skill. For example, although various sorting algorithms are implemented in many libraries, we still learn the details of the sorting algorithm, because the sorting algorithm contains a lot of ideas and techniques for solving problems, such as merging sorting and fast ordering, including the idea of divide and conquer algorithm design, And a quick sort of partition technique. Thought and skill as the positive and negative side of the coin, must be the only way of software architect Concern, who is the expert of the problem plan.

It is well known that computer science derives from mathematics, especially from the development of mathematical logic, which is the basis of mathematics. The ideas and techniques contained in computer science often maintain a high degree of correspondence with mathematics. For example, mathematical induction is the use of recursive return to complete a mathematical proof, and recursive and widely used in computational theory and algorithms. Recursion is not just a mechanism of programs and algorithms, but the idea of recursion is also a concise and elegant way of thinking and expressing certain problems, such as the traversal of trees and graphs. Also, the algorithm's time complexity and spatial complexity are derived from the concept of the limit of mathematics, which indicates that the cost of the algorithm time and space increases with the input scale. The limit is the basis of mathematical analysis of calculus, the definition of the precise limits of the ε-δ form that is widely used today is that mathematicians have struggled for more than more than 200 years to finally be given by German mathematician Karl Weierstrass. He can attack Jade, the software architect can draw on these and computer science to connect with the mathematical ideas and mathematical skills, to enhance and broaden their horizons, to inspire creative inspiration. For computer software, the problem is a difficult problem, often do not understand the implicit mathematical concepts and mathematical relations, once these most essential things grasp, you can juchongruoqing to achieve a clever breakthrough. Other so-called code-related problems, such as finding a memory leak, require only a patient, careful, mechanical approach to the trivial details of the problem, as much as possible, using clues from tools to find the source of the problem. This is a physical activity, Kung fu to the natural can be solved.

An important task for software architects is to create abstract models for real-world application space. With the model, the next step is to represent the model within the computer, that is, the object or entity that represents the model using the data structure, and the process of representing the model with an algorithm. The final code is implemented. This process is not smooth sailing, a layer of constant, loopback reciprocating is often unavoidable. It is possible to write a program only to find that the model has serious flaws, of course, this is a very bad thing. The importance of building a model is as Steven S.skiena in his book The Algorithm Design manual:

Perhaps the important design technique is modeling, the art of abstracting a messy real-worl D application into a, problem suitable for algorithm attack. "

 

related vendor content

Droid Plugin How do I run a third-party plug-in apk with no install? In the container age, how will cloud computing evolve next? ArchSummit8 discount period, save 1360 yuan/Zhang!  

related sponsors

Global Architect Summit, December 18-19th, Beijing International Convention Center, 80 percent registration.

 

The

Abstract model requires simplicity, clarity, and no ambiguity. This is the unique advantage of mathematical language, so the mathematical language is the most suitable model of the language, many times, the model is often equated with mathematical models. Leibniz, a German philosopher and mathematician of the 17th century, tried to structure an unprecedented system of super-systems that would encompass all human knowledge and reasoning. To this end, Leibniz gives a three-stage grand program: First, sorting out the human knowledge, as the encyclopedia does, and secondly, replacing the key concepts of knowledge with symbols; Thirdly, the inference of knowledge is regulated to the operation of these symbols. The core idea of Leibniz's model for his system is to use a universal mathematical notation system to represent human knowledge and invent a magical computational tool to manipulate these symbols instead of deductive reasoning. That way, when two people are arguing about a problem, they don't have to be a man of words. And as long as the Leibniz system-defined method of calculation, the right or wrong is clearly clear. This may be the embryonic form of the earliest AI system. The inspiration is that the method of modeling is to find the key elements in the system or application in a mathematical abstract way, to represent them with appropriate mathematical symbols and to define their relationship, of course, the relationship can be expressed in mathematical formulas. The key here is abstraction, Hermann Weyl, a German mathematician, has said: "The most critical step in mathematical abstraction is to let us forget the objects represented by these symbols, and there are many actions that can be applied to these symbols without even thinking about what they represent." "There is no recruit to win, with Leibniz great minds alike." Mathematics is inseparable from abstraction, and the modeling process of architecture is also inseparable from abstraction. The reason is often the same, the abstract method in the Art field also has a wide range of applications. For example, when photographing landscape-themed photographs, experienced photographers know that a good piece of work really touches the heart of light, color and shape (such as elegant lines), because that is the most basic element of aesthetics. Therefore, by adjusting the exposure, aperture, focal length and other parameters, through careful composition, the expression is the photographer in the mind of the sublimation of the ideal light, color and shape. As for the subjects are mountains, rivers, deserts, grasslands, trees, flowers or other things, or forget them. Gee, we seem to have forgotten, where is the architecture?

Another important task for software architects is to determine the sub-modules of the system and the relationships between them. Mathematics is particularly relevant, in fact, a mathematical object is defined by the relationship with other mathematical objects, which is also a mathematical object of the existence of the sum of reasons and meanings. Mathematicians often find unusual relationships based on their inner aesthetic intuition, and the Euler formula links the seemingly irrelevant concepts of trigonometric functions, exponential function, and complex numbers. The reason why it looks so beautiful is that it reveals the order, harmony and unity behind the numerous and miscellaneous worlds. In mathematics, such examples are not uncommon, such as the Gauss found in the prime distribution theorem, and π 's Leibniz formula are a good interpretation of the beauty of mathematics. Looking again at computer software, the big data that is very promising is not the application of algorithms to large-scale data analysis to explore the correlation between different things? The causal chain between things is so long that it's hard to find the correlation between them by artificial reasoning, but big data technology can do that. Can you use big Data technology to help mathematicians find more subtle relationships that human intelligence is not easy to capture? I don't know. But in the big Data age bestseller, the authors argue that the correlation relationships found with big data analysis can be used instead of causal relationships. Just asking about relevance, no matter what it is, I think it's just the author's interest in attracting the reader to the eye and blowing a bull. In any case, knowing a little bit more about math, software architects must be very good at finding and defining system module relationships.

Finally, we return to the example of photography. A skilled wedding photographer in his career for customers to take a few beautiful photos, but may not have a great work to be able to look at a glance can be associated with love, because he may not understand love at all. In the same vein, architects who do not undergo a mathematical infiltration can hardly surpass the ordinary level that a wedding photographer could achieve, no matter how many projects they have done.

Architects and Math

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.