comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Ada-Oriented GUI
Date: Thu, 22 Mar 2018 07:57:40 -0700 (PDT)
Date: 2018-03-22T07:57:40-07:00	[thread overview]
Message-ID: <e3116b67-94ee-4d60-b9a3-f9d38292b6ed@googlegroups.com> (raw)
In-Reply-To: <p8vs1f$5aa$1@gioia.aioe.org>

On Thursday, March 22, 2018 at 4:12:17 AM UTC-5, Dmitry A. Kazakov wrote:
> On 21/03/2018 23:16, Dan'l Miller wrote:
> > Dmitry wrote:
> >> This is not how asynchronous I/O works in
> >> many cases. The I/O request is
> >> queued in one thread, initiated in another,
> >> processed in third, completed in fourth.
> > 
> > (Other than message-queue-based software architectures,)
> 
> A great number of protocol stacks work this way. Almost all I/O 
> libraries deploy callbacks on data arrival.
> 
> Some have the design alike to GUI when you are forced to call something 
> like Do_IO from a thread and get a callback from within Do_IO.
> 
> But in general nothing in said or required about the contexts of any 
> calls and callbacks.
> 
> > please name even one async ••system call•• on any OS or OS-framework thereof that requires traversal of those 4 ••app-domain•• threads to produce results (e.g., filesystem read) asynchronously.
> 
> I don't really know what you mean.

Yes, you are correct:  you do not understand.

> Windows overlapped I/O queues a request from your thread. When I/O is 
> initiated it can traverse a number of kernel threads (e.g. Deferred 
> Procedure Call etc). Any number of user-space threads can wait for 
> associated Windows event objects or poll the overlapped I/O result.

You would put app-domain GUI and GUI-facing presentation (e.g., VIPER presenter) layers in the kernel?  Oh my goodness you are incredibly bad at software architecture.  Rx is a technology for within an app-domain UI and UX processing, and perhaps the UX-facing interface-façade of backend processing.

https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52

VIPER architecture best partitions UI, UX, and back-end processing for an app-domain—none of which is unwisely in the kernel as you would suggest.  The nonportable peculiar-to-OS/framework portions of the app-domain's UI (either GUI or ChUI or command-line) go in a VIPER view layer.  The portable generic-among-all-OSes/frameworks portions of the app-domain's UX go in a VIPER presenter and router layers. VIPER interactor and entities layer is where all the app-domain backend processing occurs.  Rx is intended for the VIPER view, presenter, and router layers.  Rx or Ix overt representation of dataflows-of-VIPERentities might find usefulness in some portions of the interactor layer, but this is a matter of personal taste.  Certainly, Rx and Ix (as currently formulated) would never cross into kernel space.  Dmitry, you are so far off in the weeds there.

> Anyway, as Randy already said, it is incredibly uncomfortable to build 
> the whole application around GUI.

  I agree.  That is why VIPER is the best software architecture so far for app-domains that contain UI/UX (when compared to the MVC and MVVM ilk) because VIPER clearly quarantines UX away from backend processing, and VIPER clearly quarantines nonportable OS-specific/framework-specific app-domain UI from portable UX.  Dmitry, if you haven't stayed current with VIPER, you really should, because VIPER is embraces your/our school of thought.

> The first and foremost requirement for 
> a decent GUI framework is to let us breath[e].

  VIPER's strict quarantining of UX & UI away from all backend processing in interactors & entities provides you not only the enormous space to breathe, but also sharp & fierce software-architectural weapons to push back on the UI/UX people to stay within only their quarantined areas, not polluting the backend processing.

