Episode 4: Things Nobody Will Ever Tell You (At Least Not Nicely)
I have found that students of computer science (CS) and information technology (IT) in most Indian colleges have several misconceptions about programming and computers in general. This seems to be a common problem in other parts of the world, too. I’ve made a list of some of the most common problem areas, and I’m posting it here for the benefit of annoyed geeks all over the world who have to explain these things over and over to that annoying but hawt girl who never goes out with them. No offense meant to any annoying but hawt girls who might be reading this right now. Would you like to go out with me? I’m free this Friday at 7:00 PM.
Note that most of the problem areas I have listed deal with C++ and the Turbo C++ IDE. This is because most Indian colleges teach C and C++ in the first two years of the CS/IT course.
- C++ is a programming language, not a piece of software. To convert the C++ syntax into an executable, you need a compiler. In Indian colleges, Turbo C++ is a widely used compiler. So, if you need TC++, you have to ask me, “Do you have a C++ compiler?”, not, “Do you have C++?”. It’s not only annoying, but it shows you are incompetent.
- Besides Turbo C++, there are many other compilers you could be using. Loosely speaking, C++ itself is a standard document containing all the rules of the language. Any compiler that follows these rules can compile your C++ code. Two compilers you will inevitably have to deal with are Microsoft Visual C++ and the GNU Compiler Collection (popularly known as GCC). More on this later.
- A compiler is a command line tool. That means it has no graphical user interface (GUI) you can see. You just send it a C++ file, and it spits out an executable. The Turbo C++ IDE hides this compiler from you. When you press CTRL+F9, it sends your C++ code to the compiler along with several other options that tell the compiler to compile the code and produce an executable. If it wasn’t for the Turbo C++ IDE, you would have to type these commands by hand every time you wanted to compile your code. Again, more on this later.
- Turbo C++ is a compiler. The Turbo C++ IDE is an integrated development environment (that’s what IDE stands for). The job of an IDE is to provide you with an editor (where you type your code), several tools to make your programming job easier (highlighting keywords, the ability to look up things in a help browser etc.) and to make it easy for you to organize your projects. That blue screen where you type all your code is not the compiler, it’s the IDE. A few of the most popular IDEs are Microsoft Visual Studio, Eclipse, NetBeans etc.
- A C++ file (i.e., a file with a “cpp” extension) is just a plain text file containing code. You can open it in any text editor and make changes to it. Note that a text editor is a piece of software that is used to create plain text files without any formatting. Notepad is a plain text editor, whereas WordPad and Microsoft Word are not since they are used to create formatted documents.
- Windows is an operating system from Microsoft. I’m sure you know what that means. What nobody ever told you was the fact that most of the popular operating systems differ from each other in many fundamental ways. If you compile a piece of code on Windows, and then run it on another computer running Windows, it will work perfectly. On the other hand, if you try to run that executable on a Linux or Mac OS X machine, it will not run because of these fundamental differences. That is the reason none of your Windows games work on Linux/OS X.
- Nope, you can’t “hack” a computer using just a simple tool. Ankit Fadia might claim he can teach you how to hack, but he knows no more about “hacking” than a tea leaf knows about the history of the East India Company. The correct term for breaking into a system by exploiting weaknesses in it is called “cracking”, and it’s not something you can learn in a classroom. That “ethical hacking” course is a fraud.
- A programming language is supposed to be studied as a coherent whole. If you say “I’m great a loops, but I don’t understand functions.”, that indicates you don’t get programming.
- Update [April 4]: This is the most important part of this entire post, yet it inexplicably slipped my mind. Turbo C++ is a very old compiler from a bygone era. Nobody, I repeat, nobody uses it for actual development. I reccommend using the GNU Compiler Collection. But GCC is just a set of compilers (and some related tools) which you will have to operate from the command line – not an easy task for someone who is just starting out. What you need is a decent IDE to go with your compiler. Bloodshed Dev C++ is a very nice IDE meant for beginners, and it comes with GCC so you won’t have to install that separately. Do yourself a favor and download it right now.
I will keep adding new points to this list as I encounter them. Leave your suggestions in the comments section of this post.

