SCOUG Logo


Next Meeting: Sat, TBD
Meeting Directions


Be a Member
Join SCOUG

Navigation:


Help with Searching

20 Most Recent Documents
Search Archives
Index by date, title, author, category.


Features:

Mr. Know-It-All
Ink
Download!










SCOUG:

Home

Email Lists

SIGs (Internet, General Interest, Programming, Network, more..)

Online Chats

Business

Past Presentations

Credits

Submissions

Contact SCOUG

Copyright SCOUG



warp expowest
Pictures from Sept. 1999

The views expressed in articles on this site are those of their authors.

warptech
SCOUG was there!


Copyright 1998-2024, Southern California OS/2 User Group. ALL RIGHTS RESERVED.

SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group. OS/2, Workplace Shell, and IBM are registered trademarks of International Business Machines Corporation. All other trademarks remain the property of their respective owners.

The Southern California OS/2 User Group
USA

SCOUG-Programming Mailing List Archives

Return to [ 18 | May | 2003 ]


Date: Sun, 18 May 2003 08:08:23 PDT7
From: "Lynn H. Maxson" <lmaxson@pacbell.net >
Reply-To: scoug-programming@scoug.com
To: "SCOUG Programming SIG" <scoug-programming@scoug.com >
Subject: SCOUG-Programming: The "int" factor

Content Type: text/plain

For sake of emphasis one may employ "why I hate x
language" as the author of a website referenced by Peter has
chosen to do. In that general note of dissatisfaction no one
comes off clean, though PL/I apparently missed his list
because he never had to use it.

On the other hand you have the "tunes" people
(http://cliki.tunes.org/PL%20101) who speak so far ahead of
the learning curve that they offer self-study courses for
"newbies" to help raise them to the level of "tunes-speak".
Unfortunately all of the candidate languages seem
implemented in some other language. This means for
development purposes in an open source environment you
need expertise in two languages as well as the ability to
translate one into the other.

I follow the tunes mailing list in pure lurker mode now. When
I once ventured out into the "free speech" arena I so incensed
the core group that I had come so unprepared for an
admittedly ill-defined process that they labeled me a "moron".

I tend to follow the simpler path when discussing programming
languages. It always comes back to a fundamental mapping
issue of a formal language solution set onto an informal
language problem set. That mapping includes the data
(operands), the operators, the processes (expressions) that
relate them, the local logic (control structures) that binds
them into a functional whole (algorithm), the global logic that
binds the local into an application, the set of applications that
make up a application system, the enterprise system of
application systems, and finally the set (system) of all
enterprise systems.

We have here a hierarchy based on two items, operators and
operands. How well the two hierarchies of the problem and
solution set map into each other depends ultimately on these
two items. It makes little sense to move discussions about
programming to descriptions of increasingly esoteric languages
if they don't "natively" provide a one-to-one (1:1) mapping
between the problem and solution sets.

That gets us (finally!) to the subject of this message: the "int"
factor.

We could call it the "academic" factor, where people in an
isolated environment have the privilege of ignoring reality in
consideration of solutions. They also have a quarter and
semester (or tri-mester) which force time constraints on
students for completion of an activity. Now separated from
the "practical" world of data processing and IT they made a
"blunder" which has tainted all succeeding language
development.

"int" stands for integer. Except that it doesn't. It doesn't
stand for the class of all integers, whole numbers extending
both directions, negative and positive, from zero without limit
(infinite). No computer has such a capability for infinite
representation.

"int" stands for "binary" integer, ignoring that decimal integers
exist though we assign decimal values to integer variables and
constants. Where "int" now has a "standardized" size of a
32-bit, signed or unsigned, binary number, the initial decision
by the authors of C left the actual definition to the
implementation. As we had binary machines with 8-bit, 16-bit,
20-bit, 24-bit, 32-bit, 36-bit, 48-bit, and even 56-bit binary
representation, we could easily port the the source code from
one system to another, but we could not do the same with
the data. We won't even bother with the meanings of "short
int" or "long int".

We had no need for any of this to occur. We had PL/I. In PL/I
we declare fixed binary integers as "fixed bin (n)" and fixed
decimal integers as "fixed dec (n)", where "n" represents the
"width" in binary (0 or 1) or decimal (0...9) respectively.
Having a programmer-, not implementer-defined specification
of width meant portability of data as well as source code.

Integers exist as a subclass of "real" numbers, which also
includes numbers with fractional components. That allows for
both binary and decimal fractional expression as in "fixed bin
(31,6)" or "fixed dec (7,2)". The first position of a binary
fractional component is 1/2; the second, 1/4; the third, 1/8;
and so on. Thus a binary variable declared as "fixed bin
(31,4)" would support measurements in terms of 16ths, quite
convenient in computing lumber requirements, for example.

Consider the difference in a programmer declaring a binary
integer as "fixed bin (20)" on his 20-bit binary machine. He
could have moved to a 32-bit machine, taking his code and
data unchanged. Or he could have moved to a 16-bit binary
machine with the same results. In short the implementation
could have supported the programmer regardless of the
underlying machine, providing "true" machine independence.

That would, however, have made the implementation more
difficult, but having done so would prevented the grief of
"non-portability" (data and code) which ensued in the UNIX
environment, leading to the creation of the Open System
Foundation (OSF) to resolve portability issues.

So K&R made a "bad" choice in their isolated environment,
which everyone thereafter unfortunately copied. As a result
in the real world of real numbers, integer and non-integer,
both binary and decimal you have programming languages
(solution sets) which do not map one-to-one to the problem
set.

The programmer then must compensate for this mismatch.
That means extra code writing, i.e. increased programming
time. The programmer must supply the clerical effort which
the software could do. Kernighan, the K of K&R, worked with
PL/I as part of the GE-MIT Multics project. Ritchie, the
academic, had not though he had co-authored the "B"
language. So one of them knew something of a "truly"
machine-independent language, but didn't want to provide it
in his own effort. In short they gave the comfort of the
implementers, themselves, higher priority than their users.

=====================================================

To unsubscribe from this list, send an email message
to "steward@scoug.com". In the body of the message,
put the command "unsubscribe scoug-programming".

For problems, contact the list owner at
"rollin@scoug.com".

=====================================================


Return to [ 18 | May | 2003 ]



The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA 92799-6904, USA

Copyright 2001 the Southern California OS/2 User Group. ALL RIGHTS RESERVED.

SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group. OS/2, Workplace Shell, and IBM are registered trademarks of International Business Machines Corporation. All other trademarks remain the property of their respective owners.