Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: Official list of top C annoyances
Date: Fri, 18 Sep 2026 12:58:16 -0700
Organization: A noiseless patient Spider
Lines: 57
Message-ID: <86mrtetjqf.fsf@linuxsc.com>
References: <117jqq0$2dd4g$1@dont-email.me> <117k28d$2gadn$1@dont-email.me> <117kfl3$2294f$1@dont-email.me> <117lpjb$31vr4$1@dont-email.me> <117m41r$35rim$1@dont-email.me> <117m6ca$35hat$1@dont-email.me> <117mc7o$38uh5$1@dont-email.me> <117meeo$35hat$2@dont-email.me> <117mlie$3co6q$1@dont-email.me> <117nj9s$36as3$2@paganini.bofh.team> <117osjv$4ti6$1@dont-email.me> <117r4ek$3r5qn$4@dont-email.me> <117r5ta$s9ir$3@dont-email.me> <117r9if$3r5qn$7@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Fri, 18 Sep 2026 19:58:19 +0000 (UTC)
Injection-Info: dont-email.me; logging-data="1718548"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19GWjlalP3qcpGzJ8K69CGdXmZ+xEmb0Pw="; posting-host="742ba13f59dd80260e7d5d77f8995b11"
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:w7aR9TLYb9gnCkqtTqFkLjXQ/+Q= sha1:dftqZrnC59XqN4nbVex7SgTcmwY= sha256:itPZAkGQHkJXiOcVrtuPvhSpPwAkJyXzxW8JkxlOPhE= sha1:zHkwCdA8tTV6EvHmmwfKH92s6oU= sha256:So+zPBtRveX26j2oQs2GCI9jeOExgAlrCyYRPSjyI/g=
Xref: csiph.com comp.lang.c:402251
Janis Papanagnou writes:
> On 2026-09-09 10:38, David Brown wrote:
>
>> On 09/09/2026 10:13, Janis Papanagnou wrote:
>>
>>> On 2026-09-08 13:47, bart wrote:
>>>
>>>> On 08/09/2026 01:02, Waldek Hebisch wrote:
>>>>
>>>>> [...]
>>>>
>>>> [...]
>>>>
>>>> Still, modern languages tend to have a module scheme, suggesting
>>>> the 'flexible' C approach (I'd use the term 'prehistoric') wasn't
>>>> quite enough.
>>>
>>> A necessary consequence of the growing systems and software
>>> architectures. But even some legacy languages had already
>>> modularization concepts back then! So it's not an excuse to
>>> provide only a primitive #include mechanism. But I wouldn't
>>> be so critical given the time when "C" had been designed.
>>> You should take into account C's design-principles and also
>>> when it came out and sort them in, in comparison to other
>>> language schools; compare (for example) the release dates
>>> of Pascal -> Modula (and what these two provided here).
>>
>> AFAIK, Pascal originally did not have any kind of "unit" system (its
>> module equivalent) - you used textual inclusion files. But you then
>> compiled everything as one big Pascal file rather than having
>> separate compilation. (This may have varied between Pascal
>> implementations.)
>
> Yes, exactly. - Original Pascal didn't have anything, then came "C"
> timely - providing something that Pascal didn't have! - and Wirth's
> next language Modula then had a concept.
The module ideas in Modula came from the earlier programming
language Mesa, which was developed at Xerox PARC.
To give credit where it is due, it is almost certainly true that
some of the constructs in Mesa were influenced by or inspired by
features in Pascal. But modules began in Mesa (and perhaps also
some earlier work done by Butler Lampson but I haven't read that
material).
Mesa was developed in roughly the same time frame as early C.
There was a Mesa compiler for one architecture, with Mesa code
running on that architecture, in 1974. Later that same year
work was started on a Mesa compiler for another architecture,
running I believe early the next year. As it turns out I was
writing code in Mesa a few years before I started writing code
in C. It's nice to have modules as first class constructs in
the language; in practice though I find the C pattern of .h/.c
relationships to be workable, in place of modules, for the
software development needs of typical software projects.