comp.lang.ada
 help / color / mirror / Atom feed
From: <adaworks@sbcglobal.net>
Subject: Re: Separate Compilation in Programming Languages
Date: Fri, 22 Feb 2008 23:29:13 -0800
Date: 2008-02-22T23:29:13-08:00	[thread overview]
Message-ID: <NWPvj.7457$Ru4.3143@newssvr19.news.prodigy.net> (raw)
In-Reply-To: ur6f4sb5l.fsf@STRIPCAPStelus.net


"Ray Blaak" <rAYblaaK@STRIPCAPStelus.net> wrote in message 
news:ur6f4sb5l.fsf@STRIPCAPStelus.net...
> <adaworks@sbcglobal.net> writes:
>> The issue is about dependencies.   When the class definition and the
>> class implementation are in the same file, any dependent units will
>> have to be compiled when there is a change in that file.    I don't
>> see any capability for managing this kind of dependency in Java.
>
RB> In practice it's not an issue. Compilation is cheap.
RB>
For small software systems this might be true.   However, for large
systems this is not true.  I am thinking in terms of software projects
that require over a million lines of source code and a lot of library
units where the dependencies are significant.  For systems of this
magnitude, where many different programmers are working on the
project, compilation is not cheap.
RB>
RB> But there is a way to manage explicit dependencies: express the public 
facing
RB> APIs in terms of interfaces with implementation classes that truly hide the
RB> actual implementation.
RB>
I considered Interfaces.  They appear, at first glance, to be a solution. 
However,
they fall short of what we are seeking here.   Once the Interface is 
implemented,
the rest of the software still depends on that implementation and there is no
model of separate compilation at that point where one can separate the
specification from the implementation.  The dependency becomes bound to
the implementation of the Interface not to the Interface abstraction.
RB>
RB> This gives a strict separation that gives you the control you were looking
RB> for.Whether that is as convenient or not as Ada is another debate.
RB>
It is not a matter of convenience.   It simply falls short.
RB>
RB> The issue is simply not that serious, partially due to Java's dynamic 
loading
RB> abilities. I can drop a new version in of my library JAR in somewhere, and 
if
RB> the public API signatures have not actually changed I do not in fact need to
RB> recompile.
RB>
RB> In practice however, you do, because it's easy and it catches any unexpected
RB> API changes. But one was still doing "separate compilation".
RB>
But not managing dependencies very well.





  reply	other threads:[~2008-02-23  7:29 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-22 17:35 Separate Compilation in Programming Languages adaworks
2008-02-22 17:52 ` Dirk Heinrichs
2008-02-23  0:23   ` adaworks
2008-02-22 18:10 ` Ray Blaak
2008-02-22 23:53   ` adaworks
2008-02-23  1:40     ` Ray Blaak
2008-02-23  7:29       ` adaworks [this message]
2008-02-23 18:42         ` Ray Blaak
2008-02-22 18:18 ` Niklas Holsti
2008-02-23  0:14   ` adaworks
2008-02-23  7:23     ` Niklas Holsti
2008-02-23  7:31       ` Niklas Holsti
2008-02-23 16:00         ` adaworks
2008-02-23 12:27     ` Georg Bauhaus
2008-02-23 12:37   ` Dirk Heinrichs
2008-02-23 13:03     ` Niklas Holsti
2008-02-22 19:11 ` Dmitry A. Kazakov
2008-02-23  0:16   ` adaworks
2008-02-22 19:33 ` Larry Kilgallen
2008-02-22 20:47 ` Simon Wright
2008-02-22 21:27 ` Robert A Duff
2008-02-23  0:12   ` adaworks
2008-02-23 10:28     ` framefritti
2008-02-23 12:45     ` Dirk Heinrichs
2008-02-23 15:16     ` Robert A Duff
2008-02-23 16:47       ` adaworks
2008-02-23 18:47         ` Ray Blaak
2008-02-24  7:40           ` adaworks
2008-02-24  9:42             ` Ray Blaak
2008-02-24 20:41               ` adaworks
2008-02-25  2:37                 ` Ray Blaak
2008-02-25  7:06                   ` adaworks
2008-02-25 13:12                     ` Robert A Duff
2008-02-25 17:44                     ` Ray Blaak
2008-02-25 22:16                       ` Ray Blaak
2008-02-26  5:10                         ` John W. Kennedy
2008-02-26 19:08                           ` Ray Blaak
2008-02-26  7:11                         ` adaworks
2008-02-26 13:38                           ` Stephen Leake
2008-02-26 14:56                             ` adaworks
2008-02-26 19:15                               ` Ray Blaak
2008-02-26 19:13                           ` Ray Blaak
2008-02-26 21:25                             ` Ray Blaak
2008-02-27  1:15                               ` Robert A Duff
2008-02-26  7:06                       ` adaworks
2008-02-26 11:42                       ` Alex R. Mosteo
2008-02-26 15:05                         ` adaworks
2008-02-26 15:15                           ` Alex R. Mosteo
2008-02-24 17:26             ` Robert A Duff
2008-02-23 20:46         ` Robert A Duff
2008-02-24  7:31           ` adaworks
2008-02-24 17:20             ` Robert A Duff
2008-02-24 20:33               ` adaworks
2008-02-25  1:07                 ` Robert A Duff
2008-02-26  7:29                   ` adaworks
2008-02-26 19:22                     ` Ray Blaak
2008-02-27  1:58                       ` adaworks
2008-02-27 20:34                         ` Ray Blaak
2008-02-27 22:31                           ` Robert A Duff
2008-02-27 23:35                             ` Ray Blaak
2008-02-28  0:19                               ` Randy Brukardt
2008-02-28  9:18                               ` Georg Bauhaus
2008-02-29  5:57                             ` adaworks
2008-02-29  6:04                               ` Ray Blaak
2008-02-29 10:48                                 ` Alex R. Mosteo
2008-02-29 17:05                                 ` adaworks
2008-02-29 18:33                                   ` Ray Blaak
2008-02-29  6:10                           ` adaworks
2008-02-22 22:16 ` Jeffrey R. Carter
2008-02-23 13:44 ` Brian Drummond
2008-02-23 17:19   ` adaworks
2008-02-25  7:53 ` Jean-Pierre Rosen
replies disabled

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