Modified | DDT |>| FRI.DEC,971212,13:47-5 | | CoSy/Home ; CoSy/Current | © Coherent Systems Inc . |
From: boyd@bestweb.net (James H. Boyd) 97/11/29 23:09 Subject: NY/SIGAPL Meeting Thur 12/11/97: Alan Graham on his language 0 DECEMBER MEETING ANNOUNCEMENT of NY/SIGAPL, the New York City Area chapter of SIGAPL (the ACM Special Interest Group on APL) Title of Talk: 0 (Zero, Oh, Nothing, ...): The Future of Programming Speaker: Alan Graham Thursday, December 11, 1997 at Philips Electronics North America 125 Park Avenue, 4th Floor (Entrance on 42nd St., east of Park Ave., opposite Grand Central Terminal) The meeting will be preceded by a NY/SIGAPL Executive Committee meeting at 5:30. Alan's talk will begin at 6:30 PM. Meeting fee: NY/SIGAPL member, $5; non-member $10 Alan will discuss the 0 language through illustrations and examples of 0 code. The floor will be open for discussion and questions following the talk. Complexity is strangling the computer industry. Programs bulge near bursting with features rarely used. Bugs and poor design make systems fundamentally unreliable. The vast number of disjoint facilities make reuse and feature composition impossible. 0 (Zero) is small, simple, and powerful programming language and system. 0 is designed to include the major ideas in programming in a simple unified approach. Starting with C, LISP, Smalltalk, and APL; overlapping features were simplified and combined, poorly designed features were removed, and syntax was simplified and regularized. 0 is based on five core ideas: Abstraction separates function from implementation Functions map arguments to results Types classify data and functions by domain Atoms and Collections are the only data structures Implementation maps the abstract to the concrete. 0 includes the familiar: Control structures, like C Functions as data, like LISP Object-oriented features, like Java Arrays, like APL. 0 plays well with others: 0 programs can directly access files, OS facilities, and other programs and data locally or across the network. 0 is small: The 0 compiler is written in less than 1000 lines of 0 source. Parts of the compiler will be shown to illustrate the simple reflective approach and good 0 programming style. Contact info: Alan Graham 5 Winslow Place Chapel Hill, NC 27514-0991 (919)942-9369 alang@iname.com ============================: THU.DEC,971211 :============================ |18:29| Alan in Holand Tunnel . AdamKurtez fills in w mathy stuff : 4 1 1 1 1 1 1 2 2 2 1 3 4 p 4 <--> 5 | partitions of 4 | nasty formula . R is PARTITIONS N go ( K > 1 ) take L1 R is C , 1 & go 0 L1: T is PART N-1 R is 1 , each T I is 0 L2: go (( shape T ) < I is T + 1 ) take 0 K is I pik T U is UNIQUE K & X is K ~ U L3: ?? | EXPLODES BY N = 20 | 126 6 * 21 | 153 = 3 x 51 | 688 = 8 x 86 2187 = 27 x 81 | 1827 = 21 x 87 ( ( 8 % 2 ) - 1 ) * 7 |>| 2187 ( 8 + 1 ) * 7 % 2 |>| 2187 ( +/ 1 THRU 7 ) + 8 x 9 |>| 100 17 + 45 + 36 |>| 98 | r + 2 |>| 100 | 2 + 3 ) = 5 x 1 | 2 x 3 ) = 5 + 1 ( a % b ) = c - d | a - b ) = c % d | one unique in itegers . |19:34| \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \ Alan here . No machine . Been inventing 0 over many years . Syracuse `72 . Not instantly in love w APL . Preserve array qualities - discard things don`t like . Gave same talk @ Soliton . | will be on www.SimpleIsBetter.com On last implementation of 0 he intends to do . Looking for assistance . Am intending to make commercial . but cant sell programming langs . Advised against Whitney writing A at MorganStanley . Programmer & Business person - loves Visual Basic environment ~ lang Love Hate Lisp - way it deals w symbols . Scheme added : first , last , rest . J - fast , numerical , beter functional lang than Backus FX . Ken & Roger just too smart . Hook & Fork - don`t want to do ballet trick to do simple things . Went to see Fred Brooks . New Book : computer architecture defined in APL . 0 compiler Written in 0 - User interface in Visual Basic . between 1 - 2 k lines of code | boot strap by compiling in head Expression evaluator small . scalable - f each A B - Spawns 2 tasks on NT Variable in 0 also file . - can span networks . a is b , c | surprizingly efficient . ( System not solid enough to bring sample ) Compiles to byte codes . - Compiler to C far from done . 0 vs MyFavoriteProgrammingLanguage : C : get good assembly language . if know compiler . ~like : pointers ; while ( X == 0 ) vs = asignment . Maps | a is iota 10 to a : _i 10 | auto - modeless . monadic & dyadic goto . JimRyan : dyadic goto is fn . out of deep structs. LA is name of fn . RA is line . A+ , K , J , not allow labels . Strings , | ( # "Don't" ) = 1 ) string | vs | ( # 'Don''t' ) = 5 | vector symbols . | ~ like LISP quirky (?!) Each symbol stored only once in WS . like K is ATOMs . | format to char vec . | like Lisp in `58 . Lisp : ( F G ) s expression | fmt + | Type of thing on ex stk . fmt F |>| { 1 + ra } del | + , x | catinates . SMALLTALK : poor Scalabity | APL before NameSpaces . C problem of memory leaks . SYNTAX : A |>| 4 F |>| + From Jim Ryan : x y f | must use f [ ] x f y < -- > f [ y ; x ] a b | ( w d) , w b f a | f ( a ) a f | f [ ; a ] f g | f [ g ] 5 ! works . - - - - - - - - - - - - - - - - - - - Currying | 3&+ A ( 1&take ) each A | because only have fns ( which can act on fns |( / \ : compose )| J Syntax : Roger`s Table - too big . 0 - one page of simply written code . ( a + b ) x % d | then tokenized . integer index some into system sym table or ID tables - safe pointers Next . assigns number for - ( phrases ) Right most on Stack . then calls fn to left . a [ i ] b [ j ] | brackets ( ) [ ] { } code w rule for formating \ for execution | block closure in ST { 1 + w } each 2 |>| 3 a b [ i ] | same rule as a b ( i ) | very similar to APL2 . ix is [ i ] & a ix | works _if ( x = ) { `Zero } _if < -- { do take ( ~ take w ) drop 1 drop w } del Cory : { } not auto applied . must be explicit . Byte code interpreter implemented in J - quicker than Dyalog . Larry Breed - hell of bright guy - auto representation & coercion . every atom table - name valu pairs . | 1r3 rational parent slot Dave Unger`s language SELF . Abstraction is king . !10000 is integer . | bits subclass of integer .|20:58| f o 2 3 4 1 3 5 THRU 2 7 THRU 10 with .5 13 14 1 3 5 4 3 2 7 7.5 8 8.5 9 9.5 10 13 14