Quote:
quote:Originally posted by ufo
Hi,
First of all, as I already knew, I shouldn't buy wrox "Beginning..." books, because so far I have found them useless... I think these titles are very confusing also... The books are clearly not meant for people who want to learn a specific subject, rather the books are meant for people who want to start programming and want to do it with this or that programming language. Sure, towards commerce I don't doubt that this is a gold mine for Wrox, but towards learning and info, this is a disaster...
|
I disagree. I think it depends on what you're looking for. Personally, that is *exactly* what I was looking for. I wanted to learn C++ from the ground up, with no assumptions made about prior experience. In which case, Ivor Horton's Beginning Visual C++ 2005 seems to suit my needs just fine (at least so far... :) )
Quote:
quote:Originally posted by ufo
If I want to read about programming principles ( read 'common sense' really -- have never learnt anything from the programming principles spread out through books like this... ), I will buy a book about programming principles, but if every book about every programming topic tries to hide lack of cohesion and content, by writing about programming principles, it drives me mad! This redundant non-info makes a book a jungle when you want to find something and it takes double the time and concentration to read it.
As for my proposition to wrox, get one good book about "beginning programming", in which you really do an effort to make programming principles interesting, because no doubt they can be. Do some real research in the topic and come with some new material... This could also give some historical background (about how computer science developed) about computer science, which programming languages exist, and why and when (to)/(not to) use them, ... I almost get excited about this as I write, I think a good book like that summing it all up, would be a pleasure to read, even though programming principles are actually coming out of my ears...
Then ask your authors to stick to the subject, and advise people who have never programmed before to read the 'principles' book first.
|
I understand the approach you are suggesting, but I personally don't like the idea. Your method would require that a person looking to learn a programming language buy *two* books instead of one. How many people do you think would do that, when the competition offers the same thing in one book?
Also, while there may be some general programming concepts that are language-independant, the fact of the matter is that programming *concepts* are significantly shaped by the language that is used. The general approach to memory management is going to be very different between a managed language vs an unmanaged language, for example. The core concepts would not be identical.
Thus, I think it's perfectly appropriate and correct that each book tackle those concepts individually based upon the features and constraints of that particular language. Otherwise, you're asking for a one-size-fits-all solution, and those tend to be much poorer as a general rule of thumb compared to a custom-tailored solution.
Quote:
quote:Originally posted by ufo
Also I think about one subject there should only be one book. Everybody (at least I assume so,...) who is learning a certain language, would like to be good at it, not? I don't think there is anybody who wants to learn it half. Also nobody wants to have to read 20 books on the same subject, just to puzzle together this bit that isn't mentioned in the other books and so on... How nice would it be if you needed only one book about one subject, and it would tell you all about it. If some parts would be to difficult for a beginner, you could skip them and come back to it later...
|
While I will agree with you that sometimes, books can be better organized and presented, I don't agree that there should always be only one book for each subject. The needs of a person who is an absolute beginner and wants to learn programming in C++ are going to be very different from a person who already knows how to program in C++, but wants to learn the specifics of how to program games.
It is wholly appropriate that the needs of those two people should be found in two seperate books. To integrate them would be a waste, as each described person would most likely have no interest in the other half.
Books should be seperated - but only in intelligent and well-organized ways.
Quote:
quote:Originally posted by ufo
As for now, some of the 'professional' books are this way. Actually there is this little sentence in about all of them in the 'who should read this book' section saying "however, if you are new to ... , this book doesn't completely leave you out..." Translated to plain english this reads: "if you are new to this field, this book is meant for you, and if you aren't, you are in trouble, because you are now reading more than one book on the same subject (eg. your time is being wasted)"
I don't like this way of commerce (as a general living principle, not only because it wastes my time and money), because it takes your readers for fools. I know I'm probably trying to convince you of stopping to make disgraceful profits, which has not a big chance of succes, but maybe you genuinely want to offer good products to happy users... and in that case i wanted to lay my egg...
|
I don't think it takes people for fools. I think that it's telling you *exactly* who the book is intended for - in your example, that would be complete beginners. If that's not you, than this book isn't for you. This doesn't take you as a fool, it's telling you upfront whether this book is designed to meet your needs or not.
Quote:
quote:Originally posted by ufo
My impression is also that the beginning books cover not half of the subject (in this case a professional book could pick up where it left of...), but cover half of each chapter, condemning the professional books to repeating everything... This completely nullifies the reason of existence of 'beginning' books...
To resume:
- Separate programming principles from program language syntax
- One book about one subject, covering everything
- Clear and comprehensive titles (eg. not misleading, beginning programming is not the same as beginning assembler programming)
- Book content should be structured, cohesive, contain no redundant text, cover each subject exactly once and complete, and have a good index, so the book can be used as a reference
- If possible, every keyword, or subject should be explained completely in one place, so you can easily find out everything about it by looking it up in this place
- Cut down on screen shots. 95% of the time they are just book fillers. There are some horrible examples from this at wrox also, like "Beginning regular expressions"
To give an example of how bad it can get, I am now reading Beginning Visual C++ 2005 by Ivor Horton, simply because there is no pro book out there on this subject, at least not in the stores in this town, and because I have never programmed C++ before, and because when I tried to use Visual studio for learning java before, i got lost in the mfc classes and the lack of native support for the original sun classes,... so I wanted a book to learn c++ developing for windows. Reasonable book to purchase, wouldn't you think?
Well, I haven't finished the book, but the first chapters are a bit like this:
"If you want to include a new line of code, you can place your cursor at the end of the previous line and press enter..." Not kidding, this is sentence from the book... You couldn't even call that redundant coding principles anymore... I would think this fits in "using word for windows for seniors". Mr Horton, my granny has no ambitions for c++ programming, and in fact people who do shouldn't need info like that.
On the coherence, I give you an other example...
In those first, I think 2 chapters, the author explains in about 3 different places why the main function can be called main() _tmain() or wmain(). Each time he explains about half. Now let me tell you how I read a technical book. I don't remember a thousand page book by just reading it, I remember what can be found in it, and about where it can be found. This kind of writing makes it impossible to use a book as a reference.
|
Than you missed the point completely. This book is NOT SUPPOSED to be a reference. It's *supposed* to be a tutorial, which is a very different thing.
A reference is designed for people who are simply looking up specific information - which usually means someone who already has a passing familiarity with the general topic at hand.
A tutorial is designed to teach.
With a tutorial-style book, you *DO* want repetition of certain facts, because certain facts are easy to forget and cause a lot of problems for people when that happens. Repetition in this case is designed as *reinforcement*. Not only that, but you *don't* necessarily want everything in one place, because that would overload beginners on things they don't need to learn until much later. The more obscure aspects of programming, or of a particular syntax should *not* be covered while the reader is still trying to grasp the fundamentals.
Simiilarly, screenshots, which you call "unnecessary filler" are *very* helpful in certain contexts. With a book like Ivor Horton's Beginning Visual C++ 2005, you're not just learning the language, you're also learning Microsoft Visual Studio (something that seems to have slipped by you). And when it comes to learning the application, screenshots are absolutely necessary for the purposes of clarity and depiction.
You're reviewing this book, but not as it was intended. You're not reviewing it as a tutorial for beginners, you're reviewing it as a reference for experienced users. Not only that, but you're reviewing it as a book on C++, when it is in actuality a book on C++ *USING* Microsoft Visual Studio. Of course it's not going to give you what you want! You're trying to use this book for something it was not intended!
That's like reviewing a plate for the purpose of being used like a frying pan. If you want to give this book an honest review, than do it from the perspective of the people it was *designed* for.