🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
2 messages
2 total messages Started by Gerhard Traeger Mon, 04 Mar 1996 19:43
most-faq: template instantiation&compiler specifics
#1747
Author: Gerhard Traeger
Date: Mon, 04 Mar 1996 19:43
69 lines
4061 bytes
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.

> Die Betonung liegt uebrigens durchaus auf "funktionsfaehig" und gemeint
> ist nicht die Beschreibung, in der der Compiler behauptet, was der Compiler
> kann!
MS:Introducing Visual C++(2.0): MSVC 2.0 (nutzbar nur fuer Win32, fuer
Windows3.1 geht nur 1.5) unterstuetzt Funktionen- und Klassen-Templates.
Offensichtlich problemlos, den ausser dieser Behauptung ist kein weiterer
Hinweis notwendig.
(O-Ton Colin Begg Colin@begg.octacon.co.uk:
 - >Template classes in Borland C++ are very useful. Does anyone know
 - >about an equivalent of this concept in MSVC++, or is that too
 - >difficult for microsoft developpers ?...
 - Yes, as is exception handling or other C++ V3 stuff.)

>: 1. Borland-C++:
>:    Template-Deklaration und -Definition in die header-Datei schreiben,
>Zu fordern, dass es so gemacht wird, ist nicht Standard konform.
O-Ton jjenkins@wpo.borland.com (Jeff Jenkins at Borland International):
- Why not just stick the template class in the header, declarations,
- definitions and all!  Then #include it where you need it!
Mag sein, dass er nicht zu den Compiler-Entwicklern gehoert. Aber schockiert
hat er mich trotzdem.

>:    - header und source den gleichen Basisnamen haben und
>:    - alle Quellen im gleichen Verzeichnis stehen.
>Nein. Das ist nicht unbedingt noetig (zumindest nicht fuer den
>generellen Ansatz; fuer die Implementation in SUN C++ schon...).
Die meinte ich auch. Bisher habe ich nur g++2.7.2/linux-1.2.13(a.out) und
SUN C++ 4.0.1 selber ausprobiert.

> 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).

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

>Mit Standard konformen Compilern kommt das wieder...
>I am a realistic optimist
Ein Freund der Widerspruechlichkeit!
(schon mal einen SUN-SPARC-Printer an einer SUN unter SUN-Solaris 2.4 mit 
dem SUN-admintool verwaltet? Oder ein X11-Programm auf SUN10/C++4.0.1 
portiert, dass irgendwo eine globale Variable "stat" hatte? Die Laufzeit-
fehlermeldungen sind ungeheuer reproduzierbar und aufschlussreich :-/

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.

MfG, Gerhard.
Re: most-faq: template instantiation&compiler specifics
#1750
Author: 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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads