On 1/19/2024 10:21 AM, Taco Hoekwater wrote:


On 19 Jan 2024, at 09:47, Shiv Shankar Dayal <shivshankar.da...@gmail.com> 
wrote:

Dear Hans, Taco, Mojca and Wolfgang,

I see #define macros and gotos in LuaMetaTex code which is not good coding 
practice and not recommended. These are my first observations. I have started 
learning plain TeX so that I can understand the code better and send more 
suggestions to the list.

Dijkstra’s “GOTO is harmful" article was not nearly as absolute as modern 
programmers’ mindset.

Using more “modern" branching using "if" would not make the code faster, and it 
would not automatically make it easier to understand either. A thing that is often overlooked 
these days is that goto statements create a documentation label as well as doing actual 
program counter update work. The “else” branch of an if-else statement in C does not have that 
feature, and IMO it makes reading nested if statements more painful than code with a few 
well-placed gotos.

Another issue is that when gotos are used to jump out of a switch statement, 
that code can usually only be refactored by introducing new helper functions. 
That will make the code base more cumbersome as well as larger (and therefore 
slower).

Amen.

In cases where that is feasible, switching to branchless code would indeed help 
with speed. But not with readability, at all.

Maybe but indeed worse readability. Actually I found that compilers do a pretty good job on inlining so there is little to gain. Even link time optimization doesn't bring more than a few percent.

In a similar fashiom we dont'use libs that have assembler optimizing bit dependent on architecture. No gain in practice.

On the many #define’s I agree it would be nice if as many as possible of the 
constants would be changed to const variables, as that would help with 
debugging quite a bit. But in the end, all of it is Hans’ call.
Most of these defines are already enums and those left over are kind of harmless (and stand out nicely in the code editor which is also a reason for doing some thing in some way.) But occasionally i change some more.

When luametatex is kind of stable, I'll make the decission to change some of these left overs but that also impacts compatibility (no big deal for context for which is it meant anyway).

btw, as long as gaining a few milliseconds is offset by bad user macros, styling, etc we can better educate usage instead of staring at code.

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

_______________________________________________
dev-context mailing list -- dev-context@ntg.nl
To unsubscribe send an email to dev-context-le...@ntg.nl

Reply via email to