Forum: PC-Programmierung Adjektiv zu Template


von S. F. (deffman)


Lesenswert?

Hi, wollte mal fragen wie denn das Adjektiv zu Templates heißt (auf 
englisch templated)??? Templatisiert?!? Bei google findet man das zwar 
öfter, aber irgendwie finde ich, dass sich das doch sehr nach Denglisch 
anhört. Schreibe gerade meine Masterthesis und finde das hört sich 
irgendwie nicht wirklich wissenschaftlich an. Habt ihr bessere 
Vorschläge?!

Es geht vor allem um den Satz:

Dass die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW nicht auch über 
den Konstruktor übergeben werden, liegt an der Gegebenheit, dass diese 
bei der Deklaration der templatisierten Socketinstanzen vom Typ 
simple_target_socket_tagged und simple_initiator_socket_tagged vom 
Präprozessor benötigt werden.

Macht der Satz so überhaupt Sinn für einen Außenstehenden? Ich weiß 
persönlich halt was ich meine, aber ob das jmd anderes versteht?

Bin für alle Vorschläge dankbar!

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Statt "templatisiert" vielleicht "mittels eines Templates 
realisiert/implementiert" verwenden?

von Klaus W. (mfgkw)


Lesenswert?

oder "templatebasiert"?
Das wäre etwas kürzer; der Satz ist eh ziemlich überladen.

von Nils (Gast)


Lesenswert?

oder so:
> ... dass diese bei der Deklaration der templatisierten Socketinstanzen ...
... dass diese bei der Deklaration der Template-basierten 
Socketinstanzen ...

von Klaus W. (mfgkw)


Lesenswert?

:-)

von Nils (Gast)


Lesenswert?

... Klaus Wachtler schrieb ...
Geichzeitig ein Gedanke, nur anders geschrieben.

von Zwie B. (zwieblum)


Lesenswert?

> liegt an der Gegebenheit
wie ist denn so die Gegebenheit? Eckig, rund, etwas wie eine Wiese oder 
doch eine Mauer? Hast du die verlötet?

Würd' mal so vorschlagen:
Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden nicht über
den Konstruktor übergeben werden, sondern bei der Deklaration der 
Socketinstanzen. ....

von S. F. (deffman)


Lesenswert?

Hi, danke schon mal für eure Tips. Okay templatebasiert hört sich doch 
schon einiges besser an :)

@ Klaus, ja da muss ich dir zustimmen. Habe gerade beim Durchlesen auch 
gedacht, dass da ziemlich viel Information in einem Satz steckt.

So besser? :

Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen 
nicht über den Konstruktor übergeben, da sie schon bei der Deklaration 
der templatebasierten Socketinstanzen vom Präprozessor benötigt werden.

Gruß
Stefan

von Zwie B. (zwieblum)


Lesenswert?

Das "hingegen" schreit nach einem "sondern", etwa:

Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen
nicht über den Konstruktor übergeben, sondern schon bei [....], da sie 
der Präprozessor bei der Deklaration der templatebasierten 
Socketinstanzen benötigt.

von S. F. (deffman)


Lesenswert?

@ Zwie: Danke auch für den Tip! Hm davor beschreibe ich eben die 
restlichen Parameter, die alle in einer Struktur gekapselt über den 
Konstruktor übergeben werden. Nun will ich halt erklären, warum 
ausgerechnet diese vier Variablen mit Templates definiert werden. 
Deshalb halt das hingegen...

Aber gut glaub das hingegen kann ich auch einfach weglassen. glaube dann 
müsste es so einigermaßen passen.

von Mark B. (markbrandis)


Lesenswert?

Wenn es schon um eine Masterarbeit geht: "templatisiert" wäre dann ein 
Partizip. ;-)

von Vlad T. (vlad_tepesch)


Lesenswert?

Zwie Blum schrieb:
> Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen
> nicht über den Konstruktor übergeben, sondern schon bei [....], da sie
> der Präprozessor bei der Deklaration der templatebasierten
> Socketinstanzen benötigt.

