comp.lang.ada
 help / color / mirror / Atom feed
From: "Thomas G. Marshall" <tgm2tothe10thpower@replacetextwithnumber.hotmail.com>
Subject: Re: Static vs. Dynamic typing (big advantage or not)---WAS: c.programming: OOP and memory management
Date: Thu, 19 Aug 2004 16:31:06 GMT
Date: 2004-08-19T16:31:06+00:00	[thread overview]
Message-ID: <eB4Vc.5351$de4.1606@trndny07> (raw)
In-Reply-To: Xns954A460271C0Djimmaureenrogers@127.0.0.1

Jim Rogers <jimmaureenrogers@worldnet.att.net> coughed up the following:
> "Thomas G. Marshall"
> <tgm2tothe10thpower@replacetextwithnumber.hotmail.com> wrote in
> news:moWUc.5028$de4.548@trndny07:
>
>>
>> Without having to hand you an inch thick spec......ok.  Here:
>>
>> Think java applet running on a pc.  That pc connected to a very
>> complicated scientific device, composed of a great many number
>> producing things.  I'm going to use the term "gui component" here,
>> but I really mean more than View,  but also the Model/Controller
>> folded in as well.
>>
>> One of my java clients needed a very complicated multi-layered gui,
>> where each of the visual components (meters, text fields, flashing
>> lights, text labels grayed out, red, or red/gray, or blinking), had
>> to in real time reflect what was happening to that component's
>> counterpart within another device.
>>
>> A ton of meterable "things" in the device, and a ton of real time gui
>> elements in the java app reflecting the various values, states,
>> warning levels, what have you.  Many of the gui items further
>> controlled other "things" in the device, which caused only a cascade
>> of changes in the gui elements that were monitoring the components
>> from the device.
>>
>> For a huge part of the development, the gui components were designed
>> around their own threads.  One drawn LED that needed to be updated 5
>> times a second, one thread.  A textfield next to it that needed to be
>> updated 25 times a second, another thread.  Each of those threads ran
>> in real time collecting (and sometimes sending) to/from the device.
>>
>> When the number of such continually active gui components threatened
>> to exceed several hundred, we shifted the model and from the top
>> converted every single component into an entry into something called
>> the Dispatch. Dispatch maintained a list(1) of lists(2) of
>>  components. Each list(2) was a list of components that needed
>> updating a particular interval.  All the 50ms updates went into one
>> such list. All slower 150ms updates went into another, etc.  23
>> distinct interval types meant 23 entries in list(1), each of which a
>> list(2) of components.
>>
>> Because it was done in Java, a statically typed language, there was a
>> great deal of energy spent in just turning the crank of making sure
>> that the types shifted from prior strategy to the current one.  I
>> hope I've been clear enough here.
>
> I think you may be painting with too broad of a brush. I see several
> problems in your description. One problem was the choice of your
> initial design. Applets typically run on a single processor. Unless
> you apply very careful design, a multi-threaded application on a
> single processor will usually run slower than a single-threaded
> application doing the same conceptual work. Threading introduces
> overheads such as scheduling and locking, which are not encountered
> in a single-threaded application.
>
> Another problem is the choice of Java itself. Java threading is
> non-deterministic. The Java coding model mixes the concept of a type
> and a thread to the point that they are very hard to separate if
> threads are rejected late in the development process. Your task of
> stripping out the threading would have been much easier if types and
> threads were orthoginal to each other.
>
> You still had some performance challenges in the new design, with
> nested timing loops. It is possible that one of your list(2) lists
> would get large enough that the processor/language combination could
> not activate all events in a list(2) within the specified performance
> boundary. You would get timing creep that could affect all the events
> in your list of lists system. It is very important to balance nested
> control loops. Once balanced, those control loops provide a difficult
> challenge during maintenance. Any additions or deletions from any
> list(2) could potentially upset the timing of all loops. Changes must
> be made in delays for each nested loop level to compensate for the
> changes in the size of lists.
>
> Notice that these problems are independent of whether a language type
> system is dynamic or static.

