Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vtj2tu$1cfo8$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vtj2tu$1cfo8$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Dave Froble <davef@tsoft-inc.com>
Newsgroups: comp.os.vms
Subject: Re: Clair Grant on VMS code base
Date: Mon, 14 Apr 2025 09:34:25 -0400
Organization: A noiseless patient Spider
Lines: 96
Message-ID: <vtj2tu$1cfo8$1@dont-email.me>
References: <vsh5m5$3is6e$1@dont-email.me> <vsmj7h$19qc0$1@dont-email.me>
 <vsmk9b$18rgf$1@dont-email.me> <vsp6ol$eli$1@dont-email.me>
 <vsv6jf$28vt6$1@dont-email.me> <vt34b1$26vpf$1@dont-email.me>
 <vt34qq$26k93$1@dont-email.me> <vt3m9a$2n50b$1@dont-email.me>
 <vtbqjj$29rog$2@dont-email.me> <vtj025$18n4d$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 14 Apr 2025 15:34:54 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ae21160bc05f164a4c225e63c8ea233e";
	logging-data="1457928"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+0laQsMNgYVlonMYWKF5OfQchhTRqbYjY="
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
Cancel-Lock: sha1:HRr6EFj6EJXTO7AYGz9cVfVB2/E=
In-Reply-To: <vtj025$18n4d$1@dont-email.me>

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.
>
> The amount of Macro-32 code required for something higher-level such
> as a RD parser that can be concisely expressed in C compared to assembly
> language is clearly greater than, say a device driver, where the device
> access and programming sequence is the same regardless of whether it
> is done in C or assembly language.
>
> You cannot even optimise the register access sequence in a C device driver
> to reduce the amount of code, (and you even have to use volatile variables
> so the compiler doesn't do it for you behind your back.)
>
>>>> Effort is a different issue. If someone said:
>>>>
>>>> x1.6 LOC
>>>> x16 hours for initial write of code
>>>> x160 hours for maintenance of code
>>>>
>>>> then I would consider it likely.
>>>>
>>>> It has been hinted a few time that the DCL code is not easy to
>>>> understand and modify.
>>>>
>>>
>>> As I mentioned above, this is no longer about DCL. I picked the above
>>> standalone example, a LL(1) RD parser, because it's a really good example
>>> of the different scale of effort involved in writing it in Macro-32
>>> instead of in C.
>>
>> I have not made any claim about effort either.
>>
>> Are you sure that you have understood the topic??
>>
>
> Yes, but it's not clear if you have Arne.
>
> Simon.
>

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?

:-)

-- 
David Froble                       Tel: 724-529-0450
Dave Froble Enterprises, Inc.      E-Mail: davef@tsoft-inc.com
DFE Ultralights, Inc.
170 Grimplin Road
Vanderbilt, PA  15486