IWETHEY v. 0.3.0 | TODO
1,095 registered users | 0 active users | 0 LpH | Statistics
Login | Create New User
IWETHEY Banner

Welcome to IWETHEY!

New C++ Templates killed Taligent.
Or so says [link|http://www.kuro5hin.org/comments/2003/5/26/22429/7674/119#119|this] post at K5.

I'm a fan of template when they're used appropriately, but I don't think this article has enough emphasis on one of the major problems of C++ templates: "bloat" from template code generation. This can be a huge problem in large, complex programs with lots of instantiations.

This is a hot-button for me because I worked at [link|http://www.wildcrest.com/Potel/Portfolio/InsideTaligentTechnology/WW87.htm|Taligent], the company that was trying to build a new, object-oriented operating system in C++. It could be argued that templates were the main reason that Taligent didn't succeed. (It could also be argued that nobody really wanted an overdesigned, object-oriented operating system. :-) After the Taligent system had templates inflicted on it, well over 1/2 of the object code in the system was the result of template instantiations, and it caused a huge performance degradation and ridiculous resource requirements. We ended up inventing all sorts of ugly [link|http://pcroot.cern.ch/TaligentDocs/TaligentOnline/DocumentRoot/1.0/Docs/books/WM/WM_193.html|hacks] to get rid of template code. Yuck.


I had wondered what did it in (other than the LRPD's observation about IBM shooting itself in the foot and reloading).

It's in a thread on C++ templates.

Cheers,
Scott.
New ROFL - that's some kind of karmic justice
-drl
New I'd further argue that it wasn't just templates.
The whole language doesn't scale.

When templates came out we tried to get some serious dynamism into our app (we had what amounted to two different internal implementations of valueholder depending on where you were using the domain object.

Result? 26 hour link times.

We had the vendor's compiler engineer on site and he did some things but ultimately it didn't work well.

We replaced the mechanism with a macro expansion to get decent link times.

We also switched to a massively parallel make system.

Touching a base class or core header file would result in howls of anguish.

I'll note that Cocoa is amazingly successful where Taligent failed. If you look into the taligent code base, you see a lot of NextStep-isms. Taligent was basically an attempt to clone NextStep using C++. It wasn't even thoroughly original in design and it failed because the language wasn't as capable as Objective C.

Another project that suffered the same fate was Lotus Improv. An N-dimensional spreadsheet with killer visualization capabilities. Written on NextStep, all attempted ports failed because they just couldn't work around the rigidity of "conventional" languages.

Stroustrup and Gosling ought to be tried for fraud.



"Packed like lemmings into shiny metal boxes.
Contestants in a suicidal race."
    - Synchronicity II - The Police
New I didn't know that about Improv.
I remember when it appeared and wanted something to use in it so I could get a copy and play with it! :-)

Wade.

Is it enough to love
Is it enough to breathe
Somebody rip my heart out
And leave me here to bleed
 
Is it enough to die
Somebody save my life
I'd rather be Anything but Ordinary
Please

-- "Anything but Ordinary" by Avril Lavigne.

     C++ Templates killed Taligent. - (Another Scott) - (3)
         ROFL - that's some kind of karmic justice -NT - (deSitter)
         I'd further argue that it wasn't just templates. - (tuberculosis) - (1)
             I didn't know that about Improv. - (static)

Yay! You got a... thing.
65 ms