Hallo zusammen,
ich bin noch ziemlich am Anfang, C++ zu lernen, und ich stoße ab und an
auf das Problem, dass ich nicht weiß, wie ich bestimmte Sachen
aussprechen sollte.
Irgendwann habe ich mal gemerkt, dass ich mir Sachen, die ich nicht
aussprechen kann, auch nicht merken kann.
Wie würde man die folgende Codezeile in natürlicher Sprache bezeihnen:
1
vector<double>v1{1.1,2.2,3.3,4.4,5.5};
Irgendetwas wie:
"Deklariere ein Objekt v1 der Template-Klasse vector mit der
Konkretisierung double und definiere es mit den
Initialisierungs-Elementen 1.1 bis 5.5" ?
Allgemein: Kennt jemand einen guten C++-Einführung-Kurs mit gesprochener
Sprache? Als Präsentation, Video, etc.
Walter T. schrieb:> Wie würde man die folgende Codezeile in natürlicher Sprache bezeihnen:> vector<double> v1{1.1, 2.2, 3.3, 4.4, 5.5};> Irgendetwas wie:> "Deklariere
Defininere
> ein Objekt v1 der Template-Klasse vector mit der> Konkretisierung double und definiere
initialisiere
> es mit den Initialisierungs-Elementen 1.1 bis 5.5" ?
Eine Definition legt eine Variable an, eine Deklaration macht sie
bekannt, eine Initialisierung belegt sie mit einem initialen Wert.
Walter T. schrieb:> Mich interessieren mehr die Typenbezeichnungen mit Größer-Kleiner-Guillemets.
Template-Klasse ist dafür wohl schon die richtige Bezeichnung, auch wenn
mir eigentlich "Klassen-Template" lieber wäre, denn es ist ja eben
selbst keine Klasse, sondern nur eine Vorlage für Klassen.
Ob jetzt "Konkretisierung double" eine gute Bezeichnung ist?
Letztendlich ist double hier ein Template-Parameter. Ich wüsste jetzt
auch nicht, wie man es formalsprachlich besser bezeichnen könnte. Ich
nenne es meistens lax einen "vector aus double", ähnlih wie bei Arrays.
Korrekter wäre glaube ich:
Instantiiere das Klassen-Template "vector" mit dem Typ-Argument
"double", definiere ein Objekt "v1" von diesem Typ, und initialisiere es
mit einer Initializer-Liste.
Ein wichtiger Punkt ist hier dass "vector" keine Klasse ist, sondern
ein (Klassen-) template. Wenn man es mit Argumenten (hier: "double")
instantiiert, erhält man eine Klasse (vector<double>).
Walter T. schrieb:> Allgemein: Kennt jemand einen guten C++-Einführung-Kurs mit gesprochener> Sprache? Als Präsentation, Video, etc.
Das Problem ist dass C++ sehr komplex ist. Eine Video-Einführung in C++
wäre sehr lang. Das lernt man daher besser mit Büchern. Einzelne Talks
zu spezifischen C++-Themen gibt's natürlich viele, insbesondere
Konferenz-Mitschnitte.
mMn macht es wenig Sinn zu versuchen, gelesenen Code in natürliche
Sprache zu übersetzen. Das ist wie bei Fremdsprachen; diese muss man
letztendlich auch "direkt" verstehen lernen, statt im Kopf erst alles in
die Muttersprache zu übersetzen. Gerade bei komplexen Sprachen wie C++
würde die Übersetzung schnell so verworren, dass man noch weniger
versteht.
Niklas G. schrieb:> Instantiiere das Klassen-Template "vector" mit dem Typ-Argument> "double", definiere ein Objekt "v1" von diesem Typ, und initialisiere es> mit einer Initializer-Liste.
Danke!
Niklas G. schrieb:> Das Problem ist dass C++ sehr komplex ist. Eine Video-Einführung in C++> wäre sehr lang. Das lernt man daher besser mit Büchern.
Das ist klar. Der Breymann hat in seiner aktuellen Ausgabe vom Oktober
2020 1007 Seiten.
Niklas G. schrieb:> mMn macht es wenig Sinn zu versuchen, gelesenen Code in natürliche> Sprache zu übersetzen. Das ist wie bei Fremdsprachen; diese muss man> letztendlich auch "direkt" verstehen lernen, statt im Kopf erst alles in> die Muttersprache zu übersetzen.
Fremdsprachen sind ein guter Vergleich. Bei allen Fremdsprachen, die ich
bislang gelernt habe, bin ich erst auf einen grünen Zweig gekommen,
nachdem ich gelernt habe, wie man einen geschriebenen Satz laut
vorliest. Vorher ist es nur eine Ansammlung von Zeichenketten.
Lerntypen sind unterschiedlich. Bei mir hat dabei gesprochene Sprache
einen ähnlich hohen Stellenwert wie Handskizzen.
Schon allein deswegen, weil man sonst dem Eichhörnchen, das Nüsse aus
dem Vogelhäuschen klaut und gerade zum Fenster hereinschaut, nicht
erklären kann, woran man gerade knobelt.
Walter T. schrieb:> Allgemein: Kennt jemand einen guten C++-Einführung-Kurs mit gesprochener> Sprache? Als Präsentation, Video, etc.
Ich kenne keinen, aber ich empfehle, eher auf englisch zu suchen. Es
gibt mehr Universitäten, die ihre Vorlesungen auf Englisch
veröffentlichen als auf Deutsch. Ich glaube, das MIT hat viele
Vorlesungsvideos.
Walter T. schrieb:> Wie würde man die folgende Codezeile in natürlicher Sprache bezeihnen:>
1
>vector<double>v1{1.1,2.2,3.3,4.4,5.5};
2
>
> Irgendetwas wie:> "Deklariere ein Objekt v1 der Template-Klasse vector mit der> Konkretisierung double und definiere es mit den> Initialisierungs-Elementen 1.1 bis 5.5" ?
Ich würde bei der natürlichsprachigen Bezeichnung
ausblenden, dass vector<T> eine Template-Klasse
ist. Das geht früher oder später ins Blut über und
es wird für dich selbstverständlich.
"Definiere einen Vector v1 und initialisiere ihn
mit den Werten 1.1, 2.2, 3.3, 4.4 und 5.5."
merciless
Niklas G. schrieb:> Korrekter wäre glaube ich:>> Instantiiere das Klassen-Template "vector" mit dem Typ-Argument> "double", definiere ein Objekt "v1" von diesem Typ, und initialisiere es> mit einer Initializer-Liste.
In dem Fall ist es eigentlich wichtiger, zu wissen, was ein std::vector
ist und macht. Dann ergibt sich der ganze Rest von selbst.
Oliver
Dussel schrieb:> Ich kenne keinen, aber ich empfehle, eher auf englisch zu suchen
Deutsch oder englisch ist mir erst einmal egal. Aber nach guten Videos
suchen, halte ich für unmöglich.
Zum meinen Internet-Anfangstagen, als Google noch nicht existierte und
AltaVista und Lycos der letzte Schrei waren, wurden gute Websites durch
Mundpropaganda geteilt. Bei Google findet man auch kaum noch "sinnvolle
Ergebnisse" after:2017 -Pinterest -quora, ohne genau zu wissen, nach
welchem Video man sucht. Die Google-Suche hat die Browser-Adresszeile
fast zu 100% ersetzt.
Walter T. schrieb:> Deutsch oder englisch ist mir erst einmal egal. Aber nach guten Videos> suchen, halte ich für unmöglich.
Such nach cppCon. Da gibt es neben den fortgeschrittenen „bleeding
edge“-Vorträgen auch immer wieder mal C++-Grundwissen.
Oliver
Eins nach dem anderen :
vector<double> ist eine Spezialisierung der class std::vector für den
type <double>
1
namespacestd{
2
3
template<classT,//
4
classAllocator=allocator<T>>//
5
classvector{...
6
//************
vector<double> v1 ist eine Deklaration der Variablen v1 mit dem Typ
vector<double>
vector<double> v1 {1.1, 2.2, 3.3, 4.4, 5.5}; ist eine
Deklaration mit Initialisierung der Variablen v1 vom Typ
vector<double>
**************************
template< .. > : Die Zeichen < und > haben in diesem Zusammenhang
überhaupt nix mit der Bedeutung "grösser" oder "kleiner" gemein.
**************************
Anleitung deutschsprachig :
in "Startpage.com" den Such-Begriff länderspezifisch suchen: D,A,CH(D)
A. B. schrieb:> vector<double> ist eine Spezialisierung der class std::vector für den> type <double>
Nein,
es ist die Instanziierung des Templates std::vector<> für den Datentyp
double. Oder: es ist die Parametrierung des generischen Typs
std::vector<> mit dem Datentyp double.
std::vector<> ist ein template (generischer Datentyp)
std::vector<double> ist ein konkreter Typ.
In der Std-Lib gibt es keine Spezialisierung von std::vector<> für
double. Spezialisierungen sind Ausnahmen vom allg. template.
A. B. schrieb:> vector<double> v1 ist eine Deklaration der Variablen v1 mit dem Typ> vector<double>
Nein,
std::vector<double> v1;
ist die Definition der Variablen v1 (wobei jede Definition auch wieder
eine Definition ist).
Wilhelm M. schrieb:> A. B. schrieb:>> vector<double> ist eine Spezialisierung der class std::vector für den>> type <double>>> Nein,>> es ist die Instanziierung des Templates std::vector<> für den Datentyp> double. Oder: es ist die Parametrierung des generischen Typs> std::vector<> mit dem Datentyp double.>> std::vector<> ist ein template (generischer Datentyp)> std::vector<double> ist ein konkreter Typ.>> In der Std-Lib gibt es keine Spezialisierung von std::vector<> für> double. Spezialisierungen sind Ausnahmen vom allg. template.
Du könntest an dieser Stelle auf den std::vector<bool> hinweisen ;-)
Walter T. schrieb:> Wie würde man die folgende Codezeile in natürlicher Sprache bezeihnen:> vector<double> v1{1.1, 2.2, 3.3, 4.4, 5.5};
In meinem Kopf:
Deklariere einen Vektor v1 aus Doubles, mit den Werten 1.1 bis 5.5.
Da ist alles drin, was du brauchst, um das Ding zu verwenden:
- Typ des Containers (Vektor)
- Typ des Inhaltes (Double)
- initialer Inhalt