Das ist fachlich falsch! Zzumindest, wenn es um c++ geht.
Da hat der Präprozessor mit Templates nichts zu tun, das ist Sache des 
Kompilers.

von S. F. (deffman)


Lesenswert?

@ Vlad

Ja es geht um C++. Also:

das sie schon bei der[...]vom Compiler benötigt werden?

gruß und Danke!

von Arc N. (arc)


Lesenswert?

S. F. schrieb:
> @ Vlad
>
> Ja es geht um C++. Also:
>
> das sie schon bei der[...]vom Compiler benötigt werden?
>
> gruß und Danke!

Übersetzung, Compilierung, Code-Erzeugung?
Nimmt man es beim anderen Satz "dass diese bei der Deklaration der 
templatisierten Socketinstanzen vom Typ
simple_target_socket_tagged und simple_initiator_socket_tagged vom
Präprozessor benötigt werden." ganz genau, müsste es eigentlich "dass 
diese (vom Compiler, zur Code-Erzeugung) bei der Instantiierung der 
generischen Socketklassen vom Typ... benötigt werden" heißen.

von S. F. (deffman)


Lesenswert?

Hi,

ich dachte bis jetzt dass beispielsweise in meinem Fall

tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*  SI_read;

als Deklaration bezeichnet wird und

SI_read  = new 
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];

als die Definition.

Zumindest ist die Bezeichnung bei Visual Studio so. Und meiner Ansicht 
nach ist beides zusammen die Instanziierung eines Members. Bitte 
korrigiert mich, wenn ich daneben liege!

Gruß & Danke vielmals!

von Vlad T. (vlad_tepesch)


Lesenswert?

S. F. schrieb:
> SI_read  = new
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];

ist die instanzierung


bei funktionen differenziert man zwischen deklaration und definition

int foo(bool bar);

ist die deklaration

int foo(bool bar)
{
  return bar*bar;
}
ist die definition.

von S. F. (deffman)


Lesenswert?

Okay alles klar vielen Dank. Im Visual Studio gibt es die Bezeichnung 
Deklaration und Definition nämlich auch für Members (so wie ich es oben 
beschrieben habe)

Aber gut, dann wäre das ja jetzt geklärt!

Gruß
Stefan

von Rolf Magnus (Gast)


Lesenswert?

Hi,

ich dachte bis jetzt dass beispielsweise in meinem Fall
1
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>*
2
SI_read;

> als Deklaration bezeichnet wird und

Das ist eine Definition, wobei jede Definition auch gleichzeitig eine 
Deklaration ist.
1
 SI_read  = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs];

> als die Definition.

Nein, das ist keine Defininiton. Es ist eine Instanziierung und eine 
Zuweisung.

> Und meiner Ansicht nach ist beides zusammen die Instanziierung eines
> Members.

Der zweite Teil ist die Instanziierung eines namenlosen dynamischen 
Objekts (keines Members), dessen Adresse an SI_read zugewiesen wird. 
Wenn SI_read also ein Member sein sollte, ist es höchstens eine 
Member-Zuweisung.

von S. F. (deffman)


Lesenswert?

Hi Rolf,

vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich 
teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten 
darüber haben. Zumindest war es so bei mir an der FH. Viele verwenden 
die Begrifflichkeiten, aber keiner zu 100% sicher. So wundere ich mich 
auch dass es bei Visual Studio so ist.

Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke, 
und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
1
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>*
2
SI_read;

Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke, 
springt er in die Zeile
1
SI_read  = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs];

Gruß

von Rolf Magnus (Gast)


Lesenswert?

S. F. schrieb:

> vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich
> teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten
> darüber haben.

Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat.

> Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke,
> und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*
> SI_read;
>
>
> Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke,
> springt er in die Zeile
>
> SI_read  = new 
tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];

Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der 
richtigen Verwendung von Begriffen. Die haben auch schon nicht 
verstanden, was eine Bitmap eigentlich ist.

