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.