Feedback Search Top Backward Forward
EDM/2

The Codesmith's Library

The REXX Handbook/C Programming: A Modern Approach

Written by Carsten Whimster

 

Errata

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

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.

Summary

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

  • McGraw-Hill, ISBN 0-07-023682-8, (price unknown)
  • Intended audience: REXX Developers
  • Mark: A

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.

Summary

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

Reviewed Books

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.