== wikipedia APL page revamp - wiki draft == ---- '''I replaced the intro to the wikipedia page [[http://en.wikipedia.org/wiki/APL_(programming_language)|APL (programming language)]] tonight with a slightly amended version of what you see below. By far the greatest difference is in the wiki syntax. I suppose that means that further changes to this page are fairly redundant.''' -- PhilLast <> . ''The next job will be to decide what if anything in the wikipedia page we should leave the same.'' ---- ''Deletions & Comments have been moved to the bottom. Those referring to a specific entry have their target repeated above.'' ---- ''If you add new entries in the text Please add references in the reference section at the bottom of the article.'' ---- ''You can sign your entries by appending @``SIG``@ which will be converted to your own equivalent of'' -- PhilLast <> ---- === Draft of intro to wikipedia APL prog lang article === ---- APL (A Programming Language) is based on a mathematical notation developed by the late Kenneth E Iverson; it is an array oriented language available from a number of commercial vendors and for most contemporary platforms. Vendors normally include an APL-specific integrated development and debugging environment along with the language implementation in their products. Amongst programming languages, APL has several unique/exclusive features: * The core language uses symbols rather than reserved words, leading to a more culture-independent style. * It is solution focussed; emphasizing the expression of algorithms independent of machine architecture or operating system. * It has just one simple, consistent and extendable precedence rule: the right argument of a function is the result of the entire expression on its right. It was an important influence on the development of spreadsheets, functional programming[1], Mathematica and !MatLab[2], and inspired a number of other languages, including A+[4], Q'Nial, J[3], K[4] & q[4]. APL is widely used in scientific, actuarial[6], statistical[7] and financial[8] applications, is used to develop commercial applications (both for sale and internal use) and is favoured by application specialists writing software for their own use. APL is also associated with rapid and lightweight development projects in volatile business environments. Recent extensions to APL include: * Object-oriented programming * Support for Microsoft .Net, both using existing .Net assemblies and to create new .Net assemblies * Direct access to Operating System resources (including Shell, Win32 API, WMI) * ActiveX access to COM aware applications such as Microsoft Office * Integrated charting and manipulation of SQL databases * APL as a native .NET language using Visual Studio 2008[10] * XML-array conversion primitives [11] * Lambda expressions[9] ---- === References === ---- [1] [[http://awards.acm.org/citation.cfm?id=0703524&srt=all&aw=140&ao=AMTURING|ACM Award Citation – John Backus. 1977]] <
> [2] [[http://www.mathworks.com/company/newsletters/news_notes/clevescorner/jan06.pdf|The Growth of MatLab - Cleve Moler]] <
> [3] [[http://www.jsoftware.com/jwiki/Essays/Bibliography|A Bibliography of APL and J]] <
> [4] [[http://kx.com/Company/press-releases/arthur-interview.php|Kx Systems - An Interview with Arthur Whitney - Jan 2004]] <
> [7] [[http://conference.dyalog.com/2008Elsinore/Presentations/Alan%20Sykes%20-%20Dyalog08.pdf|OOSTATS – A New Approach to Statistics via APL]] <
> [8] insert ref to financial (?) <
> [9] [[http://www.dyalog.com/download/dfns.pdf|Dynamic Functions in Dyalog APL - John Scholes. 1997]] <
> [10] [[http://www.visualapl.com/library/aplnext/Visual_APLNext.htm|Introduction to Visual APL]] <
> [11] [[http://www.dyalog.com/help/12.1/html/xml%20convert.htm|Documentation of XML-to-APL Conversion tool found in Dyalog APL and APLX]] ---- === End of article === ---- === Comments === ''I'm wondering whether control structures belong in the "recent extensions" section in so far as they've made beneficial improvement to many people's coding style. But against that, there's the problem of "recent" and it might make the outsider wonder which century we live in. -- DickBowman <>'' I've hacked away at the text - aiming to simplify, and hopefully to take a slightly more distant perspective. Also trying to "soften" the wording. I really do think "anonymous lambdas" belongs in the reject pile (along with domain-specific-languages) - probably because I wouldn't recognise one if it bit me on the nose. haven't got the hang of these comments. -- DickBowman <> (aka Dick Bowman - 30 July 2009) I agree: Anonymous lambdas should be dropped. Should 'SQL databases' be 'relational databases'? AjayAskoolum <> ---- ''I still think we should consign to the History all reference to "A Programming Language" which today seems even more pretentious than it probably already did sixty years ago. ''-- PhilLast <> I left the expansion in because so many people ask "what does APL stand for?"- but wanted to kill the "is it an acronym/abbreviation?" stuff. -- DickBowman <> ---- Well done, Dick, for finally removing the contentious "domain specialists" &/or "- specific languages" and inserting "and is favoured by application specialists writing software for their own use" instead. ''I can handle irony - I'd like something less clunky, and I don't care for "favoured" (implication that it is a language of majority preference). I'd probably substitute analyst/engineer/manager for "application specialist". All based on never having met anyone who calls themselves a "domain specialist". -- DickBowman <>'' I think you'll find "lambdas" more common and better understood than you realise. ''So - "anonymous lambdas" are Dyalog's "dynamic functions", and the "recentness" is a 1997 internal Dyalog paper? Sorry if I'm seeming argumentative, but I think the outsider may have problems here. Not least because at one level, dynamic functions seem not so very different from Sharp's direct definition of the 1980s. -- DickBowman <>'' . ''An outsider have difficulty because of a similarity with Sharp's direct definition? Did you miss a sentence?'' ''Just as a point of info DDs weren't anonymous and couldn't be used at the point of definition:'' {{{ plus:⍺+⍵ 3 plus 4 }}} ''as opposed to:'' {{{ 3{⍺+⍵}4 }}} ''This is what makes dfns most useful (though a slightly more complex example might be more persuasive).'' -- PhilLast <> I'd also still like to condense the three bullet points (nearly half of them) that merely refer to arbitrarily selected interfaces rather than actual language extensions. ''Matter of viewpoint - mine is that someone who wants to know about APL and what it can do for them is more interested in whether it fits with their existing data and IT framework than the semantics of the language. There are so many people out there (the J Forum used to be full of them) who believe that the APL they knew in the 1980s - when it very much was a self-contained environment - is also the APL of today. -- DickBowman <>'' ''Something that seems absent and probably belongs in the "recent" list is the Web server/service stuff, that I know too little about to add a bullet point. -- DickBowman <>'' Lastly Dick, did you mean to remove a bullet point that had a citation without removing the citation? ''Probably not. -- DickBowman <>'' . ''APL is an acronym for A Programming Language '' ''First, it isn't an acronym, which is a word whether made up or not. It's an abbreviation or initialism. More importantly it doesn't warrant being mentioned in the introduction. It's History! --' PhilLast <> AjayAskoolum''' ''''it doesn't matter. It has no place in the introduction. Who gives a damn what "J" stands for? Or "C" or "K"'''-- PhilLast <> '''' '' -- PhilLast <> 'At risk of being tedious I think that to get a revised introductory paragraph together we need to understand our intent (which, I think, is to present APL the way we see it - as a living and evolving entity; certainly we need to get ourselves out of the rut of so many well-worn arguments).'' I am also musing what should come after the introductory paragraph - I think that history should be consigned to the past. I'd like to see a couple of sections, one that tells "the management" what their enterprise should gain by including APL in their IT arsenal, and another that shows programmers/problemsolvers why APL is a good tools to use. ''Sorry to be counterproductive - but it may be that head-to-head is a quicker way to get where we want to be than pecking away at words on a page.'' Also apologising if I'm breaking the rules/exhortations about comments here ''What I am missing is a remark about the most important enhancements: Namespaces in Dyalog and integrated debuggers in some implementation. -- KaiJaeger <>'' ''Put one in then. -- PhilLast <> ''''...[11] insert ref to APLX & Dyalog []XML here! ''I will add a link to the documentation on the APLX implementation, or maybe I will add something to the APL Wiki and link to that. Because we're still in Beta for a short while longer, there's nothing permanent I can link to yet. -- -- SimonMarsden <> Lambda is a euphemism for anonymous: does 'Anonymous Lambdas' make any sense? Should the bullet simply say 'Lambda expressions'? Glad to see charting/sql mentioned. Consider this statement (not mine) 'APL is a language with an operating system': I believe that this is trying to explay that APLcoe ported from one host environment to another works identically and therefore predictable. A bullet point? (I can't find the words!) AjayAskoolum <> '''''I suggest that as we're aiming for conciseness as well as accuracy these three points could be combined into one slightly more general based on the second: "access to (all?/most?) available external resources" or some such.''-- PhilLast <> ''intuitive'' meaning, especially considering that APL is cross-platform. ''C# is merely one of the most recent languages to implement lambdas. Lambdas ''are'' anonymous and pre-date C# by several decades. ''dfns'' constitute one of the most significant extensions to the APL language, as opposed to bolt-ons and interfaces, since nested arrays and user defined operators.This section is trying to counter the belief some newcomers might have that APL is a dead language.' `⎕XML` might be trivial. It won't change anyone's life. But so what? It ''is'' a recent extension and is likely to attract many who perhaps mistakenly believe XML to be the be-all & end-all of everything. By whose terms of reference do you disqualify whatever `⎕SQL` & `⎕CHART` are? No-one else did!'' -- PhilLast <> Slightly off-topic, but []XML is not 'very trivial'. Having just spent the afternoon wrestling with the !XmlTextReader class in .NET, I find []XML's approach of giving you the whole thing much easier than .NET's node-at-a-time model. It's true that it can be improved with SOAP support, etc ''I am a trifle worried by the direction this is going - possibly an effect of working on this online rather than face-to-face. At the meeting on Friday we were able to use the time to discuss/hone/agree, the five (can I count correctly?) of us had a discussion of direction that is perhaps not explicit in the proposed text. ''APL is an acronym (see page 1 of 'Interactive Approach' 3rd Edition).'' ''Acronyms sometimes stop being treated as such when they enter conversations as words (made up or otherwise) or phonetic sounds e.g. NATO, GUI etc. APL has no phonetic sound. --'' ''So, Gillman & Rose made the same mistake! Its lack of a 'phonetic sound' is what stops its being an acronym but ''' ''''' ---- ''''' ''' ''' ''''' * ''support for .Net assemblies, including COM Interrop ''' ''''' * ''access to Windows resources (Shell, Win32 API, WMI) ''' ''''' * ''ActiveX access to COM aware applications e.g MS Office suite ''' ''''' ''I think these 3 points are fine as they are, if only because the jargon means exactly the same for APL as for other tools which are perceived as strong in one or another of the technologies mentioned. 'all external resources' is without ''' ''''' ---- ''''' ''' ''' ''''' ''I had originally crossed out "anonymous lambdas" because 1. it is a feature of but 1 interpreter 2. the meaning of the jargon is not the same as in C# where it originates - therefore this statement will add confusion. ''' ''''' . ''I had originally crossed out "XML-array conversion primitives" because 1. the implementation is very trivial (no XSLT, SCHEMA, or SOAP support) 2. this statement hints at too detailed a level on the nature of APL without focussing on the detail 3. there are better and more powerful (platform independent) primitives like []sql and []chart that deserve to be mentioned except that the terms of reference here rule this out. ''' ''''' . '''''. '''-- SimonMarsden <> Still, someone has reinstated both statement!!! AjayAskoolum It is inaccurate to state that APL uses mathematical symbols - more accurate to say Greek alphabets - that is why I had simply said 'symbols' in the original statement. AjayAskoolum The fact that five (`⍺⍵∊⍴⍳`) among as many dozens of the symbols that Iverson et al. quite deliberately selected from the broad range of symbols used in many branches of mathematics are Greek doesn't make APL Greek. ''' ''''' ---- ''''' ''' ''' ''''' . ''-- PhilLast <> ''' ''''' ---- ''''' ''' ''' ''''' ''I'm saying these things because my view is that someone using the Wikipedia wants to learn "about something" rather than "the history of something". ''' ''''' ''- Dick Bowman (27 July 2009). I think Beau Webber's example is sufficient to justify the claim on its own but add actuaries and statisticians who use APL rather than get a programmer to do it and the case is made. ''' ''''' ---- ''''' ''' ''' ''''' . ---- ''''' ''' ''' ''''' . ---- ''''' ''' ''' ''''' . ''. ''' ''''' ---- ''''' ''' ''' ''''' . ''Agreed! -- PhilLast <> ''' ''''' ---- ''''' ''' ''' ''''' ---- CategoryBaaLondon