Other Languages Through the Years
After FORTRAN and COBOL gained ground, there was no turning back the software industry. Languages began appearing all over the place. Companies would develop their own in-house programming languages that, supposedly, supported their environment better than the big two languages, FORTRAN and COBOL.
So many languages began appearing that the programming community started becoming fragmented, wallowing in the sheer number of possibilities, unable to decide which language was the best to use for any given project. At least, that was the scenario that IBM saw when it decided to create "the only programming language anyone would ever need." IBM saw (or tried to create, there is debate today, even among IBMers) a need for a programming language that did it all. The new language would be the best scientific language. It would be the best business language. It would solve any programmer's needs.
Therefore, IBM created the PL/I programming language to solve the problem of too many languages. PL/I stands for Programming Language I. IBM designed PL/I by taking the best of the COBOL language, the best of FORTRAN, and the best of some other programming languages of the time. The end result, at least in terms of sales, was never achieved; IBM never had the success with PL/I it had hoped for. Instead of being the only programming language anyone would ever need, PL/I became just another programming language among many.
The primary problem with PL/I was that it was too good; it was massive. IBM made use of the best of every programming language of the day, but in doing so, IBM created a huge language that required massive computing resources to run. During the 1960s, not enough businesses had enough computer power to devote 100% of the CPU's time to PL/I compiles. Also, PL/I took too long for programmers to learn. The language was so large that programmers rarely mastered it.
Listing 3.3 shows part of a PL/I program that performs the same routine as the FORTRAN and COBOL listings you saw earlier. In this example, the code looks more like its COBOL counterpart than FORTRAN, but much of PL/I differs from COBOL. The differences become more apparent as you begin programming scientific and other non-business applications.
Listing 3.3 A Sample PL/I Program That Performs Payroll Calculation
PAYROLL: PROCEDURE OPTIONS (MAIN); DECLARE OVRTIM FIXED DECIMAL (2); DECLARE HOURS FIXED DECIMAL (5,2); DECLARE RATE FIXED DECIMAL (9,2); DECLARE TAXRATE FIXED DECIMAL (9,2); DECLARE GROSS FIXED DECIMAL (9,2); DECLARE NETPAY FIXED DECIMAL (9,2); BEGIN: GET LIST(HOURS, RATE, TAXRATE); IF HOURS < 40 THEN OVRTIM = (HOURS - 40) * RATE * 2 GROSS = 40 * RATE ELSE OVRTIM = 0 GROSS = HOURS * RATE; NETPAY = GROSS * (1 - TAXRATE); PUT LIST (OVRTIM, HOURS, RATE, TAXRATE, GROSS, NETPAY); END PAYROLL
Perhaps another reason for PL/I's decline is that it was never ported to a microcomputer environment. Originally, the microcomputer did not have the memory or disk space for a language as large as PL/I. Although today's PCs would have no trouble running PL/I, other languages such as C and Pascal took hold in the PC arena before PL/I had a chance to.
Another programming language that has been around for many years is Report Program Generator (RPG). RPG exists in newer versions named RPG II and RPG III. As its name implies, RPG began as a report writer only. It was originally intended to be a language that nonprogrammers (shades of COBOL's ideals) could use to generate reports from data in disk files.
RPG is unlike most other programming languages. The languages you have seen so far are procedural languages. That is, they offer individual instructions that the computer follows in a sequential manner until the job is done. RPG does not have typical commands, and its logic is nonprocedural. (Some of the later versions of RPG do offer limited procedural capabilities.) An RPG program is one that is written using codes that follow strict column placements. Nonprogrammers, and even veteran programmers who are inexperienced in RPG, have a difficult time deciphering RPG programs. To make matters worse, there are several nonstandard versions of RPG in widespread use.
Listing 3.4 shows a sample RPG program. The placement of the codes must be exact. If you shift any line of the program to the right or left a few spaces, the program does not work. As you might imagine, an RPG program is difficult to follow and extremely difficult to get right the first time you write one.
Listing 3.4 A Sample RPG Program Shows RPG's Cryptic Nature
F* PAYROLL PROGRAM FOUTP IP F 80 KEYBOARD FINP O F 80 SCREEN IREPORT AA 01 1 10RATE I 8 30HOURS I 12 40TAXRATE C *PY01 IFGT '40' C OVTIM MULT RATE*2 C OVTIM MULT HOURS C END C *GROSS IFLE '40' C GROSS MULT RATE * HOURS C END OOUTP H 100 1P
Programmers used RPG primarily on minicomputers. As you might recall from Chapter 2, in just a few short years the minicomputer has mostly gone the way of the dinosaur, and RPG went with it.
Two other programming languages, APL and ADA, have also been used a lot over the years. APL (which stands for A Programming Language) is a highly mathematical programming language developed by IBM. APL is a language as different from COBOL and FORTRAN as is RPG. An APL program consists of many strange symbols (housetops, curved arrows, triangles, and so forth) and requires special hardware to generate its symbols. Because of the hardware restriction and its slow speed compared to other programming languages (APL is almost always run in an interpreted mode and rarely compiled), it quickly lost favor even by those who were fans.
ADA, named after Lady Augusta Ada Byron (daughter of the poet Lord Byron and girlfriend of Charles Babbage, the father of computers), was used almost exclusively by the Department of Defense and other governmental contracts. The government thought it best to standardize on a programming language so that all of its programs would be consistent and governmental programmers would be familiar with the language of all in-house code. Experts viewed ADA as a mediocre programming language that is difficult to learn (keep in mind that the government put its blessing on ADA as the language of choice, and the government has never been known for being extremely efficient or logical). One wonders why the Department of Defense, which designed and wrote the first COBOL compiler years earlier, chose to use something besides COBOL when almost every company at the time had adopted COBOL and was having tremendous success using it.
Because the government standardized on the ADA programming language early (it was the Department of Defense that designed ADA in 1979), you had to know ADA to produce programs for the government. Today, other languages are accepted.
This completes the first discussion of programming languages. In the next chapter, you get a look at some of the newer programming languages (those developed within the last 20 years).