3 ms·
>I know berating C is trendy, but it feels a bit gratuitous and uncalled for in your comment... Sorry about that, English is not my first language so i might s
by glacia01 3y ago
>I know berating C is trendy, but it feels a bit gratuitous and uncalled for in your comment...
Sorry about that, English is not my first language so i might sound rude sometimes. I actually dont hate C, but if you used it you know its flaws. I think stuff i mentioned about C is objectively bad, hence why i called them dumb stuff.
>Not sure I would like fat pointers, exceptions and threads in my embedded code though
Fat pointers are just pointer + size of an object. You have to pass array size anyway, so its just convenient. Obviously, if you need to just pass a pointer there are ways to do that.
As for exceptions and threads: As i said, you can disable or modify them just by using Restrictions pragma. Its a language defined thing. For example, Ada 2022 defines two profiles for safety-critical hard real-time computing:
https://en.wikipedia.org/wiki/Ravenscar_profile https://en.wikipedia.org/wiki/Ravenscar_profile
http://www.ada-auth.org/standards/22rm/html/rm-d-13.html http://www.ada-auth.org/standards/22rm/html/rm-d-13.html
- Galanwe 3y ago> Sorry about that, English is not my first language so i might sound rude sometimes No offense taken, not a native here either ;-) > if you used it you know its flaws Indeed, I've been using C for almost 20 years now. I won't say it's without flaw for sure, it has its quirks, but overall I do think it's quite okay for the job. > Fat pointers are just pointer + size of an object Yeah I know what fat pointers are, I even resort to handcraft some form in C for some neat performance hackery on x64. But the thing is, we're talking embedded here. Most ucontrollers I use have 8b address space, no MMU or any form of virtual memory, separated instruction/data bus (MVHA). That kind of thing don't play well with funky fat pointers. Sure if your definition of embedded is "64b ARM" all is good, but I guess we're on a spectrum. Exceptions are pretty much non existing as well, since that would require some form of runtime, which you often just cannot afford on a small chip (if not just form the sheer size of it). Threading is a no go as well. To get threads, or any form of multitasking really, you have to rely on an operating system, which by definition is a bit weird to have on an embedded IC.
- glacia01 3y ago>But the thing is, we're talking embedded here. Most ucontrollers I use have 8b address space, no MMU or any form of virtual memory, separated instruction/data bus (MVHA). That kind of thing don't play well with funky fat pointers. You can definitely use Ada on 8bit microcontrollers, for example on 8bit AVR: https://docs.adacore.com/gnat_ugx-docs/html/gnat_ugx/gnat_ugx/avr-elf_topics.html https://docs.adacore.com/gnat_ugx-docs/html/gnat_ugx/gnat_ug... You can make runtime as small as you want. As for exceptions and threads: I mentioned them because thats what comes to mind first, there are more benefits obviously.