[Info-vax] VAX Macro to C conversion

Arne Vajhøj arne at vajhoej.dk
Thu Jul 11 17:26:47 EDT 2019


On 7/11/2019 10:21 AM, Bill Gunshannon wrote:
> On 7/10/19 9:00 PM, Bill Gunshannon wrote:
>> On 7/10/19 8:49 PM, Arne Vajhøj wrote:
>>> On 7/10/2019 8:42 PM, Bill Gunshannon wrote:
>>>> On 7/10/19 2:20 PM, Arne Vajhøj wrote:
>>>>> But while Fortran and Pascal fixed the problem, then C
>>>>> did not.
>>>>
>>>> Actually, it did.  A long time ago.
>>>> 1983 PDP-11 Software Source Book -- Page 1395
>>>> 1986 VAX Software Source Book -- Page 1155
>>>>
>>>> The Safe C Compiler.
>>>>  From Catalytix Corp.
>>>>
>>>> OSes supported: RSTS, RSX, RT-11, ULTRIX-11, UNIX, ULTRIX-32, VMS.
>>>
>>> Did it have a string type?
>>>
>>
>> I seriously doubt it as it then wouldn't have been C.  :-)

But that was what we were discussing for Fortran and Pascal.

>> "The language understood by the Safe C Compiler is identical
>>   to that understood by the standard C compilers."
>>
>> But, it had a lot of the checks people here keep arguing that C
>> needs.  Array indexing, Stray Pointers, mismatched formal and
>> actual parameters, Misuse of string functions, etc.
>>
>> And the industry rejected it completely.  None of its features
>> ever showed up in C Compilers that followed.
>>
>> So, tell me, why did none of these things find their way into
>> the VMS C Compilers?
> 
> You know, makes one wonder.  Why did ANSI change so much trivial
> stuff when the modified K&R to create ANSI-C and not fix any of
> these supposed shortcomings?

If they had then C would have been much better for most applications
but worse for operating system kernels.

I have no idea what the ANSI/ISO people were thinking back in the
late 1980's.

But it seems quite plausible that the logic was "C does what
it does - those that want a more safe language should pick
another language".

> Why did VMS versions of C not fix any of this?  There is nothing
> in the language that prevents range checking or array boundaries.

They needed to be standard compliant.

I don't think it is possible/practical to make all required array,
pointer and array-pointer mix functionality in the standard
work with array range check.

Arne





More information about the Info-vax mailing list