That being said, Ix begat Rx historically; Ix originated within backend processing (what VIPER calls interactors) of data (what VIPER calls entities, as a hat tip to thin OO representation of each record).  Then someone noticed that Ix's pull-based semantics could be reversed as push-based semantics to be repurposed to event-driven UI/UX.  Even in backend app-domain processing (in user-space, not kernel-space, as you suggest), there is a natural progression to move away from thinking about verb-centric actions (i.e., 1970s structured programming) to verbs-subjugated-to-noun-centric encapsulation (i.e., 1980s/1990s OO) to rivers of nouns/data/entities channelized into verb processing (i.e., Rx and Ix in the 2010s).  Rx is not unlike wire-speed processing of packets in modern network processors:  focus on the channelized dataflow as a river flowing by, picking out a filtered datum as it flows by to operate on it under realtime deadlines to keep up with the flowrate of the river.  It is merely the natural progression of the Zeitgeist, whose societal exhaled-breath wind has been blowing in this direction for around 50 years now.

  reply	other threads:[~2018-03-22 14:57 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-18 13:33 Ada-Oriented GUI Jeffrey R. Carter
2018-03-19  2:03 ` Dan'l Miller
2018-03-19 14:10   ` Dan'l Miller
2018-03-21  9:49     ` Alejandro R. Mosteo
2018-03-21 13:58       ` Dan'l Miller
2018-03-21 18:43         ` briot.emmanuel
2018-03-21 19:17           ` Shark8
2018-03-21 22:40             ` Randy Brukardt
2018-03-21 23:52               ` Shark8
2018-03-22  6:50                 ` briot.emmanuel
2018-03-22 16:56                   ` Shark8
2018-03-23 16:29               ` Shark8
2018-03-23 22:59                 ` Randy Brukardt
2018-03-23 23:43                   ` Mehdi Saada
2018-03-26 22:09                     ` Randy Brukardt
2018-03-27  7:27                       ` Dmitry A. Kazakov
2018-03-27 23:58                         ` Randy Brukardt
2018-03-28  7:09                           ` Dmitry A. Kazakov
2018-03-22 17:34         ` Alejandro R. Mosteo
2018-03-22 17:50           ` Dan'l Miller
2018-03-22 18:58             ` Shark8
2018-03-23 12:06             ` Alejandro R. Mosteo
2018-03-20 16:41 ` Dan'l Miller
2018-03-20 21:34   ` Randy Brukardt
2018-03-21  2:22     ` Dan'l Miller
2018-03-21 21:50       ` Randy Brukardt
2018-03-22  8:45         ` Dmitry A. Kazakov
2018-03-22 10:58         ` Bojan Bozovic
2018-03-22 11:03           ` Bojan Bozovic
2018-03-21  8:25 ` Dmitry A. Kazakov
2018-03-21 14:30   ` Dan'l Miller
2018-03-21 15:57     ` vincent.diemunsch
2018-03-21 17:33       ` Dan'l Miller
2018-03-21 16:27     ` Dmitry A. Kazakov
2018-03-21 17:04       ` Dan'l Miller
2018-03-21 17:42         ` Dmitry A. Kazakov
2018-03-21 18:19           ` Dan'l Miller
2018-03-21 19:11             ` Simon Wright
2018-03-21 19:51               ` Dan'l Miller
2018-03-21 20:11                 ` Dmitry A. Kazakov
2018-03-21 20:33                   ` Dan'l Miller
2018-03-21 22:16                   ` Dan'l Miller
2018-03-22  9:12                     ` Dmitry A. Kazakov
2018-03-22 14:57                       ` Dan'l Miller [this message]
2018-03-22 15:46                         ` Bojan Bozovic
2018-03-22 14:00                     ` Dan'l Miller
2018-03-22 17:29                   ` Alejandro R. Mosteo
2018-03-21 21:58             ` Randy Brukardt
2018-03-26 21:20               ` G. B.
2018-03-21 22:33             ` Randy Brukardt
2018-03-22  1:43               ` Dan'l Miller
2018-03-22 23:47                 ` Randy Brukardt
2018-03-23  2:37                   ` Dan'l Miller
2018-03-23 22:42                     ` Randy Brukardt
2018-03-24  7:47                       ` Simon Wright
2018-03-23  9:05                   ` Jeffrey R. Carter
2018-03-23  9:48                     ` Bojan Bozovic
2018-03-23 10:20                     ` Alejandro R. Mosteo
2018-03-27 18:32                     ` Killing software and certification (was: Ada-Oriented GUI) Alejandro R. Mosteo
2018-03-27 19:25                       ` Killing software and certification Dmitry A. Kazakov
2018-03-28 13:54                         ` Alejandro R. Mosteo
2018-03-28 14:23                           ` Dmitry A. Kazakov
2018-03-28 17:06                             ` Alejandro R. Mosteo
2018-03-28 19:35                               ` Dmitry A. Kazakov
2018-03-28 15:47                           ` Jeffrey R. Carter
2018-03-28 17:02                             ` Dennis Lee Bieber
2018-03-28 17:59                             ` Dan'l Miller
2018-03-27 19:41                       ` Killing software and certification (was: Ada-Oriented GUI) Dan'l Miller
2018-03-28  0:04                         ` Randy Brukardt
2018-03-28  2:27                           ` Dan'l Miller
2018-03-28 13:54                           ` Killing software and certification Alejandro R. Mosteo
2018-03-28  0:21                       ` Killing software and certification (was: Ada-Oriented GUI) Jere
2018-03-28 13:54                         ` Killing software and certification Alejandro R. Mosteo
2018-03-23 12:31                   ` Ada-Oriented GUI Alejandro R. Mosteo
2018-03-23 12:59                     ` Dmitry A. Kazakov
2018-03-23 16:16                       ` Dan'l Miller
2018-03-23 17:18                         ` Dmitry A. Kazakov
2018-03-23 18:31                           ` Dan'l Miller
2018-03-23 20:06                             ` Dmitry A. Kazakov
2018-03-23 20:48                               ` Mehdi Saada
2018-03-23 21:18                                 ` Dmitry A. Kazakov
2018-03-24 11:36                       ` Alejandro R. Mosteo
2018-03-24 13:12                         ` Dmitry A. Kazakov
2018-03-28 14:09                           ` Alejandro R. Mosteo
2018-03-28 15:02                             ` Dmitry A. Kazakov
2018-03-28 18:07                               ` Alejandro R. Mosteo
2018-03-29  7:58                                 ` Dmitry A. Kazakov
2018-04-02 22:13                               ` Robert I. Eachus
2018-04-03  8:31                                 ` Dmitry A. Kazakov
2018-04-03 22:32                                   ` Robert I. Eachus
2018-04-04  7:30                                     ` Dmitry A. Kazakov
2018-03-25 12:57                         ` Jeffrey R. Carter
2018-03-24 16:33                   ` Dan'l Miller
2018-03-26 22:29                     ` Randy Brukardt
2018-03-27  0:15                       ` Dan'l Miller
2018-03-27  6:08                       ` Dennis Lee Bieber
2018-03-27  7:52                         ` Simon Wright
2018-03-27 14:48                           ` Dennis Lee Bieber
2018-04-01 17:37                       ` Robert I. Eachus
2018-03-25 19:19 ` Andrew Shvets
  -- strict thread matches above, loose matches on Subject: below --
2018-03-23 22:48 Randy Brukardt
2018-03-24  7:51 ` Simon Wright
replies disabled

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