Advances in Engineering Software 14 (1992), 303-306
Book reviews directory files and explains the rules for naming them. It shows how to create and delete directories, move through the file structure, and use pathnames to access files in different directories. This chapter also covers file access permissions, that allow you to share selected files with other users, and links, which can make a single file appear in more than one directory. Chapter 5 takes a close look at the shell and explains how to use some of its features. It discusses command line syntax, how the shell processes a command line, and how it initiates execution of a command. The chapter shows redirection, how to construct pipes and filters on the command line, and run a command as a background task. The final section covers filename generation and explains how you can use this feature in your everyday work. Chapter 6 shows how to use the vi editor. This chapter goes into detail about many of the vi commands and explains the use of parameters for customizing vi for your needs. At the end of the chapter is a quick reference summary of vi commands. Chapter 7 shows how to use the nroff text formatting program to prepare documents. It discusses the theory of filing and justifying lines, describes the structure of an input file, and shows how to use nroff commands. Chapter 8 covers the Bourne shell, which is both a command interpreter and a high-level programming language. This chapter expands on the interactive features introduced in Chapter 5, explaining how to create and process groups of commands stored in files (shell scripts); and explores aspects of shell programming such as variables and flow control commands. Chapter 9 contrasts the C shell with the Bourne shell, paying particular attention to those facets of the C shell that are absent from the Bourne shell. Chapter 10 describes how to use the C compiler as well as two of the most useful software development tools, the make utility and System V's Source Code Control System (SCCS). Chapter 11 discusses system administration to explain the inner works of the UNIX system. Part II is a complete, easy-to-use reference guide to 68 frequently used UNIX utilities, presented in alphabetical order. The utilities are also classified into the following categories: Utilities that display and manipulate files; Communication utilities; Utilities that display and alter status; Utilities that are programming tools; Source code control system utilities (System V only) and Miscellaneous utilities. Each entry contains the following information: Format; Summary; Arguments; Options; Notes and Examples. Appendix A describes the unique
A Practical Guide to the UNIX System: 2nd edition. System V Release 3 and BSD 4.3. Mark G. Sobell, The Benjamin/Cummings Publishing Co., Inc., 1989. XXV + pp. 692, softcover. £19.95. ISBN: 0 8053 0234 3
This book is an invaluable tutorial and reference for anyone who wants to use UNIX for programming, word processing, electronic mail, and other applications. It assumes that the reader has some computer experience but little or not experience with the UNIX system. Experience UNIX users will find the later chapters of Part I and Part II to be useful sources of information on such subjects as shell programming, C programming, and system administration. This book coeers the two major versions of the UNIX sytem: AT&Ts System V, Release 3, and Berkeley Software Distribution (BSD) Release 4.3, deafly identifying and explaining the similarities and differences between the systems. In addition, the Bourne, C, and Korn shells are covered in full. Part I provides a step-by-step tutorial to UNIX with plenty of examples, exercises, and review questions for 'hands-on' learning of commands and functions. In Part II, nearly 70 UNIX utility programs are discussed, with excellent examples of each program drawn from common applications. Chapter 1 gives a brief history and overview of the UNIX system that explains why it is so popular. It continues with a discussion of some of the features that are new in the latest versions of the system, and closes with a section on the limitations of the UNIX systems. Chapter 2 explains how to log in on, and use, the UNIX system. Following a description of the conventions used in this book, this chapter leads the reader through a brief session with UNIX. After showing how to log in and out, it explains how to correct typing mistakes and abort program execution. Finally, it guides the reader through a short session with the vi editor and introduces other important utilities for file manipulation. Chapter 3 describes several other file manipulation utilities, as well as utilities that allow you to find out who is logged in, communicate with other users, display system documentation, print files, and perform other useful functions. Part II of this book covers many of these and other utilities more concisely and completely. Chapter 4 discusses the organization and terminology of the file structure of the UNIX system. It defines ordinary and 303 Advances in Engineering Software 14 (1992)--
© 1992 Elsevier Science Publishers Ltd.
characteristics of the Korn shell, supplementing the chapters on the Bourne shell and C shell. Appendix B describes the regular expressions used by ed, vi, grep, awk and sed. Contents: The UNIX System: The UNIX operating system; Getting started; An introduction to the utilities; The file structure; The shell; The vi editor; the nroff text formatter; The Bourne shell; The C shell; Programming tools; System administration. The UNIX Utility Programs. Appendices: Introduction to the Korn shell; Regular expressions. Glossary. Index. P. Azevedo Programming in Mathematica. Roman Maeder, AddisonWesley, 1990. pp. 267, hardcover. ISBN: 0 201 51002 2 Written by one of the original authors of the Mathematica system, Programming in Mathematica explains how to take advantage of Mathematica's powerful built-in programming language. It is intended for users of Mathematica from mathematics, science, engineering and other areas; the book complements Stephen Wolfram's book by showing how Mathematica is used to solve a range of practical problems. This book describes Mathematica programming methods and explains in detail how to apply them to the construction of actual programs. Many complete example programs from such areas as graphics, numerical computation, combinatorics, and algebra are included. With their emphasis on good programming style, these examples serve as excellent models for anyone who is developing programs in Mathematica. All the example programs use version 1.2 and are also available in machine-readable form directly form Wolfram Research. The need of writing programs in Mathematica's programming language arises when problems require many commands to solve in Mathematica, or one is faced with doing the same calculation steps over and over again with different input. Through design and tradition each programming language has developed a certain preferred style of good programming. This book presents examples of what the designers of Mathematica think is good programming style, and showing why this is so. Chapter 1 develops a package from scratch, following these steps: starting out with a few commands or definitions that could be entered directly into Mathematica, the parts of the computation which remain the same for any input are used to define some functions. These functions are made into a package adding documentation and certain programming constructs that make such a package easier to use. A package is defined by a name and is stored in a file with extension m, the listing of which is reproduced in full in Appendix B.
Along the way we learn how to set up package contexts, define defaults for parameters of functions, and also look at graphics. The example, which comes from functions of one complex variable, can be followed even if the reader is not familiar with the mathematical concepts. Chapter 2 introduces the concepts required to write good packages in Mathematica. A sketch package is provided, which you can use as a template for writing your own packages. Chapter 3 looks at the issues of pattern matching and defining options for functions that you define. Default values for parameters and values make commands much easier to use. Chapter 4 looks at different programming styles possible in Mathematica. Chapter 5 looks at some aspects of how Mathematica evaluates expressions. Chapter 6 introduces mathematical programming. Chapter 7 explains how numerical computations are done and what kind of numbers Mathematica supports. Chapter 8 explains how to change or add new built-in rules and procedures for performing certain transformations automatically. Chapter 9 deals with the interactions of Mathematica with the rest of the computer system. Chapter l0 looks at notebooks, available on some front ends of Mathematica. The last chapter explains how the picture on the book cover was generated and along the way shows some useful graphics utilities. Appendices contain some exercises with solutions and the source code of all examples used in the book which are not reproduced in full in the text. Contents: Preface; About this book; From interactive commands to a package; Encapsulation mechanisms for packages; Defaults and options; Functional and procedural programming; Evaluation; Building rule sets; Numerical computations; Overriding built-in rules; Input and output; Notebooks; Producing the cover picture; Appendices: Exercises, Program listings; Index. P. Azevedo
Recursive Block Coding for Image Data Compression. P.M. Farrelle, Springer-Verlag, 1990. pp. 297. D M l l 8 . ISBN: 3540 972358 This book develops a new image data compression technique namely recursive block coding or RBC, that has its roots in non-casual models for ld and 2d signals. The underlying theoretical basis provides a multitude of compression algorithms that encompass two source coding, transform coding, quad tree coding, hybrid coding and so on. Since the noncausal models provide a fundamentally different image representation, they lead to new approaches to many existing algorithms and in particular lead to useful approaches for asymmetric, progressive and adaptive coding techniques. L. Sucharov