Living in Data YLJ 2014.Pptx

Total Page:16

File Type:pdf, Size:1020Kb

Living in Data YLJ 2014.Pptx 2014-07-02 Living in Copious* Data with Vector Functional Programming And Now For Something Completely Different Dave Thomas www.davethomas.net ¡ Bedarra Research Labs ¡ GOTO/YOW! Conferences ¡ Carleton University ¡ Queensland University of Technology ¡ NITCA * Dean Wampler © 2013 Bedarra Research Labs. All rights reserved. Outline … First Primes ÿ R Œ , R ¥ TextR © R ¨ Ø 1 + 15 ê 2 3 5 7 11 13 Examples without variable ((¬◦(⊢ ∈ ,◦(⊢ ×/ ⊢))) © ⊢) ↓ 1+ 15 or in ascii J: © 2013 Bedarra Research Labs. All rights reserved. ((-.@:(] e. ,@:(] */ ]))) # ]) }. >: i. 100 1 2014-07-02 Outline 1. Motivation - Thinking in Copious Data 2. Why we decided on Vector FP? 3. Back to The Future of Array Languages 4. A Brief Taste of Vector Functional Programming 5. Yes!SQL - Just add functions and … 6. Summary © 2013 Bedarra Research Labs. All rights reserved. Motivation – Tools for Thinkers Analysis Results 2 2014-07-02 Thinker Data Sets ● Small (sensors) to Large Terabytes to Petabytes ● Semi Structured and Mixed Media ● Temporal ( Nanoseconds to Decades) and Timespans (Time Intervals) ● Messy Data (80% of data science is cleaning!) ● Missing Data (often denoted by null values) ● Out of Range Data – sensor failure, errors (denoted by +infinity and -infinity ● Uncertain Data (likely, highly unlikely) e.g. Dempster Shafer Reasoning Top Down Data Language Design Choices 1. A few elegant and simple abstractions 2. A dynamic object model and garbage collector 3. Everything is an object (list , set)... ● !! the first N < 5 implementations will suck in space and time ● !! interop with native HW will trail HW ● !! implementers will spend decades trying to make elegant => fast 4. Language is extended by libraries in the same language ● !! the libraries will often be bloated and of variable quality, with changing APIs … ● !! new libraries will interact with JIT runtime 3 2014-07-02 Bottom Up Data Language Design Choices 1. Needs to be fast ! Hence needs to be close to the metal in terms of runtime types 2. Needs to be small (compact) and data structures 3. Needs basic safety Hence must pay for nulls, index range checking... 4. Needs to support massive Hence needs to be value data versus reference based and 5. Needs scalable concurrency needs to support data parallel and simple actor concurrency 6. It will be a challenge to Hence needs an expert design language and DSLs for specific a normal developer language application users (i.e. the GPU problem) Vector FP Why Functional Vector VMs vs Object VMs Array VMs versus OVMs • Everything is boxed - No need for boxing and unboxing! … Simpler GC • Support for all native machine types • Virtual machine is smaller… can easily be held in instruction and data caches • Values are shared until modified Arrays are Column Stores => Table is a set of columns • Reduces the impedance between Objects and Records • Vectors are trivially and efficiently serialized • Vectors are machine values • Vector operations stream data through caches Array libraries use efficient algorithms code at machine level Arrays take less space than object collections Data parallelism is easily implemented 4 2014-07-02 Why Functional Vector VMs vs Object VMs • Array VMs vs. OVMs • Everything is boxed - No need for boxing and unboxing! … Simpler GC • Support for all native machine types • Virtual machine is smaller… can easily be held in instruction and data caches • Values are shared until modified • Arrays are Column Stores => Table is a set of columns • Reduces the impedance between Objects and Records • Vectors are trivially and efficiently serialized • Vectors are machine values • Vector operations stream data through caches • Array libraries use efficient algorithms code at machine level • Arrays take less space than object collections • Data parallelism is easily implemented Why Imperative Vector Functional vs Lazy FP VM • Dynamic Versus Static Types • Fixed Types reduces Abstraction Bloat (Frameworks) • Interactive exploration via Computation versus Type Refinement – Engineers and Business • Operations Defined over all types • Imperative vs Pure (Lazy) • Efficient Exploitation of imperative HW • Simpler runtime 5 2014-07-02 A Programming Language A Formal Description of SYSTEM/360, Falkoff, Adin D.; Iverson, Kenneth E.; Sussenguth, Edward H. (1964) Language as an Intellectual Tool: From Hieroglyphics to APL, Donald B. McIntyre Notation as a Tool of Thought, Ken Iverson's 1979 Turing Award Lecture The Vector (Array) System A+ APL • APL – K. Iverson • Nested Array Theory – T. Moore - APL2, Q’NIAL , A+ • Dyalog APL, APL 2000 – Unix Nial, and .NET - R, Matlab, PyNumerics, APL2 Octave.. • J - Vector FP “CISC” language • k, k2+ksql, k3/kdb, k4/kdb+... • Vector FP “RISC” language, q financial DSL for kdb+ • Julia J k 6 2014-07-02 A Programming Language (APL) – Ken Iverson1 Touch and Tweet Extremely Concise Idiomatic2,3 Programs (one liners) Life is an array Efficient generalized array operators e.g. +/ “plus reduce” ; +.* … Applicative Operator Style with Monadic and Dyadic Functions with “No Stinking Loops” 3 1. Ken Iverson, Notational as a Tool for Thought, 1979 ACM Turning Award 2. Alan Perlis, In Praise of APL – A Language for Lyrical Programming, SIAM News, 1977 and Programming with Idioms in APL, APL Conference, 1979 3. Steve Apter, nostinkingloops.com “Chasing Men That Stare at Arrays” by Catherine Lathwell Lyrical, Idiomatic, Shape Shifters, Transformers, Iron Chef, Alien Coders, Puzzlers, One Liners, Line Noise Generators, Anti-Loop Conspirators, Secret Society … © 2013 Bedarra Research Labs. All rights reserved. 7 2014-07-02 Common Features of Vector Languages • single data type is an array or vector • applicative expression oriented • execution is right to left no precedence “left of right” • applications = expressions plus a few functions • transformational expressions with assignment • most functions are monadic or dyadic • composition of functions/operations • large library of built in generalized operations • local and global scope (no closures) • application programmer is clearly a consumer not an implementer Each language has significant differences in their array model operations and library! © 2013 Bedarra Research Labs. All rights reserved. No Stinking Loops* • Operations generalized over collections.. • Each, EachLeft, EachRight, Peach maps • Conditional assignment • Generalized Amend • Reduce, Over, Scan provide bottom up loop free enablers e.g. pointer walking …; Do; While … * www.nostinkingloops.com Steve Apter 8 2014-07-02 How to learn an Array language? 1. Assume it will take weeks not hours or days? 2. Don’t write programs, write short expressions 3. Learn the nous, verb and adverbs by doing idioms (Kata of Arrays) 4. Focus on expressions as data /shape transformers 5. Write many small functions, don’t focus on smallest! 6. Start with normal control structures, move away from loops later © 2013 Bedarra Research Labs. All rights reserved. k and q Culture – Concepts and Idioms © 2013 Bedarra Research Labs. All rights reserved. 9 2014-07-02 k and q Culture – Concepts and Idioms “Arthur Whitney has designed and personally built several languages. In every case, his avowed purpose has been to make the language as concise and expressive as possible. Except for the fact that q has English words for some primitives, q is perhaps the most concise and the most powerful yet. Whereas I don't share Arthur's love for brevity, I am a power addict. The fact that this language allows programmers to mix very powerful database primitives with a powerful programming language (including inter-process communication) and to execute at high speed makes it a wonderful achievement. Arthur, however, may be most proud of the fact that the executable is only 100 kilobytes. The guy is pretty awesome.” Dennis Shasha ([email protected]) Kdb+ Database and Language Primer © 2013 Bedarra Research Labs. All rights reserved. Arthur Whitney A+, J*, k, q, Kdb A+ , an improved APL for finance applications J – Ken Inversions successor to APL k – k1, k2, k3, k4 family Kdb, Kdb+ – database with ksql and k2, k3 q – a embedded financial dsl for Kdb+ Kos – operating system in k4 * Wrote the original J interpreter 10 2014-07-02 Arthur Whitney A+, J*, k, q, Kdb Sodoku in k p:+{(=x)x}'p,,3/:_(p:,/'+:\9#'!9)%3 f:{$[&/x;,x;,/f'@[x;i;:;]'&27=x[,/p i:x?0]?!10]} Sodoku in q P:flip{(group x)x}each P,enlist 3 sv floor (P:raze each flip scan 9#'til 9)%3 F:{$[min x;enlist x;raze F each@[x;i;:;]each where 27=x[raze P i:x?0]?til 10]} A+, k1, k2, Kdb, k3, q/KDB+, k4 Text Editor in K /key(return back ^delete) kr:kx:{u,:,(j,j+#x;*k_a);e[k]x}; kb:{$[=/k;J j-1 0;];kx""};cd:{J j+!2;kx""} /edit(undo cut paste) e:{a::?[a;x;y];J(*x)+#y};cz:{$[#u;e/_`u;]}; cx:{kx cc`};cv:{kx@9'`} /save cs:{n::$[#n;n;0'""]1:a;r::a} 11 2014-07-02 q and KDB+ Syntax Nouns – variables, constants, functions . a, 42.42; (“xyz”;39;`Fred); myfunction[x;y;z]; Verbs - primitive and infix e.g a+b ; a infixfcn b; Note for readability juxtaposition any be used monadic functions; indexing; and function projections a i is short for a[i]; mymonadic `apple is short for mymonadic[`apple]; mymonadic:mydyadic 42 ; Adverbs - modify dyadic functions and verbs to new verbs. Each ('), modifies dyadic functions and verbs to apply to the items of lists instead of the lists themselves. For example, 1 2 3,4 5 / join 12345 (1 2 3;"abcd"),'(4 5;"e") / Join-Each (,') (1 2 3 4 5;"abcde") © 2013 Bedarra Research Labs. All rights reserved. Yes! SQL + Functional Vector Programming select date by stock, myavgs[3; mydouble price] from trade mydouble and myavgs are user defined functions select from t where c by g is syntactic sugar for ?[t;c;g] SQL © 2010 Bedarra Research Labs. All rights reserved.
Recommended publications
  • Is Ja Dialect of APL? Reported by Jonathan Barman Eugene Mcdonnell - the Question Is Irrelevant
    VICTOR Vol.8 No.2 convert the noun back to verb and as a result various interesting control structures can be created. The verbal nouns thus formed can be put into arrays and some of the benefits that various people have suggested might arise from arrays of functions can be obtained. A design goal is to make compilation possible without limiting the expressive power of J. APL Technology of Computer Simulation, by A Boozin and I Popselov reported by Sylvia Camacho Both authors of this paper are academic mathematicians and their use of APL is just where one might expect it to be: in modelling linear differential equations and stochastic Markovian processes. Questions put showed that they first used APL 15 years ago on terminals to what was described as 'a big old computer'. Currently they use APL*PLUS/PC. They have set up an environment in which they can split the screen and display data graphically with some zoom facilities. This environment can be used in conjunction with raw APL while exploring the results of a model, or can be used in conjunction with data derived from APL or some other source. In fact it is often used by Pascal programmers. Most recently they have been setting up economic models to try to come to terms with the consequences of decentralisation and privatisation. They use both Roman and Cyrillic alphabets. Panel: Is Ja Dialect of APL? reported by Jonathan Barman Eugene McDonnell - The question is irrelevant. Surely proponents of J would not be thrown out of the APL community? Garth Foster - J is quite definitely not APL.
    [Show full text]
  • An APL Subset Interpreter for a New Chip Set / by James Hoskin
    An APL Subset Interpreter for a New Chip Set James Hoskin MSc (Physics), University of Calgary A THESIS SUBMI 1 TED IN L'ARTlAl f Ul FILLMENT OF THE REQUIKEMENTS FOR THE DEGREE OF MASTER OF SCIFNCE In the School of Cornput~ngSc~enre " James Hosk~n1987 SIMON FRASER UNIVERSITY May 1987 All rights reserved This thesis may not be reproduced in whole or in part. by photocopy or other means w~thoutthe permission of the author Approval Title of Thesis: An APL Subset Interpreter for a New Chip Set Name. James D Hoskin Degree: Master of ~iience Examining Committee. Chairperson. Dr. W. S. Luk Dr. R. F. Hobson Senior Supervisor Dr J& Weinkam,"I/, Dr. R. D. Cameron External Examiner Dr. Carl McCrosky External Examiner April 28, 1987 Date Approved: PART IAL COPYR l GHT L ICENSE I hereby grant to Simon Fraser University the right to lend my thesis, project or extended essay (the title of which is shown below) to users of the Simon Fraser University Library, and to make partial or single copies only for such users or in response to a request from the library of any other university, or other educational institution, on its own behalf or for one of its users. I further agree that permission for multiple copying of this work for scholarly purposes may be granted by me or the Dean of Graduate Studies. It is understood that copying or publication of this work for financial gain shall not be allowed without my written permission. Title of Thesis/Project/Extended Essay -- - Author: (signature) (date) Abstract The APL language provides a powerful set of functions and operators to handle dynamic array data.
    [Show full text]
  • KDB Kernel Debugger and Kdb Command
    AIX Version 7.2 KDB kernel debugger and kdb command IBM Note Before using this information and the product it supports, read the information in “Notices” on page 323. This edition applies to AIX Version 7.2 and to all subsequent releases and modifications until otherwise indicated in new editions. © Copyright International Business Machines Corporation 2015. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents About this document.............................................................................................ix Highlighting..................................................................................................................................................ix Case-sensitivity in AIX................................................................................................................................ ix ISO 9000......................................................................................................................................................ix KDB kernel debugger and kdb command................................................................ 1 KDB kernel debugger................................................................................................................................... 1 Invoking the KDB kernel debugger........................................................................................................ 2 The kdb command..................................................................................................................................3
    [Show full text]
  • Compendium of Technical White Papers
    COMPENDIUM OF TECHNICAL WHITE PAPERS Compendium of Technical White Papers from Kx Technical Whitepaper Contents Machine Learning 1. Machine Learning in kdb+: kNN classification and pattern recognition with q ................................ 2 2. An Introduction to Neural Networks with kdb+ .......................................................................... 16 Development Insight 3. Compression in kdb+ ................................................................................................................. 36 4. Kdb+ and Websockets ............................................................................................................... 52 5. C API for kdb+ ............................................................................................................................ 76 6. Efficient Use of Adverbs ........................................................................................................... 112 Optimization Techniques 7. Multi-threading in kdb+: Performance Optimizations and Use Cases ......................................... 134 8. Kdb+ tick Profiling for Throughput Optimization ....................................................................... 152 9. Columnar Database and Query Optimization ............................................................................ 166 Solutions 10. Multi-Partitioned kdb+ Databases: An Equity Options Case Study ............................................. 192 11. Surveillance Technologies to Effectively Monitor Algo and High Frequency Trading ..................
    [Show full text]
  • A Lambda Calculus for Transfinite Arrays
    1 A Lambda Calculus for Transfinite Arrays Unifying Arrays and Streams ARTJOMS ŠINKAROVS, Heriot-Watt University SVEN-BODO SCHOLZ, Heriot-Watt University Array programming languages allow for concise and generic formulations of numerical algorithms, thereby providing a huge potential for program optimisation such as fusion, parallelisation, etc. One of the restric- tions that these languages typically have is that the number of elements in every array has to be finite. This means that implementing streaming algorithms in such languages requires new types of data structures, with operations that are not immediately compatible with existing array operations or compiler optimisations. In this paper, we propose a design for a functional language that natively supports infinite arrays. We use ordinal numbers to introduce the notion of infinity in shapes and indices. By doing so, we obtain a calculus that naturally extends existing array calculi and, at the same time, allows for recursive specifications as they are found in stream- and list-based settings. Furthermore, the main language construct that can be thought of as an n-fold cons operator gives rise to expressing transfinite recursion in data, something that lists or streams usually do not support. This makes it possible to treat the proposed calculus as a unifying theory of arrays, lists and streams. We give an operational semantics of the proposed language, discuss design choices that we have made, and demonstrate its expressibility with several examples. We also demonstrate that the proposed formalism preserves a number of well-known universal equalities from array/list/stream theories, and discuss implementation-related challenges.
    [Show full text]
  • Dyalog User Conference Programme
    Conference Programme Sunday 20th October – Thursday 24th October 2013 User Conference 2013 Welcome to the Dyalog User Conference 2013 at Deerfield Beach, Florida All of the presentation and workshop materials are available on the Dyalog 2013 Conference Attendee website at http:/conference.dyalog.com/. Details of the username and password for this site can be found in your conference registration pack. This website is available throughout the conference and will remain available for a short time afterwards – it will be updated as and when necessary. We will be recording the presentations with the intention of uploading the videos to the Internet. For this reason, please do not ask questions during the sessions until you have been passed the microphone. It would help the presenters if you can wait until the Q&A session that concludes each presentation to ask your questions. If your question can't wait, or if the presenter specifically states that questions are welcome throughout, then please raise your hand to indicate that you need the microphone. All of Dyalog's presenters are happy to answer specific questions relating to their topics at any time after their presentation. Scavenger Hunt Have fun and get to know the other delegates by participating in the scavenger hunt that is running throughout Dyalog '13. The hunt runs until 18:30 on Wednesday and prizes will be awarded at the Banquet. Team assignments, rules and the scavenger hunt list will be handed out at registration. Guests are welcome to join in as well as conference delegates. Good luck and happy hunting! For practical information, see the back cover If you have any questions not related to APL, please ask Karen.
    [Show full text]
  • KDB+ Quick Guide
    KKDDBB++ -- QQUUIICCKK GGUUIIDDEE http://www.tutorialspoint.com/kdbplus/kdbplus_quick_guide.htm Copyright © tutorialspoint.com KKDDBB++ -- OOVVEERRVVIIEEWW This is a complete quide to kdb+ from kx systems, aimed primarily at those learning independently. kdb+, introduced in 2003, is the new generation of the kdb database which is designed to capture, analyze, compare, and store data. A kdb+ system contains the following two components − KDB+ − the database kdatabaseplus Q − the programming language for working with kdb+ Both kdb+ and q are written in k programming language (same as q but less readable). Background Kdb+/q originated as an obscure academic language but over the years, it has gradually improved its user friendliness. APL 1964, AProgrammingLanguage A+ 1988, modifiedAPLbyArthurWhitney K 1993, crispversionofA + , developedbyA. Whitney Kdb 1998, in − memorycolumn − baseddb Kdb+/q 2003, q language – more readable version of k Why and Where to Use KDB+ Why? − If you need a single solution for real-time data with analytics, then you should consider kdb+. Kdb+ stores database as ordinary native files, so it does not have any special needs regarding hardware and storage architecture. It is worth pointing out that the database is just a set of files, so your administrative work won’t be difficult. Where to use KDB+? − It’s easy to count which investment banks are NOT using kdb+ as most of them are using currently or planning to switch from conventional databases to kdb+. As the volume of data is increasing day by day, we need a system that can handle huge volumes of data. KDB+ fulfills this requirement. KDB+ not only stores an enormous amount of data but also analyzes it in real time.
    [Show full text]
  • Generating an APL Font
    TUGboat, Volume 8 (1987), No. 3 275 Generating an APL Font a typewriter-like typeface with fixed spacing; the Aarno Hohti and Okko Kanerva same approach for representing TEX input was University of Helsinki adopted by Knuth in the wbook. The verbatim macros have often been used for importing screen ABSTRACT. The APL language is well known for its or paper outputs into 'I@X documents; some people peculiar symbols which have inhibited the use of this misuse them for an easy construction of tables etc. language in many programming environments. Making In verbatim, the typewriter mode is entered by the APL documents of good quality has been difficult and control sequence \ begint t - that mode is ended by expensive. We describe here a simple way how to use METAFONT to generate an APL font for Tk,X by using \endtt. In the same vein, we could enter the APL existing font definitions as far as possible. mode by the control sequence \beginapl, and to end it by \endapl. However, it is more convenient Introduction to augment verbatim with aplstyle so that it This note describes an interesting exercise in using can be used with several different typewriter-like METAFONT to produce new typefaces by combining fonts. (The verbatim macros can be found in the letters from standard fonts. As we know, the APL Wbook, p. 421.) Since Q (the at sign) is used as language [6] of Kenneth Iverson has never gained the escape character inside verbatim mode, our the popularity it deserves largely because of its code might (and in fact does) look as follows: strange symbol set.
    [Show full text]
  • Glossary of Mathematical Symbols
    Glossary of mathematical symbols A mathematical symbol is a figure or a combination of figures that is used to represent a mathematical object, an action on mathematical objects, a relation between mathematical objects, or for structuring the other symbols that occur in a formula. As formulas are entirely constituted with symbols of various types, many symbols are needed for expressing all mathematics. The most basic symbols are the decimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), and the letters of the Latin alphabet. The decimal digits are used for representing numbers through the Hindu–Arabic numeral system. Historically, upper-case letters were used for representing points in geometry, and lower-case letters were used for variables and constants. Letters are used for representing many other sort of mathematical objects. As the number of these sorts has dramatically increased in modern mathematics, the Greek alphabet and some Hebrew letters are also used. In mathematical formulas, the standard typeface is italic type for Latin letters and lower-case Greek letters, and upright type for upper case Greek letters. For having more symbols, other typefaces are also used, mainly boldface , script typeface (the lower-case script face is rarely used because of the possible confusion with the standard face), German fraktur , and blackboard bold (the other letters are rarely used in this face, or their use is unconventional). The use of Latin and Greek letters as symbols for denoting mathematical objects is not described in this article. For such uses, see Variable (mathematics) and List of mathematical constants. However, some symbols that are described here have the same shape as the letter from which they are derived, such as and .
    [Show full text]
  • Uters and Automation
    £11~6 V) 3$Or NVS November, 1969 69ZIN* IS 13~~VW $ OIT Vol. 18, No. 12 ~ 0 1 0 ~n;)j7F 2 'iz? ' S£969£f9 1 J3S SlVJI00I~3d • . /~ SAN JOSE PU BLIC LIBRARY CDI •• ~uters and automation ... Computer A ffects Football Strategies •'~ If your office isn't ~xactly surrounded by good I(eyboard operators, we can train as many as you need. We specialize in increasing the We increase the productivity Where we do it. productivity and accuracy of and accuracy of existing operators, KTI is unique. We do not computer input equipment too. We do it by reducing operator operate schools or conduct classes operators - experienced employees errors by 50% to 80%. And by in the usual sense. We work only as well as new operators. increasing speed from 15% to with employers. For example, when the Book­ 40% with corresponding expense KTI trains on-the-job or of-the-Month Club moved its offices savings. off-the-job. Our professional to Camp Hill, Pa., they discovered Computerworld concluded, in instructor will work with your there weren't enough keypunch an independent study, that. the operators on your own equipment operators available. So they called average increase in operator and primarily on your own us in. And we trained the operators productivity is 22%. documents. they nee?.~e.a . from scratch. In just So it's no wonder that top What it costs. Fortune companies like three ~ weeks. The amount varies. But AT&T and Mobil Oil use savings in the first year usually our services.
    [Show full text]
  • Why I'm Still Using
    Why I’m Still Using APL Jeffrey Shallit School of Computer Science University of Waterloo Waterloo, ON N2L 3G1 Canada www.cs.uwaterloo.ca/~shallit [email protected] What is APL? • a system of mathematical notation invented by Ken Iverson and popularized in his book A Programming Language published in 1962 • a functional programming language based on this notation, using an exotic character set (including overstruck characters) and right-to- left evaluation order • a programming environment with support for defining, executing, and debugging functions and procedures Frequency Distribution APL and Me • worked at the IBM Philadelphia Scientific Center in 1973 with Ken Iverson, Adin Falkoff, Don Orth, Howard Smith, Eugene McDonnell, Richard Lathwell, George Mezei, Joey Tuttle, Paul Berry, and many others Communicating APL and Me • worked as APL programmer for the Yardley Group under Alan Snyder from 1976 to 1979, with Scott Bentley, Dave Jochman, Greg Bentley, and Dave Ehret APL and Me • worked from 1974 to 1975 at Uni-Coll in Philadelphia as APL consultant • worked from 1975 to 1979 as APL consultant at Princeton • worked at I. P. Sharp in Palo Alto in 1979 with McDonnell, Berry, Tuttle, and others • published papers at APL 80, APL 81, APL 82, APL 83 and various issues of APL Quote-Quad • taught APL in short courses at Berkeley from 1979 to 1983 and served as APL Press representative • taught APL at the University of Chicago from 1983 to 1988 Why I’m Still Using APL Because • I don’t need to master arcane “ritual incantations” to do things
    [Show full text]
  • Programming Language) 1 APL (Programming Language)
    APL (programming language) 1 APL (programming language) APL Paradigm array, functional, structured, modular Appeared in 1964 Designed by Kenneth E. Iverson Developer Kenneth E. Iverson Typing discipline dynamic Major implementations IBM APL2, Dyalog APL, APL2000, Sharp APL, APLX Dialects A+, Dyalog APL, APLNext Influenced by mathematical notation [1] [2] [3] [4] Influenced J, K, Mathematica, MATLAB, Nial, PPL, Q APL (named after the book A Programming Language)[5] is an interactive array-oriented language and integrated development environment which is available from a number of commercial and non-commercial vendors[6] and for most computer platforms.[7] It is based on a mathematical notation developed by Kenneth E. Iverson. APL has a combination of unique and relatively uncommon features that appeal to programmers and make it a productive programming language:[8] • It is concise, using symbols rather than words and applying functions to entire arrays without using explicit loops. • It is solution focused, emphasizing the expression of algorithms independently of machine architecture or operating system. • It has just one simple, consistent, and recursive precedence rule: the right argument of a function is the result of the entire expression to its right. • It facilitates problem solving at a high level of abstraction. APL is used in scientific,[9] actuarial,[8] statistical,[10] and financial applications where it is used by practitioners for their own work and by programmers to develop commercial applications. It was an important influence on the development of spreadsheets, functional programming,[11] and computer math packages.[3] It has also inspired several other programming languages.[1] [2] [4] It is also associated with rapid and lightweight development projects in volatile business environments.[12] History The first incarnation of what was later to be the APL programming language was published and formalized in A Programming Language,[5] a book describing a notation invented in 1957 by Kenneth E.
    [Show full text]