The Codesmith's Library
The REXX Handbook/C Programming: A Modern Approach
Written by Carsten Whimster
It has been a while since I had the time to do book reviews.
Unfortunately, in that time I have received some really nice books, so now
I will start to review again, as time allows. Time doesn't really allow this
month, but I am doing it anyway. I will avoid doing the chapter by chapter
analysis as I did in older book reviews, in an effort to put out more, and
more consistent, book reviews.
The REXX Handbook is a tome of a book. True to Programming in REXX of the same series of books, the quality is high. Hardcover binding, and nice thick paper makes this book feel good. First, let me outline the chapters:
Part 1: General Information 1. REXX Origins 2. Procedures Language in SAA 3. Fundamental Concepts 4. The REXX I/O Model 5. REXX Programming Style 6. REXX Idioms 7. Tuning REXX Programs 8. User Interface Design and REXX 9. Debugging 10. Maintenance 11. Documentation 12. Object-Oriented REXX Part 2: Usage 13. A Sample REXX Application 14. Complex Application Issues 15. Extending CMS REXX with Function Packages 16. XEDIT Macros 17. Application Macros Part 3: Platforms 18. Interlude 19. REXX for CMS 20. System Product Interpreter Performance Tips 21. REXX Compiler for CMS 22. Amiga REXX 23. REXX in GCS 24. REXX for PC-DOS and MS-DOS 25. REXX for Tandem 26. REXX in TSO/E and Other MVS/ESA Address Spaces 27. REXX for Unix 28. REXX for the VAX 29. The IBM Procedures Language 2/REXX Interpreter 30. IBM Procedures Language 400/REXX Part 4: Add-On Products 31. GDDM-REXX: Full-Screen Text, Image, and Graphics from REXX 32. REXXIUCV 33. CMS Pipelines 34. REXX and DB/REXX 35. RXSQL 36. REXXTERM Part 5: In Depth 37. SAA Portability 38. Exploiting Compiled REXX and the REXX Compiler 39. The IBM System/370 REXX Interpreter 40. The IBM OS/2 and OS/400 REXX Interpreter 41. REXX for EXEC 2 Programmers 42. REXX for CLIST Programmers 43. REXX Education 44. Language Evolution and Standards Activities 45. Suggested Reading List and Bibliography Appendices A. Biographies B. REXX Language Levels
As a quick read through the chapter listing will show, this book is very thorough! It focuses on the language itself, as opposed to actually programming in the language. I presume that is why the series contains both books.
Let me explain that a little more. If you want to learn REXX, you would likely pick up Programming in REXX. If, on the other hand, you wanted to know something about REXX, you would get this book. Anything you could possibly want to know, from the history of REXX, through implementation issues on various platforms, to the differences, to what packages are available to extend REXX, to built-in limitations including nesting levels, environment name lengths and all the way to what compilers are available for REXX, this is the book for you. In fact, this is the only book of this nature, that I am aware of!
Part 1 introduces the language, its philosophy, how to get the most out of REXX programming, how to effectively debug, and introduces object-oriented developments for REXX. Part 2 moves on the real world. Through sample applications snippets, tips and tricks, macro uses for REXX and more, this part goes above and beyond just programming REXX and into systems programming and design. Some macros are presented for editors which assist in coding. Part 3 outlines the various platforms REXX is (or was, at the time of publication) available on. The idiosyncracies of the various implementations are discussed, along with ways of getting improved performance through knowledge of the specific implementations. Part 4 discusses some add-on products, most of which are more relevant to the mainframe environment, except for REXXTERM from Quercus. The final section, part 5, goes deeper into implementation issues, portability, standardization, as well as other REXX-related fields, such as REXX education and bibliography.
This is a real bible, an honest-to-goodness treasure trove of hard-to-find information about REXX. This is the kind of book that implementers of languages wish existed for every language ever devised. Just about its only fault (from our perspective) is that the OS/2-specific information in here is fairly limited. This, and its publication date, also means that there is no information about recent derivatives such as Visual REXX, VX-REXX or VisPro REXX.
Unfortunately, partially due to IBM's lack of apparent interest in pushing OS/2 in the market place, as well as the de-emphasis on heavier machinery in the recent years, this book has become hard to find. Amazon does have a page for it, so you may be able to find it there. Otherwise, it is probably necessary to write directly to McGraw-Hill to find a copy.
Slightly dated, this book is nonetheless the authoritative work on the market on REXX, its implementations, intended usage, limitations, and insider information. Given an overhaul, it would again be perfect. Only its age keeps it from getting an A+.
I give it a solid A.
The REXX Handbook, Goldberg, Smith
C Programming: A Modern Approach
In spite of the surging popularity of C++ and more recently, Java, there are still new books coming out on older languages, such as C. Mostly they are me-too books, desperately cashing in on a fading wave, but this book is quite different. These are the chapters and sections:
Basic Features of C 1. Introducing C 2. C Fundamentals 3. Formatted Input/Output 4. Expressions 5. Selection Statements 6. Loops 7. Basic Types 8. Arrays 9. Functions 10. Program Organization Advanced Features of C 11. Pointers 12. Pointers and Arrays 13. Strings 14. The Preprocessor 15. Writing Large Programs 16. Structures, Unions, and Enumerations 17. Advanced Uses of Pointers 18. Declarations 19. Program Design 20. Low-Level Programming The Standard C Library 21. The Standard Library 22. Input/Output 23. Library Support for Numbers and Character Data 24. Error Handling 25. International Features 26. Miscellaneous Library Functions Reference A. C Syntax B. C Operators C. Standard C versus Classic C D. Standard Library Functions E. ASCII Character Set Bibliography Index
This book is intended to teach C, not any other purpose. As such, it starts off light, and moves steadily through the material, trying to maintain a good clear aim, and introducing topics in a logical and progressive fashion. It is clear that it is intended to be able to be used as a textbook for a course teaching C, or a course requiring knowledge of C. The author himself is a professor at Georgia State University.
In spite of being an introductory book, it does eventually treat some more advanced topics in some detail. I am happy to see this as certain topics will never be well understood until a treatment of the uses, as opposed to the how-to, has been demonstrated. Pointers are notorious for this, as an example. Anyone can, with a bit of effort, learn how to use pointers, but it is few people who automatically then go on to use them in appropriate situations. It takes more exposure to them to see their benefits. Examples with linked lists and function pointers help to demonstrate the need for pointers in C. Some treatment of other advanced topics, such as design and low-level programming is also present. I would have liked to see a slightly more in-depth treatment of low-level programming, but we all have different priorities I suppose.
I am pleased to see material on design, both the introductory coverage in several chapters, including chapter 10, and the more in-depth coverage in chapter 15 and 19. This topic is often left out of books, resulting in poor programming style, poor understanding of modularity and other illnesses of improper training. This design chapter also includes a brief introduction to C++, which although short, is quite good. The author has apparently even gone to the trouble of assuring that the C he teaches in this book is compatible with C++. This kind of attention to detail pays off.
One feature in particular distinguishes this book from other similar books: the Q&A sections at the end of each chapter. I found myself skimming much of the book, knowing C well already, but reading these sections religiously, and even I found answers to some long-standing questions in there. Invaluable for the newbie, and great for the more experienced programmer all the same.
The bibliography is also very good. It is much less predictable than one might expect, including not only such things as the mandatory ANSI/ISO papers, K&R, and The C++ Programming Language, but also other excellent books such as Programming Pearls. Good reading. I can't wait for the C++ book King apparently has in the works!
To top it all off, how can you fault a book which sports a front cover by Laszlo Moholy-Nagy ;) As an avid photographer, I was interested to see this example of his "other" work.
This is one of those rare books that everyone seems to like. It is not a superficial attraction either. It is classy, well written, thorough, and importantly, completely frank: the warts of C are not hidden. It reads very easily and teaches gently and authoritatively. I now consider this the book that I would recommend to anyone wanting to learn C. Barring major disagreements from instructors, future introductory C courses at EDM/2 will use this book.
I give it a well-deserved A+.
C Programming: A Modern Approach, King
Our Bookstore has reviews and links to Amazon for all books we have reviewed in the past, as well as several books waiting to be reviewed, and others which we recommend.