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 connectionsPath: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Kaz Kylheku <643-408-1753@kylheku.com>
Newsgroups: comp.lang.c
Subject: Re: do { quit; } else { }
Date: Mon, 14 Apr 2025 23:12:20 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 93
Message-ID: <20250414155907.846@kylheku.com>
References:
<20250409142303.00004645@yahoo.com>
<87ikndqabc.fsf@nosuchdomain.example.com>
<20250410115501.000037a5@yahoo.com>
<20250410080629.532@kylheku.com>
<87a58mqt2o.fsf@nosuchdomain.example.com>
<20250413072027.219@kylheku.com>
Injection-Date: Tue, 15 Apr 2025 01:12:23 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="16520bcd085ba48f48bf86c676aa114c";
logging-data="2460642"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18mb+5uyizI14+2uViT7vhhC2QcLAk7eSM="
User-Agent: slrn/pre1.0.4-9 (Linux)
Cancel-Lock: sha1:Ni+Ir3cCqTlMkdVGgkzmlPRWPKc=
Bytes: 5196
On 2025-04-13, bart wrote:
> On 13/04/2025 15:34, Kaz Kylheku wrote:
>> On 2025-04-13, bart wrote:
>>> On 13/04/2025 03:27, Janis Papanagnou wrote:
>>>> On 12.04.2025 13:00, bart wrote:
>>>
>>>>> But I also 100% hate its syntax and various other bits and pieces. (OK,
>>>>> about 80% then.)
>>>>
>>>> (I also don't like its syntax too much. I think I'm just complaining
>>>> less than you about that. BTW, I've got the impression that all the
>>>> shortcomings of "C" are well known by most regulars here; they just
>>>> handle these facts in discussions differently than you.)
>>>
>>> The shortcomings are downplayed considerably. Especially in discussions
>>> involving me because they don't like it whenever someone states the obvious.
>>>
>>> But also, most here have to use it professionally, so have learned to
>>> work around it.
>>
>> There are lots of examples of people just liking C.
>
> C itself, or the things that C allowed you to do?
Me, I like C. I use C in side projects. I will code in C no matter what
I use at work.
C is the only acceptable non-Lisp.
> Well, given Knuth's own language was MIX (assembly for a made-up
> machine), it is not surprising he prefers C.
He wrote TeX in Pascal though. The Web system includes a Pascal to C
translator. (I don't know the details.)
>> C has spawned imitation in the form of "C like" languages, that all
>> started as grenfield projects that could have chosen any syntax
>> they wanted.
>
> Some of this is to be expected: if they started off using brace syntax,
> then their language will use braces. But some of the things they copy
> are odd, like this for-loop from JS:
>
> for(let i = 1; i <= 36; i++) {
The first time I encountered a C for loop used for non-numbers
was a watershed moment for me. I rubbed my eyes once or twice.
"Wow, wait, you can do that?"
It might have been in the source code of an IRC client I was
compiling, where it had something like this:
for (node = list; node; node = node->next)
I realized, OMG, this is a great way of defining a for loop
construct. This is why for is the way it is.
So much better than the crap languages I used before which restricted a
dummy variable into going from one number to another.
That might have been the point after which I didn't look back.
Later I learned that much of the cool stuff around control flow
and expressions in C actually came from Lisp.
- Ternary if: (if test then else).
- Expressions having values, even assignments: (setq a (setq b (setq c 0)))
- Loops working with arbitrary data types.
> Is it that hard to provide a proper for-loop where you don't have to
> spell out every single detail? Fortran managed it in the 1950s!
No, it isn't, especially if you don't need once-only evaluation of the
range points:
#define for_range (type, var, from, to) \
for (type var = from; var <= to; var++)
Anyway, languages should be programmable so you're not stuck with
the loop that is built into the parser.
If I were to pick a non-C language for systems programming today, I
would take a serious look at Thomas Mertes' Seed 7, probably.
It lets you define new statement and such.
--
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca