22 February 2006

Unix Development Environment

(This is a subheading of Unix-3)

In researching this article, I was often struck by the hazy difference between applications and actual components of the Unix environment. Partly, this is because I made the unsatisfactory choice of writing about Unix, rather than (say) a particular subsector of the Unix market like Mac OS X, Linux, FreeBSD, SunOS, or AIX. Each of those subsectors has a pool of applications native to it, and each of these subsectors has a peculiar field of usefulness. Had I been writing about any one of these, I would have had much more information on specific applications and their peculiarities.

Another thing to remember is that people typically use Unix in ways very different from, say, they might a Macintosh. Unix is typically used for nonstandard, high-end, specialized purposes. Silicon Graphic's Irix was developed for exceptionally advanced custom graphics applications; its "applications" could could have price tags in the six figures. University students in the computer sciences were likely to be trained in Unix development environments, and develop refinements of their preferred flavor as class projects; later, on their jobs, they might use a flavor of Unix to manage a server or develop applications. Unix development environments can be used to develop applications for non-Unix computers, such as video games. In this sense, therefore, Unix is not strictly analogous to the MS Window market. MS Windows computers are more like home appliances, nearly always used for the same small number of tasks, and nearly always used by non-programmers for some ultimate non-IT related goal; Unix computers have a complex and ambiguous differentiation between application and operating system, they are highly customizable, and they are usually used for IT-related goals. Often they are servers, and the applications that run on them are intentionally kept out of sight.

New applications may be written as a shell script, or else in language interpreters like awk, perl, and tcl/tk. (Note the lowercase: AWK is a programming language, while awk is a program that interprets the language. The other corresponding languages are Perl and Tcl/Tk, with the first letter capitalized).

AWK (and awk) is an extremely important component of the Unix development environment; it's essentially a structured file query language, which does something when it finds the specified character string. The program syntax allows for extremely terse commands, typically of one line in length. The newer version of this tool is nawk.

Perl is famous as a very common language for web-based content management software (CMS). Mostly one finds it used in CGI applications like wiki engines or blogging software. It incorporates much of AWK and the sed command, but with a different syntax.

Tcl is a language with an interpreter that generates C/C++ code as the end product. The user actually creates new Tcl commands which are saved as C or C++ subroutines. Not surprisingly, Tcl's body of available core commands is now extremely large, which explains the enormous range of application for it. Tcl has a graphical toolkit, known as Tk (analogous to the Visual Basic toolbox). Tk allows one to create, edit, and place "widgets" in a grapical interface like X Windows.

(Further information added as needed)
RESOURCES: The Art of Unix Programming, Eric Raymond: esp. "Language Evaluations" and "Minilanguages";

ONLINE TUTORIALS: Unix tutorial, Stanford University School of Earth Sciences, USA; "Unix for Web developers," eXtropia tutorials; "An Awk Primer," Greg Goebel ; "Tcl/Tk Cookbook," Lakshmi Sastry & Venkat VSS Sastry;

BOOKS: UNIX: the Complete Reference, by Kenneth Rosen, Douglas Host, James Farber, & Richard Rosinski—Tata McGraw-Hill edition 2002

Labels: , , , ,


Post a Comment

<< Home