-->
by Kamran Husain
IN THIS CHAPTER
This chapter gives you a brief introduction to some languages other than those that
have been assigned whole chapters in this book. You will learn details about the
following languages and how to get packages for them:
All the packages here have accompanying documentation and "how-to-use" instructions for them.
The list of programming languages covered here is not complete. As Linux becomes more and more acceptable in the programming community, you will see more languages being ported to Linux.
The Ada programming language was named after Ms. Ada Lovelace, a member of the original Ada software development team. Ada is the choice of many real-time system software developers and has been enhanced significantly for this purpose. Needless to say, some greatly enthusiastic individuals have ported this language over to Linux. The Ada package is referred to as the GNAT (for GNu Ada Translator). The authors therefore appropriately belong to the GNAT project at New York University.
The latest update at the time of this writing was in September 1994. The Ada83 and Ada90 standards of the Ada language are covered in this release. The Ada for Linux package comes in the following files:
For more information, you can contact the support folks via e-mail at [email protected]. The FTP site at tsx-11.mit.edu has the latest information and release of this software in the directory /pub/linux/packages/Ada.
To compile the source files, you need gcc 2.6.0 or higher. The compiler can be found in the gnat-2.0.tar file. Altogether, this package chews up about 5MB of your hard disk space.
The FORTRAN programming language is also ported to Linux. Only versions up to FORTRAN 77 have been ported over. There are only commercial ports of FORTRAN 90 as of this publication. The package in the tsx-11.mit.edu archives under the /pub/linux/packages/fortran directory contains the following files:
For a more up-to-date description of the files, check the INDEX file in the same directory as the above files. The libf2c-0.9.tar.gz file contains the functions for converting FORTRAN code to C. Actually, the program f2c does a pretty decent job on all my class assignments at the university. The output is not idiot-proof, but it does the major portion of the job of translation.
The toolpack files are tools for FORTRAN programmers. Functions include printing aids for clean output listings and some sort of lint checker. Tools in this package include those for portability testing and dynamic programming analysis. All the script files in the toolpack are written for the C shell, so you will need to have the tcsh program installed on your system.
You will use at least 5-10MB of your disk space depending on which package you install.
The mpfun package is a multiple precision (FORTRAN MP) library and translator. This package performs multiprecision floating-point arithmetic with up to 16 million decimal digits, using advanced, recent algorithms and automatic translation from FORTRAN 77 code to FORTRAN multiprocessor code. The translation is done via directives within comment fields.
The ObjectProDSP package is an X Window system, object-oriented tool for Digital Signal Processing design development and implementation. The package contains the basics for building interactive scientific and engineering applications. The package was developed by Paul P. Budnik, Jr. ([email protected]). The amount of disk space required is about 5MB. You can get it from tsx-11.mit.edu archives in the /pub/linux/packages/dsp directory.
The Modula-3 language is available from Digital Equipment Corporation's research center SRC. Modula-3 is an object-oriented language designed for multiprocess, distributed application development. Modula-3 resembles PASCAL in many ways but is more suited for building large applications.
The key features of the Modula-3 package include a full-blown GUI interface, runtime typing, support for multithreaded applications, garbage collection, and exception handling. The garbage collection and storage reallocation features of the language are of keen interest to object-oriented programmers. After all, who frees an object--the portion of the code that created it, or the portion to which the object was passed? The garbage collector for removing a large number of these problems is built into the language.
Modula-3 uses threads to process its incoming messages. Unlike other X-based applications, where one event queue has to be managed between several listening applications, Modula-3 allows the invocation of threads to perform message handling. A good example of the usage of this feature is the Trestle package--the interface package to X. With Trestle you can create threads to run in the background while you're doing other processing.
You can get Modula-3 from the Internet from the FTP site at gatekeeper.dec.com: /pub/DEC/Modula-3/release-3.5.3. Prebuilt binaries exist in ftp.vlsi.polymtl.ca:/pub/m3/binaries/LINUX/m3-3.4. There is a home page on the Web at http://www.research.digital.com/SRC/.
The OGI Speech Tools Version 1.0.1 for Linux are speech data manipulation research tools. These tools are primarily used for signal manipulation, phonetic, phonemic, and word analysis. This package has the capability to build audio databases that can be used to train neural networks. The OGI speech tools were developed at the Center for Spoken Language Understanding (CSLU-OGI). You can get more information about them from [email protected].
The FTP site for this package is sunsite.unc.edu in the file /pub/Linux/apps/sound/ogi-speech.tar.gz or in tsx-11.mit.edu in the directory /pub/linux/packages/ogi.
You need some sort of sound card that is capable of digitizing sound under Linux. A good package for digitizing sound would be the Sox package.
In order to compile the package, you need the following X libraries (or later versions): libXaw.so.3.1, libXt.so.3.1, libX11.so.3.1, libc.so.4.4.4, and libm.so.4.4.4.
If you are into computational linguistics or are interested in speech compression, recognition, or applications of neural networks, this is one great research package to check out. The documentation in this package consists of man pages and TeX source. Check ogi-doc-PS.tar.gz for TeX documentation in Postscript format. For the document in DVI format, try using the file ogi-doc-dvi.tar.gz.
Eiffel is a nonproprietary object-oriented language developed by Dr. Bertrand Meyer and his colleagues. An excellent reference book for Eiffel is Dr. Meyer's book Object-Oriented Software Construction, Prentice Hall, 1988. In 1994, Dr. Meyer's company ported Eiffel to Linux.
The most advertised feature of Eiffel is its capability to reuse code without modifications. In conventional C++ and some other object-oriented languages, code reuse is still in its infancy. Eiffel is a new language primarily written with reuse in mind. Polymorphism, garbage collection, dynamic binding, multiple inheritance, and templates are built into the language. Even so, Eiffel code is interoperable with C and C++.
The design of Eiffel has been placed in the public domain. The Eiffel trademark is owned by the Nonprofit International Consortium for Eiffel (NICE). You should really have no fear using this trademark because NICE is quite nice about using the Eiffel trademark. The official language description is Eiffel: The Language, by Dr. Meyers, Prentice Hall, 1992. The formal syntax is included in the 600-plus page book along with examples, source code, and application guidelines.
Tower Technologies Corporation is promoting its commercial release of Eiffel, called TowerEiffel. Visit the Web site at http://www.cm.cf.ac.uk/Tower. This site is a bit slow to get access to at times.
Though not the preferred choice of "real" systems programmers, COBOL is a very widely used language in the business community. Naturally, there are ports to Linux in this database- oriented language. A good commercial port worth looking into is the ACUCOBOL-85 port by the Acucobol, Inc., company. Check the Web site at www.acucobol.com for more information about COBOL.
The ACUCOBOL-85 version of COBOL offers programmable hot keys, advanced windows capabilities (not X), its own file system, and a source-level debugger. Acucobol, Inc., also offers more than 600 tools to work with the Linux compiler. The COBOL code on Linux is portable to other platforms running COBOL-85.
LISP stands for LISt Processing. LISP was developed around 1958 and has been used in all areas of computer science research (for example, in artificial intelligence), as well as being the basis for products, such as emacs and AutoCAD. (Actually, AutoCAD uses AutoLISP, an enhanced version of LISP.)
The Common LISP language interpreter and compiler (clisp) package is in the Slackware Linux distribution. As the name suggests, the package contains both an interpreter and a compiler for generating machine-executable code. Invoked without arguments, clisp executes a read-eval-print loop, in which expressions are read from standard input, evaluated by the LISP interpreter, and their results output to standard output. When invoked with the -c option, the specified LISP files are compiled to a machine-readable code that can be executed more efficiently.
To get more information about the clisp package, type clisp -h at the prompt. If you are short of RAM on your machine, specify the amount of memory that clisp will use with the -m XXXK option, where XXX is the amount of memory to use in kilobytes. The clisp package has support for three languages: English, German, and French.
If you are an emacs user, you will want to use the -I option to make clisp ILISP compatible. ILISP is the LISP interface for the emacs editor.
The language implemented conforms to the book by Guy L. Steele Jr., Common LISP--The Language, Digital Press, First Edition, 1984.
Another language closely related to LISP is the Scheme language. A Scheme programmer has at his or her disposal the power of C and LISP. Scheme allows free data-typing of variables by offering lists, arrays of lists, associative lists, and arrays, in addition to the numeric and string data types.
Scheme, like clisp, is available in compiled or interpreted form. You can create output files from Scheme using two of three types of options: fast, cheap, and algorithmically correct. The fast option produces a large executable, the "correct" version has more error checking, and the cheap version produces a smaller, though (maybe) slower version of the program.
The interpreted environment produces a rapid development front end because there is no edit-compile-run cycle. You simply edit what you have changed and reexecute, just like in LISP.
Several versions of Scheme are available on various sites on the Internet:
IBM has released a port of its version of the object-oriented language REXX. The REXX language is a scripting language available on most IBM platforms and is now ported to Windows. Object REXX extends the standard REXX language with classes, objects, and methods. It also supports messaging, polymorphism, and multiple inheritance. Object REXX is a trademark of IBM.
Check out the IBM Web site at http://www.ibm.com for more information.
The number of languages and software packages available for Linux continues to grow with Linux's popularity. This chapter has given you a snapshot of some of the languages available for Linux. Time and space have limited us to introducing in detail only a few of the more common languages, such as C, C++, Smalltalk, and so on. There are, however, many more languages which may be ideal for your project. It might be worth your while to check out some of these languages and get that ideal fit.