This document, titled "ULTRIX Guide to Languages and Programming" (Part Number: AA-ML94C-TE, May 1991, for ULTRIX Version 4.2 or higher), is a comprehensive technical guide for application programmers and system engineers. Published by Digital Equipment Corporation, it serves as a practical manual for developing, building, debugging, optimizing, installing, and maintaining software on the ULTRIX operating system.
The guide assumes the reader is already familiar with programming languages (such as C, FORTRAN, and Pascal) and focuses on the tools, methods, and concepts specific to the ULTRIX environment. It does not teach programming languages or their syntax.
Key areas covered in the document include:
- Application Development Phases: Outlines the stages of software development and introduces relevant ULTRIX tools.
- Compiling, Linking, and Building Programs: Details the use of ULTRIX compilers (e.g.,
cc, c89, f77), linkers (ld), archive libraries, and the make utility for automated program construction.
- Debugging Programs: Provides extensive information on using the
dbx debugger for symbolic debugging, as well as ctrace and lint for C program analysis.
- Checking Programs and Improving Performance: Describes profiling tools like
pixie, prof, and gprof to analyze execution time and offers guidelines for optimizing C and Pascal programs for both RISC and VAX systems.
- Library Routines and System Calls: Offers an overview of the C library, standard I/O, system I/O, and various specialized libraries (Curses, Internationalization, Kerberos, Mathematical, Network Computing System).
- Interprocess Communication: Explains and provides examples for using pipes, signals, and sockets for communication between processes.
- Writing Secure Programs: Delivers security guidelines for programming tasks, including managing file descriptors, responding to signals, specifying secure search paths, protecting files, handling errors, using privileged processes (SUID/SGID), user authentication, and programming securely in the DECwindows environment.
- Calling Between C and Pascal: Describes the coding interfaces and argument passing conventions between C and Pascal for both RISC and VAX architectures.
- Portable C (pcc) Implementation Notes: Discusses extensions, deviations, and translation limits of the C compiler on ULTRIX.
- Storage Mapping for C Data: Explains how C data types, arrays, structures, and unions are aligned and stored in memory on RISC and VAX systems.
- Porting Applications from VAX to RISC Systems: Highlights differences in files, functions, and data representation that are crucial when porting applications between these architectures.
- Kernel Debugging: Provides instructions for debugging the ULTRIX kernel (
/vmunix) on RISC and VAX systems using tools like dbx, nm, and adb.
The document serves as a valuable resource for programmers seeking to leverage ULTRIX's development capabilities, optimize their applications, and ensure program security and portability across different hardware platforms.