On 30 July 2011 00:08, EelVex <[email protected]> wrote:
> I'm about to give a talk on J programming. I plan it to be about 30minutes
> long. The audience is mixed but most have a decent exposure
> to C++, Java and/or Python.
>
> Any suggestions on:
> * where to focus
> * how to present J
> * what to avoid

J is a fuctional language but saying so is not characterizing of
it.  It used to be the time when functional programming was unknown
to most programmers.  It is no longer so.  There are many functional
programming languages in use already, and most of the rest acquired
functional capabilities.  In fact, functional programming is so
ubiquitous nowadays that there is a wealth of styles of expression
within it to choose from.

In order to present J to APL/J/K newcomers which are otherwise
experienced programmers, I would (and I sometimes do) focus on the
following.

Ease of array creation and manipulation.
  -- easy to create, shuffle, slice, extract, extend arrays in any
     dimension and in each direction (e.g., it is trivially easy to
     add rows / columns to any of the four edges of a table; it is
     just as straightforward to extract any subset of rows or columns);
  -- very importantly, arrays are properly displayed (e.g., tabular
     data (a 2d array) is really displayed as 2d data.

Actions (verbs) automatically extend to data of higher dimensions
(`mapping' is implicit and pervasive dimension-wise).  Verb ranks
adjust the `basic level' where actions take place.  Examples:
adding a vector to rows / columns of a table.

Mathematical completeness:
  -- the whole numerical tower present, including exact numbers;
  -- support for neutrals of functions (such as 0 for +/i.0 and
     1 for */i.1) and nullary data (5 0$'' is a valid -- even
     printable -- data piece with no items but of certain shape);
  -- automatic support for inverse functions.

J is an interactive environment where definition, computation and
editing take place in the same space.  For me, and I believe a lot
of other people, J is attractive precisely as a very high-level,
programmable calculator and writing pad.

Composition, including of tacit functions, to obtain new functions,
can be shown, but lengthy expressions must be avoided -- they tend
to scare away and put off.

There are also other things in J to avoid on first acquaintance.
Specifically, text manipulation examples are hardly attratctive,
compared to what people are used to with grep, sed, awk, perl, and
the many other tools and languages excelling in text processing
capabilities.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to