I am genuinely arguing that we should use #pascal and #ada more.
C was made for assembly cosplaying as a high level language (even then, Forth is doing a better job in that aspect...). Pascal is ALGOL-68 done right so it traces its heritage back to a committee of brilliant computer scientists and Ada was made for the DoD.
Pascal figured out before C (it precedes it by 2 years) strings (yes, actual strings, not just char arrays), a well structured and strict syntax, native set operators (you can check whether an element is in a set, include, exclude elements, compare them, even intersection and union are supported!), strong type safety (some claim it's too much, but then you have Rust, so...), even OOP nowadays.
As for Ada, you have in depth defense by default (as in no implicit conversions (just like Pascal), it treats what would be equivalent types using `typedef` in C as totally different and gives you an error (good job Rust, you at least figured that one out...)). You also get plenty of compile-time checks and run-time checks, as well as an access-type model rather than providing low-level generic pointers (each access type is handled by a storage pool, either the default one or a custom one to allow more exotic system memory implementations like NUMA and thus you never access heap memory directly, but you have to use this storage pool manager (similar to how Zig does everything through allocators). You also don't have to worry about deciding how exactly data is passed in or out of a function/procedure call (you specify the direction of each parameter, but the ultimate decision of whether the data being passed via a register, via the heap, or as a reference will be taken by the compiler or runtime, never by the programmer). It's also the first internationally standardized OOP language with Ada 83.