Click here to Skip to main content
15,897,226 members
Articles / Desktop Programming / MFC
Article

World of programming

Rate me:
Please Sign up or sign in to vote.
2.94/5 (12 votes)
9 Jan 2001CPOL 57.2K   25   6
A quick look at the world of programming.

What's programming?

In the broadest sense, all the technical and non-technical activities involved in the production of a program is called programming. By non-technical activities, I mean those activities that are talent oriented. In its narrowest sense, however, coding a program is called programming.

What's a program?

A series of statements put all together to ask the computer to have a specific behavior is called a program. It might be as long as millions of lines or as short as a single line.

Who's a programmer?

Programmers are people just like the rest of the human beings; the only difference (being so modest) is that they have got the ability and disposition to program (Don't be too hasty, I will tell you the other differences through out this article). There's no limitation in their genders, ages, and colors. They could be a man or a woman, as young as 14 years old, or as old as 78, black or white. There's no difference. They all have got the same goal: programming.

In spite of having the same goal, they find their ways towards the solution of the problem from different angles. Imagine the problem that Karl Gauss was faced with some centuries ago: the summation of numbers ranged 1 to 100. All his classmates picked up their pens and started to calculate the summation the traditional way: 1 plus 2 is equal to 3. 3 plus 3 is equal to 6 and so on.

But Gauss went the other way: He thought that 1 plus 99 is equal to 100. 2 and 98 makes 100. 3 and 97 is equal to 100 and so on and finally he ended up with the formula we are faced with today: [n * (n + 1)] /2

You probably agree that he was not educated to calculate the summation the way he did, nor his classmates. Gauss' attempt, in my so humble opinion, was talent oriented, but his classmates went the known way, the ordinary summation. The result was the same, in terms of the answer, all acquired 5050. But in terms of speed, Gauss did it in less than a minute and his classmates did the same thing in more than 47 minutes.

What are the tools?

Going back to those days of ENIAC, punch was the tool. They had to punch their logic on some cards and the result was read-in by those large-scale computers, so that the computer was supposed to behave in a specific manner.

Soon enough, the need for a reliable programming way was aroused, and it was the time of the appearance of the programming languages and in turn the software industry. After the microprogramming that the programmer's building blocks are ones and zeros in this language, the assembly language is the actual programming tool that programmers were faced with.

To clarify what I am talking about, let us see what a computer looks like in terms of layers:

Image 1

As you see, the first programming layer, Microprogramming, is located in the hardware level. This is the layer that talks directly to the physical devices. For example, this layer handles where to store the result of the two numbers to be added, and thereafter provides the upper layer with a cleaner interface, such as ADD.

A series of instructions that the micro-program interprets is called the machine language. At the top of this layer, the operating system is located which its job is to provide the upper layer with a classified set of tools so that the hardware layer is transparent to him. On top of the operating system, compilers, editors and command interpreters are located, which in turn provide the upper layer with another set of abstract tools.

From the technical point of view, a programmer who does microprogramming is called a micro-programmer. Then it comes to the system programmer that his job in turn is to develop system programs. Thereafter, we come to the application programmers who program the applications, such as MS-Office, Internet Explorer, and the like. Suffice to say that most of the world's existing programmers fall in this group.

It is amazing, though, to know that each of the programmers mentioned in those three categories feel that they are real programmers in comparison with the other programmers at top layers; i.e., a system programmer believes that the main job is done in his layer by himself and application programmers are just some fun junkies trying to use his set of tools to develop some fancy applications.

The same thing runs within the application programmers' world. Since the programmers use different tools (actually languages) to develop a program, there has been always a contact between the users of low-level languages and the high-level ones.

The truth is that the programmers of each of those above-mentioned layers need to interact with the computer in a suitable language of their own choice. For example, to develop a lightweight applet to be placed on top of a web page, a programmer chooses Java as his programming tool because Java is developed for such purposes. He could use C++ to do the same thing but he certainly has to go deeper to the subject. It goes without saying that a C++ programmer cannot solve this problem as fast as a Java programmer, because of the available tools in his programming language.

This, however, doesn't mean that C++ programming is trivial. The actual answer lies behind this fact that all the companies are in need of performing their projects in the shortest possible time. That is why we are faced with Rapid Application Development or RAD these days. In most cases, project managers expect their team members to develop this or that in the possible minimum time, although they verify if a specific tool is suitable for such developments.

Modern tools

This, in turn, brought a new edge of programmers to life: Visual Basic programmers. In spite of its glamour abilities to do things as fast as possible, I actually don't understand the usefulness of a programming language suffering from the lack of pointers. As girls are the sweet candies of this world, pointers are the candy tools in the hands of a programmer. Now, what if they are not available in a language? How can you hang on with such programming languages?

Philip Kahn, the Borland companies cofounder, says that the BASIC language belongs to the 1960's, no matter which variety of this language is on the market today. Back to those days of DOS programming, there was no wizard to hide the details from the programmer, and programmers had to know how to program their logic in their favorite programming language. If they didn't, they could never develop a software. But today, everything is changed. You run the compiler, point your mouse cursor to the File menu, and you select a new project item. Within less than some seconds, everything is setup for you! Just compile and let it go! Is it actually called programming? You judge!

I, myself, know many modern programmers who even don't know how to interact with the operating system they are programming for. When they do not have any idea about the actual environment they are programming for, how can they develop an error-free full functioning program under that environment?

The truth is that everything has been done in the lower layers and the result is dedicated due to the optimal series of functions to the programmers. These functions are called Application Programming Interfaces, or APIs. Since much of the complexity is hidden from the users of APIs, they cannot ruin the application, unless in some certain circumstances.

In spite of this encapsulation, however, we are still faced with programs that ruin the operating system due to their weak functioning. How many times have you restarted your Windows without knowing the actual reason for its malfunctioning? Huh?

Due to the great improvements in hardware technology, Giga Hertz speeds are handy today. The modern programmers in turn do not think about the speed of their logics they are going to program. Imagine the Karl Gauss' scenario: less than a minute against more than 47 minutes!

That's why you run Windows Media Player 7.0 under a Pentium 133Mhz, and you have to wait for more than 30 seconds or so until the hard disk activity finishes and the program settles on the screen.

I recall those days that we could see a video CD on Windows 3.1 under our 66MHz CPU with a Xing player or the like. Now the CPU speed, in this example, is increased by means of 67MHz, but the player speed is decreased by means of 50%. Why is that then?

Real programmers

There are a variety of thoughts judging a real programmer: some believe that "Real programmers don't use Pascal", and others say, "Real programmers hate COBOL". To put these malicious opinions aside, a real programmer is the one who cares about his software at three stages: design, development, and maintenance.

By design, I mean he tries to get peoples' opinions and their logics at design time. Some people don't understand programming but they have got great abilities to solve different problems on the paper. A real programmer advantages such opinions and welcomes any criticism.

By development, I mean he tries to keep his eyes open on what he is developing. He never says that his program will run under Pentium III, so it doesn't matter if he loads and unloads some DLLs back and forth during the lifetime of his program. He, instead, tries to avoid such things when possible.

By maintenance, I mean he accepts that he is a human being and he might do things wrong. So, he welcomes his clients' criticism, and tries to solve any bug in his software gracefully.

More about programmers

Most of the programmers around the world are philosophers! They usually try to impose their thoughts to others and they enjoy talking about their abilities and dispositions. Some of them even do not have a joy in their life, and all they have got is their computers and their books. Go and read articles about programmers by yourself; about those who reside at Silicon Valley. It is a sad story, but that is the truth.

The final note

Look before you leap! If you plan to start programming and be classified as a programmer, keep in mind that everything is possible when quality is no object. Being a good programmer is totally hard. You have to learn new technologies day by day, mostly by yourself, and you have to keep yourself up to date after being a professional in one or more categories about programming.

The very important thing you should never forget is the day you are going to start! Most of the professional computer programmers are usually self-taught and has been at the same position you are today. But after some years, they start believing in themselves! They will become proud of this or that and their abilities and they think they are really something! So they start to stop questioning which in turn results of being obsolete after some years.

Let me finish this article by a quote from G.K. Chesterton: "Angels can fly because they take themselves lightly".

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect
United States United States
Mehdi Mousavi is a professional computer programmer. He has written many programs using C, C++, MFC, Win32, COM, DCOM, JavaScript, ASP, HTML, DHTML, SQL, C# and MC++.

Comments and Discussions

 
GeneralMy vote of 2 Pin
fabienaurejac21-Jun-09 0:58
fabienaurejac21-Jun-09 0:58 
General[Message Deleted] Pin
10-Jan-01 21:44
suss10-Jan-01 21:44 
General[Message Deleted] Pin
10-Jan-01 21:48
suss10-Jan-01 21:48 
GeneralRe: test Pin
liuty200614-Apr-04 5:27
liuty200614-Apr-04 5:27 
GeneralNo picture Pin
10-Jan-01 4:03
suss10-Jan-01 4:03 
GeneralRe: No picture Pin
ThatsAlok11-Dec-04 0:53
ThatsAlok11-Dec-04 0:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.