Liste des Groupes | Revenir à co vms |
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 <arne@vajhoej.dk> wrote:On 4/8/2025 1:27 PM, Simon Clubley wrote:>On 2025-04-08, Arne Vajhøj <arne@vajhoej.dk> 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.
Les messages affichés proviennent d'usenet.