comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: how to tell gnatmake to send executables to a different directory when compiling multi source?
Date: Mon, 30 Jul 2012 14:25:20 +0200
Date: 2012-07-30T14:25:14+02:00	[thread overview]
Message-ID: <50167d29$0$6570$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <op.wh9axtd0ka8ora@aspire.local>

On 30.07.12 13:16, Vasiliy Molostov wrote:
> Nasser M. Abbasi <nma@12000.org> писал(а) в своём письме Mon, 30 Jul 2012
> 07:01:11 +0400:
> 
>> On 7/29/2012 7:20 PM, Vasiliy Molostov wrote:
>>
> 
>> I see Make as the lowest common denominator. Unless GPRBUILD can
>> be used to build both Ada, Java, C, C++, etc.. and can be used also
>> to invoke latex to update my pdf files and HTML web pages when my
>> .tex files changes, and I can use it to do my backups and all
>> the other tasks I use Make for, then I do not see something better
>> as a general tool.
> 
> Agree. A general tool is more useful than specialized one, of course.
> 
>> Only problem was when it comes to sending the object files
>> and the .exe to different places during the build. Ada is more
>> complicated and has more intermediate files generated.  If one
>> does not mind keeping all files generated in the same folder as
>> the sources, then the above is all what is needed for a basic
>> Ada project build.
> 
> So the problem here is how GNAt generates its output, and it is not
> related to make by itself, and can not turn other things into a devil.

You mean, compilation processes, in phases, number of intermediate
files, etc., should be kept simple and few, so that proud Make
loving people can continue doing what they seem to be doing?

I do use Make for auxiliary tasks. For starting tests runs.
For packaging. For transforming documentation. So don't get me wrong.
I like Make.

And indeed, Ada won't turn anything into anything else when that
already is. But it will expose a state of things with C files
and Make. That's the point: it lets you see things.

If a language defines "elaboration", if it states what it means
for one unit to depend on another, in source, and if a language
requires that compilers address the issue, then this language
create processes of production that are necessarily different
from what you get with C.

IMHO, the difference between Ada and C here shows a big blind
spot in the C world, one that can create cost of development and
frustrated programmers (porting software): a tool that is not
covered by the C standard. The blind spot has two aspects, and,
correspondingly, there are two ways of ignoring the blind spot,
blissfully, even after learning about it:

1) [socially] Since frustration and cost of preparing C source
files for compilation are ubiquitous, it is taken as normal.  It
will take something like the Ada experience to make them appear
as *not* normal if seen across language definitions. But this
new insight won't matter since everybody writes Makefiles (And,
for that matter, uses auto****, another non-C thing that could
not exist but for hysteric raisins).

2) [individually] C is a can-do-it language, top to almost
bottom. (Ada is more of a has-it language.) Therefore, can-do-it
people writing C will secure an opportunity of being proud of
having managed dependencies themselves (I-can-do-it).  So, for
any one given point in time, they have managed the dependencies
for the current set of C sources. Great!

Taken together, naturally, adding a working set of definitions
relating to dependence to C is fenced off, not only on the
ground that this reduces flexibility in individual cases, but
also becuase this addition would seem to take away your favorite
toys.

The Ada experience lets you see the devil in the details, when
it comes to all those changes. Bob Duff gave an example (of
compilation time being a tenth or less). Changes in the C world
require programmers who know both C and the dependency graph of
the entire software. Hence, this creates more opportunities for
more integration tests, all unneccessary to the extent that your
language defines dependence.

