5 ms·
> XFCE, GNOME and KDE make heavy use of DBUS. Only for IPC. There is no IPC within a typical glib app. GObject keeps working flawlessly, but it is too arcane
by baybal2 6y ago
> XFCE, GNOME and KDE make heavy use of DBUS.
Only for IPC. There is no IPC within a typical glib app.
GObject keeps working flawlessly, but it is too arcane to newcomers (which are already few because of C itself becoming an arcane art these days)
- m4rtink 6y agoSystemd uses DBUS for comunication between its processes & the Cockpit admin web UI uses DBUS for talking to all the things it can manage.
- pjmlp 6y agoAs much as I like to bash C, even Microsoft was forced to reconsider their position and latest MSVC now supports C11 and C17, and UNIX kernels won't ever use anything else. So anyone serious about OS development should know it, regardless of their opinion towards the language. As for GObject, there are bindings for almost any relevant language.
- baybal2 6y agoYou have my solidarity, but I do not see C having a resurgence. Can share horror stories of expensive hires with MSc/PhD degrees, and years of experience having a fright of their lifetime when they see real world C.
- pjmlp 6y agoSo are you planning to rewrite all those UNIX clones in something else? Azure Sphere, Microsoft's paragon of IoT security, only allows for C. Those expensive MSc/PhD should just complain to their universities for not providing a proper systems programming classes.
- baybal2 6y agoI clearly need people who can do above helloworld level in C. For many places, there are clearly no alternative to C. The humongous open codebase of high quality C code, exceeding every other language, is also not going anywhere. The situation is, shortly speaking, "no alternative to doing it in C, but we cannot do it in C because of some purely non-technical constraint." And the situation is very common I feel. Chipmakers with billions of cash free to throw on RnD can't make any passable Linux kernel work. Google Chrome team must be employing best C++ hackers on the market, and yet.... and the story goes on like this. The relative overabundance of webdev/java people hides the the fact that we are not only not gaining developers in conventional programming, but losing them fast to age, career change, or them returning back to home countries in case of labour migrants.
- pjmlp 6y agoThose Java people also need to be at home with the low level concepts, if they are to do any usable work from what is coming from Panama. Likewise those Webdevs might just brush up their skills for WebAssembly. At the end of the day it doesn't matter if one is using D, Rust, Swift, Java, C#, Rust, C++, Zig, FreePascal, CUDA, Open... instead of C. The system programming concepts are the same, and it all boils down to education. As for lousy candidates, I get them in any language.
- baybal2 6y agoCan't say them not knowing them at all, or them being outright lousy. When it come to CS fundamentals, algorithmics, most were better than me, who never studied CS academically. This was the reason we ever took interest in them. It's just you cannot compensate for training, and experience with overall feel of skill. You can hire an ACM olympian, and the guy will still loose it unless he did C professionally for 3-4 years.
- pjmlp 6y agoIn my engineering degree doing stuff like B-Trees with its own i-node management module in C, validate against unit tests written by the professor, were requirements just to qualify for the data structures exam. Someone lousy in low level coding won't go through such a curriculum, https://www.di.fct.unl.pt/en/education/integrated-master-computer-science/study-program https://www.di.fct.unl.pt/en/education/integrated-master-com... Again, a matter of teaching quality.
- FpUser 6y agoAny other "real world" software can be ugly and can be beautifully written in any language, including C (except ones where being cryptic is by design). Basic C can be picked up in very short time. there is nothing to be frightened about. When I first laid my hands on C I wrote working software (keyboard driver for DOS) in a first day as a learning exercise. Not sure what other than incompetence as a programmers is causing your expensive PhDs "fright of their lifetime".
- baybal2 6y ago> Not sure what other than incompetence as a programmers is causing your expensive PhDs "fright of their lifetime". Memory management, handwritten loops, pointers everywhere, absence of ready made data structures, error handling (or its absence,) epopeia with C strings, sanitizing inputs, and nausea from the slightest smell of SIMD, or basic binary hackery to begin with.
- FpUser 6y agoThose are needed for the tasks C was made to handle: complete control over everything being a primary one. If you do not need those tasks you do not need C. And if you do then get used to it.
- zepto 6y agoOdd how well rust seems to manage to avoid them. C was amazing when it was introduced, but is as archaic as COBOL today. We are stuck with it because of legacy.
- FpUser 6y ago>"C was amazing when it was introduced" It was not amazing. It was decent particular tool for particular job. That was all about it. Same thing about Rust. There are no silver bullets laying around.
- 6y ago
- rbanffy 6y ago> GObject keeps working flawlessly, but it is too arcane to newcomers (which are already few because of C itself becoming an arcane art these days) I keep looking for a good excuse to learn Vala. Maybe this is it.
- tmzt 6y agoYou may also consider doing it in Rust. It's possible to implement GObject subclasses in Rust which little additional overhead as compared to doing it in C, but you get the syntactical niceties of for each loops, traits, and other features of Rust. librsvg makes good use of these bindings, and is undergoing a rewrite in Rust. Gstreamer bindings are also becoming more complete, and example implementations of many of the standard plugins have been rewritten. The official implementation is still in C though. Vala is a neat concept though and a pretty clean language. https://people.gnome.org/~federico/blog/librsvg-gobject-in-rust.html https://people.gnome.org/~federico/blog/librsvg-gobject-in-r... https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs
- rbanffy 6y ago> You may also consider doing it in Rust. The Vala compiler complains about my code. The Rust one tears it to shreds. I understand Rust's constructive criticism is coming from a good place, but it's still very harsh ;-)
- CarelessExpert 6y ago> librsvg makes good use of these bindings, and is undergoing a rewrite in Rust. And is losing support for older CPU architectures as a result. I really hope we don't see this more before the rust compiler is improved to support older architectures, as otherwise it may become prohibitively difficult to revive older systems...
- jcranmer 6y ago> There is no IPC within a typical glib app. Except for anything to do with the UI, although admittedly, the details of this is usually hidden within the relevant libraries.
- PaulDavisThe1st 6y agoWhy would any typical app have IPC within it?
- baybal2 6y agoI mentioned because some of that "componentised" style apps do indeed what amounts to intra-interprocess-communication for god knows what reason. Android for example