Hi Don,
I'm replying on this first post (when will Google Wave be available?) since I
am coming into this discussion a bit late.
I've read your document and I feel that we have similar objective. In my day
job, one of the things that we used J for is for our EOE (English Object
Engine). It's basically a set of verbs that are very specific to the
supply-chain integration for apparel. Of course the core library is generic and
can be applied to a lot of industry but the main usage is tooled to our clients.
When we were developing, we actually categorized our scripts with words,
sentences and paragraphs. Actually, when I was creating the documentation, I
"borrowed" from Henry Rich's book "J for the C Programmer" ... particularly in
the Chapter 3 - Preliminaries (page 25). There he has a nice explanation of J
terminology, sentences, comments, etc. I really do suggest that you look that
chapter up. :)
To implement EOE, (I really do wish right now that I can attach our
documentation right about now) I had to build its 3 major parts:
1. The core library - this is the lowest level verbs which are actually written
in J. Very similar to the primitives.ijs files with us adding our extension
words.
2. EOE In-memory DB - this is my implementation of an inverted database to hold
data coming from MS-SQL, excel, csv, EDI, pdf (not fully functional), etc.
3. .NET Class Library - a wrapper class library that provides loading EOE
scripts and data into a J session. It's also the base class that is inherited
by all .NET projects that's going to use EOE. The class hides the J session to
the developer and end user. These class libraries are implemented both on the
client side and server side leaving the decision on where to execute (server or
client?) on the developer.
With this, I can import a database table from MS-SQL and can manipulate the
data. My in-memory db is designed in such a way that it recognizes and properly
convert MS-SQL datatypes to J specific datatype.
So if I have a the following database table:
SALES
USER_NAME varchar(50)
SALES_QTY numbers(10,2)
I can import that table to J to (for example) TEST, EOE will automatically
create the global fieldnames position assigned to:
TEST_USER_NAME
TEST_SALES_QTY
So I can just get the consolidation by writing in my J session
TEST consolidateby TEST_USERNAME, TEST_SALES_QTY
consolidateby is one of our core verbs which consolidates a matrix using using
the first parameter as key and the 2nd parameter as values. If I'm writing this
in pure J, this would look like this:
(0 { "1 TEST) +/ /. 1 { "1 TEST
By using J this way, we have better success in integrating J into our products.
All the .NET peons just need to know what the published libraries are and use
them as a black box. Older, more experienced, programmers can make their own
scripts by using an IDE we specifically created to support EOE. He can see the
J session but it is embedded into the IDE as an "Immediate Execution" window.
All scripts that he creates are stored in an XML file that is synchronized to
an MS-SQL database ... and loaded by either the app server application or the
client modules during runtime.
r/Alex
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf
Of Don Watson
Sent: Sunday, May 31, 2009 1:31 AM
To: Chat forum
Subject: [Jchat] Verbs
Hi,
I have a paper at:
www.bcompanion.com/verbs
It is an attempt to make J more consistent and thus easier to learn.
Explicit definition is replaced and three alternatives to the two character
primitives are considered.
I didn't intend to continue with this - but can't seem to give it up.
Don
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm