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 <v3kra8$3vgef$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v3kra8$3vgef$1@dont-email.me>

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

Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: David Brown <david.brown@hesbynett.no>
Newsgroups: comp.lang.c
Subject: Re: C23 thoughts and opinions
Date: Mon, 3 Jun 2024 18:34:16 +0200
Organization: A noiseless patient Spider
Lines: 174
Message-ID: <v3kra8$3vgef$1@dont-email.me>
References: <v2l828$18v7f$1@dont-email.me>
 <v2o57g$1t5p4$1@raubtier-asyl.eternal-september.org>
 <7d0e8f25-a8ba-4995-9b90-ff35f85d423f@gmail.com>
 <v2p91e$26lpk$1@raubtier-asyl.eternal-september.org>
 <beffc569-3606-b627-ded9-93ce8478f2dd@please.ty>
 <v2qfi0$2de9j$1@raubtier-asyl.eternal-september.org>
 <v2unfe$3alds$1@dont-email.me>
 <v2v637$3cunk$1@raubtier-asyl.eternal-september.org>
 <v3dmq6$2edto$1@dont-email.me> <hOu6O.6223$xPJ1.1866@fx09.iad>
 <20240602110213.00003b25@yahoo.com> <v3hn2j$3bdjn$1@dont-email.me>
 <20240602162914.0000648c@yahoo.com> <v3ii22$3g9ch$1@dont-email.me>
 <20240603120043.00003511@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 03 Jun 2024 18:34:17 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="9ed1b8381cdac1c9a5b585b8d6eebe0a";
	logging-data="4178383"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/IYKlfDU3m6BBciCEOnQ2LzEWEatKkJ7M="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.11.0
Cancel-Lock: sha1:ze7mfB82KposDoNc6wMaA1FY/9A=
Content-Language: en-GB
In-Reply-To: <20240603120043.00003511@yahoo.com>
Bytes: 9660

