TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Ian Spencer
from: David Noon
date: 1994-10-08 21:09:00
subject: Learner

On Friday, 1994-10-07  Ian Spencer wrote to All about "Learner" as
follows:

IS> I'm just beginning to think about doing a little coding. However,
IS> I've done no programming before, and so I'm not well versed in all
IS> the different languages, and what they're for. Initially I will be
IS> doing really simple stuff, but eventually I would like to develope
IS> some apps etc. So, can anyone point me towards some good languages,
IS> and perhaps recommend some good reading material as well?

Hi Ian,

In this echo you will receive many replies extolling the virtues (and
usually omitting the vices) of C/C++. I will leave that chore to others
here. [Both Peter Fitzsimmons and Jonathan de Boyne Pollard can post
excellent comparisons of various C/C++ compilers.]

As a beginner, you might find other, less terse and less arcane
languages more suited to your purpose. I would suggest REXX as the
first place to start. It arrives free with the operating system (you
didn't mention OS/2, but since this is an OS/2-related echo we will all
assume you are going to program under OS/2) and its syntax is quite
straightforward. If you want to try your hand at Presentation Manager
programming, there is a free bolt-on library (I will tell you later the
best way to obtain a copy) that provides rudimentary facilities for PM
Windows. It isn't great, but it is a _free_ introduction. There are
also at least 3 visual generators for REXX that will produce [almost]
professional-quality PM applications. These do cost money, but not
excessive amounts: e.g. Watcom VX-REXX currently is going for US$99.00,
so I would expect you could get it for about StgL75 or so (plus VAT, of
course). There is also VisPro REXX and GpfREXX; these are slightly more
comprehensive and considerably more expensive. I own, use and like
VX-REXX; it is an excellent introduction to programming under OS/2.

Then there is BASIC, that old war-horse (or pony-and-trap) of the PC.
A copy of QBASIC for DOS is bundled with OS/2's DOS support. There are
also 2 native-to-OS/2 BASIC implememntations around: Liberty BASIC
(shareware) and Softbridge BASIC (commercial). I have not used the
former, but the latter is a "visual" type of BASIC that produces PM
applications; it is OK, but runs out of steam for a professional
programmer.

There are a few implementations of FORTRAN 77 available. I own a copy
of Microsoft's 16-bit compiler; it is not very intuitive, since it
depends upon the segmented memory models and the FORTRAN grammar was
developed using a flat memory model (on mainframes). There are very
expensive 32-bit (flat memory model) compilers from Watcom and NDP. The
FORTRAN language is geared towards number crunching (engineers educated
in the 1960's and 1970's nearly all learned FORTRAN, usually with very
limited success). However, its grammar is not suitable for a broader
array of applications and so I could not recommend it unless you are
designing rockets or something similar.

There is an implementation of COBOL from MicroFocus. As one who has
coded COBOL for almost 20 years, I consider it the most disgusting
computer language, ever. I would not recommend any implementation of
COBOL to anybody for anything. (Except, perhaps, to have it on your
c.v.) MicroFocus COBOL is also extremely expensive. I recommend you
avoid this compiler and language.

I have seen reports of a Pascal compiler, called Speed Pascal, from
Germany that is soon to be released. Pascal is a small and simple
language that was popular with academia in the late 1970's and early
1980's. The language lacks a little functionality because of its small
grammar, but it is easy to learn. If your plans aren't too ambitious,
this might be worth your consideration. However, Pascal is more or less
a dead language, since Microsoft has dropped it completely and
Borland's compilers are stagnating. Only Clarion/TopSpeed and the
German company are still actively developing compilers.

There are two (actually, one-and-a-half) implementations of PL/I, from
IBM and MicroFocus. These share a lot of code in their implementation -
MicroFocus takes the IBM compiler and adds some extra
mainframe-compatible features - which is why I call them
one-and-a-half. Since the MicroFocus compiler costs a mint (same price
as their COBOL) I will consider only the IBM implementation. This is
available in Professional Edition and Personal Edition. The difference
in price is significant but the Profressional Edition only adds support
for CICS/2 and DB2/2. So, for most programmers the Personal Edition is
adequate. IBM also sells a visual generator for PL/I [as does Gpf - but
the Gpf generator costs 6 times as much]. The object code generator of
this compiler is the same as IBM uses for its C/C++ compiler (C Set ++,
of which you will probably read much from other posters). It produces
extremely good object code - genuine professional quality, even in the
Personal Edition. This is my favourite language above the assembler
level. It is easy to learn, in spite of its huge grammar. It has every
feature you are likely to want (unless you are heavily into OOP and
insist upon RTTI). You might care to look at this option too.

