
Why need one program?

	The electronic speed possessed by computers for processing data
is really fabulous. Can you imagine a human prodigy manually multiplying
two thousand digit integers flawlessly in an hour? A computer can perform
that multiplication so fast that you even do not perceive that it has
taken any time at all. It is wise to exploit this instrument to the best
of our benefit. Why not, right?

	However, there are many programs already written by professionals
and amateurs.  Why need we bother about writing programs ourselves?  
If we have to find the roots of a polynomial or invert/multiply matrices
or check primality of natural numbers, we can use standard mathematical
packages and libraries. If we want to do web browsing, it is not a
practical strategy that everyone writes his/her own browser.
It is reported that playing chess with the computer could be a really
exciting experience, even to world champions like Kasparov. Why should
we write our own chess programs then? Thanks to the free (and open-source) 
software movement, many useful programs are now available in the
public domain (often free of cost).

	Still, we have to write programs ourselves! Here are some
compelling reasons.


* There are so many problems to solve

    	Simple counting arguments suggest that computers can solve
    infinitely many problems. Given that the age of the universe and the
    human population are finite, we cannot expect every problem to be
    solved by others. In other words, each of us is expected to encounter
    problems which are so private that nobody else has even bothered to
    solve them, let alone making the source-codes or executables freely
    available for our consumption. Sometimes programs are available for
    solving some of our problems, but these programs are either too costly
    to satisfy our budget or so privately solved by others that they don't
    want to share their programs with us. If we plan to harness the
    electronic speed of computers, there seems to be no alternative way
    other than writing the programs ourselves.

	A stupendous example is provided by the proof of the four-color
    conjecture, a curious mathematical problem that states that, given the
    map of any country, one can always color the states of the country
    using only four colors in such a way that no two states that share
    some boundary receive the same color. That five colors are sufficient
    was known since long ago, but the four-color conjecture remained unsolved
    for quite a long time. Mathematicians reduced the problem to checking
    a list of configurations. But the list was so huge that nobody could
    even think of hand-calculating for all these instances. A computer
    program helped them explore all these possibilities. The four-color
    conjecture finally came out to be true. Conservatives raised a huge
    hue and cry about such filthy methods of mathematical problem solving.
    But a problem solved happens to be a problem solved. Let them cry!
    
    	Computers can aid you solving many problems of various flavors
    ranging from mundane to practical to esoteric to deeply theoretical.
    Moreover, anybody can benefit from programming computers,
    irrespective of his/her area of study. It's just your own sweet will
    whether you plan to exploit this powerful servant.


* Hey, we can write better programs than them

    	Yes, we often can. Available programs may be too general, and
    we can solve instances of our interest by specific programs much more
    efficiently than the general jack-of-all-trades stuff. Moreover,
    you may occasionally come up with brand-new algorithms that hold
    the promise of outperforming all previously known algorithms.
    You would then desire to program your algorithms to see how they
    perform in reality. Designing algorithms is (usually) a more difficult
    task than programming the algorithms, but the two may often go
    hand-in-hand before you jump to a practical conclusion.