On 03/06/2024 11:00, Michael S wrote:
> On Sun, 2 Jun 2024 21:44:01 +0200
> David Brown <david.brown@hesbynett.no> wrote:
> 
>> On 02/06/2024 15:29, Michael S wrote:
>>> On Sun, 2 Jun 2024 14:03:30 +0200
>>> David Brown <david.brown@hesbynett.no> wrote:
>>>    
>>
>> There is a lot of networking that is not TCP/IP.
>>
>> High-speed network interfaces are used for two purposes - to get high
>> throughput, or to get low latencies.  Throughput is not as sensitive
>> to timing and can tolerate some variation as long as the traffic is
>> independent, but latency is a different matter.
>>
> 
> I think, nearly all work in high-end NIC is concentrated on throughput.
> For low latency, the best you can do with high end NIC is to disable
> all high-end features and to hope that in disabled state they do not
> hurt you too badly.
> It would be probably better to use specialized "dumb" NIC. I don't know
> if such things exist, but considering that high-frequency trading is
> still legal (IMHO, it shouldn't be) I would guess that they do.

I think Scott can answer the high-end NIC questions a lot better than I 
could.

> 
>>> Hard real time is about closed loops, most often closed control
>>> loops, but not only those.
>>>    
>>>>   
>>>>> Of course, nowadays most of these things are no longer done on
>>>>> general-purpose CPUs or even MCUs.
>>>>>       
>>>>
>>>> I think you have got that backwards.
>>>>
>>>> Most engine control /is/ done with general purpose
>>>> microcontrollers, or at least specific variants of them.  They
>>>> will use ARM Cortex-R or Cortex-M cores rather than Cortex-A cores
>>>> (i.e., the "real-time" cores or "microcontroller" cores rather
>>>> than the "application" cores you see in telephones, Macs, and ARM
>>>> servers), but they are standard cores. Another common choice is
>>>> the PowerPC cores used in NXP's engine controllers.
>>>>
>>>> It used to be the case that engine control and other critical hard
>>>> real-time work was done with DSPs or FPGAs, but those days are long
>>>> past.
>>>>   
>>>
>>> Are you sure?
>>
>> Pretty sure, yes.
>>
>>> It's much simpler and far more reliable to do such task with $5 PLD
>>> (which today means FPGA that boots from internal flash, rather than
>>> old day's PLD) than with MCU, regardless of price of MCU.
>>
>> No, it is not simpler or more reliable.  Programmable logic is rarely
>> used for engine or motor control.  You use microcontrollers with
>> appropriate peripherals, such as sophisticated PWM units and encoder
>> interfaces, and advanced timers.
>>
> 
> I was not talking about electric motors.

Petrol and diesel engines have far less demanding requirements for the 
timing of their control systems.  The fastest control loops you need to 
control them are a fraction of the speed of those used for high-end 
electric motor control, and the corresponding acceptable jitter levels 
are much less fussy.  And they are invariably controlled by 
microcontrollers, and have been for decades.  (The microcontrollers you 
use typically have some specialised timing peripherals.)

However, I would not be surprised to see programmable logic in the 
controllers for jet engines, if that is what you are talking about.  The 
markets there are too small, and the control details too different 
between different models, for there to be microcontrollers with 
jet-engine peripherals.  But regardless, it is all still hierarchical in 
the same way, with a RTOS and real-time software tasks sitting above the 
dedicated hardware and below the high-level control software.

>>>
>>> Well, Linus is not on his team, but if he was, he would say the same
>>> thing. But probably at much higher rate than weekly.
>>>    
>>
>> Yes, but Linux Torvalds knows shit about C++.  He knows a lot about
>> C, and many other things.
>>
>> He also - not unreasonably - believes that if C++ was used in the
>> Linux kernel, lots of others who know nothing about using C++ in OS's
>> and low-level work would make a complete mess of things.  You don't
>> want someone to randomly add std::vector<> or the like into kernel
>> code.  You don't want people who take delight in smart-arse coding,
>> such as some regulars in c.l.c++, anywhere near the kernel.
>>
> 
> Or may be he understand that [for kernel] proclaimed advantages of C++
> do not matter or matter too little. And disadvantage of higher
> difficulty to see quickly what's going on, is real.
> 
> It is interesting to mention that experienced 46 y.o. Dave Cutler and
> young student Linus Torvalds independently came to the same conclusion
> w.r.t. to kernel language choice.

You /do/ understand that these decisions were made some 30 years ago? 
The languages, developers, compilers, targets, and many other things 
have changed in that time.

> That despite Cutler's employer being
> very C++-oriented at that moment and despite most of the decisions
> taken during the peak years of OO hype.
> Unlike Torvalds, Cutler was not in a position to fully disable
> development of 3-rd party kernel modules in C++, but he did his best to
> discourage this practice.
> 
>> But other OS's are not the Linux kernel - it has particularly unique
>> challenges.  If you have an appropriate team, C++ is vastly better
>> for writing RTOS kernels than C.
>>
> 
> I find your statement unproven.
> How many surviving and proliferating RTOS kernels are written in
> each language?
> 

Oh, there's little doubt that most publicly available RTOS kernels are 
in C, not C++.  That does not mean C is in any way /better/ for the 
task.  There are multiple reasons for C being the language of choice here:

1. Most well-known RTOS kernels have a history stretching back to the 
previous century.  C++ was not nearly as viable an option at that time, 
for a great many reasons.

2. If you write your kernel in C++, you pretty much have to use C++ for 
the application code unless you also write a C API for it.  If you write 
your kernel in C, you can use almost any language for the application code.

3. Most well-known RTOS's are for microcontrollers, often including 
small CISC devices and other microcontrollers for which toolchain 
support was traditionally poor, expensive, and barely classifiable as 
C90 never mind C++ or even C99.  If you want to support these devices, 
C90 is the only way to go.

4. There is a bizarre attitude in a lot of the embedded world that "ANSI 
C" (meaning C89/C90) is somehow magical and "the standard".  Marketing 
departments see it as a "feature" that the code is written to this long 
out-dated and inferior language standard.

5. Lots of embedded programmers are not great programmers, or not 
educated as programmers - they are hardware or electronics engineers 
that have moved into software.  C90 is often all they know, and 
certainly they have never learned more than basic C++.

So there are plenty of reasons why C (especially C90) is dominant in 
RTOS's.  Note that none of these are technical reasons - C90 is never 
chosen because it is a /better/ language than C++ (or even C99).  It is 
chosen /despite/ being a weaker language.  (Some non-technical reasons 
can be good arguments, of course - but in most cases they are not.)

After all, there is virtually nothing that you can write in C90 that you 
cannot use directly in modern C++.  Baring a few cases where you need 
casts in C++ but not in C (and such casts are typically mandated by 
embedded coding standards anyway), you can compile the same code as C++. 
========== REMAINDER OF ARTICLE TRUNCATED ==========