Friday, March 18, 2011

A bit about math and programming

Hi all of readers.


Often, programmers are faced with various mathematical problems. An example of such problems may be determining whether the choice of object to which your mouse, or sorting a list of numbers.

In most cases, available to programmers are prepared software libraries that provide various functions to facilitate the implementation of mathematical tasks.

Experienced programmers know about these libraries and use the appropriate functions provided by these libraries. But sometimes even experienced programmers will find themselves on an equal footing with inexperienced programmers, when none of the available libraries do not have the necessary functions to solve another math problem. In such cases, a paradoxical situation, when an experienced programmer can decide the outcome of which would be less effective than the decision taken by an inexperienced programmer.

Experienced programmer sits down to solve a mathematical problem as an ordinary skilled programmer. It can take one of the technologies of software development, or to create elements of the working process with the experience of architects and testers. The main mistake the experienced programmer in this situation is that to solve a mathematical problem he will try to come up not as a mathematician, but as a programmer (even if an experienced programmer).

I would like to remind all the programmers, the computer was not invented to solve mathematical problems, and to facilitate their decisions. If someone from the programmer does not know what I would like here to say that most of the algorithms that are programmed for computers that were discovered long before the invention of computers themselves. Work Chebyshev, to quickly implement the integration were open to them in the 19 st century. Work of Bernstein laid the foundations of the modern theory of splines were performed in the early 20 th century.

I'm not trying to say that in modern mathematics does not make new discoveries. Pierre Bézier and Paul de Faget de Casteljau continued development the theory of of splines in the mid of 20 th century . Carl de Boor, Edwin Catmull, Jim Clark, not only continue to develop the theory of splines, and are co-owners and animation studios creating computer graphics and animation. There are still many people who continue the development of mathematics.

But. These people do not rely on the power of modern processors. These people rely on the knowledge. Own knowledge and expertise of their predecessors. They will not allow self to assume that if some iterative algorithm implies the existence of the loop, and to exclude the probability of calculations error, just add the extra 200 iterations of this loop. Although 300 would be better. Probably better.

We have to admit that over the past few decades, the software industry is "rejuvenated". Among the students already there is a perception that programming - it's easy money. It is impossible not to agree that working at a construction site on a lot harder than to exercise the creative mind of a teenager at the time of programming. Surfing the net and not so tired as on construction sites, and moral satisfaction from showing their own creativity encouraged. Can you imagine what would have happened if the pavers brick walls of multistory buildings showed their creativity when laid another brick to the building? And with all this, the work of programmers costs not less than the work of the builders. It is obvious that in this situation as soon as the young man learned the basics of operating system it goes work to the IT-company. Getting a job, a young man begins to realize that his job is already claimed by another 5 connoisseurs of operating systems. And not to be dismissed from the company, a young man starts studying modern technology programming. Extreme Programming, Agaile, etc. Yes, this man becomes an experienced programmer, and it will not be replaced by another expert of operating systems.

It turns out that an experienced programmer is completely helpless against the objectives for which the computer was invented.

I suspect that now you want to tell me - "... the computer is intended not only for mathematical problems, and quite an experienced programmer would be useful for architectural design of client-server applications ...". And here I agree with you. Yes, an experienced programmer will use special patterns of application design. In his hands, fully justified and Extreme Programming and Agile. But. Please spend a little experiment. When you meet an experienced programmer, ask him - if he knew any planning theory of the critical path? Theory of the shortest path? Are there any known examples of problems that have no algorithmic solution? If your interlocutors know at least one of the above questions, then you're in luck. And you'll find that experienced programmers on a lot less than you thought. At the same few, how many skilled mathematicians less than people who know the multiplication table.

Thanks a lot.

No comments:

Post a Comment