PROGRAMMING - Choosing Your Tools
By STEVE GOSCHNICK
At the broadest level, there are four categories of software you may learn as a computer user, regardless of the computer, be it a mainframe, a PC or a Macintosh. The first three are: OPERATING SYSTEMS, EDITORS, and APPLICATION PROGRAMS. Some skills in all of these three are essential if you are to use a computer constructively at all. Skills in the fourth are far from necessary in everyday usage of the machine, yet it is the software in this fourth realm that offers you the most flexibility and therefore the most opportunity to be a creative individual on a computer.
The most widely used EDITOR on PC's today is a specialised editor, the Word Processor. The sole purpose of the traditional editor was to input new data, or modify existing data, that resided on the computer disk. Not only does the Word Processor do this traditional task, but it is heavily oriented towards formatting the text back out of the machine and onto paper. Thus while a Word Processor is an EDITOR, it is also an APPLICATION PROGRAM (ie. programs we use to do constructive work on a computer, rather than a means to an end).
Like all humanly devised categories, the four levels of software I've just outlined, are just convenient mental pigeon holes for the human mind to work with, in its job to comprehend, store and recollect ideas. As we have just seen with the Word Processor, existing software programs can overlap two or more of these traditional categories. This overlapping or integration, has accelerated with the passage of time. In the ancient days of computing when the only available computers were the mega-dollar mainframes from monolithic corporate giants, such overlap was rarely seen. Today it has become commonplace for a single software package to exhibit virtues from two or three of them. First seen on the Macintosh (released in 1984) and now in Microsoft Windows on the PC, it is usual to find the aspects of the three essential software categories in any given application program, be it a spreadsheet, a word processor or even a paint program.
The first pop-down menu in these systems, consist of FILE functions, such as COPY (a file), RENAME (a file), change disk drives (on which files will be dealt with), etc. These are the principal jobs that were traditionally the preserve of the OPERATING SYSTEM alone. The second pop-down menu has the EDIT functions, such as CUT (delete the highlighted part of a file), COPY (duplicates the highlighted part of a file to a spare spot in memory named the SCRAP), PASTE (duplicates that portion from the SCRAP, back to the current position in a file). These functions were traditionally the preserve of EDITORS alone. The rest of the menus in such an integrated application, are for access to the specific functions of the Application Program's real purpose in life. Eg. the formatting of text, or the tallying of numbers, or the painting of digitally rendered pictures.
The FOURTH category, is the realm of software least frequented by the general user, yet by dedicating yourself to learn one of its number, you shall be richly rewarded. Possibly even in dollars. It is of course the PROGRAMMING LANGUAGES. These are the tools we use to take mental logic from within our brains and craft it into the shape of all that we see and use on computers: eg. editors, operating systems, application programs, games, etc. Even the programming languages themselves have been written in other earlier languages, or else in earlier subsets of themselves.
By programming we can create a virtual reality on the computer screen (eg. An image of a bouncing ball). Or we can even affect real life, ordinary objects around us such as the printing to paper, a graphic image first generated on the screen. Or by controlling a milling machine to carve out a column of metal. The process of programming, the bit between the thought and the result, can be a satisfying creative experience. Programming a computer is one of the most direct ways for the mind to take a thought of some sophisticated artifact or process and produce a reality of it, with a minimum of outside help.
Software and computers together, represent an inventor's paradise. The computer is a generic machine. It comes empty and without any inherent ability, but for the ability to load-up software programs from disk, and then carry out the instructions in that software. The Operating System is the caretaker of the computer, between the running of Application software. The multitude of software turns this general purpose box of silicon, into a multitude of machines. Where once you had to purchase a dedicated word processing machine to do word processing, now you just buy the software on disk and insert it in your existing PC. You can similarly turn it into: a spreadsheet calculator; a database machine; a chess playing machine; a communication's centre (bulletin board); a weather station; a city simulator; a planetarium or whatever. If you can't program, you are limiting yourself to what is available on software shop shelves or in magazines, and by what you can afford. If you can program, you are only limited by your imagination and your time. You don't need factories and vast resources to tool-up for the manufacture of your finished new product. You simply copy it onto a disk. To publish the User Manual/Instructions for your new invention, you turn to the same PC on which you created the product, and use a Desktop Publishing program!
The printer is the most common device currently used to produce something with a physical reality, which remains after the screens power switch is off. But the printer can only produce 2 dimensional representations. Three dimensional "printers" are on the way. In a crude limited sort of way, the computer controlled milling machine is a 3-D printer. More sophisticated ones that can produce intricate, free-form shapes are already in existence. One such prototype has a cube of transparent glass. It is filled with a powder that has special properties, brought into effect when a laser beam passes through it. Three computer guided laser beams pass over the cube, one pointing in each dimension. Where these beams intersect in a particular intensity, they fuse the powder into a solid material. After this light show, you open the cube, remove the remaining and you take the solid 3 dimensional solid object from the cube. This object is a physical manifestation of the 3-D image created on the computer screen. If you want to transfer it into bronze, you could then do so through traditional casting techniques, from the prototype.
Of course producing physical results from a computer is addressing just one limited part of our modern world. Many aspects of modern daily life involve creating and storing things on computers, that hardly ever leave its medium. It is Information, we are learning, that is the most valuable commodity. The information in each of your DNA molecules, holds all the code to specify the physical entity that is you. We ourselves can build and store more pedestrian forms of information such as address books, phone lists, customer databases, inventories, histories, business rules of corporations etc. all on the convenient mediums accessible by computer. So I put it to you, that computer software will become the putty of most things we humans produce. And to write computer software one must learn a computer language.
While computer languages were once the preserve of the few, all that has changed. The languages now widely available, are diverse, lowly priced, of high quality, and easy to use like never before. In other words the general PC user has access to tools that mainframe programmers only dreamed of a mere handful of years ago.
Learning a computer language, is much easier than learning a spoken language. The vocabulary of a computing language is comparatively minuscule, the grammar has no exceptions, the receptor is thoroughly attentive, and you don't have to speak it. Some have described computer logic programming as the modern day Latin. Indeed as computer languages evolve to approximate the spoken languages of us complex mortal souls, but still with the necessity of containing no ambiguity, they will find new roles. There could then be some highly paid professionals out of a job. Contract lawyers for instance?
Despite being easier than a spoken language, you should approach the exercise of learning your first programming language, in a similar fashion to undertaking a second spoken language. It represents no small investment in your time. So you should choose the initial language with caution. You should avoid whatever pitfalls others can alert you too. And you should know something of the background of the vast choice available. The rest of this article is my attempt to help in this regard.
As with the other 3 categories of software, programming has also overlapped the first three. Many stand-alone language compilers now on the market, have built-in so called "integrated environments," which translates to: they have inherent capabilities normally found in the EDITOR and OPERATING SYSTEM categories of software.
There are many dialects of computer languages to chose from eg. ASSEMBLER, BASIC, FORTRAN, COBOL, ALGOL, SIMULA, LISP, SNOBOL, PASCAL, ADA, MODULA-2, PROLOG, FORTH, PL1, SMALLTALK, C, C++, ACTOR, EIFFEL, etc. The introduction of these different languages spans a 50 year period. Each language came about for a different reason, at a different time, and with a different emphasis. As you would expect evolution has improved things considerably. Often a language is not what it used to be. Eg. Modern FORTRAN 77 (the 1977 standard), is very different from the FORTRAN of the 1950's! And FORTRAN 8X (the new standard due out any old time now) is far from the 1977 standard. Other new languages have started from scratch, swiping an idea here, and avoiding a design flaw there, with a dash of something completely new, such as SMALLTALK.
I have had the fortune to get to know seven of these languages enough to complete at least one large project in each, over the last 13 years of my programming career. Of the 3 commercially available PC programs I have written, I wrote SEETREE (a DOS/Shell File Manager) in the C language; LOTTOCHECK in PASCAL; and OCTADIAL (a puzzle game) in C++. The other languages I have used are BASIC, FORTRAN, PL/1, COBOL, predominantly on mainframe projects. I believe I can guide newcomers to programming, to a good first choice. My personal first preference is C++. My next preference is C. Yet I wouldn't recommend either of them to people approaching programming for the first time.
The following discourse is a brief background on some of these languages. It is of course, coloured by my personal experiences, so please take that into account.
Computer chip circuits only know two physical states; a voltage at a particular point in the circuit, and the absence of voltage there. It's called ON or OFF, as in the general light switch sense. We represent ON and OFF as 1 and 0 respectively, when we jot it down on paper or on the keyboard. The First Generation language was and is Machine Language, which consists of large strings of 0's and 1's. These strings of 0's and 1's represent all things: the alphabet as we humans know it; data coming into the computer's processor; data going out of the computer's processor; the name of the instruction code hardwired in the computer chip, to act on the data in the computer's memory at a given instant in time (ie. "ADD the number in the 'A' register, to the number in the 'B' register, and put the result into the 'C' register.") etc.
All higher level languages get reduced to machine code before they can run on any given computer, even now. All your program files with names that end in .EXE or .COM on the PC, contain this raw Machine Code. Sure if you look at it in an editor it looks like alphabet soup made up from 256 characters available from the keyboard. However the computer reads it as 0's and 1's.
As you will appreciate, Machine Language is not well suited to us multi-dimensional beings. It is the job of higher level language COMPILERS, to produce this machine code, from the more English-like dabblings we prefer to enter. The next generation of computer language to be developed was Assembler. It is a "symbolic" rehash of machine language. It has instructions with alphabetic symbols such as: MOV - for the verb move; CMP - for compare; JMP - for jump etc. Again, as a human, and assuming you have a desire for excellence, I would recommend steering clear of Assembler as best you can, particularly as your first language. The speed of modern processor chips and the efficiency of modern higher level languages, predominantly negates any benefit of hand-coding a program in assembler. To know that it exists and was a part of the language evolution process, is enough for the vast majority of us.
Third Generation Languages.
After Assembler came the so called Third Generation Languages (3GL's, also termed High Level Languages), which take in most of those mentioned above, notably: COBOL, FORTRAN, ALGOL, BASIC, PASCAL, C, FORTH, MODULA-2, ADA.
FORTRAN and COBOL.
Of this group FORTRAN (short for FORmula TRANslator) and COBOL were the first mainstream, high level languages, and both were born in the 1950's. As already mentioned, the modern version of FORTRAN is a far cry from the original. Similarly the modern version of COBOL, is an evolved language too, not half as bad as it was, by modern standards. Still, both retain their original flavours and eccentricities. While you can add new features, for compatibility sake with old programs, the bad old features must remain too. Fortran was designed primarily for scientific work, where mathematic equations, and high precision numbers are the order of the day. COBOL is primarily a business language, geared for record processing such as accounting systems. The Database Management Systems, such as DBASE and Relational systems (not covered in this article), that now dominate new development in accounting and business record type applications, draw their roots from the Data Definition aspects of COBOL.
That both FORTRAN and COBOL still exist in the face of new and revolutionary languages, is testimony to the inertia that 20 years of market dominance builds up. A very large percentage of professional programming jobs today, entail either fixing bugs in other people's existing FORTRAN and COBOL programs, or adding extensions to them. While I am sure there is a meal ticket in it, FORTRAN and COBOL are not for the new programmers in the 1990's. The best path to become fluent in a computer language is not with either of them.
The BASIC Language.
BASIC was developed at Dartmouth College. It is an acronym for Beginner's All-purpose Symbolic Instruction Code. Initially it had a very restricted grammar, and the convention for naming variables, was severely restricted. Ie. All variable names were 2 digits long, started with a letter of alphabet, and ended with a digit from 0 to 9. Ie. A1 to Z9. This made for some highly unreadable code. Modern implementations don't have this restriction. Such limitations offered far more benefits to the original compiler writers, than they did to the language learner.
BASIC was an interactive, line-by-line language, generally termed an interpreted language. Interpreters process each line you type, straight after you press the ENTER key, checking for grammatical mistakes before you go on to the next line. (As opposed to the compiled languages where you enter the full program into an editor, then compile it all at once, finding grammatical errors, all at once) As such, an extended version of BASIC was supplied on many early Pre-IBM PC eight bit microcomputers, as an excuse for an operating system! MS/DOS might be heavily criticised as a toy operating system by some, but I can assure you it beats the fudges with BASIC that have gone before it. If any of you out there, are amongst the 5 million consumers who entered home computing on the Commodore C-64, before the days of GEODOS, you have my sympathy. That you are reading this magazine now, and probably have moved to a PC is a testimony to your perseverance.
Microsoft, laid the foundation of its huge empire with BASIC. The simplicity of the BASIC language, allowed Bill Gates and his offsider, to develop versions that only required 4K of memory, in a remarkable feat of youthful endeavour. Nearly all of the first wave of eight bit microcomputers, sported a BASIC interpreter from Microsoft. Despite Microsoft being the contemporary developer/marketer of MS/DOS, OS/2 and MS WINDOWS operating systems, and of FORTRAN, C, PASCAL, and COBOL language compilers, and also MS WORD, EXCEL, MS WORKS and other Application Programs, they still put an inordinate amount of effort into BASIC. It is a sentimental favourite of Bill Gates the current CEO and co-founder of Microsoft. Indeed, I am of the personal view that such emphasis on BASIC, is the closest thing to an Achilles Heal, that organisation has. Other developers still waiting on the eventual release of Microsoft C++, long after similar releases from competitor companies such as Borland and Zortech, might be of like mind.
Nevertheless, it has resulted in a very good language called MS QUICK BASIC. The current version V4.5 is no slouch. The original designers of BASIC wouldn't recognise it. It has language constructs (grammar) that echo PASCAL and C like: DO WHILE; DO UNTIL; CASE. Variable names can be 40 character long. You no longer require line numbers on every line (a program is supplied with QUICK BASIC to strip the line numbers off your old BASIC programs). It supports and automatically creates modular sub-components of your program into functions and subroutines. While it is still an interpreter, it also has a compile option to produce final efficient code (.EXE's). It has automatic dynamic character strings, which can save you lots of memory if you are doing lots of text handling, without much effort on your part. In short, it is not the BASIC of old at all! That it can still read and run old BASIC programs, is the main pretext on which it can claim the word BASIC in its name. To still call it BASIC is also a very astute marketing decision.
While BASIC was the first language I learnt, I have kept it at arms length for a good long while, apart from a cursory glance. To balance my bias a little, I will point out that many existing commercially available accounting systems for PC's, are written in MS BASIC. And I know that local developer of the internationally popular shareware game MAHJONG, Peter King, has done a superb job of it in MS BASIC. The latest MS incarnation QUICK BASIC V4.5, is a contender for first-time language learners who are happy with the PC as their long term computer.
The PL/1 Language.
PL/1 is an IBM language, tuned to perform well on IBM mainframes. The Standard was published in 1976. It draws features from three or four languages in particular: data formatting from FORTRAN; data definition from COBOL; and has data bit manipulation, a feature normally the province of Assembler and C. IBM designed it to be all things, to all programmers on IBM mainframes. While PL/1 and FORTRAN 77 are very much languages of the same generation, they perform quite differently on IBM mainframes. I once did a bench-mark (a comparative speed test,) between a program compiled in IBM FORTRAN 77, and a remarkable similar PL/1 written to do the same job. The PL/1 version ran about five times faster. With such variations, many large corporations that use IBM mainframes, are PL/1 shops. Away from IBM mainframes, PL/1 does not have much of a following. You'll be going to find someone who can sell you a PC version, but I believe it exists. PL/1 might become a contender on OS/2 based desktop machines, should that operating system become widespread in the future.
The ALGOL Language.
ALGOL (short for ALGORithmic Language), was primarily a phenomenon of the 1960's. Starting from ALGOL-60 and culminating with ALGOL-68, it represents the fermentation period of the modern 3GL. A major design criteria for ALGOL was to do a better job than FORTRAN on the mathematical side of life. While it was good for the complex thinker, it was very difficult to produce an Algol compiler that worked. Algol hasn't advanced into recent history. Instead, PASCAL which partly drew inspiration from it, is the refined modern flag bearer of the approach taken in ALGOL.
The C Language.
C was designed in the early 1970's to implement the UNIX operating system, by Bell Laboratories. They were then the research arm of the US telecommunications giant AT&T. A primary design objective of the UNIX operating system, was that it be easy to port (computer jargon for transfer), to many different computers, and thus form the basis of Open Systems (where the Operating System, is not the exclusive property of the maker of each particular computer). Most operating systems at the time were written in Assembler for the sheer speed advantage of doing so. It became obvious to the UNIX developers, that if UNIX was to approach anything near universal acceptance, they would need to develop it in a high level. (This UNIX crusade still goes on some 20 years down the track). Yet this high level language would need to have the speed, the efficiency, and the no-holes-barred approach of Assember, allowing them to deliver an operating system that was competitive in the real world.
C was the answer. It is modular and structured, not unlike PASCAL, yet it is also described as a high level assembler. It compiles to lean, mean, machine code. And the programmer can do whatever he likes in it. However, with this great degree of freedom afforded to the programmer, comes a huge amount of responsibility. The C programmer can do some very silly things, very easily, and they often do. My only hope is that programmers do not use C for nuclear power stations, guided missile systems, and medical equipment. I don't have that much faith in my fellow man.
The ADA Language.
The US Department of Defence (DoD) commissioned the development of ADA. ADA is the final name chosen after a series of draft documents titled: Strawman, Woodenman, Tinman, Ironman, Steelman, Green. Actual compilers started to materialise in the mid to late 1980s. If you want to win a contract programming job, for either their defence department, or our own, you'll probably have to program in ADA. Like most modern 3GL's the final ADA language draft was refined to be a language that instils "safe" programming practises.
After many notable disasters with languages such as FORTRAN, DoD took the situation into their own hands. An illustrative example of FORTRAN's ability to destroy the best laid plans, is the Mariner rocket to Venus mishap. A part of that space craft's guiding system was written in FORTRAN. In FORTRAN you don't have to declare the type of your variables (variables - are positions in memory, that you give a name to, in which you can store a piece of data that can then be modified during execution of the program.) If you are slack, any variables names you don't declare that start with i,j,k,l,m,n are automatically integers (no decimal points,) while the rest are assumed to be real (those with decimal points.) As it happens, in the Mariner's program, a variable that wasn't declared, should have been real but defaulted to integer. Because of this default convention, the error went unnoticed until Mariner veered off course into deep space, ending a mega-dollar project!
Just about all modern implementations of languages now insist on the programmer declaring the types of their variables (no ifs no but's), including ANSI Standard C, C++, PASCAL, MODULA-2. Although BASIC doesn't.
PASCAL and MODULA-2 Languages.
Niklaus Wirth created PASCAL in the early 1970's, in Zurich. ISO (International Standards Organisation) published a Standard for PASCAL in 1980. ANSI (American National Standards Institute) also adopted it. PASCAL was primarily designed as a teaching language, to instil good programming practices, and to outlaw some bad practises. But this standard PASCAL had serious flaws as a real world development language. It's I/O (the statements for data Input and Output), were almost none existent. Compared with the way even ancient versions of FORTRAN could format lines of data going into and coming out of a program, PASCAL was an unsophisticated child. I used an ISO version of PASCAL on a mainframe in the early 1980's and it was next to useless when attempting real life projects. You first had to write a complete I/O system yourself, before even starting on what you actually set out to do. ISO PASCAL was seriously inadequate for many jobs.
Wirth moved to fix this and other well documented problems, by writing a second language called MODULA-2, rather than consolidating his first. However two things happened that overshadowed Wirth's second offering, good as it is. The first, was the publishing of Borland's TURBO PASCAL compiler in 1983, an extended version of PASCAL that was a superset of ISO. The second coinciding happening was the IBM PC's record sales reaching into millions of units. Apart from spreading MS/DOS far and wide, the PC did something more important to the development of software. It created a surge of innovation in the human/computer interface and made it available to all. It provided the first cheap standard intelligent screens. The line-by-line style of input and output, at which PASCAL was so useless, was no longer relevant! Suddenly, there were millions of computers, all with the same type of smart screen. While mainframes commonly had so called dumb line-based terminals for screens, PC users were treated to full-screen interfaces, with overlapping windows, pop-down menus, and many other user-friendly exotica. Turbo PASCAL clocked up half a million sales in no time at all and in doing so won a place in computer folk law. No one had believed a language program, could sell is such numbers.
Turbo PASCAL, supports full-screen interface, in a way a National Standard language could not do (particularly the latest version 6 with Turbo VISION.) By doing so Borland has combined the grammar of a language designed for instilling good programming practises, with state-of-the-art, full-screen text-based interface features. Turbo PASCAL has now sold around 2 million copies. It has forged perhaps the first ever, commercially dictated language standard.
The Object Oriented Languages.
After the 3GL's came the current wave of Object Oriented Languages still in the process of winning hearts and minds of the full-time software developers. This started with SMALLTALK. (There was a group of languages some marketeers called Fourth Generation Languages, but these are really a subset of the programming mainstream. They are predominantly database program generators. Not the sort of thing you could write a game in, say, or a communications program, or anything but a database. So, from a mainstream computer language point of view, Object Oriented Programming (OOP), should be dubbed Fourth Generation Languages).
The different slant on programming taken by OOP can appear to be a subtle one. 3GL's like PASCAL and C in particular, are based around the fundamental concept of: PROGRAM = DATA + ALGORITHM (for Algorithm read, formula or recipe). They treat these two aspects of a program as separately as possible. On the other hand, in OOP, DATA and ALGORITHMs are enthusiastically combined into sub-components called OBJECTS. You can then make these Objects mimic the antics of real objects (physical entities, or parts of a process), much more easily. If you want to give some data to the object, to be stored in it, you pass a message to it with that data. If you want to retrieve some data from the object, that you know it has stored or can calculate, again you pass it a message, asking for it. If you have asked politely (ie. followed correct protocol), and you are permitted, you will get what you want. In other words, the Object intercommunications in OOP, simulates the communication which occurs between entities in the real world. While the change in emphasis in OOP might seem slight, it has a dramatic effect because it modifies the very foundation of 3GL's. The result can be highly reusable, error free software, attained with relative ease.
The differences in OOP are largely an attempt to effect a change in the mind of the programmers, about the way they go about their work. As such, many 3GLs lend themselves to being slightly altered to make them an OOP (I don't mean by any stretch of the imagination, that it is an easy task for compiler writers to achieve this.) Thus, there is a new spate of languages called Objective PASCAL, Objective C, and I caught a glimpse recently of a headline, "Objective COBOL"! There is also one called C++, which is a superset of C (all valid C commands, will work in it, in addition to the C++ specific features).
Large multi-member programming teams working in C, so very often run into serious bug problems, partly due to it's "anything goes" approach and a lack of team member communication. This usually manifests itself as long delay times on pre-announced new software packages - termed vapourware. Given C++'s ability to run all C code in existence, and given the vapourware syndrome, C++ is taking the software package development community in the US by storm. It is starting to catch on here too. An added advantage of C++ to the developer, is that it inherits another of C's long cherished virtues: it is a Standard language (shortly to be ratified by ANSI), that carries across many types of computer hardware and operating systems. Thus, in this current time of uncertainty for developers about which Operating Systems will dominate in this decade, be it MS WINDOWS on DOS, UNIX, OS/2, or all three and more, C++ offers some security.
Having outlined the virtues of C++, it must seem attractive to the serious language beginner. As I have mentioned, it is my language of choice, and one I have taken a long time to arrive at. I am also aware that it is winning many converts amongst other members of the ASPA (Australian Software Publishers Association). In many ways it is also easier to use than it's little brother C, but this doesn't necessarily mean easier to learn. I am not convinced that it can be taught straight off, to the newcomer to programming. I believe, that a full appreciation of OOP comes from first suffering a 3GL. You've got to go through the pain to realise the gain. Provided you then move onto an OOP that is a superset of a current 3GL, or a close brethren to it, you will not have to shed the command constructs (grammar) you have learned. Just modify your attitude, and your program design.
The Best BET?
Turbo PASCAL gets my vote, for the best language a newcomer to programming can learn. Turbo PASCAL is an excellent starting language for at least 6 good reasons I can think of:
1. The original ISO Standard PASCAL, from which Turbo draws its foundation, was conceived as a teaching Language.
2. Full screen interfaces on widely available standard screens (eg. CGA, EGA, VGA, HERC) and Turbo PASCAL's built-in support for them, completely side-steps the primary flaw of ISO standard PASCAL as a real world developer platform - ie. its inability to do line-based I/O well.
3. As with some other language developers, Borland has moved in the direction of OOP. But instead of renaming the language, in a very understated way, they just simply called theirs TURBO PASCAL V5.5! ie. TURBO PASCAL, is now an OOP. That version and the most recent Version 6 of Turbo PASCAL, contain serious OOP extensions to the PASCAL language. They have also taken the very sensible step of following the OOP jargon and concepts from C++. This means, that if you learn the OOP features in Turbo PASCAL, and you then read a book or manual on the OOP features of C++, the two would largely equate mentally. The actual syntax is not much different either. Thus, should you ever wish to migrate to C++, the best language to come from is TURBO PASCAL. Even more so than C itself.
4. Borland's TURBO PASCAL has all that you need to develop a state-of-the-art DOS application program.
5. Because of the 4 points above, whether you stay in Turbo PASCAL short term, long term, or indefinitely, it will not be a wasted exercise.
6. For the power and innovation that is packed into Turbo PASCAL it is a real bargain, provided it is not going to sit on your shelf unused. Turbo PASCAL V6 has a suggested retail price of $210, which is excellent value. The manuals are thick and crammed with information. The section on OOP is one of the best thin introductory volumes on the topic I have read. There is a package called Turbo PASCAL Professional V6 for $410, which has some extras like: Turbo Assembler; Turbo Debugger; and Turbo Profiler. The newcomer is unlikely to need any of these additions for many years, if ever. The standard version has an integrated debugger that is more than adequate. So, if you are going to learn the language, save your money and go for the standard version.
In my next article I will introduce the basic concepts of programming with a small but useful PASCAL program for calculating your Income Tax. In the article after that, we will put a modern user-interface in front of that program. I will also discuss the encompassing important general subject of this exercise - the Human/Computer Interface.
This article is the copyright: © Steve Goschnick, 1991.