Pascal's triangle, webGL 3D, directory trees, fat middle, array solution converted to streaming one, language design, emotional resonance of language decision, moral judgements, new programming languages, learning drill technique
Meeting Agenda for NYCJUG 20120411 ---------------------------------- 1. Beginner's regatta: See "Pascal Triangle in APL and J.pdf", "Excerpts from Algebra - An Algorithmic Treatment.pdf" 2. Show-and-tell: see "WebGL 3D Graphs on Google.pdf", "dirTreeIJS.doc". A general solution to the "Fat Middle" problem? See "allAtOnceVsApplyAcross.pdf". 3. Advanced topics: What makes a good language? See "PHP - a Fractal of Bad Design+rebuttal.pdf". Why do we get so invested in a language? See "Sucks vs Rocks in the world of software.pdf". What influences our judgement in general? See "Moral Psychology - Six Axes of Good and Evil.pdf". 4. Learning, teaching and promoting J, et al.: New languages: see "New Languages and Why We Need Them.pdf", "Why Programmers Should Use Haskell Now.pdf", "Parallel programming language ParaSail.pdf", "Simpler Programming for Multicore Computers.pdf". A method for teaching J? See "Learning a New Language with Memrise.pdf".
We looked at code for generating Pascal's triangle in both APL and J from links referenced on the new and improved SIGAPL website. This is a good, fairly simple example for introducing those new to J - of whom there were a couple at the meeting - to a few powerful concepts like combinations (dyadic !) and power (^:).
There is a potentially useful online translation of Iverson's "Algebra - an Algorithmic Treatment" to use J examples. There is still work to be done on this web-based version, particularly in the section displaying J code and results - there is an end-of-line problem that strings out the 2D display into a line. Ed Cherlin is working on this but would welcome a programmatic fix he could apply to his HTML to rectify this.
There is a good example of using HTML5 to generate animated 3D plots on Google; if you use the Chrome browser, you can enter an equation and have it plotted almost instantly - see this example. This would be a truly powerful tool if we were able to use J instead of "standard mathematical notation" - this last phrase being, of course, an empty array joke.
We considered how to overcome array-programming languages' "fat middle" problem by converting a verb that works on an entire array to the verb plus an accumulator verb applied by means of a conjunction to a potentially large piece of data.
In this section, we explored some issues starting with thoughts on language design - what are some features of a well-designed language - proceeding to why people become so emotional about computer language issues and ending with some considerations of how people think about value propositions in general.
Learning, teaching, and problem-solving
Lastly, we talked about how popular it is to invent new languages and how so many of these fail to learn from existing languages and issues - a particular lacuna being that most new languages handle arrays so primitively - and some examples of the language issues on which people are currently focused. We also considered some techniques for teaching and learning that have found their way into commercial products and how we might apply this to teaching and learning J.
-- Devon McCormick <<DateTime>>