Have you ever heard the saying "If all you have is a hammer, every problem is a nail?" Nowhere is that more true than in software development. New software development tools are unleashed on the public every day, usually accompanied by a dozen or more acronyms. Although it is possible even likely that somewhere in this menagerie there is a tool that is ideally suited to whatever problem it is you're currently working on, the fact remains that if the only programming language you know is C, your project will undoubtedly be developed in C.
In this section I provide a very high-level overview of some of the tools available for software development in a Linux environment. My intent here is not to provide a practical introduction to these technologies. In most cases, I'm not even giving even any examples. Instead, I hope to give you a bare-bones introduction to what the tools are, what they are good for, and what the associated acronyms mean. The idea is that when you get your million- dollar idea you can skim over this chapter and figure out which tool it is you need to learn in order to best implement it, then head out to the bookstore and buy more books.
"Scripting Language" vs. "Programming Language"
Developers continue to quibble over the difference between scripting languages and programming languages. To the best of my knowledge, no clear definition exists for distinguishing between the two. It is perhaps more profitable to speak of the difference between compiled and interpreted languages. A compiled language is one in which the source code must be totally parsed and translated into a machine executable form before any part of the program can be executed. An interpreted language is parsed and executed one line at a time. Traditional third-generation languages such as C, Fortran, and Cobol are compiled languages.
Note that nowhere in this appendix do I talk much about shell scripts. A shell script is nothing more than a bunch of shell commands collected in a file and executed as a single unit. They are of course very handy, but in this appendix we're only covering pure development tools.
This appendix provides tantalizing hints about the nature of the following software development tools:
awk | Aged but viable scripting tool |
bison | Creates formal language parser |
C | Language del Vecchio |
C++ | Object-oriented C |
ColdFusion | Trendy Web development tool |
CORBA | Tool to create maintainable code |
flex | Parse input into tokens for bison |
Fortran | Math and science programming language |
gawk | GNU awk |
Glade | Rapid GUI development |
GTK+/Gnome/glibc | GUI C tools |
HTML | Hypertext Markup Language |
Java | Object-oriented programming |
Javascript | Widely supported HTML extension |
lex | Make tokens for yacc/bison |
Make | Compile big projects easily |
MySQL | Super keen free database |
Perl | Mighty scripting language |
PHP | Server-side HTML extension |
Python | Emergingly mighty scripting language |
RCS/SCCS | Revision control tools |
sed | (text) stream editor |
Swing | Java GUI tools |
Tcl/TK | GUI script tool |
yacc | Create formal language parsers |