home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.os.vms      DEC's VAX* line of computers & VMS.      264,096 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 262,620 of 264,096   
   =?UTF-8?Q?Arne_Vajh=C3=B8j?= to Dave Froble   
   Re: Clair Grant on VMS code base   
   15 Apr 25 19:03:20   
   
   From: arne@vajhoej.dk   
      
   On 4/14/2025 9:34 AM, Dave Froble wrote:   
   > On 4/14/2025 8:45 AM, Simon Clubley wrote:   
   >> On 2025-04-11, Arne Vajhøj  wrote:   
   >>> On 4/8/2025 1:27 PM, Simon Clubley wrote:   
   >>>> On 2025-04-08, Arne Vajhøj  wrote:   
   >>>>> On 4/8/2025 8:20 AM, Simon Clubley wrote:   
   >>>>>> It's a lot more complicated than that.   
   >>>>>>   
   >>>>>> For example, take a LL(1) RD parser. Even ignoring the processing   
   >>>>>> of the results from the parser, how much code (and how much effort)   
   >>>>>> do you think it would take to implement it in Macro-32 compared to   
   >>>>>> C ?   
   >>>>>   
   >>>>> Still not obvious to me that it would not follow normal LOC/FP   
   >>>>> ratios.   
   >>>>   
   >>>> Try implementing one, especially with a reasonably sized grammar, and   
   >>>> you will very rapidly understand that it is not as simple as you seem   
   >>>> to think it is. :-)   
   >>>   
   >>> I have not made any claim about it being simple.   
   >>>   
   >>> I have made a claim that the ratio for LOC/FP for Macro-32   
   >>> and LOC/FP for C for such a problem would not be significantly   
   >>> different from other application types.   
   >>>   
   >>   
   >> That claim is clearly incorrect.   
      
   > I'd argue that such comparisons can be misleading.  As a simple example,   
   > specifying some arguments and invoking some routine.  In either case,   
   > the arguments must be specified, then invoking the routine.  Is each   
   > PUSH of an argument in assembler a separate instruction, or, just   
   > specification of an argument?  One must still specify the arguments in   
   > either case.   
   >   
   > An example of a style I favor:   
   >   
   >          Stat% = SYS$QIOW(       ,          
   Â Â Â Â Â Â Â Â Â Â Â Â Â Â  !  Event flag &   
   >                                  ListenCh% By   
   Value,     !  VMS channel &   
   >                                  IO$_SETCHAR   
   By Value,   !  Operation &   
   >                                    
   IOSB::Stat%,            !  I/O status block &   
   >                                    
   ,                       !  AST routine &   
   >                                    
   ,                       !  AST parameter &   
   >                                    
   ListenOpt::Protocol%,   !  P1 &   
   >                                    
   ,                       !  P2 &   
   >                                    
   ServerItemLst::Len%,    !  P3 - local socket na^   
   >                                  BackLog% By   
   Value,      !  P4 - connection back^   
   >                                    
   SockOptItemList::Len%,  !  P5 - socket options &   
   >                                    
   )                       !  P6   
   >   
   > Ok, how many lines of code?   
      
   The question about line counting has already been raised   
   by Lawrence.   
      
   On 4/11/2025 3:05 PM, Arne Vajhøj wrote:   
    > On 4/9/2025 5:10 PM, Lawrence D'Oliveiro wrote:   
    >> On Wed, 9 Apr 2025 16:01:02 -0400, John Reagan wrote:   
    >>> I just looked at the largest MAR file in DCL.  It has 10,000 lines but   
    >>> many are comments and many are macro definitions.  Not actual VAX   
    >>> instructions.   
    >>   
    >> I would count macro definition bodies in full, and each macro   
    >> expansion as   
    >> one line. After all, macros are code written once and used multiple   
    >> times,   
    >> just like function calls as far as source code is concerned.   
    >   
    > That definitely makes sense.   
    >   
    > But there are still multiple possible counts:   
    > - lines in files   
    > - non-comment and non-blank lines in files   
    > - non-comment and non-blank and non-continued lines in files   
      
    > ;  Macro-32 demo   
    >   
    >           .title  loc   
    >          $SSDEF   
    >          .psect  $PDATA quad,pic,con,lcl,shr,noexe,nowrt   
    > fmt:    .ascid  "!SL !SL !SL"   
    >          .psect  $LOCAL quad,pic,con,lcl,noshr,noexe,wrt   
    > buf:    .ascid  "                    "   
    >          .psect  $CODE quad,pic,con,lcl,shr,exe,nowrt   
    >          .entry  loc,^m<>   
    >          pushl   #20   
    >          pushl   #22   
    >          pushl   #24   
    >          pushab  buf   
    >          pushl   #0   
    >          pushab  fmt   
    >          calls   #6, -   
    >                  G^LIB$SYS_FAO   
    >          pushab  buf   
    >          calls   #1, -   
    >                  G^LIB$PUT_OUTPUT   
    >          movl    #SS$_NORMAL, r0   
    >          ret   
    >          .end    loc   
      
      
   But then maybe you did not like my Macro-32.   
      
   :-)   
      
   There is no question that it is most accurate to only   
   count the continued line as one in your example.   
      
   But I suspect that a lot of LOC counters just count   
   non-blank and non-comment.   
      
   Anything else requires language knowledge.   
      
   And while it for Fortran, Basic, Macro-32 may be relative   
   simple, then for other languages it can become more tricky.   
      
   Let us take 4 times Pascal:   
      
   if a = 1 then b := 2 else b := 3;   
      
   if a = 1 then   
       b := 2   
   else   
       b := 3;   
      
   if a = 1 then begin   
       b := 2;   
   end else begin   
       b := 3;   
   end;   
      
   if a = 1 then   
   begin   
       b := 2;   
   end   
   else   
   begin   
       b := 3;   
   end;   
      
   How many lines? I would say that the most correct is 3 in   
   all 4 cases. But coding the line counter to return that   
   would require it to have Pascal knowledge.   
      
   And what about the fluent style that are so modern?   
      
   o = f.create();   
   o.add(1);   
   o.add(2);   
   o.add(3);   
      
   o = f.create()   
         .add(1)   
         .add(2)   
         .add(3);   
      
   o = f.create().add(1).add(2).add(3);   
      
   1 1 1 or 4 1 1 or 4 4 1 or 4 4 4??   
      
   So I think counters go for the simple approach and assume   
   that for large code bases with many developers then total   
   converge towards an "average" style.   
      
   Arne   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca