comp.lang.ada
 help / color / mirror / Atom feed
From: Olivier Henley <olivier.henley@gmail.com>
Subject: Re: Trivia: Ada packages are great!
Date: Mon, 5 Nov 2018 09:56:06 -0800 (PST)
Date: 2018-11-05T09:56:06-08:00	[thread overview]
Message-ID: <9d824998-00fb-4c65-8b49-2183af65366a@googlegroups.com> (raw)
In-Reply-To: <98c7d0b5-2262-4246-bb4f-6dde1d59ff6b@googlegroups.com>

> Except when the original and target package names need to differ or are in a different package hierarchies. 

I do not get this one? 

> Or perhaps somebody decides that what was originally sitting alone in a cosy Utils package needs to be integrated within an already existing (and crowded) Our_Very_Complex_System.Utilities.Helpers. 

I disagree. 

1. 99% of the time, people have their own 'utils, math etc' that does exactly what 25 other 'projects' does and NOBODY tries or even care to merge into a cohesive 'utils, math etc' package. 

2. Merging code under the same umbrella is tedious, cut, copy, paste, rename  etc but not hard. At least it removes complexity. Keeping alive duplicate type naming through 'disfigure' mechanism is another story. C++ big projects are full of that. 

> Which, considering your assertion that the target is a MUCH bigger codebase, would be the case almost certainly. 

hundreds++ of visual studio projects. 

> Unfortunately, no. Complex projects are complex in whatever language and code migration and integration are hard, for everybody. 

The problem I had would have been easily solved in Ada. The guy would have named his code cathedral something like: eg. ConsultingCompanyCathedral.AnUsualTypeName and merging would have not clashed at all because since the beginning of times the official Matrix type would have been forcefully scoped eg. OurFlagshipProduct.Whatever.AnUsualTypeName 

> Interestingly, the feature that allows C++ namespaces to exists in multiple files, makes the code migrations easier, because new definitions can be added to existing namespaces without any need to modify existing files. This also means that new features can be written and tested in an isolated environment, with target namespaces already in mind, and then new files just added to the project. In comparison (and in this context), Ada couples logic and physical designs, which is not always wanted.

Merging new clashing type names AND file names with cast in stone, legacy types (not namespaced) that are visible everywhere + some of those new types declared inside classes + forward declare + heavy use of anonymous namespace + partial implementation in .h files happened to be a nightmare.

Sidenote: This I love. You are presenting the C++ capabilities conceptually 'sandboxed', eluding the fact that it exposes SO much potentially interacting 'skewed capabilities' that facing the 'working, proper, clean context' for those capabilities to actually behave like expected is rarely, very rarely, the case. 

What you describe works fine with people sharing the same architectural conventions, with super good doc, with very tight knowledge of C++ exceptions to exceptions, with small code base, with same epoch code base. Once you toss some of those aspects out, to name a few, the whole thing becomes ... IMO, a madhouse.

In real life, companies have to hire hundreds of C++ guys to push legacy and/or new stuff forward. I think we are either morons or there is an obvious problem with the tech, yours to choose. I never worked with a huge Ada code base so I cannot pinpoint typical cases gone wrong, but the fact that things are "more square" and because I build and inspect relatively big open-source Ada project from time to time it appears to me that Ada is light years more truthful to help solving a practical goal at hand.


  parent reply	other threads:[~2018-11-05 17:56 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-02 21:11 Trivia: Ada packages are great! Olivier Henley
2018-11-05 10:39 ` Maciej Sobczak
2018-11-05 12:39   ` Björn Lundin
2018-11-06  8:52     ` Maciej Sobczak
2018-11-06 13:02       ` Olivier Henley
2018-11-07  7:02         ` Maciej Sobczak
2018-11-07  8:55           ` G. B.
2018-11-07 12:40           ` Olivier Henley
2018-11-08 12:35             ` Maciej Sobczak
2018-11-08 13:12               ` Olivier Henley
2018-11-09  2:15               ` gautier_niouzes
2018-11-07  8:53       ` Björn Lundin
2018-11-07 10:56         ` Maciej Sobczak
2018-11-07 18:27           ` G. B.
2018-11-08 12:20             ` Maciej Sobczak
2018-11-09  5:45               ` G. B.
2018-11-09  8:24                 ` Maciej Sobczak
2018-11-09  9:03                   ` Dmitry A. Kazakov
2018-11-12  6:33                   ` G. B.
2018-11-05 17:20   ` Olivier Henley
2018-11-05 17:56   ` Olivier Henley [this message]
2018-11-05 18:07     ` Simon Wright
2018-11-05 19:37       ` Jeffrey R. Carter
2018-11-05 20:04         ` Olivier Henley
2018-11-05 20:12         ` Olivier Henley
2018-11-05 18:29     ` Olivier Henley
2018-11-05 20:03     ` Olivier Henley
2018-11-05 20:40     ` Olivier Henley
2018-11-08  4:46 ` gautier_niouzes
2018-11-08 12:28   ` Maciej Sobczak
2018-11-08 13:27     ` Olivier Henley
2018-11-08 14:44     ` gautier_niouzes
2018-11-08 15:01       ` Olivier Henley
2018-11-08 16:14         ` Simon Wright
2018-11-08 16:28           ` Olivier Henley
2018-11-11  6:49             ` Randy Brukardt
2018-11-11  7:01     ` Randy Brukardt
2018-11-11  7:01   ` Randy Brukardt
replies disabled

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