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 | |