3) [economically] C is a good language for a business model
focussing on a certain class of tools dealing with dependence
of C source files, such as Make. Use the blind spot for gain.



  reply	other threads:[~2012-08-02 12:24 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-29  9:31 how to tell gnatmake to send executables to a different directory when compiling multi source? Nasser M. Abbasi
2012-07-29 10:00 ` Dmitry A. Kazakov
2012-07-29 11:35   ` Nasser M. Abbasi
2012-07-29 12:29     ` Patrick
2012-07-29 13:02       ` Nasser M. Abbasi
2012-07-29 13:49         ` Ludovic Brenta
2012-07-29 14:09           ` Nasser M. Abbasi
2012-07-29 15:35             ` Ludovic Brenta
2012-07-29 15:42               ` Patrick
2012-07-29 16:41                 ` Ludovic Brenta
2012-07-29 16:46                   ` Patrick
2012-07-29 17:35               ` Vasiliy Molostov
2012-07-29 19:40                 ` Dmitry A. Kazakov
2012-07-29 22:22                   ` Vasiliy Molostov
2012-07-29 19:46                 ` Robert A Duff
2012-07-30  0:20                   ` Vasiliy Molostov
2012-07-30  3:01                     ` Nasser M. Abbasi
2012-07-30  4:48                       ` Nasser M. Abbasi
2012-07-30 21:05                         ` Robert A Duff
2012-07-30  5:50                       ` Dmitry A. Kazakov
2012-07-30 11:16                       ` Vasiliy Molostov
2012-07-30 12:25                         ` Georg Bauhaus [this message]
2012-07-30 12:59                           ` Vasiliy Molostov
2012-07-30 14:07                             ` Georg Bauhaus
2012-07-30 13:03                           ` Nasser M. Abbasi
2012-07-30 14:02                             ` Georg Bauhaus
2012-07-30 19:40                             ` J-P. Rosen
2012-08-01  7:32                               ` Miles Bader
2012-08-01  9:37                                 ` Ludovic Brenta
2012-08-02  5:01                                   ` Miles Bader
2012-08-01 15:15                                 ` J-P. Rosen
2012-08-02 15:08                                   ` Robert A Duff
2012-08-02 16:37                                     ` J-P. Rosen
2012-07-30 19:50                             ` Ludovic Brenta
2012-07-30  3:21                     ` Nasser M. Abbasi
2012-07-30  8:19                       ` Simon Wright
2012-07-30  6:12                     ` Dirk Heinrichs
2012-07-30  6:40                     ` Ludovic Brenta
2012-07-30 10:31                       ` Vasiliy Molostov
2012-07-30 11:05                         ` Ludovic Brenta
2012-07-30 11:33                           ` Simon Wright
2012-07-30 12:16                           ` Vasiliy Molostov
2012-07-30 12:48                             ` Ludovic Brenta
2012-07-30 13:09                               ` Vasiliy Molostov
2012-07-30  6:06                 ` Dirk Heinrichs
2012-07-29 12:31     ` Nasser M. Abbasi
2012-07-29 13:46       ` Ludovic Brenta
2012-07-29 14:15         ` Simon Wright
2012-07-29 13:54     ` Dmitry A. Kazakov
2012-07-29 14:16       ` Nasser M. Abbasi
2012-07-29 14:32         ` Dmitry A. Kazakov
2012-07-30  5:57     ` General purpose build tools (was: Re: how to tell gnatmake to send executables to a different directory when compiling multi source?) Dirk Heinrichs
2012-07-30 10:50       ` Vasiliy Molostov
2012-07-30 11:10         ` Ludovic Brenta
2012-07-30 12:39           ` Vasiliy Molostov
2012-08-30 10:49           ` General purpose build tools Stephen Leake
2012-07-29 18:33 ` how to tell gnatmake to send executables to a different directory when compiling multi source? björn lundin
2012-07-29 19:06 ` onox
2012-07-31 11:12 ` Patrick
2012-07-31 11:30   ` Dmitry A. Kazakov
2012-07-31 11:31     ` Dmitry A. Kazakov
2012-07-31 11:34       ` Patrick
2012-07-31 12:33   ` Ludovic Brenta
2012-07-31 15:14     ` Patrick
2012-07-31 16:04       ` Ludovic Brenta
replies disabled

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