Jim Brown
James Arthur Brown is an APL language designer and the primary force behind IBM's APL2. In this role he was one of the primary advocates for the nested array model. He was awarded the Iverson Award in 1993 for his work on APL2.
Career
Brown studied mathematics at Gannon College in Pennsylvania[1] (he first used a computer there in 1958). After graduating, he took a position at IBM Federal Systems in 1965, and soon learned about APL and its use in Falkoff and Iverson's "A formal description of SYSTEM/360".[2] Brown later (at an ACM meeting) met Adin Falkoff, who demonstrated APL\360 to him on a 2741 terminal. Although Brown's manager declined to make him an account on the Yorktown Heights installation Falkoff had connected to, Brown learned of a planned installation at Syracuse University and enrolled in Ph.D. studies there in 1968. He would graduate in 1971 having written (advised by Garth Foster) "A Generalization of APL" for his thesis—the document that later became the foundation of APL2 and an influence on NARS. However, he had left his IBM position to begin studies, and the pay for his new job running Syracuse's APL service pay proved insufficient, so in 1969 Brown also began work at IBM's Watson Research Center at Yorktown Heights. In addition to APL implementation such as extending Encode, Decode, and Catenate to higher-rank arrays, Brown discussed language designs with his colleagues and in particular Trenchard More, whose array theory closely resembled Brown's ideas. However, Brown was not allowed at the time to access More's proposals made at IBM in order to avoid their content being made public.[3]
After completing his Ph.D., Brown joined IBM's Philadelphia Scientific Center under Dick Lathwell, and began work on a nested extension to APL, what would become APL2 (he changed departments to Palo Alto in 1974, back to Yorktown Heights in 1978, and Palo Alto again in 1981[3]). He discussed Trenchard More's ideas with Ziad Ghandour and later More himself, and adopted the details of More's theory, particularly prototypes, for APL2. A prototype of APL2 (Installed User Program or IUP) was released in 1982 with Brown serving as chief architect; because of discussions with Falkoff and Iverson at Yorktown various extensions had been changed to favor a flatter array style, but based on user experience and conversation with Bob Smith (development manager of NARS at STSC), Brown changed them back to match his earlier definitions.[4] Another aspect of the APL2 design advocated by Brown was the generalization of strand notation to any arrays rather than just numbers. APL2 was released in 1984, and Brown continued to work at IBM on design as well as service and marketing. He also arranged the performance of APL Blossom Time at APL81, playing guitar and singing along with the band and hundreds of conference attendees.
Brown left IBM in 1996 and began working as an independent consultant. He and James Wheeler, a former manager at STSC, founded the analytics company SmartArrays in 1999.[5] Brown remained a manager at SmartArrays until its dissolution in 2019.[6] Additionally, he formed NestedComputing with Mircea Morosan in 2011 to work on an array operating system, supported by Gitte Christensen and Morten Kromberg.[1]
Publications
- Ph.D. thesis: "A Generalization of APL". 1971.
APL conferences
- Main article: APL conference
- APL74: An application of a specialized data bank for analysis and information retrieval in the field. With Bernaro Verner.
- APL79: Evaluating extensions to APL.
- APL81: The APL identity crisis. With M. A. Jenkins.
- APL82: Understanding arrays.
- APL82: Eigenanalysis and polynomial root finding primitive functions. With S. Schmidt and M. A. Jenkins.
- APL83: APL2 syntax: Is it really right to left?.
- APL84: Function assignment and arrays of functions.
- APL85: Inside the APL2 workspace.
- APL86: Writing multi-user applications in APL2.
- APL86: Logic programming in APL2. With Janice H. Cook, Leo H. Groner, and Ed Eusebi.
- APL86: APL2 and AI: a study of search. With Ed Eusebi.
- APL87: Why APL2: a discussion of design principles.
- APL87: APL2 implementations of unification. With Ramiro Guerreiro.
- APL87: Solutions to logic problems in APL2. With Manuel Alfonseca.
- APL87: Designing APL2 programs for unification. With Ramiro Guerreiro.
- APL88: An APL2 description of the IBM 3090 vector facility.
- APL89: User defined data types in APL2. With J. P. Benkard.
- APL89: Understanding selective assignment. With B. Hawks.
- APL90: Toward a common prototyping language. With Jack G. Rudd.
- APL92: APL2 implementation of cross-system shared variables. With Erik Kane.
- APL93: Extending the APL character set. With Brent Hawks and Ray Trimble.
- APL94: The origins of APL2.
- APL00: What’s wrong with APL2.
- APL02: SmartArrays for the APL programmer. With James G. Wheeler.
Other talks
External links
References
- ↑ 1.0 1.1 Jim Brown. APL Wiki user page
- ↑ Adin Falkoff, Ken Iverson, and Edward H. Sussenguth Jr. "A Formal Description of System/360". IBM Systems Journal 3:3:198-262. 1964.
- ↑ 3.0 3.1 Jim Brown. A Personal History of APL. Updated 2017-04-05.
- ↑ James A. Brown. The Origins of APL2 at APL94.
- ↑ SmartArrays. "About Us". Archived from the original on 2018-05-17.
- ↑ smartarrays.com. Accessed 2020-03-17.
APL community [edit] | |
---|---|
Activities | Conferences ∙ User groups and meetups ∙ Iverson Award ∙ Exercises |
Chat rooms and forums | APL Farm ∙ APL Orchard ∙ APL Wiki |
People | Phil Abrams ∙ Brian Becker ∙ Bob Bernecky ∙ Larry Breed ∙ Charles Brenner ∙ Jim Brown ∙ Adám Brudzewsky ∙ Gitte Christensen ∙ Peter Donnelly ∙ John Earnest ∙ Adin Falkoff ∙ Garth Foster ∙ Lib Gibson ∙ Aaron Hsu ∙ Roger Hui ∙ Ken Iverson ∙ Morten Kromberg ∙ Dick Lathwell ∙ Marshall Lochbaum ∙ Eugene McDonnell ∙ Roger Moore ∙ Trenchard More ∙ Alan Perlis ∙ Raghu Ranganathan ∙ Henry Rich ∙ Al Rose ∙ John Scholes ∙ Ian Sharp ∙ Bob Smith ∙ Geoff Streeter ∙ Joey Tuttle ∙ Arthur Whitney |
Other | APL Trust ∙ APL Quote Quad ∙ Blogs ∙ Books ∙ Case studies ∙ Famous APL users ∙ Humour ∙ Jobs ∙ Merchandise ∙ Papers ∙ Podcasts ∙ TryAPL ∙ Try It Online ∙ Video channels |