Modified | DDT |>| MON.SEP,990906,13:50-4 | CoSy/Home ; CoSy/Current         ?Wha? © Coherent Systems Inc .

Uploaded to web 9511251217
17:45| ACM @ Pace Lect.HallNorth NY BjarneStoustrup:C++,950919 :
 What it is & Why | ATT Bell / Murry Hill / |17:57| $5 w
 SigAPL memb |18:3| not going to start til 18:30 |18:30| TonyRizzo : welcom 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   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
        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 <> 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 }
           .[  `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,
        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:
Subj:  Message from Internet           Sender:
Received: from by (8.6.10/5.950515)
        id OAA10821; Thu, 21 Sep 1995 14:19:30 -0400
Message-Id: <>
Date: Thu, 21 Sep 95 14:17:10 EDT      To:
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:   >    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 >  Off at 12:00 EDT 27-Sep-95
  ============================° FRI.SEP,950929 °============================
Date:  27-Sep-95 20:22 EDT             From:
Subj:  Message from Internet           Sender:
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:   >            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:
Subj:  Message from Internet           Sender:
Received: by day; Fri Sep 29 15:00:24 EDT 1995
Received: by; 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
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
Off at 20:43 EDT 2-Oct-95

 CoSy NoteComputing Environment & Language ;
CoSy The
 Current , WallSt , MotorBoard , Art
Feedback :
NB : I reserve the right to post all communications I receive or generate to CoSy website for further reflection .