What is real programming power? __ Programming

Source: Internet
Author: User
Tags abstract requires

programming Ability is a problem-solving ability. If the problem is not solved well, it is no use knowing more.
programming ability is the ability to use machines to solve problems. The first is to determine the extent to which the problem can be solved by the machine, for example, theoretical computer science will tell us what to do, what to theoretically not do, and what theoretically can be done in practice. Then let the machine better understand the problem, such as the computer is (Turing-Neumann model) equivalence, but different problems may apply to different programming languages. After that, the machine can solve the problem more efficiently, for example, the same problem may have a huge efficiency difference algorithm.
programming ability is the ability to abstract problems. It's a good way to borrow wheels, save time. Today any software engineer will use many wheels unintentionally, from the operating system compiler database network to the algorithm data structure. If you want to use the wheel efficiently, you need to decompose and abstract the problem. Any practical system (excluding textbook sample programs and simple scripting programs) requires a large number of splits and combinations. So system design is an advanced skill in programming ability, and it is especially difficult to add reasonable assumptions to simplify the problem, this is not discussed here. The difference between the master and Novice is that the novice often do not know the scope of the wheel, and the master of the hands of many wheels and familiar with the difference in the wheel, so the different problems can easily find the right wheel, when it can not find the right wheels to do their own to transform the existing wheels. Usually have time to disassemble and transform the existing wheels will be of great help to the level of ascension. Of course, it is also an ability to find out how to quickly search for a wheel in a search engine.
programming capability is an ability to consider extensibility. Many algorithms in the race of algorithms consider the memory algorithm of single machine, and the computational model is highly abstract, and the model is more complex in practice. For example, the multi-level structure of a single machine to bring a variety of time and space complexity of trade-offs, how the multi-machine network can improve the performance of the single unit to further optimize the overall performance. In addition to the extension on the machine side, the extension at one end of the programmer is also important. Complex problems and projects often mean teamwork and longer development and maintenance, team division and Design communication for the time being. For example, a note in a program that is easily overlooked. The master will be more aware of the complete and clear comments, because this is to present and future team (including themselves and other members) see, directly affect the long-term overall development and maintenance efficiency.
the ability to program is a trade-off. The local optimal solution is not necessarily the global optimal solution. If a wonderful solution needs to postpone the completion time by a month or two, consider whether to use the trivial solution first to solve the problem before optimizing. This is especially true when your work is delayed and will hinder others ' work. When you find a wonderful optimization plan, think about whether the optimization is really valuable, and if it's just a small part of the system, don't spend a lot of time on a beautiful wheel in pursuit of mental satisfaction (refer to the Amdahl law).
Programming ability is an ability to foresee the future. What are the assumptions and limitations of the current scenario, and under what circumstances will there be problems or even crashes? Whether the problem needs to be redefined in the future, whether the system needs to be redesigned, whether the code needs to be refactored or optimized, and so on, requires a rainy day.
programming ability is a kind of engineering ability. Without it, only hand-cooked er.
programming Ability is a problem-solving ability。 If the problem is not solved well, it is no use knowing more.

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.