Uellue's Blog


It is almost too obvious to state that computers have become ubiquitous today: Almost every electronic component contains one or many freely programmable microprocessor(s) and some memory, which makes it a universal computer. We just don't make too much use of this universality because we don't change the programs of these devices. That is even true for "real" computers, like laptops, smartphones and desktop computers: We use an e-mail program for writing e-mail, browse the web with a web browser, manipulate images with image maipulation programs and so on. But only a minority of users actually create new programs, because making good programs is quite difficult and the majority of people want to do the same things with their computer so that they can just use the same programs.

As long as people stick to routine tasks, they will get along just fine like that. But the fun in science is outside the routine: Do things or look at things in a way that nobody did before. And if anybody wants to use computers for that, he will soon reach the limits of existing programs. Now there are two ways to proceed: Either do things manually, like pushing buttons, taking readings, doing calculations, or write a program that can do that. Writing the program is definitely more difficult at first, because the thing one wants to do needs to be described rigorously in some sort of programming language.

There's a positive correlation between the complexity of the problem and the complexity of the program that solves it: A simple program might be a formula in a spreadsheet software that takes the values of some other cells as input, and a complex program can maybe reach millions of lines of code to control the interactions between many devices or do involved calculations with enormous data sets.

There is also another correlation: The more general a tool is, the more skill it requires to master it, but it also allows to solve more complex problems. The limitations are often not really like a hard wall, but more a soft transition: Specialized tools like spreadsheet software may be easy to use for some simple numerical calculations, but if the data sets grow larger, the program will at some point be too slow; if the data is too complex or in a wrong format, it may need to be converted manually; available extensions or software libraries may only include functionality for specific use cases. A universal programming language however is more difficult to use for trivial tasks, but complex functionality is easier to implement. Many "evolved" software packages do in fact contain a scripting engine for that reason.

The conclusion may sound trivial: You can solve more complex problems if you master more general and complex tools, and the most general way of using a computer is programming it with a programming language like C++ or Python: It allows you to combine a huge amount of existing code in the form of libraries for any purpose and empowers you, in principle, to solve any probem that can be solved with a computer program.

As a scientist, being able to program is most useful: One can implement automated measurement procedures without any complexity limits that need only a minimum of user interaction, meaning that the program works while one sleeps at night or does other useful things, one can evaluate and present data in new and complex ways and one can work on new or more efficient computer simulations.

Therefore: Go learn a programming language! You will be able to do things that you can't even imagine without it now.