vix.ing · top · new · best · stats

Why C++ is not very fit for GUI programming

2000/01/06 by Oleg Kiselyov, Kiselyov, Oleg
Computer Science · Social Sciences · #Advanced Software Engineering Methodologies #D.1.5 #D.3.3 #FOS: Computer and information sciences #Programming Languages (cs.PL) #Software Engineering Research #Software Engineering and Design Patterns #cs.PL

paper · pdf · doi:10.48550/arxiv.cs/0001003

Previous version of this paper appeared in Proc. MacHack'95

arxiv created 2000/01/06 · openalex publication_date 2000/01/06 · arxiv updated 2009/11/30 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28

Abstract

With no intent of starting a holy war, this paper lists several annoying C++ birthmarks that the author has come across developing GUI class libraries. C++'s view of classes, instances and hierarchies appears tantalizingly close to GUI concepts of controls, widgets, window classes and subwindows. OO models of C++ and of a window system are however different. C++ was designed to be a "static" language with a lexical name scoping, static type checking and hierarchies defined at compile time. Screen objects on the other hand are inherently dynamic; they usually live well beyond the procedure/block that created them; the hierarchy of widgets is defined to a large extent by layout, visibility and event flow. Many GUI fundamentals such as dynamic and geometric hierarchies of windows and controls, broadcasting and percolation of events are not supported directly by C++ syntax or execution semantics (or supported as "exceptions" -- pun intended). Therefore these features have to be emulated in C++ GUI code. This leads to duplication of a graphical toolkit or a window manager functionality, code bloat, engaging in unsafe practices and forgoing of many strong C++ features (like scoping rules and compile-time type checking). This paper enumerates a few major C++/GUI sores and illustrates them on simple examples.

Related