On Monday, March 11, 2013 8:02:53 AM UTC+13, Paul wrote: > On Mar 10, 1:27 pm, dpb <n...@non.net> wrote: > > >On 3/10/2013 12:04 PM, Paul wrote: > > >> C-style comments are great! You don't have to comment everything > > >> to the right of the comment character. You can comment out a > > >> snippet of code in the middle of a line, and keep the rest of the > > >> code to the right of it. > > > > > > OTOH, you have to close the opening comment character or it keeps on > > > going..."there is no free lunch" > > > > There only no free lunch if you choose one commenting style or the > > other. C++ allows both. > > > > >> I (and I suspect others) spread complex statements and expressions > > >> over several lines, using deeper levels of indentation as cognitive > > >> cues to show which parts of the code bind together more tightly due > > >> to higher precedence. You can't comment out a snippet of code in > > >> middle of those lines. If you want to experimentally try a number > > >> of variations of the code, you have to duplicate the whole chunk of > > >> code > > > > > > Well, no, you only need duplicate the line which contains the > > > snippet you're trying to experiment is at least one alternative. > > > > If they are different statements, yes, but I'm talk specifically about > > spreading a complex statement or expression over several physical > > lines so that you can use the indentation levels. For example, if > > you're experimenting with different forms of a symbolic mathematical > > statement, the form of the right hand side might change a lot, so you > > want to keep the corresponding matlab expression in a form that is > > easily manipulated and easy to detect manual errors. You need the > > cognitive assistance of indentation levels: > > > > function resid = myfunc(llt,u) > > resid = ... > > log( ... > > 1 - ... > > ( > > 1 - exp(-exp(llt)) ... > > ) ... > > ./ exp(llt) ... > > ) ... > > - log(u) > > ; > > end % function > > > > If you use Matlab's comment character to try commenting the one line: > > > > % ./ exp(llt) ... > > > > you get an error message on that line. It would be nice to be able to > > close the comment. Using C-style commenting, it might look like: > > > > /* ./ exp(llt) ... */ > > > > Like I said, replicating the whole chunk of code just to be able to > > hack one line (while still retaining the original) creates a whole > > valley of experimental code, disrupting the continuity in reading the > > rest of the code.
I'm intrigued that you think your code is more readable than this: resid = log(1 - (1 - exp(-exp(llt))) - log(u); because I think your code is ugly and not intuitive. I had to write it on one line to follow it.
With the one-line version commenting is easy: % resid = log(1 - (1 - exp(exp(llt))) - log(u);
It just goes to show: different horses for different courses.