Before I start, I have to admit to the reader that I had been a little sceptical when reviewing this book. The reason was simple. Here was a book written in Urdu, purporting to teach its readers the entire C and C++ language. The author, too, was Pakistani, and not a westerner with all sorts of fancy degrees attached to his name.
What would a Pakistani know about writing a good programming book? I had thought. But nevertheless I persisted and am happy to say that the book can live up to anybody’s expectations of what a beginner level programming text should be like. Infact, I might go a little further and would recommend this book over many of the English titles we have in the market. But let’s start with the review and see what makes this book so readable.
Zeeshan Usmani is a graduate of the Petroman Institute and later did his Masters in Information Technology from the Preston Institute of Management Sciences (PIMSAT). He’s also a member of IEEE America, and an affiliate of MIT. He took up writing this book after being a columnist for the monthly Global Science where he wrote a column titled “C/C++”. This book is a product of the hundreds of letters and queries that the writer got as feedback from his columns.
Here is a book that is meant for beginners and novices in the computer fields. I would personally recommend that instead of spending a couple of thousands of Rupees taking up computer courses, you should spend Rs200 on this book instead. The amount of information that you will learn from both would be equal. Plus as an added bonus, the book is a lot cheaper than most of the English books that are available in our markets.
Let’s analyze the book in detail. The chapters that the book deals with can be divided into the Fundamentals (which includes topics like operators and format specifiers, decision statements, loops, functions), Advanced (which includes Structures, Union, Arrays, Pointers, Graphics, Files), Object Oriented Programming (which includes Encapsulation, Constructors and Deconstructors, Strings, Storage Classes) Classes and Objects (under which you have Inheritance, Exception Handling, Templates, Polymorphism, and Streams).
What I loved most about this book was its style. It’s very simple, with an easy to read and understand Urdu. Most importantly, each and every programming concept, definition, or technical detail is explained, as if it is being taught to a five year old child. From starting with the history of the language (and explaining why C++ actually has two pluses), to the final chapter where Mr Usmani ends on the I/O streams, the book has very simple layout, examples that can be followed without any confusion, a step by step guide to the language of C and C++, and he raises the bar one step at a time, so by the end of the book, the reader would be quite clear in most if not all of their concepts.
The chapters are almost discrete and one can tell what is only “a better C” and what is the “++” part of the language. First the basics are completely explained in his fundamental chapters, such as decision statements, loops, structures and so forth and then the prepared reader can calmly read the chapters about Classes, Templates, Exceptions and Streams, the fancy pieces of C++.
Even though he takes you from the first chapter only into the programming structure of C++, you can easily start reading from the centre or back to front, if you so desire, the book is so beautifully arranged.
Another thing I liked about the book is that it contains something on every key concept and technique which C++ developers need to master: control structures, functions, arrays, pointers and strings, classes and data abstraction, operator overloading, inheritance, virtual functions, polymorphism, I/O, templates, exception handling, file processing, data structures, and more.
My favourite area in this book was the advanced area (structures, arrays, etc). Mr Usmani’s concepts in arrays and the way he explained Pointers and structures made me wish I had this book when I had been struggling to understand and grasp these concepts when I had first started out programming myself.
These chapters, in my opinion, are probably the most definitely must read part of the book. But with all that, there are a few areas which the book fails to properly satisfy. Many of the later chapters, are mostly just programs that you have to try and test with very little explanation of why they might be used or when, or where.
The concept behind the code is not there, even though the code itself is explained very well.
I also found information of insights into good programming practices, how to maximize your performance, avoiding errors in programming, and debugging and testing your code lacking in this book.
I also found that had the author given a little more information about a few more subjects related to programming, it could have really increased the value of the book for me. Amongst others these could have included real world examples or guides.
Many of the foreign titles have the complete source code for a project that takes into account everything that a reader has studied so far, or gives something pertaining to the real world programming, which as any developer can tell you is very different from theoretical knowledge or merely understanding how to code. This is lacking in this book to a large extent.
Also, an introduction to “system analyses” or a guide to how to channel your “development” could have really helped the complete newbie. But overall since this book is meant for the total beginner to intermediate programmer looking to dip into the C++ pool, it’s a good investment and I’d recommend it to anyone who wants to start in the computer field.
Impressive is how I will describe this book. It really makes life easy and the way the author has described topics will suit even the dimmest of people.
The book is not meant for those who already know their programming. It also cannot be used as a reference book and it will definitely not make a developer or software architect out of you, but for the first year students, people wishing to learn new skills, or those still trying to grasp their fors and nexts loops, this book will take you in your stead and give you a good foundation on which you can build your base and as we all know, on top of a good foundation you can even construct skyscrapers.
The writer is a young scholar of IBA, Karachi, and works as a freelance IT consultant