Now, I said earlier I would tell you the best place to obtain Visual
REXX. This same source will also provide you with demo copies of:
VisPro REXX; Softbridge BASIC; and IBM PL/I for OS/2 Professional
Edition and its Visual PL/I generator. That place is the IBM Developer
Connection CD. Before you buy any development tools, get a copy of Dev
Conn and see what is available and how it works. The Dev Conn CD also
gives you the OS/2 Developer's Toolkit, which includes a number of
spiffy tools, of which the most important to me is KWIKINF; this allows
me to search/browse the online documentation supplied by IBM, Watcom
and Borland. Both of the IBM compilers (PL/I and C/C++) come with very
comprehensive online documentation.

I have deliberately left out the languages from the Free Software
Foundation; they usually have the word GNU in front of their names.
Since these compilers are almost totally undocumented, they are not for
the neophyte. Anybody who suggests that you learn to program using one
of these would teach you to swim by pushing you overboard in
mid-Atlantic and sailing off. This software is free and you will get
what you paid for.

I have also omitted IBM's APL interpreter because APL is too arcane a
language for a beginning programmer other than a mathematician.

Now, perhaps, a summary of the languages themselves, with my
experiences of their strengths and weaknesses.

REXX - a simple, regular language with excellent features for handling
character data and reasonably good file handling; suffers from slow
execution speed, especially when doing arithmetic, and the inability to
structure data elements into aggregates.

BASIC - a simple, somewhat irregular language with good features for
handling both character and numeric data; suffers from slow execution
speed and the inability to structure data elements into any aggregates
other than arrays, and its arrays do not support lower bounds other
than 1.

COBOL - a complex, irregular language with good file handling; lousy
at everything else.

FORTRAN - a moderately complex, irregular language with very good
arithmetic; lousy at everything else.

Pascal - a small, simple, regular language with good arithmetic,
excellent data structuring and fair character handling features; file
handling is dreadful.

PL/I - a large, regular language with excellent arithmetic, excellent
data structuring, excellent data aggegation (arrays can start and end
with any subscript), excellent character manipulation and excellent
file handling; no real deficiencies grammatically, but the compilers
tend to be big.

C - a small, simple, regular language with good arithmetic, excellent
data structuring and reasonably good file handling (you can always
"roll-your-own" in C); both arrays and character strings are derived
from pointers and this limits their generality - they are treated
identically and always begin at zero; also, character strings cannot
contain low-values bytes (almost useless for serious database work);
language keywords tend to be terse, abbreviated forms liked by the
cognoscenti but often difficult for beginners.

C++ - a large, complex, object-oriented language that uses C as its
procedural basis; good arithmetic, excellent data structuring and
reasonably good file handling (again, you can "roll-your-own"); many of
the deficiencies of C's array and character string limitations can be
gotten around by defining object classes with the limits removed; it
still suffers from much of C's terseness. A powerful language, but also
a large compiler.

In the foregoing, I assume that you know what "regular" and
"irregular" grammars are. (Put simply, a language with a regular
grammar will be easier to code.) Also, virtually all of the linguistic
shortcomings can be programmed around, especially in C/C++. But there
are those of us who feel we shouldn't need to, since at the machine
level the high-level language is all artificial. (It might as well be
"easy" artifice as "difficult" artifice.)

Well Ian, by now, you have probably read several messages like this
one and are sorely confused. I think my earlier advice of getting a
copy of the Dev Conn CD from IBM and trying out several products will
serve you best.

But first, think up one or two small programs with which you can test
the products; if you don't know what you want to achieve programming,
you will be in no place to evaluate the products' meeting of your
needs. There are a number of very experienced programmers who read this
echo; between us we can solve syntactic and semantic problems in almost
any programming language you care to throw at us, but we cannot provide
you with the creative spark to initiate the programming process.

Regards

Dave

 * KWQ/2 1.2g * If ignorance is bliss, I'm in hog heaven!!

--- Maximus/2 2.01wb

* Origin: OS/2 Shareware BBS, Fairfax, VA: 703-385-4325 (1:109/347)
SEEN-BY: 12/2442 54/54 620/243 624/50 632/348 640/820 690/660 711/409 410 413
SEEN-BY: 711/430 807 808 809 934 942 712/353 623 713/888 800/1
@PATH: 109/347 2 7 3615/50 229/2 12/2442 711/409 54/54 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.