🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1750

Re: most-faq: template instantiation&compiler specifics

#1750
From: Dietmar Kuehl
Date: Mon, 04 Mar 1996 22:30
81 lines
4751 bytes
Hi,
Gerhard Traeger (root@gt-priv.m.eunet.de) wrote:
: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl) hat geschrieben:
: > Ich kann nicht nachvollziehen, dass dies die am haeufigsten gestellte
: > Frage ist.
: Ich gebe zu, ich hatte nicht nachgezaehlt. Nur "faq" ohne Vorsatz waere
: zu missverstaendlich gewesen. Aber clc++m hat wohl gegen diese Anfaenger-
: Frage auch einen a-priori-Filter.

Nein (ich weiss, dass clc++m keinen Filter dafuer hat, weil ich einer
der Moderatoren bin...). Es ist eine Frage, die derzeit in clc++m
diskutiert wird: Derzeit existierende C++ Compiler machen es halt nicht
befriedigend.

: > Eine Moeglichkeit ... aus den Files mit den Template Source spezielle
: > Objektfiles zu generieren
: Das heisst, der Compiler hat ein, optional waehlbares, Verzeichnis in dem
: er, ohne Ruecksicht auf die Position der Quellen im Dateibaum, diese 
: speziellen Objektfiles ablegt? Ich will schliesslich nicht staendig einen
: riesigen Include-Pfad angeben, der dann auch noch fuer jedes Template 
: durchsucht wird (ala Cfront, siehe Jan Willamowius).

Das ist, aus Standard-Sicht, ein Implementationsdetail... Aber was
spricht dagegen, einfach '.o' (oder '.obj' oder was man sonst erzeugt)
zu verwenden, um vorcompilierte Templates zu speichern (i.e. nicht
"echten" Objektcode, sondern eine Compiler interne Repraesentation).
Sowas kann man dann wie gewohnt in Libraries packen etc. (Object-files
werden ja auch nicht in irgendwelchen verschlungenen Pfaden
gespeichert). Instanziiert werden die Templates beim Linken: Die
noetige Information steckt ja in den Objektfiles. Ich kenne allerdings
keinen Compiler der es so macht und ich bin auch (zumindest noch;
interessieren wuerde es mich schon) kein Compilerbauer...

: >Ich verwende gelegentlich Klassen, deren Name, wenn ich alle Templates
: >ersetze (der Compiler ist bei Fehlermeldungen so freundlich, mir die
: >Arbeit abzunehmen :-), auf 1KB zugeht.
: Ich weiss, Makros sind boese, aber ich kuerze Instanzen von Templates mit
: Makros ab. Damit wird die Quelle wieder kurz und (fuer mich) uebersichtlich.
: Wozu soll eigentlich das Zurueckgehen bis auf die Grundtypen bei den Fehler-
: meldungen gut sein? Bisher nervt es mich nur.

Der Compiler weiss vermutlich nichts besseres. Ich kann damit auch
nichts anfangen, ausser manchmal.

: >Mit Standard konformen Compilern kommt das wieder...
: >I am a realistic optimist
: Ein Freund der Widerspruechlichkeit!

:-) Nun ja, bei ADA funitioniert es ja auch (schon lange). Das Problem
was die armen C++-Compilerbauer haben ist halt, dass sich die
Anforderungen staendig aendern bzw. geaendert haben, andererseits jeder
einen C++ Compiler haben will, der konform ist. Da werden die nicht
ganz so wichtigen Sachen eben etwas aufgeschoben... Templates sind
wichtig und sie funktionieren. Zumindest halbwegs. Der Luxus, dass man
Deklaration und Definition trennt, dass alles automatisch geht, usw.
der kann warten.

: (schon mal einen SUN-SPARC-Printer an einer SUN unter SUN-Solaris 2.4 mit 
: dem SUN-admintool verwaltet?

Das admintool habe ich vermieden, wo es ging. Inzwischen mache ich
keine Systemverwaltung mehr. Ich weiss aber, dass man es besser
vermeidet...

: Ich gebe ja zu, dass die explizite Instanzenbildung nicht schoen ist. 
: Nach meiner Erfahrung reduzieren Versuche zur trickreichen Automatisierung
: aber allzuoft nicht die Fehlerhaeufigkeit (des "Mensch-Maschine-Systems"),
: erhoehen aber den Aufwand zur Behebung des Fehlers erheblich. Eine
: "brute force"-Methode, die immer funktioniert, waere mir lieber als die
: Notwendigkeit, staendig die Fehler schlecht implementierter hoher Ideale
: umgehen oder ertragen zu muessen.

Nun, die brute-force-Methode funktioniert ja auch. Aber ich halte sie
nicht fuer besonders wartbar und umgehe bei Templates lieber die
Restriktionen indem ich eben z.B. den Code von den Source-files aus
include. Ich hoffe, dass das bald nicht mehr noetig ist... Immerhin ist
das wohl Teil des "g++-reno" Projekts.
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID: <4hfqub$d8r@news.BelWue.DE>
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
References: <4hfh4o$8br@Dortmund.Germany.EU.net>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl)
Newsgroups: de.comp.lang.c++
Subject: Re: most-faq: template instantiation&compiler specifics
Date: 4 Mar 1996 22:30:35 GMT
Organization: Fakultät für Mathematik und Informatik
Distribution: world
Message-ID: <4hfqub$d8r@news.BelWue.DE>
References: <4hfh4o$8br@Dortmund.Germany.EU.net>
Reply-To: dietmar.kuehl@uni-konstanz.de
NNTP-Posting-Host: uzwil.informatik.uni-konstanz.de
X-Newsreader: TIN [version 1.2 PL2]