von Arc N. (arc)


Lesenswert?

Rolf Magnus schrieb:
> S. F. schrieb:
>
>> vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich
>> teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten
>> darüber haben.
>
> Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat.
>
>> Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke,
>> und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
>>
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>*
>> SI_read;
>>
>>
>> Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke,
>> springt er in die Zeile
>>
>> SI_read  = new
> tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t 
lm::tlm_base_protocol_types>[NR_OF_SIs];
>
> Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der
> richtigen Verwendung von Begriffen. Die haben auch schon nicht
> verstanden, was eine Bitmap eigentlich ist.

Auch die Bezeichnungen von MS sind richtig, da es in C/C++ mehrere 
Varianten gibt und alles zusammengefasst werden kann:
1
// Deklarationen
2
void aFunction(int aParameter);
3
extern Object anObject;
4
extern Object *anObjectPtr;
5
6
// Definitionen
7
typedef aType typeName;
8
void aFunction(int aParameter) {
9
}
10
11
// Deklaration und Definition
12
Object *anObjectPtr; 
13
// laut Standard ist das eine Zeiger-Deklaration und eine Definition, 
14
// da Speicher für ein Objekt vom Typ Zeiger auf Object reserviert wird
15
16
// Deklaration, Definition und Instantiierung, wenn es eine Klasse ist
17
Object anObject;
18
19
// Instantiierung
20
*anObjectPtr = new Object(); // Instantiierung

von Vlad T. (vlad_tepesch)


Lesenswert?

Arc Net schrieb:
> // Instantiierung
> *anObjectPtr = new Object(); // Instantiierung

hier ist der Stern zuviel.

Außerdem gehört der Stern bei der Definition an den Typ ;-P

von Rolf Magnus (Gast)


Lesenswert?

Arc Net schrieb:

> // Instantiierung
> *anObjectPtr = new Object(); // Instantiierung

Eben. Speziell das ist nur eine Instantiierung und keine Definition und 
auch keine Deklaration. Laut S. F. nennt Visual Studio es aber 
"Definition".

von Arc N. (arc)


Lesenswert?

Rolf Magnus schrieb:
> Arc Net schrieb:
>
>> // Instantiierung
>> *anObjectPtr = new Object(); // Instantiierung
>
> Eben. Speziell das ist nur eine Instantiierung und keine Definition und
> auch keine Deklaration. Laut S. F. nennt Visual Studio es aber
> "Definition".

Laut aktuellem ISO-C++-Draft 
(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf)
7 Absatz 8
"An object declaration, however, is also a definition unless it contains
the extern specifier and has no initializer (3.1). A definition causes 
the appropriate amount of storage to be reserved and any appropriate 
initialization (8.5) to be done."
C99 6.7 Absatz 5
"A declaration specifies the interpretation and attributes of a set of 
identifiers. A definition of an identifier is a declaration for that 
identifier that:
— for an object, causes storage to be reserved for that object;"

von S. F. (deffman)


Lesenswert?

Ah okay super vielen Dank!!!! Jetzt ists klar. Mal wieder super, dass 
unser Prof das in der Vorlesung nie erwähnt hat :)

Gruß
Stefan

von Иван S. (ivan)


Lesenswert?

Da Template ja im Deutschen Schablone heisst, würde ich "schablonisiert" 
vorschlagen.

Iwan

von Klaus W. (mfgkw)


Lesenswert?

wer wird denn hier on topic werden?

von Zwie B. (zwieblum)


Lesenswert?

Иван S. schrieb:
> würde ich "schablonisiert"
> vorschlagen.

"schablonisieren" oder besser "schablonieren" ... ist aber verdächtig 
nahe an "schwadronieren" dran ...

von Rolf Magnus (Gast)


Lesenswert?

@Arc Net:

Diese Ausschnitte haben irgendwie nichts mit der besagten Codezeile zu 
tun.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.