3 ms·
*C-API is the best. As a language, it's too basic. Almost every C projects try to mimic what C++ already has.
by feverzsj 10mo ago
*C-API is the best.
As a language, it's too basic. Almost every C projects try to mimic what C++ already has.
- alexpadula 10mo agoThat’s not true, give me an example used in real code out in the wild?
- pjmlp 10mo agoSince I am feeling generous, here are two examples, https://docs.gtk.org/glib/ https://docs.gtk.org/glib/ https://github.com/antirez/sds https://github.com/antirez/sds
- alexpadula 10mo agoThank you
- pjmlp 10mo agoI considered it outdated back in 1993, when all major GUI based systems (Apple, IBM, Microsoft) were going with C++ for userspace applications. Then came the rise of FOSS adoption, with the GNU manifest asserting to use only C as compiled language. "Using a language other than C is like using a non-standard feature: it will cause trouble for users. Even if GCC supports the other language, users may find it inconvenient to have to install the compiler for that other language in order to build your program. So please write in C." The GNU Coding Standard in 1994, http://web.mit.edu/gnu/doc/html/standards_7.html#SEC12 http://web.mit.edu/gnu/doc/html/standards_7.html#SEC12
- 112233 10mo agoFor big, fixed environments like Qt — sure. For embedded? Please no. Basic is good. Feel free to reimplement C++, your C library still will not have: most of STL as a dependency; unwind tables in all code (including C!); ctor/dtor arrays; insane kilobyte-sized symbols.
- pjmlp 10mo ago"C++20 for Commodore 64" https://www.youtube.com/live/EIKAqcLxtT0?si=J82Us4zBlXLPbZVq https://www.youtube.com/live/EIKAqcLxtT0?si=J82Us4zBlXLPbZVq It is a matter of skill.
- 112233 10mo agoI'm confused. What is a matter of skill? You linked 6 hour livestream where person is working on translating AVR assembly to 6502. What was your point, that translating assembly or executables to another architecture takes a lot of skill? Yes, it does! Because I could not, by scrubbing that video, find anything where immense skill is used to deal with the enormous overhead that standard C++ forces on every program that uses it.
- pjmlp 10mo agoHere is a better one then, "Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17" https://youtu.be/zBkNBP00wJE?si=uqUwVMMEpp4ZPWun https://youtu.be/zBkNBP00wJE?si=uqUwVMMEpp4ZPWun It is a matter of skill, understanding C++ and how to make it useful for embedded systems, and being able to understand standard library isn't a requirement for each executable. By the way, the famous Arduino and ESP32 hasve no problem dealing with C++. As we also didn't, back in MS-DOS, with 640 KB, Turbo Vision and Borland Collection Library (BIDS). A matter of skill, as mentioned.
- 112233 10mo ago> standard library isn't a requirement for each executable. So you also agree that C++ libraries are a bad fit for embedded? Because in the video you linked, that person did not use any libraries. It is one thing to compile small standalone binary, using non-conforming compiler extensions to disable rtti and exceptions. It is another to write C++ library. By standard, even freestanding C++ requires RTTI, exceptions and most of standard library. If you need to implement your own STL subset to satisfy the library, then modify the library to work with your STL, the resulting API is not much of an API, is it?
- Svoka 10mo agoAh, C has stable ABI unlike C++, never would get tired of unresolved std::__1 symbols.
- pjmlp 10mo agoWhat stable ABI? First of all, ABI is a property of the OS calling conventions, which happen to overlap with C on UNIX/POSIX, given its symbiotic relationship. Secondly, https://thephd.dev/to-save-c-we-must-save-abi-fixing-c-function-abi https://thephd.dev/to-save-c-we-must-save-abi-fixing-c-funct...