I don't think Perl is necessarily write-only, but it is easy to produce
write-only code in it.

"Although I don't have a ready solution, it would be good to at least
determine the parameters of the problem."

Does anyone have an example? When I get a bit more time, I could look into
it.


-- 
Randolph M. Fritz, Lighting Design and Simulation
+1 206 659-8617 || rmfri...@gmail.com

On Tue, Mar 22, 2016 at 4:04 PM, Gregory J. Ward <gregoryjw...@gmail.com>
wrote:

> > From: Georg Mischler <schor...@schorsch.com>
> > Date: March 22, 2016 12:30:46 PM PDT
> > ...
> >> Thinking on it some more, the main issue I have with Python is
> >> probably the object-oriented structure, which moves it even further
> >> from a command-line interpreter.  For me, the main benefit of using a
> >> scripting language is that it is close to the command-line, which is
> >> where Radiance (mostly) lives.  If you introduce too much structure,
> >> you're getting back to something resembling a C program, and you may
> >> as well just write it that way, instead.
> >
> > There are (at least) two different classes of "scripts" in Radiance.
> > Some are indeed little more than a listing of a few commands, and
> > in a few cases it looks like they were one-off solutions to a very
> > specific problem. Most people will never use those, or they might
> > create their own versions. It may or may not be worth to convert
> > them, and in some cases the Python version may actually become a
> > literal translation without any added structure.
>
> OK, I suppose I would have to see an example of that, preferably something
> that wasn't organized around a class.  One of the things I have always
> disliked about C++ is how you have to dig around in the headers to figure
> out what the heck the code is doing.  Python at least keeps it together,
> but it's still a mess in the sense that the code layout has little to do
> with control flow.  It's an extra hurdle to understanding I could do
> without.
>
> There's still the issue of all the supporting libraries, their many
> classes and associated methods.
>
> > The other class are programs like falsecolor or genBSDF, which are
> > far beyond that "script" stage. Those are "real" programs in the sense
> > that they solve tasks that most people will be confronted with
> > regularly. This makes them unlikely to change very significantly over
> > time, other than to add features. In those cases, the effort is
> > clearly justified to design an object oriented structure and add all
> > the bells and whistles most users expect from a complete tool.
>
> Never mind that I just rewrote genBSDF almost from scratch last year when
> I introduced rfluxmtx and wrapBSDF with color support, which simplified the
> code substantially (and required numerous changes in structure).  I was
> hoping not to have to do that again, of course....
>
> > You seem to think that object orientation will necessarily make a program
> > inflexible. Well, for Java and C++, this is indeed usually the case.
> > But it doesn't have to be like that. A well crafted object oriented
> > design will make adding features easier, not harder. And Python is one
> > of the rare languages, where changing the code is actually fun, and
> > not something to be scared of.
> >
> > This ease of maintenance is also one of the reasons why those things
> > should rather *not* be converted to C. There's simply no need to do that,
> > as long as we can delegate the number crunching to other tools.
>
> Certain things are definitely easier in a scripting language, or they
> wouldn't be useful.  Being able to manipulate strings and build command
> lines are the most important facilities.  Having some ability to do math
> and store arrays are also valuable features.  Perl and Python are both
> superior to the C-shell in that respect, so I agree with you about the
> importance of having a decent language for more sophisticated tools.
> However, I don't see how Python is less work than Perl given the examples
> I've seen.  Why not Ruby?  Why not any of the other myriad languages out
> there?  You have your favorite; I have none.  I simply went with something
> that was familiar and supported, and don't feel like changing canoes
> midstream as the expression goes.
>
> >> Perl looks a lot like traditional interpreter shells with the added
> >> benefit of more useful built-in commands and expression evaluation.
> >> You can open a Perl script and read through it like you're reading a
> >> sequence of commands.  User-defined functions have a bare-bones call
> >> structure and don't have to be defined before they're used, so they
> >> don't interrupt the flow as you read through the code.
> >
> > If you look at Python, you'll find that all that is (or can be) the
> > case there as well, just without the uglyness.
>
> As I said, I would have to see a simple example.  Your rlux.py ended up
> being a bit more complex than its C-shell progenitor...  As for ugliness, I
> don't really see the differences you do.  I have employed languages like
> TCL, which I do consider write-only (to use Randoph's term), but Perl is OK
> for me.
>
> >> Scripting languages need to be easy to write and easy to read to be
> >> useful in my opinion.
> >
> > But you're still full of praise for Perl...?
>
> I do find Perl easy to read compared to Python, mostly because I don't
> have to jump around the class methods or read up on the add-on libraries.
> There are plenty of functions in Perl, no doubt about that, but they aren't
> such a growing concern.
>
> >> Also, relying heavily on add-on libraries comes at a cost, which is
> >> expanded vocabulary one must learn.
> >
> > Libraries coming included with the language are not "add-on".
> > We won't get any bonus points for reinventing the wheel, or for
> > dragging stuff around instead of wheeling it.
>
> I'm not saying we need to reinvent the wheel every time, but we could do
> without so many wheels.  Perhaps it's just a matter of restraint and paring
> add-on libraries to a minimum.  I don't know.
>
> >> We chain up to 4 commands in genBSDF, which I guess will translate to
> >> call_four() in your library?
> >
> > We're going to have a call_many() then, which will accept and chain an
> > arbitrary number of commands. Win_popen() already does that.
>
> OK, I guess that would work.
>
> >>>> We'd still have to switch between data format (-f*)
> >>>> command options on the two platforms, or suffer significant
> >>>> performance penalties on Unix.
> >>> Sorry, not sure what you're talking about there.
> >> Well, we may need to devise some tests to be sure this is still a
> >> problem, but in the past, Windows would deliver binary files in
> >> 128-byte chunks, meaning that the last chunk might have garbage at the
> >> end of it that was not actually produced by the program that sent it.
> >
> > That sounds like a severely broken implementation. I can't possibly
> > imagine this still to be the case. If there's a test case, I'll check
> > it out.
>
> I don't own a Windows box, so it's difficult for me to produce test
> cases.  I only hear complaints from people about certain commands not
> behaving with binary data on Windows, even when it doesn't go into an
> intermediate file.  In other words, piping the binary output of one command
> into another still screws up.  Does Windows create a temporary file when it
> does this?  Maybe if it's on a FAT filesystem (as Randolph mentioned), this
> is the source of the problem.  It would be nice to track this down.
> Although I don't have a ready solution, it would be good to at least
> determine the parameters of the problem.  (Radiance's binary files are
> immune: octrees, HDR pictures, triangle meshes, even binary matrix data --
> it's just the raw IEEE floats & doubles that usually mess up.)
>
> Cheers,
> -Greg
> _______________________________________________
> Radiance-dev mailing list
> Radiance-dev@radiance-online.org
> http://www.radiance-online.org/mailman/listinfo/radiance-dev
>
_______________________________________________
Radiance-dev mailing list
Radiance-dev@radiance-online.org
http://www.radiance-online.org/mailman/listinfo/radiance-dev

Reply via email to