| Modified | DDT |>| MON.SEP,990906,13:50-4 | | CoSy/Home ; CoSy/Current ?Wha? | © Coherent Systems Inc . |
17:45| ACM @ Pace Lect.HallNorth NY BjarneStoustrup:C++,950919 :
What it is & Why | ATT Bell / Murry Hill / bs@research.att.com |17:57| $5 w
SigAPL memb |18:3| not going to start til 18:30 |18:30| TonyRizzo : welcom
NYC@ACM.org PDS oct 14 WWW authoring Dr Fortice ; Dean Susan Meritt | ACM 50
yrs old |18:33| Susan : teaches C++ | ArhousDenmark Cambridge : `85
LargeScale progect grp @ ATT Bell fellow | wife dauter & son | Basic ideas :
Prehistory : what was problem : Simula & BCPL | working on distributed
operating system simulation @ Cambridge using Simula | Could soak up tot
dept budget in couple of niets - couldnt get own mainframe . Rewrote
simulator in BCPL - ansestor to C . Was fast | Original idea : combine C`s
strengths as sys lang w Simula power , in `79 | Why C ? : best sys lang
available : flexibl efic portable , known , 2nd order flaws ~ critical .
declaritive syntax of C experiment that failed .
Had to improve static type checking ( didnt like pascal ) because extensible
- chks users own rules . C w Classes - wanted program to be own comment
-- prog org , mapping of concepts , ( reuse is second order issue ) class =
type | Simula creator : ' programming is understanding ' .
Job was doing simulations , but had ' medium success ' allowed medium
improvements , but ~ enough users .
C++ design rules of thumb : language ~ complete sys : dont pay for what dont
use . Work on existing machines , programmers & problems | no sterile quest
for perfection . use traditional linkers . no gratuitous incompatibilities w
C source & linkage . no implicit violations of type system . user-defined ð
built-in types || Exec sum : C++ - is better than C ( no more - if not less
, overhead ) / supports data abstraction ( one concept - one type - cant do
in isolation , Dahl & Nugor ? `67 Norwegan EMS location - vehicle : turn
right ) / supports object-oriented programming . Pragmatism over theory .
Sad news for mngrs : no substitute for : inteligence . experience . taste .
hard work | enjoy do 2000 line dumb program vs lib lookup - but wrong .
- can write horrible progs in any lang . yet someone must write lot of code
. perferce statically checked vs dynamic . wishes had faster feedback of
dynamic environments . C for low level + data abstraction .
classes : complex #s . public part - conventional notation , runtime , space
efficiency . no houskeeping overhead on objects | important for
competitivness - transition , co-existance | small heavily used abstractions
very coment - mundane is statisticaly most important |
Class hierarchies : using abstract classes ( virtual ð defered )
flashing_iva_slider ival_slider ival_box explicit so can make tools to
apply to it || isolate implementation from user .
abstract classes have no implementation details - derived class must
implement | protected inheritance | deriving abstract class from concrete
type is bad idea | mojor interfaces should be abstract |
/ templates : nnede for containers & generic programming .
alteraitves : dynamic typing : ( Smalltalk / lisp )
type parameterization ( Clu / Ada ) - static maps
C vector notion is too low level .
static type safty eliminates many casts ( type coversions ) & macros
almost ever std lib facility is template based .
containers , iterators ,
prefix keyword : template < class T >
iterators : print_all ‘ñ ( lc ) ( vi ) ( msi ) w iteration mech defined for
each . STL lib elegant efficient of templates .
Large scale programs : namespaces eg Chronos::Date
w aliases |
C++ is general prpose prog lang w bias toward sys programming addressing
real needs of current sys builders |19:56|
============================ø WED.SEP,950920 ø============================
Bjarne ,
If I`d realized you were the speaker when we chatted about the history and
intent of sugar versus aspartame , I would have introduced myself .
I don`t think you could see where I was sitting but , as usual , I appeared
to be the only one in the room taking notes in my NoteComputer . /
We have remarkably divergent^convergent language aesthetics .
I live in my own CoSy(tm) APL based environment , and require a completely
open dynamic environment because I am continually interacting with it .
My vision is to create a notecomputer built on FORTH informed silicon ,
incorporating the vector abstractions of APL from the get-go , in an open
FORTH like manner to build a Coherent System , explorable and extensible by
the individual purchaser-/-language community member ; The only fixed datum
in memory being the pointer to the symbol table . /
I`ve thought about what to include here to give you better views of mine .
I`ve decided upon 2 peeks : BigAPL.APL94report9504 APL.ToT`93øProgStyl
appended in manuscript form below . You might also find
APL_Forth_Bridge|Create_UltimateNB of interest . /
In any event it was pleasant to meet you . It will be interesting to see if
my efforts towards an ultimate individual`s machine ever approaches the user
population of yours . - BobA /
BigAPL.APL94report9504 : \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \
Bob Armstrong
Coherent Systems, Inc 288 Vine Ave
42 Peck Slip Highland Park, IL 60035
New York, NY 10038.1725
212.285.1864 70421.2425@compuserve.com Fax by Arrangement
A memorable article by my great old Professor, Donald T.
Campbell, (who gave me my first paying APL task analyzing
discontinuities in time series) was titled "The Fish Scale Model of
Collective Omniscience." In that spirit, I accept Ed Shaw's invitation
(Big Apple APL, <<95 2>>) to cover the lacunae in his view of APL94,
which are to me what made the trip worth its cost:
Antwerp is an <> party port. Arriving Saturday afternoon,
I consumed much of my 6 hours' jet lead sampling my capacity of the
reported 330 brews, each in its proprietary goblet, with some of the
locals at the Cafe Breughel near the hotel. Costs ranged
| 40 70 x 0.034 |>| 1.36 2.38 | US$, << drop e |950506>>
which is a deal to a Manhattanite for a beer like Duval that runs $10
per 6-pack around Chicago. I also learned of the local spirit,
"Genever," and that women have to walk past the men's urinal trough to
reach their <> potty.
Without question, what made the conference worth its cost was
the chance to hear and discuss with Arthur Whitney his "K" language.
It's ironic to cross an ocean to get a glimpse of what someone is
creating and using across town, but when it's a proprietary language
functioning as the heart of an international investment bank, it's more
understandable.
At his workshop, Arthur handed out a 2-sided, 8-panel, K
Language Summary card, which displays a remarkable breadth and depth of
understanding of the fundamental invariants of programming.
Within the ken of APLers, K is based on the observation that
multidimensional <(depth 1)>> APL objects are just special cases of lists
of lists of lists.., where the lengths of all lists at each depth are
equal. Thus the verbs of K are all 1-dimensional, with <<`>>Each (denoted by
`' ) reaching into succeeding dimensions (levels of nesting).
From the world beyond, Arthur brings the recognition that symbols and
executable expressions must be syntactically denotable. For instance, a
function may be defined by expressions of the form
avg : { ( +/ x ) % # x }
or
.[ `avg ; () ; { ( +/ x ) % # x } ]
where the form .[ ; ; ] amends a tree--which I won't try to explain
further. << ( Note the use of the tik (`) to mark symbols. I think this is
also the least obtrusive way to distinguish transiterations for e-mail,
etc.)
>>
Arthur's concepts, and particularly the question, "Does 0th axis
suffice?" pervade my own extensions of CoSy:APL nowadays. It certainly
is simpler to construct.
The last night of the conference, I took a tram to Groen Plaats,
near the area where the women metallically tap the pane of their red-lit
windows as you pass them up, and <> <<"De Vagant">> at
Reyndersstraat 25, "Het Begrip in Jenever" ("The Understanding of Gin"),
<> my best to taste their 220 brands. I must have made a dent: I've
enjoyed receiving the restaurant's mailings from the proprietor, Ronald
Ferket, ever since.
Since the trams did not start running again until dawn (much
less a deprivation than being stuck on the wrong side of the open
bridges of St. Petersburg), I was lucky to bump into Sasha Skomorokhov
and wife (who had courageously upheld the tradition of Evening Seminar
throughout the conference) as they were boarding the tour bus to Paris.
I seized the opportunity to present him a copy of DeVagant's 25 page
menu<< I had kept >> to show him there is more in this world than just
Russia's "Little Water".
APL.ToT`93øProgStyl : \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \
===========================: SAT.JAN,1993/1/9 :===========================
Expanding Vocabularies
Bob Armstrong
Coherent Systems, Inc 42 Peck Slip, 4b,c New York, NY 10038.1725
212.285.1864 CmpSrv:70421,2425
Here on paper , I am only going to outline points I plan to cover in my talk
and include a series of letters , the first of which was published in some
form ( I have not seen it ) in Kee Dewdney`s Algorithm Magazine . These
letters deal with the important concept of ' factoring ' of functions using
Conway`s Game of Life as an example . [ not included ] /
APL is among the few languages which allow the creation of new words which
follow the same simple syntax as the primitive words in the language . Other
notable examples include Lisp and Forth . In such languages the act of
programming is the act of adding new words to extend the vocabulary to cover
the problem at hand . These languages are strikingly more powerful than
traditional 'compiled' languages and have the reputation of being elitist
languages with small user communities who survive , and in fact personally
prosper , despite repeated rumors of death , [ 0 ] because they are able to
do things simply not possible in the languages used by the masses .
Forth is of particular interest because it is , by intention , the
minimal extensible language . A Forth processor core can be implemented
using just a few thousand gates , and a functional Forth interpretive
environment bootstrapped with fewer than 10 kilobytes of instructions . Thus
it and APL represent the ends of the spectrum from hardware reality to
mathematical abstraction . It is not an accident that one of the most recent
implementations of APL , the public domain I-APL interpreter is constructed
on a Forth-like base .
The fundamental structure of Forth is simple enough to state here [ 1 ] :
A ' word ' is any non-blank string of characters .
When a line of input is interpreted , each word , in turn , is looked up in
the dictionary of defined words and its definition is executed word by
word . /
More than in the APL world , Forth recognizes that language is not a horizon
but a heirarchy of definitions built upon definitions . While there is some
recognition of this fact the formal definition of f/ B as equivalent to
, eg , B [ 0 ] f B [ 1 ] f B [ 2 ] ::: , and of A f.g B as f/ A g B ,
the definition of g in A g B is already more complex than the definition
of any primitive in most other languages . And APL vendors consider the
structure of their systems , including the entire user:programmer
interface , none of the customer`s business . In contrast , it is Forth
gospel , that the entire structure of the system from the hardware up is
open and available to the user:programmer .
Many of the problems of efficiency often discussed as a reason for trying
to rewrite APL systems in some lower level language simply don`t exist when
one can simply reach down to the specific component words which underlie
more general ones . For instance , if one knows that in a particular case ,
quantities being added are always integer , one can use the integer add
function directly .
In any language , great programming requires approaching the problem at hand
as a specific thread down trees of possible problems , spending as much
time as possible encapsulating the component concepts along the specific
thread so that when related problems occur they can be expressed simply -
using prevously distilled concepts . While this approach obviously takes
more time initially , as the size of the vocabulary dealing with the problem
area grows , more and more facilities are available in the time it takes to
recall and write a word .
This approach means constuction of large vocabularies of words with simple ,
general meanings . Optimally , there should be few phrases more than a few
words long duplicated anywhere in the system . A system with such high
coherence , clearly is very compact . Less obviously , as Adin Tevet [ 2 ]
shows , it is not slow . The length of any thread down to machine primitives
is a fraction of the number of primitives which get executed . Definitional
trees are quite flat . Forth chips are available which invoke words in a
single clock cycle , and return in 0 cycles .
While admontions and examples of such heirarchical style have been
promulgated by the APL elite since its inception , common commercial
practice seems to have failed to learn the lesson . Terrible examples of
functions many lines long with very complex behaviors continue to be
published even by vendors . A cause and excuse for this is the explicit
desire to make stand-alone functions repititously stuck to the horizon of
APL primitives , ignoring the inevitable existance of additional surrounding
vocabulary .
Many attempts are made to standardize higher level vocabularies , both of
general utilities , and of specialized domains like statistics and graphics.
While some enlightened organizations have been successful in such activity
internally , the APL community as a whole has not succeeded in generating
higher level standards . On its own level , neither has the Forth community.
A final point : After a system reachs a certain size , great increases in
breadth & functionality should be possible without much increase in the
total number of bytes . Expect to refine & refine & refine the meanings of
fundamental words , often simplifying them . The incredibly elephantine size
of many mainstream commercial systems necessarily reflects a
very low level of coherence in their structure . I have heard that
MicroSoft`s Windows NT will be many 10s of megabytes . You should be able to
program creation with that much space .
Life :
The letters below illustrate the creating and refining of vocabulary which
abstracts the components of a problem so that it can be recognized as just a
exemplar of a general class . It also illustrates the reuse of existing
vocabulary to simplify the top-level expression of the problem . /
LifeAlgorithm VitaAlgorithm [ not included : APL font needed ] /
PostScript :
In rereading the letters above , I wonder why I didn`t use the 2-dimensional
convolution functions I made a few years ago to explore font transformations
. Using these functions and FILL , a very useful alternative to take ,
Neighbors becomes simply | ( 9 FILL 0 1 ) XYAUTOCONVO RA | . This is a
more proper factoring of the problem , but looking at XYdlSTACK , it
doesn`t look like as good a definition as the equivalent code in Neighbors.
Refine , refine .
============================ø TUE.SEP,950926 ø============================
Date: 22-Sep-95 02:59 EDT From: INTERNET:bs@research.att.com
Subj: Message from Internet Sender: bs@research.att.com
Received: from research.att.com by dub-img-3.compuserve.com (8.6.10/5.950515)
id OAA10821; Thu, 21 Sep 1995 14:19:30 -0400
From:
Message-Id: <199509211819.OAA10821@dub-img-3.compuserve.com>
Date: Thu, 21 Sep 95 14:17:10 EDT To: 70421.2425@compuserve.com
Re. APL, etc.
Thanks for the info. I actually did use APL at one time, but it didn't
address my main problem area well (or at all). / - Bjarne
Distribution: / To: [70421,2425]
============================ø WED.SEP,950927 ø============================
To: >INTERNET:bs@research.att.com From: Bob Armstrong - CoSy -
Subj: Everything is an Array . Bjarne ,
I`m sorry I can`t resist adding a couple of final bytes to our exchange . /
From APL_Forth_Bridge|Create_UltimateNB :
Alan Kay , the father of object-oriented SmallTalk , made the comment at a
poorly attended invited address at ( if memory serves ) the APL81
confrence in Rochester that APL was the first object-oriented language -
it is just that it only had one type of object , the ' array ' , and no
vocabulary for creating others [ 8 ] . What this misses is that the idea
of an array is pervasive . It is the geometric aspect of the organization
of finite collections . An address space is a vector , iota N , for as
large as possible N , where iota is the index generator ,
e.g. | iota 4 |>| 0 1 2 3 | . /
New APLs , most elegantly JohnScholes Dyalog APL from England , have
incorporated NameSpaces from the object world . / -- BobA
Message sent to >INTERNET:bs@research.att.com Off at 12:00 EDT 27-Sep-95
============================ø FRI.SEP,950929 ø============================
Date: 27-Sep-95 20:22 EDT From: INTERNET:bs@research.att.com
Subj: Message from Internet Sender: bs@research.att.com
Bjarne ,
I`m sorry I can`t resist adding a couple of final bytes to our exchange .
øøø
===> Hmm. Either Alan was being polite or he was being sloppy with his
history. OO as it is usually defined came from Simula which
provided classes, derived classes, virtual functions (methods),
and a design philosophy. For a couple of years it lacked
encapsulation, but then that was added completing the usual
list of OO requiriments. When I talked with Kenneth Iverson
(see I can namedrop too :-), he didn't make any claims about OO;
in fact he was rather sour about it.
- Bjarne
Distribution: To: [70421,2425]
============================ø FRI.SEP,950929 ø============================
Kaye was definitely being polite to us . His demo in its multitasking
alone , while simple todat in , e.g. Dialog APL , was far beyond the SOA of
APL at the time .
And , I have the feeling that both he and I ( I far more that he ) must
intrinsically seem sloppy in our aproach to language compared to yours .
It happens I had subscribed to ACM SigForth last year . When it dissolved ,
I received a copy of the HOPL-2 proceedings with articles , of particular
interest to me , by you , Kaye , and ChuckMoore .
Looking at RichardNance `s article ' History of Discrete Event Simulation
Programming Languages ' , I see you are sort of right , Kaye was sloppy --
but its pretty close . Nance describes Simula as ' Originating as an idea in
the spring of `61 . '
' A Programing Language ' is generally dated from the publication of
Iverson `s book of that name in May `62 . But , that book was based on
material ' developed largely in a graduate course given for several years at
Harvard and in a later course presented repeatedly at the IBM Systems
Research Institute in New York . ' ( from preface )
But Kaye `s fundamental point , that APL is a language of objects with
verbs which act on those objects , remains accurate .
Ken is rather sour on most things other than his own current J varient ,
including ArthurWhitney `s work and my own . -- BobA
To: >INTERNET:bs@research.att.com From: Bob Armstrong - CoSy -
Subj: HOPL Off at 14:22 EDT 29-Sep-95
============================ø MON.OCT,951002 ø============================
Date: 02-Oct-95 11:49 EDT From: INTERNET:bs@research.att.com
Subj: Message from Internet Sender: bs@research.att.com
Received: by day; Fri Sep 29 15:00:24 EDT 1995
Received: by research.att.com; Fri Sep 29 14:58 EDT 1995
===> I don't really think dates enter into the issue about ``first OO
language.'' To my mind, the definition of OO is closely associated
with encapsulation and inheritance, so unless one changes
the definition of what OO is from its historical meaning, Simula
wins by many years. Much confusion comes from the simple fact
that `object' is another word for `thing' so EVERY language in
existence has an equivalent. I have heard both BCPL and Lisp
judged the original and purests OO language because each has
a clean and definite notion of object (the list for Lisp and
the machine word for BCPL). I tend to dismiss such claims not
because they are inherently illogical, but because a word (e.g.
OO) lose all practical use if everyone assigns their own meaning
to it. To communicate we simply must stick close to a widely accepted
and historically acceptable definition. / - Bjarne
FYI: My closest collabotator, Andy Koenig, is a long-time APL
afficianado, and one of the first C++ libraries done outside
the area where we work supplied an APL-like vector and associated
operations.
Distribution: To: [70421,2425] Enter reply. (/EXIT when done)
Ok , I won`t argue . As William James stressed , words mean what we agree
they mean .
I will repeat tho , that everything is an array , and therefore that is the
foundation upon which I build .
Inheritance occurs naturally from the meanings of the constituent words of
a definition .
A ' ding an sich ' can be many things depending upon how you probe it .
-- BobA / Message sent to INTERNET:bs@research.att.com
Off at 20:43 EDT 2-Oct-95
; | NoteComputer | |