On Sat, Dec 8, 2012 at 1:35 PM, Don & Cathy Kelly <d...@shaw.ca> wrote:

> Hey - I am approaching this as an engineer (and ex educator)  rather than
> as a professional programmer. I have in the past used a variety of
> languages- first was MAD (1961 at U of Michigan-credit to the Ford
> Foundation which provided generous support) which was a superior Fortran at
> the time, then various flavours of Fortran, Basic, Pascal (1 program), C++
> (got pissed off with it), APL  - loved it, and now playing with J. The
> latter two put the problem first, the others put programming style (and
> much of the trivia which the "idiot counting on fingers box" can do faster
> and better) ahead of the problem. So, using J, you get the problem solves
> while users of these other languages are still defining variables as
> floating, integer, and boolean in cases where the language can decide
> 'close enough'. Of these non J or non APL languages  the old Turbo Basic
> was the easiest to use to solve a problem- it had the advantage of getting
> a compiled program vs interpreted (speed gain over the APL equivalent at
> the time and compiled very quickly with good error checking.However, with
> the problem I had, it took several pages of code (including subroutines but
> not line number GOTO's )vs an APL equivalent which took less than 1 page of
> code (most of which was taken up by some unfortunately necessary loop
> control and necessary output formatting).
>
> In going back to a language such as Python- from my first impression-
> you'll may be frustrated by some of the clumsiness inherited from the  past
> non array oriented languages. Look at the power of a simple +/ vs the
> Python, Fortran, Basic, C  approach? Try out the  1 o. o.0.1*i.10
> equivalent in Python without writing a loop.
>
>
Maybe, it's not your main point, but in Python:

>>> from math import *
>>> [sin(0.1*x*pi) for x in range(10)]
[0.0, 0.3090169943749474, 0.5877852522924731, 0.8090169943749475,
0.951056516295
1535, 1.0, 0.9510565162951535, 0.8090169943749475, 0.5877852522924732,
0.3090169
943749475]

BTW, +/ in Python is sum : sum([1,10,5,7,9]) or even sum(i*3 for i in
range(10))

What is fascinating about Python is it has gradually learned many good
things from other great language, one of which is the list comprehension
used above.

In addition to that, what Python and many other general dynamic languages
extend themselves is often via libraries. Due to their dynamic nature and
hence its malleability, they don't need to sacrifice the expressibility and
they can contract the expression to a succinct and natural form. (however,
not as succinct as J, as I think) For matrix manipulation, have a look at
numpy.


> At the end of this rant- I hope that engineers do not really want  a 'one
> way to do it' approach- otherwise engineering becomes strictly by the book
> which allows no room for innovation or improvement.
>  APL and it's heir J give flexibility. I found this from this forum when I
> had a problem which involved modifying the  diagonal of a matrix-
> essentially adding a vector along the diagonal- conceptually it involved an
> efficient way to get a unit matrix. I asked for help and learned that, in
> this case,  J is like Heinz - about 47 ways exist- some good, some not so
> good, but all valid. Dealer's choice.
>
> Don Kelly
>
> P.S. you are a wee bit younger than  I am- your taxing problem  at age 68
> is no worse than mine, in learning J, at 81. I do have two advantages in
> that I do have an APL background going back to the IBM 360 and IBM
> typewriters/terminals with an APL character ball and in that I am retired
> and am my own  boss (i.e. my wife gives me a lot of slack)..
>
>
>
>
>
> On 07/12/2012 3:53 PM, Graham Parkhouse wrote:
>
>> Thank you for all your responses! My thoughts are:
>>
>> 1. Give up engineering and teach J in math classes in schools. This is not
>> an opportunity open to me, I'm afraid Linda, for several reasons. I think
>> I
>> will serve everybody best by focusing on my particular problem and helping
>> my colleagues to understand the issues.
>>
>> 2. Bo, your advice is straight forward, and refusing to translate it is
>> open
>> to me. The job's been done, it's been used and it works. But there is a
>> reluctance on their part to want me to develop it further. They have only
>> *suggested* I might translate it into Python.
>>
>> 3. The cost in my time to rewrite in Python would be immense, educational,
>> taxing on a 68 year old, and could be very frustrating. I think I may
>> begin
>> without being paid just to get a glimpse of the scale of the task and to
>> weigh up Python v. J. If they really wanted it badly, hiring a good Python
>> programmer to help me, as Raul suggested, would be well worthwhile, and
>> good
>> fun.
>>
>> 4. David and Boyko touch on the conundrum, which is J thinking v. orthodox
>> (e.g. Python) thinking. My engineering colleagues are not interested in
>> this. They don't see this conundrum. They don't much like programming.
>> They
>> like being successful at engineering. Python looks friendly and J doesn't.
>> Sure, this is a superficial view, but they are not interested in
>> programming
>> languages or major differences between them. Indeed, they don't believe
>> there are major differences between any of them.
>>
>> 5. So I have a mind to do more or less what Don Kelly suggests.
>>
>>      a. Learn Python
>>
>>      b. Make myself available for Python programming. None of them are
>> professional Python programmers, so I should be able to hold my own.
>>
>>      c. Experience the difference between Python and J software from the
>> vantage point of being an effective programmer of both.
>>
>>      d. Give them the benefit of my wisdom. Show them just how easy J is
>> to
>> write. My hope would be that one or two young engineers would get the
>> idea.
>> But, as you can probably tell, I'm being cautious about how well this will
>> turn out.
>>
>> One final point. Don suggests showing different approaches in J. One of
>> the
>> boasts of Python is 'There should be one-- and preferably only one
>> --obvious
>> way to do it', and many engineers would like life to be like that, so that
>> they can quickly get on and do it.
>>   Regards
>>
>> Graham
>>
>> ------------------------------**------------------------------**
>> ----------
>> For information about J forums see 
>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>>
>>
> ------------------------------**------------------------------**----------
> For information about J forums see 
> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/forums.htm>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to