From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,36a29c2860aff686 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news1.google.com!postnews.google.com!i25g2000prd.googlegroups.com!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: Properties Date: Thu, 2 Dec 2010 07:25:20 -0800 (PST) Organization: http://groups.google.com Message-ID: References: <3b84c8e7-1a51-4a7c-9646-119f1fc51478@s4g2000yql.googlegroups.com> <4pnv7nl4cdui$.1n28i7lqk4mek$.dlg@40tude.net> <1k7367gtebsgm$.18auo6u3nfg34.dlg@40tude.net> <1u5dftkqqi68c.10079qnqyyfwb$.dlg@40tude.net> <15tv4yga36dpi$.1hc09dlbgcmqe.dlg@40tude.net> <18768dde-5817-40b9-aaa1-03c620ad7187@i32g2000pri.googlegroups.com> <1sp30ekj4pmer$.1753nbz1zyzid$.dlg@40tude.net> NNTP-Posting-Host: 137.138.182.236 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1291303524 26897 127.0.0.1 (2 Dec 2010 15:25:24 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 2 Dec 2010 15:25:24 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: i25g2000prd.googlegroups.com; posting-host=137.138.182.236; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10,gzip(gfe) Xref: g2news1.google.com comp.lang.ada:15746 Date: 2010-12-02T07:25:20-08:00 List-Id: On Dec 2, 11:26=A0am, "Dmitry A. Kazakov" wrote: > > Why do you expect to get better guarantees from GUI than from stdout? > > Because in all Ada compilers I used so far this was safe. Safe? What is the benefit of safe if at the same time it's pointless? Put ("My "); Put ("name "); Put ("is "); Put_Line ("Maciej"); I have multiple tasks doing it. What is safe for you? For me "safe" means "not corrupting the information" and the above sequence produces a single piece of information. There is no point in Text_IO to be internally synchronized, because the granularity of synchronization can be defined only at the application level. And once this is done, it is also sufficient and then any internal synchronization is a waste. Similar reasoning applies to GUIs. Imagine a graphical display of multi-line log messages. There is no point for such GUI to be task safe, because GUI has no understanding of the logical granularity of what is being displayed. > A "reasonable" implementation of Text_IO queues I/O requests to some > internal or external task/driver. I want same sort of design for graphica= l > requests. Not necessarily. And there are lots of data structures that have to be acted upon until you come close to the driver. These data structures are vulnerable to corruption. > GUI is natively multitasking: > > 1. actions invoked by its controls are not instant: progress bar > 2. some controls are active objects: animation widgets, visual effects, > tooltips, hovering etc > 3. indication of asynchronous events and data: oscilloscope How is that any different from standard output? How is your oscilloscope any different from the "top" utility that displays the state of many processes on the text terminal? It is not different and therefore does not need any additional guarantees. -- Maciej Sobczak * http://www.inspirel.com