comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: [OT] Best way to isolate a GUI?
Date: Mon, 17 Feb 2003 17:30:16 GMT
Date: 2003-02-17T17:30:16+00:00	[thread overview]
Message-ID: <3E511C15.1040404@acm.org> (raw)
In-Reply-To: slrnb5186m.ob.randhol+news@kiuk0152.chembio.ntnu.no

Preben Randhol wrote:
> 
> How do you connect callbacks?

Callbacks are an excellent example of a tool's limitations affecting the 
users' way of thinking (everything looking like a nail if you only have 
a hammer).

Windowing systems result in inherently concurrent processing: the code 
of the windowing system may be dealing with user interaction while the 
application program is doing something else. How do you deal with this 
concurrency? When your thinking is constrained by the limitiations of C, 
you do it by task inversion: You eliminate the concurrency. Only the 
windowing code is running; application code is called by the windowing 
code. How can the windowing code call the application? By having the 
application register callbacks with the windowing system before handing 
control of the program over to the windowing system. In C, where nothing 
is checked and you can call any address, this is easy to do.

If one were to design a windowing system with thinking expanded by the 
use of a language with high-level concurrency features (like, maybe, 
Ada?), I can't imagine anyone choosing this design. I would think you'd 
want to associate a concurrent event queue for each window. A task in 
the application would deal with the events for its window. It could 
block on the queue to do nothing except respond to events, or it could 
poll the queue periodically if it has other things to do as well.

While I like many things about GtkAda, one of the things I dislike about 
it is that it hasn't abstracted away this C feature of the GUI. As a 
result, it's harder to use tasking with GtkAda than it should be. CLAW 
and JEWL, for example, have abstracted callbacks away to different 
extents. JEWL effectively implements the concurrent event queue 
abstraction on top of Windows.

-- 
Jeff Carter
"Why don't you bore a hole in yourself and let the sap run out?"
Horse Feathers




  parent reply	other threads:[~2003-02-17 17:30 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-16 10:19 [OT] Best way to isolate a GUI? Jano
2003-02-16 14:47 ` Ed Falis
2003-02-16 14:49 ` Victor Porton
2003-02-17 20:52   ` Jano
2003-02-16 16:36 ` Robert C. Leif
2003-02-17  8:44   ` Preben Randhol
2003-02-17 16:22     ` Robert C. Leif
2003-02-17 17:30     ` Jeffrey Carter [this message]
2003-02-17 17:54       ` Warren W. Gay VE3WWG
2003-02-17 19:06         ` Randy Brukardt
2003-02-18  3:15           ` Warren W. Gay VE3WWG
2003-02-18 16:14             ` Robert C. Leif
2003-02-18 18:10             ` Randy Brukardt
2003-02-18 21:12               ` Warren W. Gay VE3WWG
2003-02-18 23:20                 ` Randy Brukardt
2003-02-19 18:28                   ` Warren W. Gay VE3WWG
2003-02-20 19:39                     ` Randy Brukardt
2003-02-20 21:34                       ` Warren W. Gay VE3WWG
2003-02-20  7:50                   ` Dale Stanbrough
2003-02-19 12:49                 ` Marin David Condic
2003-02-19 18:35                   ` [OT] Best way to isolate a GUI? (The final concensous?) Warren W. Gay VE3WWG
2003-02-20 12:40                     ` Marin David Condic
2003-02-20 13:13                       ` Dmitry A. Kazakov
2003-02-20 22:01                       ` Warren W. Gay VE3WWG
2003-02-21  1:25                         ` tmoran
2003-02-21  2:08                         ` Marin David Condic
2003-02-21 17:27                           ` Jeffrey Carter
2003-02-22 14:10                             ` Marin David Condic
2003-02-21 18:02                           ` Warren W. Gay VE3WWG
2003-02-22 14:49                             ` Marin David Condic
2003-02-22 22:50                               ` tmoran
2003-02-23  5:18                               ` Robert C. Leif
2003-02-24 18:06                               ` Warren W. Gay VE3WWG
2003-02-25  1:20                                 ` Robert C. Leif
2003-02-25 17:57                                   ` Warren W. Gay VE3WWG
2003-02-25 12:41                                 ` Marin David Condic
2003-02-25 13:32                                   ` Ole-Hjalmar Kristensen
2003-02-25 17:33                                     ` [OT] Best way to isolate a GUI? (The final fronteer?) Warren W. Gay VE3WWG
2003-02-20  8:26                   ` [OT] Best way to isolate a GUI? tmoran
2003-02-20 12:51                     ` Marin David Condic
2003-02-20 18:47                       ` tmoran
2003-02-17 19:31         ` tmoran
2003-02-18  1:37         ` Jeffrey Carter
2003-02-18  3:39           ` Warren W. Gay VE3WWG
2003-02-18 23:36           ` Randy Brukardt
2003-02-18 13:29         ` Marin David Condic
2003-02-18 18:01           ` Warren W. Gay VE3WWG
2003-02-19 13:06             ` Marin David Condic
2003-02-16 17:25 ` achrist
2003-02-16 21:24 ` Bobby D. Bryant
2003-02-16 21:52 ` David Marceau
2003-02-17  0:57 ` Re; " tmoran
2003-02-17  7:25   ` Jano
2003-02-17 14:09     ` Bobby D. Bryant
2003-02-17 21:12       ` Jano
2003-02-18  7:24         ` Jean-Pierre Rosen
2003-02-18 13:08 ` Marin David Condic
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox