Hacker News new | ask | show | jobs
by default-kramer 357 days ago
I strongly prefer FP over OOP, but... Is there any desktop GUI library that isn't built on subclassing? Winforms, WPF, Swing, Qt, Godot all do. This doesn't prove that subclassing is necessary, but it sure seems like the best approach we've found so far.
2 comments

I think the closest I’ve encountered is the Objective C frameworks Apple used to use. Customizing the behaviors of default library components was almost exclusively done with delegates and protocol implementation rather than subclassing.
> Is there any desktop GUI library that isn't built on subclassing?

There are desktop GUI libraries implemented in C, Go, and other languages that do not have subclassing, so, the answer kind of has to be yes.

Gtk+ is pure C, but the library essentially implements subclassing manually. It is so painful to use, and so much worse that the C++ equivalent in gtkmm. Again, Win32 API does similar to allow subclassing of widgets. Again, painful.
Every GUI toolkit I've used, which is many, implement subclassing for UI elements whether or not the language supports it. Remember, C++ was originally written in C, so it's clear lack of a native language feature doesn't mean things written in that language also lack that feature.
I think your reply is more elegant than mine. Years ago, I worked on a Wall Street trading app that was written in pure C but had inheritance. It was a miracle to read the code as a 25 year old!

I wonder if there are any modern UI toolkits that do not use subclassing at all -- actual (C++/Java/C#) or synthetic (C). It would be such a PIA not to inherit from a base widget that handles most basic operations. Maaaaaybe it could be done purely with encapsulation... But, oh brother, that would a lot of boilerplate code!