Hello Oleg,
Thanks for the links. Your examples are actually better and I'll
use them on Saturday.
In the last part of your email, you mention something about
letting the developers feel the
awesome power of interactive execution of a J Session.
Unfortunately, the J session window
"scares" them and the "cryptic" way of getting data from a
database actually puts them off. So I
created an application called SmartEOE.IDE. I did it partly as a
solution to the problem and to
actually build a true Model-Viewer-Controller application in C#.
The idea is that the developers
have a tree window for each Library->J Script and an editor window
for the actual scripts. They
can then run and test the script in the embedded J window at the
same time it allows them to
retrieve data from familiar data sources and be able to send it to
the J session. I took some
screenshots and uploaded them to my website in:
http://amrufon.spaces.live.com/photos/cns!2B169BDA829381E6!194/
I will be emphasizing that before they embed their J scripts into
their C# code, they can test
it out with "real" data in the IDE. So when they are happy, they
can then proceed and update
their C# code with the J script, compile then deploy.
Of course, I will still show them that there is an option where
they can encapsulate all of the
code that uses J so that it becomes a black box library. Still, my
intention right now is to get
them interested to use in-line J scripts and then later on convert
C# modules into J verbs
leaving the C# function as a wrapper method.
Again ... thanks. :)
r/Alex
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:chat-
[EMAIL PROTECTED] On Behalf Of Oleg Kobchenko
Sent: Tuesday, March 04, 2008 7:28 PM
To: Chat forum
Subject: RE: [Jchat] Re: the purity of quantified conception
You should be prepaired that developers may not be as
technically naive as their technical managers.
http://www.csharp-station.com/HowTo/StringJoinSplit.aspx
So starting with this example you should admit that
it was simple enough so that the managers would get it
and be lured to get you guys here, but now we gonna
talk about some real cool stuff.
.NET has vast standard libraries that handles numerous
stock operations on simple objects like strings and collections.
Whereas the forte of J is a few really powerful operations
which generalize over higher-order structures in compact
yet expressive notation(*).
To expand on the Join example, you can show how to turn
a matrix into HTML table in a one-liner.
A second example of the .NET/J distinction can be that
J has no dedicated operation for SubStr found in mostly
any language library. However is can be easily done with
Cut <;.0 and easily generalized to simultaneous multiple
substrings in a one-liner and to a sub-matrix etc.
Related examples here are running average (infix) and matrix
convolution with <;.3 (another cut).
Of course C# developers are really excited about Linq. So you
must show Linq as they've never seen before, the way
it is done in J
http://www.jsoftware.com/jwiki/DB/Flwor
(*) J notation best preserves its clarity when maintained
separately from the client calling code, so its best not
intermingle C# and J code, but keep a thin calling layer
with clean separate C# and J sources. To this end,
it is helpful to organize J code with externally callable
entry points (top-level verbs) and some kind of convention.
It is the same with SQL. Also keeping it separate makes
use of the full power of J session for trial-and-error
experimentation--another advantage of interpretive environment
worth showing off.
--- Alex Rufon <[EMAIL PROTECTED]> wrote:
The WAN is down so I can't work ... then I accidentally click on
this email.
I am basically the ONLY J programmer in our office. Were
basically a C# and VB.NET software
house but our core processing is done in J. Unfortunately, I am
the only J programmer (I can
repeat that as a mantra you know).
For the longest time (going 8 years now), I've been trying to
convince other teams to adopt J
into their project ... and quite frankly I continue to fail.
You said:
" People don't embrace J because, having been exposed to its awe-
inspiring qualities, they are
swept away by "the purity of quantified conception." That is
likely to be a factor, but
without
a sense that J provides what they need in their actual context
they'll never go beyond initial
dabbling."
Is VERY-VERY true.
Last Saturday, I did another presentation to the Technical
Managers trying to convince them to
adopt J. But this time, I tried another approach (read this as
being sneaky). Instead of doing
examples on how it works, what the language is about and its
capabilities. I showed them how I
use C# with J to do the following:
1. Array processing
2. File processing
3. Converting MS-SQL DataSet to SQL INSERT statements
For the array processing, one of my example is creating the classic:
Select * from FRUITS where NAME in ('Orange','Apple','Banana')
Normally, to do this in C#, they would have
string[] data = {"Orange","Apple","Banana"};
What they actually need is to have the data in this format:
'Orange','Apple','Banana'
To do this in C# they have to loop through each of the item in
the array like so:
string result = "";
for (int i = 0; i < data.length; i++)
{
result += "'" + data[i].tostring() + "',";
}
// We have to remove the ending "," comma
if (result.length > 0)
{
result = result.trim(result.length - 1,1);
}
Where if they use J, all they need to do is:
JSession objSession = new JSession();
string[] data = {"Orange","Apple","Banana"};
string result;
// Send the data to EOE
objSession.Variable("Temp1",(object)data);
// Process the data
objSession.Eval("res=: ',' charsep '''' ,~ each '''' with each
Temp1");
// this can even be shortened with
// objSession.Eval("res=: datasep Temp1");
// Get the data back to C#
result= (string)objSession.Variable("res");
// SQL command
string sqlCommand = "Select * from FRUITS where NAME in (" +
result + ")";
And the other thing I pointed out is that in the original C#
code, they have to do this:
// We have to remove the ending "," comma
if (result.length > 0)
{
result = result.trim(result.length - 1,1);
}
By putting things into the perspective of what they need now, I
may have some measure of
success. A few of the Technical Managers want to do another
session on Saturday but this time
they will be bringing their developers and wants a more detailed
discussion on the language.
The
warehousing team is actually scheduling a meeting when I get back
to the Philippines for me to
help with their developers on data processing.
I hope that this continues and I can encourage more people to
adopt the language. :)
r/Alex
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:chat-
[EMAIL PROTECTED] On Behalf Of Tracy Harms
Sent: Friday, January 25, 2008 4:17 AM
To: [email protected]
Subject: [Jchat] Re: the purity of quantified conception
Randy MacDonald wrote:
Happy New Year, Tracy;
A belated Happy New Year to you, too, Randy.
My personal thought about that "law" that says all systems of
sufficient complexity are equivalent to lisp, my thought is,
that all matter of sufficient temperature becomes plasma. True,
but not of much use in the ordinary world.
I had not recognized the allusion to that saying, so thanks for
pointing it out.
BTW, did the xkcd post have such an effect on the lisp community?
Touch�
Perhaps there is a fine line between desiring to see the beauty
of J more widely recognized,
and
falling into factional squabbling. Lisp has had a small but
fervent user base for a long time,
and XKCD is one manifestation of that. At the point I start
letting myself think "if they only
knew..." I've fallen off the edge into fantasy.
People don't embrace J because, having been exposed to its awe-
inspiring qualities, they are
swept away by "the purity of quantified conception." That is
likely to be a factor, but
without
a sense that J provides what they need in their actual context
they'll never go beyond initial
dabbling.
--
Tracy