{sigh}.  Design 101 was not lost on us.  Neither is Common Sense 801.  I
don't have the energy to discuss the design in its entirety, nor walk
through all the decisions, the reasoning, the background, the customer
demands, etc., etc.----it'd be unreasonable to assume that such a
conversation would even be /possible/ over usenet.

I was asked for an example of:

<quotezilla>
    1) Complicated model
    2) Incorrect types ("ever so slightly off the mark
    3) Difficult to discover
    4) Laborious to fix
</quotezilla>

The reasons /why/ these decisions were made?  The discussion of it per se,
is of zero importance.  Please, save your time and mine---you'll /never/ get
the full picture---this was a large project with many layers of design.





-- 
http://www.allexperts.com is a nifty way to get an answer to just about
/anything/.





  reply	other threads:[~2004-08-19 16:31 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1hk5j2d3dlmrp$.153lae83darml$.dlg@40tude.net>
     [not found] ` <40f29222@alpha.wvnet.edu>
     [not found]   ` <104x9d9d53127$.1b8jq22ldf2js.dlg@40tude.net>
     [not found]     ` <40f2ee18@alpha.wvnet.edu>
     [not found]       ` <8yhg4xv40agi.ly9pgul3h7jw$.dlg@40tude.net>
     [not found]         ` <40f3ceee@alpha.wvnet.edu>
     [not found]           ` <19iip59qsl122$.3g3hicltra17.dlg@40tude.net>
     [not found]             ` <40f5bbe1@alpha.wvnet.edu>
     [not found]               ` <lLCdnT5s5oBR0mvdRVn-vw@nildram.net>
     [not found]                 ` <40f67c13@alpha.wvnet.edu>
     [not found]                   ` <b46dnTyZeOwARmrdRVn-sA@nildram.net>
     [not found]                     ` <nisfh0hq8n83kckuss0g2m8dclchbb87c4@4ax.com>
     [not found]                       ` <9qTRc.61502$M95.25853@pd7tw1no>
     [not found]                         ` <ce7ef1c8.0408100846.7cd312e8@posting.google.com>
     [not found]                           ` <BuASc.81568$gE.9811@pd7tw3no>
     [not found]                             ` <411C5D2F.5070408@acm.org>
     [not found]                               ` <BZxTc.103385$M95.61358@pd7tw1no>
     [not found]                                 ` <ifGTc.574$SR4.140@newssvr14.news.prodigy.com>
     [not found]                                   ` <bkiuh054vd4suvd2fgqmekvt9llaend5n1@4ax.com>
     [not found]                                     ` <tNydnW_KyNuXHL3cRVn-oQ@nildram.net>
     [not found]                                       ` <nu2dnc4HfY-2Wb_cRVn-sQ@fcc.net>
     [not found]                                         ` <sgDUc.26532$9Y6.17585@newsread1.news.pas.earthlink.net>
     [not found]                                           ` <3bOUc.46253$US4.14922@trndny01>
2004-08-19  0:37                                             ` Static vs. Dynamic typing (big advantage or not)---WAS: c.programming: OOP and memory management Richard  Riehle
2004-08-19  4:54                                               ` Thomas G. Marshall
2004-08-19  8:10                                                 ` Dmitry A. Kazakov
2004-08-19 16:24                                                   ` Thomas G. Marshall
2004-08-19 12:52                                                 ` Jim Rogers
2004-08-19 16:31                                                   ` Thomas G. Marshall [this message]
2004-08-20  1:27                                                 ` Stephen Leake
2004-08-20  7:00                                                 ` Richard  Riehle
     [not found]                                   ` <TgfUc.122489$M95.15934@pd7tw1no>
     [not found]                                     ` <XtOUc.4483$QJ3.4254@newssvr21.news.prodigy.com>
2004-08-19  0:39                                       ` Richard  Riehle
replies disabled

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