My Coding Preferences

Why do you need to know my coding preferences and background? Well, if you know where I'm coming from, you'll be able to understand my book reviews much better. Trust me.

My Background

First of all, I've been programming for about 5 years in many languages like C/C++, PASCAL, COBOL, BASIC, Assembler, Java, Visual Basic, and even a bit of Perl. It's safe to say that I'm a fairly accomplished programmer. On the other hand, I have only been programming games for about 2 years so I'm still an intermediate game programmer. I can also say that I'm not a big fan of Object Oriented Programming. OOP is great for many applications, but I don't think OOP works well for all applications. Many times it's easier (and more efficient) not to deal with all the layers of abstraction that OOP provides. What I'm saying is that I'm not over-zealous about using OOP when it's not called for. I think it's plain stupid to try and force a program to be object oriented when the problem doesn't lend itself well to an object oriented problem solving approach. I personally would rather not have all of my code buried under layers of OOP abstraction if it's not beneficial. In other words, if it can be done easily without the OOP features of C++, I'd rather write the program in non-OOP plain old ANSI C.

My favorite programming languages are C/C++ and Assembler. I like C/C++ because it gives the programmer a great deal of low level control as well as the ability to make your code very modular. You can even take advantage of the Encapsulation, Inheritance, and Polymorphism capabilities of OOP if necessary. C/C++ tools are also very refined which is a plus. I like Assembler because it's the ultimate power in programming. You actually program in a symbolic form of the computer's machine language. This gives you (almost) unconditional control of the computer which is very beneficial at times. Assembler is also one of the tougher and more irritating languages to use because you write a lot of code and do a ton of debugging for even a small program. I find that a combination of C++ and Assembler is the all powerful programming environment. C++ compilers are extremely powerful and advanced, and they allow seamless integration of Assembler code right within your C++ code! It's awesome to be able to write Assembler code from within your C++ compiler when you need some Assembly power (which does occasionally happen)!

Finally, I need to say something about my Math background. Since Math was my primary major in college, I'm very comfortable with programming books that cover 3D graphics and the math involved. If I say a book is Math intensive and you had trouble with high school math, you might want to steer clear of that book until you get some Trigonometry, Calculus, and Linear Algebra under your belt. I will warn you about any books that require an extensive math background.

Anyway, you now know a bit about my programming background so that should give you a frame of reference to use when reading my book reviews.