18 Responses to “Episode 4: Things Nobody Will Ever Tell You (At Least Not Nicely)”
I think you should also mention style.
Nothing is more annoying that someone who produces really ugly code, if you can’t read it you can’t improve it, you can’t tell if it’s broken, and you certainly can’t expect anyone else to do it.
Oh, and trial and error workers, those really annoy me, not as much though, you know the kind, they produce some code that doesn’t work, throw in a -1 or +3 here, there and everywhere, and in the end it works, but no-one can tell how or why it does, it just looks like a bunch of random numbers thrown around.
@scragar Coding without trial and error? That’s stupid. You expect people to write code on paper and wait till they think they’ve got it right?
>it just looks like a bunch of random numbers thrown around
Is that because of lack of documentation? Code doesn’t automatically become useless if you don’t understand it.
@Abishek
scragar is pretty right. I think you should read the whole thing.
@scragar, Abishek
Coding is kind of like composing a song, you can sit down with staff paper and pen and think about how to construct your song using principals of music, or you can break out your instrument and play until it sounds the way you want it to.
Of course the latter method doesn’t really work for larger more complex programs. Code may not be useless if you don’t understand it, but it is when no one understands it.
I think it’s worth mentioning that any ‘real’ coding done these days is no longer in Turbo C++’s silly implementation. Wake up, colleges.
@Uncool
BTW, It’s too redundant now. You don’t need talk about this time and again. It Seems like you’re very interested in people like those
@kitallis I’m interested in these people because they make up my entire class at college. Unlike you, I actually go and talk to people, and it annoys me to no end when they say stupid things. This concept might be too difficult for you to understand, but I actually have friends in college.
@xAbhishek What scragar means to say is that making random changes to code and praying that it works is not a good programming style. I know several people who go, “Ah, so there’s an off-by-one error here. Let me add 3 here and subtract 7 here to see what happens.”. Don’t change parts of code you don’t understand. What you meant to say, if I understand this correctly, is that programming is a process of experimentation and learning by failing. You’re right, too, but scragar said that these experiments must have a logical foundation.
@ankurb Will do that right away. I wonder why I forgot to mention this …
@Ankur Sethi: Spot on.
@Ankur Banerjee: I think a lot of colleges are realizing this. Which is why Cygwin has become really popular, all of a sudden. In fact, the DU CompSc. dept wants to eradicate Windows. It is happening or has already happened in quite a few colleges, including Acharya Narendra Dev, Gargi and Hansraj if I’ve heard correctly.
@xAbhishek: Not happening in IPU
@xAbhishek
Neither is it happening in DCE. Damn, IT is hellish over here.
@xAbhishek
Not happening in MIT,Manipalt too. Students are still stuck up in the stone age.
I’m thinking of approaching the guys at IPU. Problem is, most of them don’t use the Internet, and I suspect they even have email addresses. I’ll either have to go to Kashmere Gate and meet them in person – quite a challenge.
Another of your problem-with-Indian-CS-teaching post. Its true but, lets move on. The only people reading this are those who already know about this and can’t do anything about it.
Moving Ahead - April 26th, 2009
Moving Ahead from Turbo C…
2009-04-26 03:38…
Another common mistake is calling GNU/Linux as Linux. Linux is the Kernel. GNU is the operating system. Redhat GNU/Linux, Fedora GNU/Linux, Ubuntu GNU/Linux, Debain GNU/Linux, are all “Distribitions” that package together the GNU operating system, the Linux kernel, with other softwares and customizations to make installation and maintainance of GNU and Linux easy.
In fact, GNU can also be used with other Kernels like the HURD. Actually, the original kernel that was meant to be used with GNU was Hurd(which in turn uses the microkernel Mach). But development was slow, and Linus Torvalds Implemented his kernel Linux which was stable, and so got adopted by the community at large as the Kernel of choice. The Debian team has actually worked on a Debian GNU/HURD distribution.
And though I don’t recommend using IDEs, if you badly need one for GNU/Linux, there is Anjuta:
http://projects.gnome.org/anjuta/downloads.shtml
Tagz | "Episode 4: Things Nobody Will Ever Tell You (At Least Not Nicely) at A Series of Uncool Events" | Comments - May 16th, 2009
[...] [upmod] [downmod] Episode 4: Things Nobody Will Ever Tell You (At Least Not Nicely) at A Series of Uncool Events (blog.uncool.in) 1 points posted 5 days, 10 hours ago by kamathln tags students computer [...]
I am amazed to read about Ankit Fadia in your blog. Before that I thought I was only one who is used to say ill of him… great, terrific words used for him.
PS: If hacking can be done in ethical way, then it will never be called hacking. And yeah correct difference b/w ‘Cracking’ and ‘Hacking’ is mentioned. Something I really want to teach most of guys.
Leave a Reply