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:20:45 -0800 (PST)
Date: 2018-11-05T09:20:45-08:00	[thread overview]
Message-ID: <611c4691-f691-450c-845f-9d03a2d4fd77@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.

You can argue/present it the way you want but stitching official, cast in stone, legacy types (not namespaced) that are visible everywhere + new public types declared inside classes + forward declare + anonymous namespace + partial implementation in .h files is a ****** nightmare. It is so convoluted that you end up fighting Visual Studio for the whole thing to compile under thousands of misleading errors so ... I fail to see where, practically, there is such thing as "C++ (...) makes the code migrations easier".

This I love: presenting the C++ capabilities conceptually 'sandboxed', forgetting that it exposes SO much potentially 'skewed capabilities' that facing the 'working, proper, clean context' for those capabilities to actually behave like expected is virtually impossible.

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 a madhouse. 

Look. In real life, companies have to hire hundreds of C++ guys to push legacy or new stuff forward. We are either morons or there is an obvious problem with the tech, yours to choose. 






  parent reply	other threads:[~2018-11-05 17:20 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 [this message]
2018-11-05 17:56   ` Olivier Henley
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