comp.lang.ada
 help / color / mirror / Atom feed
From: Jim Rogers <jimmaureenrogers@worldnet.att.net>
Subject: Re: Static vs. Dynamic typing (big advantage or not)---WAS: c.programming: OOP and memory management
Date: Thu, 19 Aug 2004 12:52:55 GMT
Date: 2004-08-19T12:52:55+00:00	[thread overview]
Message-ID: <Xns954A460271C0Djimmaureenrogers@127.0.0.1> (raw)
In-Reply-To: moWUc.5028$de4.548@trndny07

"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.

Jim Rogers




  parent reply	other threads:[~2004-08-19 12:52 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 [this message]
2004-08-19 16:31                                                   ` Thomas G. Marshall
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