QuoteOriginally posted by: katastrofaQuoteOriginally posted by: CuchulainnQuoteOriginally posted by: katastrofaQuoteOriginally posted by: CuchulainnQuoteOriginally posted by: katastrofa@ "Modules would [...] most important of all remove that "are you seriously using this crap" look from non-C++ people's face when you explain them the massive hack that is the PIMPL Idiom."How?Absolutely.C# uses assemblies/dlls, interfaces and namespaces which is essentially modules that you can load into the application. So neat. I suppose Java is similar. Anecdotal evidence suggests C# developer productivity can be [3,4] times that of C++.DLL does not work with C++, only C. However, assemblies are possible in C++/CLI.pimp (aka Cheshire Cat) was invented by the late John Carolan in ~ 1988. It was needed at the time because of long compilation times on 286 pcs.Lack of modules is a major road block IMO. Consequences1. Top down decomposition into loosely couples subsystems difficult. Engineers work with block diagrams and less with Grammar, as @farmer has described.2. Cannot see the architecture until system has been coded.3. Maintenance costs.I am aware of modules' functionalities. I only don't see how they could replace PIMPL (which I find quite useful and don't see any problems with it, I'm not a programmer though; farmer's thread below? -- please...).What is a module in your definition? pimpl is useful and a fix. It's 80's technology. And these days we have smart pointers (see Meyers' item #22).I use PIMPL as an extra layer of abstraction, which allows more freedom in changing the code structure, without subsequent need to recompile the unchanged code that uses it. I've never thought of it as a fix or a hack, otherwise I wouldn't use it. OK, you can say that modules enable doing the same at the binary level, but from the code design viewpoint they are something else. I used to use modules in Fortran or once for callbacks in JavaScript...You can use something, you probably don't know any better
pimpl is a fix, but never mind. It is a code-level trick and does not scale.C# has assemblies which is a good benchmark for module. An assembly is self-reflective.Fortran modules are something else. AFAIR I think they are close to assemblies.