is that special code? because its not supposed to work ie: 'see?' # 1 2 3 4 |domain error
The above (] +/ % #) is even a special parsing rule? At any rate, the conventions I use help the one who will read my code the most, but I'd still recommend to anyone to avoid long hooks. ----- Original Message ----- From: Raul Miller <[email protected]> To: Programming forum <[email protected]> Cc: Sent: Monday, May 19, 2014 11:38:24 PM Subject: Re: [Jprogramming] Understandable J That's an interesting line of thought. Note that we can take a fork and ensure that we always use its monadic definition by prefixing it with the verb ] Here's a mean example: mean=: ] +/ % # mean 2 3 5 7 4.25 'see?' mean 2 3 5 7 4.25 Now obviously there isn't a lot of need for this kind of thing - we've gone for years (decades?) without anyone complaining about its absence. But it's still kind of neat. Thanks, -- Raul On Mon, May 19, 2014 at 11:19 PM, 'Pascal Jasmin' via Programming < [email protected]> wrote: > Here are some ways to improve readability for me: > > lets take, > > quicksort=: (($:@(<#[),(=#[),$:@(>#[))({~ ?@#))^:(1<#) > > the first step is spacing out the train: > > quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) > > the next step is avoiding the hook that takes a while to find due to all > the parens: > > quicksort=: (] ($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) > > I find the above superhelpful because the left ] tells me right away that > it is a fork. > and then automatically all of the references to [ in the pivot verb are > actually ones to y argument, and I know that the whole verb is monadic. > > optional, but I think still helpful, is to add whitespace to long parens, > and it doesn't hurt to get rid of right hook: > > quicksort=: (] ( $:@(<#[) , (=#[) , $:@(>#[) ) (] {~ ?@#)) ^: (1<#) > > > > > > ----- Original Message ----- > From: Don Kelly <[email protected]> > To: [email protected] > Cc: > Sent: Monday, May 19, 2014 9:55:33 PM > Subject: Re: [Jprogramming] Understandable J > > Agreed but both need attention- often the most refined program may be > the hardest to read. > > Don > On 17/05/2014 9:31 PM, 'Bo Jacoby' via Programming wrote: > > Improve the program rather than the documentation. > > > > Den 4:49 søndag den 18. maj 2014 skrev Don Kelly <[email protected]>: > > > > > >> > >> I find that putting code with lots of explanatory NB.'s and maybe a > >> how-to paragraph as a noun in a script is essential. This also works > >> for little code snippets than may prove useful in the future (and > >> sometimes with variations listed). Examples also help. > >> This is not only an aid to me, but to others who may use the code. This > >> came from past APL experience where I would look at something I wrote > >> and wondered what I did. Starting from scratch is nice but if the hard > >> work has been done, why do it again > >> except to improve on the approach? > >> There are 2 ways: > >> 1)intersperse comments within multiline verbs to help interpretation of > >> the line > >> 2)provide a noun such as "howN' > >> and example of this is the following definition from an Essay on Newton > >> Raphson > >> where the following is given > >> > >> N=: 1 : '- u % u d. 1' (which could be given a better name) > >> > >> this could be followed by a series of NB.'s in the script indicating > the usage > >> NB. (_2+*:)N ^:c]xo solves x^2 =2 using c iterations starting form a > guess xo > >> or with more Nb. for more detail. > >> > >> Don Kelly > >> > >> > >> > >> > >> > >> On 15/05/2014 11:36 PM, robert therriault wrote: > >>> Thanks Raul, > >>> > >>> I am happy with some of the progress that I am making in my projects > (and occasionally programming as well), but I like the poetry of J and in > that way part of the challenge is placing the context through the examples. > Without that context a poem is just pretty words on a page and a tacit > expression without examples may not even reveal its valence. > >>> > >>> I think that there are opportunities in combining good test driven > development with the rapid prototyping abilities of J -- but first I am > playing with J Labs as a medium of expression, education, art etc. > >>> > >>> Cheers, bob > >>> > >>> ps. I appreciate the support for my work. The fact that I am a > terrible programmer does not keep me from making terrible programs that > explore neat ideas. Life's too short to let a lack of talent hold you back > :-) > >>> > >>> On May 15, 2014, at 11:10 PM, Raul Miller <[email protected]> > wrote: > >>> > >>>> I would not knock "starting from scratch" as a bad thing. Arthur > Whitney > >>>> has been known to do that, for example. > >>>> > >>>> I think it matters more what you are accomplishing and your ability > to make > >>>> that useful for other people. > >>>> > >>>> Thanks, > >>>> > >>>> -- > >>>> Raul > >>>> > >>>> > >>>> On Fri, May 16, 2014 at 2:07 AM, robert therriault < > [email protected]>wrote: > >>>> > >>>>> I am a terrible programmer, but I have found that including comments > that > >>>>> have examples of what the entity should do, are usually enough for > me to > >>>>> figure out what is going on. > >>>>> > >>>>> Without that ... I usually start from scratch, as that is faster and > less > >>>>> frustrating. > >>>>> > >>>>> I really am terrible at programming. > >>>>> > >>>>> Cheers, bob > >>>>> > >>>>> > >>>>> On May 15, 2014, at 10:52 PM, 'Bo Jacoby' via Programming < > >>>>> [email protected]> wrote: > >>>>> > >>>>>> "how does one write understandable J?" One does not write > understandable > >>>>> J! One writes as compactly as possible, and if it needs to be > understood > >>>>> it's parts are investigated piece by piece. Understandability is not > a > >>>>> property of text, but rather a property of relationship between text > and > >>>>> reader. / Bo. > >>>>>> Den 3:51 fredag den 16. maj 2014 skrev Don Guinn < > [email protected]>: > >>>>>> > >>>>>> What is easy and obvious depends so much on one's background. > Several > >>>>> years > >>>>>>> ago we tried to teach a woman, at the time in her 80's, how to use > a > >>>>>>> Windows computer. Total failure. The real problem was that she > could > >>>>> see no > >>>>>>> use in or reason to use a computer. She had no interest in > learning it. > >>>>>>> > >>>>>>> Anyone who thinks that today's computer technology is intuitive, > obvious > >>>>>>> and easy should go to an old folk's home and try to teach them to > use a > >>>>>>> smart phone. But for a four-year-old. Piece of cake. > >>>>>>> > >>>>>>> > >>>>>>> On Thu, May 15, 2014 at 6:10 PM, Raul Miller < > [email protected]> > >>>>> wrote: > >>>>>>>> I am convinced that most code is not understandable to most > people, > >>>>>>>> regardless of the language it is written in. When I look at how > the > >>>>>>>> computer industry has progressed, I see this more and more. People > >>>>> write > >>>>>>>> huge amounts of code, don't document it very well, then other > people > >>>>> use > >>>>>>>> arbitrary bits of it and things sort of just freeze at that point. > >>>>>>>> > >>>>>>>> Personally, also, when I read code in any language, I do not feel > I > >>>>> really > >>>>>>>> understand it until I see what it does to representative data. > >>>>>>>> > >>>>>>>> So clear descriptions, simple data, and good labels are where I > would > >>>>> focus > >>>>>>>> most of my efforts in making code readable. And I would also > expect > >>>>> that > >>>>>>>> most of my code is going to be unread by most people (and I'll get > >>>>> dinged > >>>>>>>> for utterly random stuff by people who do read it). > >>>>>>>> > >>>>>>>> I think the point of readability is: you are going to need to be > able > >>>>> to > >>>>>>>> fix it, yourself, when it breaks, so you need to make it readable > for > >>>>>>>> yourself. And for that purpose, coming back and trying to read it > a > >>>>> month > >>>>>>>> or so after you've written it can be a good exercise. > >>>>>>>> > >>>>>>>> Also, I've found that documenting code is a great way of making > code > >>>>>>>> simpler. It's quite often the case that it's easier to change the > code > >>>>> to > >>>>>>>> be easy to document than it is to document some coding quirks that > >>>>>>>> originally seemed to be a good idea. So if you want readable code, > >>>>> another > >>>>>>>> good thing to do is have a technical writer (or at least someone > >>>>> reasonably > >>>>>>>> literate) work with the programmer to document it for some > audience. > >>>>>>>> > >>>>>>>> Of course, the most important thing is making sure that it works. > >>>>>>>> > >>>>>>>> Thanks, > >>>>>>>> > >>>>>>>> -- > >>>>>>>> Raul > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> On Thu, May 15, 2014 at 5:23 PM, Kip Murray < > [email protected]> > >>>>>>>> wrote: > >>>>>>>> > >>>>>>>>> How does one write understandable J? I offer my newt adverb > below > >>>>> which > >>>>>>>>> uses spaces to promote understandability. > >>>>>>>>> > >>>>>>>>> Another technique might be Linda's "bottom up" style of first > showing > >>>>>>>>> pieces then putting the pieces together. What are your > techniques? > >>>>>>>> Please > >>>>>>>>> illustrate. > >>>>>>>>> > >>>>>>>>> We would like at least to understand our own code when we come > back to > >>>>>>>> it! > >>>>>>>>> NB. Newton's method > >>>>>>>>> > >>>>>>>>> newt =: 1 : 0 > >>>>>>>>> t =. y > >>>>>>>>> h =. 1 % 512 > >>>>>>>>> whilst. t ~: s do. > >>>>>>>>> s =. t > >>>>>>>>> t =. s - +: h * (u s) % (u s + h) - u s - h > >>>>>>>>> h =. h % 2 > >>>>>>>>> end. > >>>>>>>>> t > >>>>>>>>> ) > >>>>>>>>> (2 - *:) newt 2 NB. Find root of 2 - *: near 2 > >>>>>>>>> 1.41421 > >>>>>>>>> (2 - *:) newt _2 NB. Find a root near _2 > >>>>>>>>> _1.41421 > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> Sent from Gmail Mobile > >>>>>>>>> > ---------------------------------------------------------------------- > >>>>>>>>> For information about J forums see > >>>>> http://www.jsoftware.com/forums.htm > > >>>>>>>> > ---------------------------------------------------------------------- > >>>>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>>>>> > >>>>>>> > ---------------------------------------------------------------------- > >>>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > ---------------------------------------------------------------------- > >>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>> > ---------------------------------------------------------------------- > >>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>> > >>>> ---------------------------------------------------------------------- > >>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >>> > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > >> > >> > >> > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
