C oder C++ - Lohnt es sich noch C zu lernen?
-
llllllllllllol schrieb:
Und ja: Ich empfinde C++ als high level(also höher als C).
Gründe: Wenn ich zB std:string statt char* nutze, dann kommt dieser Highlevelgedanke schon gut rüber. Und std:string is ja ein fester Bestandteil der Sprache C++. Außerdem ist (meiner Meinung nach) OOP eine höhere Abstraktionsebene. Jaja, mir is klar, dass man auch in C objekt orientiert programmieren kann, nur hat man in C keine Klassen, sondern vllt einen objektorientierten Hintergedanken.versteh mal den level einer sprache nicht als eine zahl, sondern als ein intervall, was mit seinen grenzen angibt, wie tief und wie hoch man ganz ohne mühe kommt.
dann setzen wie asm mal bei [0;0] an für ganz lowlevel.
ich mag keine obergrenze für levels angeben.und setzen wie mal c an bei [1;10}. c setzt fast bei 0 an, weils man schon fast assembler programmiert, aber nicht bei 0, weil nab doch nicht rohes assembler macht, ein opaar befehle nicht hat, unds hoch bis 10, weil mach schon ordentlich objektorientiert programmieren kann.
dann ist c++ bei [1;15]. c++ geht weiter nack oben im leistungsspektum aber enauso weit nach unten wie c. weiter nach oben gehts, wenn man std::strings benutzt, virtuelle methoden, zugriffsschutz, templates, exceptions. aber das ist alles ganz freiwillig.
java mag bei [3;14] zu suchen sein. gent mangels template-metaprogrammierung nicht so hoch. und setzt viel höher an, man kommt zum beispiel um Object und String ja gar nicht drumherum oder um exceptions.
und visual basic.net auch bei [3;14]. perl bei [7;17].
man kann in c++ ganz genauso ohne umstände low level programmieren wie in c.
-
Marcin schrieb:
farben noch netzwerk, sound, maus
@volkard
Kann es sein, dass du in deiner Programmierer-Laufbahn nicht über den PC-Tellerrand geblickt hast ?kindchen, als ich anfing, gab es noch PCs.
-
llllllllllllol schrieb:
Warum C verwendet wird? Weil die wichtigsten Betriebsysteme zum großen Teil (bsp : Windows) oder ganz (bsp: Linux) geschrieben sind.
Wobei der Anteil in Windows dramatisch abnimmt... bei Vista wird man nicht mal mehr sagen können, daß C einen wichtigen Anteil hat (vielleicht außer dem Bootloader).
-
kindchen, als ich anfing...
Also, wenn ich dein Beitrag richtig verstanden habe, würdest du Sachen wie GUI, netzwerk, sound, maus in den C++ Standard aufnehmen. Das hört sich eben nach nur PC-Programmierung-Denken.
Auf vielen Systemen ist es doch nicht sinnvoll bzw. umsetztbar.
-
Marcin schrieb:
kindchen, als ich anfing...
Also, wenn ich dein Beitrag richtig verstanden habe, würdest du Sachen wie GUI, netzwerk, sound, maus in den C++ Standard aufnehmen. Das hört sich eben nach nur PC-Programmierung-Denken.
Auf vielen Systemen ist es doch nicht sinnvoll bzw. umsetztbar.bisher hat sich noch kein compiler dran gestört etwas aus den standard nicht beherrschen zu können, außerdem kann man ebenen einführen wie 'c++ embedded' und 'c++ pc'
-
Marcin schrieb:
kindchen, als ich anfing...
Also, wenn ich dein Beitrag richtig verstanden habe, würdest du Sachen wie GUI, netzwerk, sound, maus in den C++ Standard aufnehmen. Das hört sich eben nach nur PC-Programmierung-Denken.
Auf vielen Systemen ist es doch nicht sinnvoll bzw. umsetztbar.wenn jemand was mit farbe programmiert und keine alternative läßt, dann legt er damit fest, daß das programm nicht auf einem toaster mit angeschlossenem fernschreiber funktionieren wird.
höfliche menschen werden versuchen, so zu schreiben, daß es auf dem pc automatisch mit farbe compiliert und auf dem toaster mit angeschlossenem fernschreiber ohne. insbesondere soll die farbe nur ein netter zusatz sein, aber ohne farbe soll die sache auch bedienbar sein.
gleiches gilt für die maus und den sound.
und auf rechnern ohne socketes gibts halt keinen multiplayermode und der mit dem pc kann gegen den mit toaster und fernschreiber nicht fern-tic-tax-toe spsielen.
aber der mit dem toaster mit fernschreiber hats immernoch den single-player-mode.
-
DEvent schrieb:
Nachteile C:
- man kann die Sichtbarkeit der Funktionen nicht beeinflussen
- man hat globale VariablenKann man wohl. Funktionen die außerhalb druckertreiber.c nicht sichtbar sein sollen, kommen halt nicht in den Header für externe Einbindungen rein. Und ich will dich nicht erschrecken, aber C++ hat auch globale Variabeln.
volkard schrieb:
java mag bei [3;14] zu suchen sein. gent mangels template-metaprogrammierung nicht so hoch. und setzt viel höher an, man kommt zum beispiel um Object und String ja gar nicht drumherum oder um exceptions.
und visual basic.net auch bei [3;14]. perl bei [7;17].
Magst du vielleicht deine Gedankengänge bezüglich Perl erläutern? Warum soll Java und VB.Net bei 3, Perl aber bei 7 anfangen?
-
minhen schrieb:
Warum soll Java und VB.Net bei 3, Perl aber bei 7 anfangen?
ka. vielelicht fängt perl auch bei 4 an. mir ging es nur dasrtum, daß c++ und c an der selben stelle anfangen.
-
DEvent schrieb:
Nachteile C:
...
- man hat globale VariablenEs ist ein Nachteil globale Variablen zu haben? wtf?

-
Ok, mich stört ja auch nur, dass du Perl höher ansetzt und das auch noch so extrem höher.
-
TactX schrieb:
Es ist ein Nachteil globale Variablen zu haben? wtf?

Es ist kein Nachteil, globale Variablen zu haben. Es ist ein Nachteil, sie ausschließlich zu haben!
@minhen
Zum Thema Verbergen: Da wären wir wieder bei der leidigen Diskussion über das Für und Wider von Header-Dateien. Jedenfalls bietet C++ einen meiner Meinung nach eleganteren Weg, Variablen zu verbergen.
-
Reyx schrieb:
TactX schrieb:
Es ist ein Nachteil globale Variablen zu haben? wtf?

Es ist kein Nachteil, globale Variablen zu haben. Es ist ein Nachteil, sie ausschließlich zu haben!
Da stimme ich zu. Nur hat DEvent das nicht gesagt. Immer wieder lustig wie man sich Argumente zurechtlügt.
-
Reyx schrieb:
TactX schrieb:
Es ist ein Nachteil globale Variablen zu haben? wtf?

Es ist kein Nachteil, globale Variablen zu haben. Es ist ein Nachteil, sie ausschließlich zu haben!
Kann mir mal jemand erklären, was eine globale Variable in C oder C++ sein soll? Ich kann keine finden.
void f() { test = 3; } int test;klappt nicht, also ist test offenbar keine globale Variable, weil in f nicht sichtbar. Abgesehen davon gibt es sogar in C Möglichkeiten, die Sichtbarkeit zu begrenzen ('static').
-
Marc++us schrieb:
llllllllllllol schrieb:
Warum C verwendet wird? Weil die wichtigsten Betriebsysteme zum großen Teil (bsp : Windows) oder ganz (bsp: Linux) geschrieben sind.
Wobei der Anteil in Windows dramatisch abnimmt... bei Vista wird man nicht mal mehr sagen können, daß C einen wichtigen Anteil hat (vielleicht außer dem Bootloader).
Deswegen ist Windows Vista auch total verbugt *g*.
@volkard: Aber wenn man in C OOP programmiert dann hat man (wie ich bereits sagte) höchstens einen objektorientierten Hintergedanken, wobei in C++ OOP vollkommen umgesetzt wird, sprich die Sprache unterstützt OOP auch mit Schlüsselwörtern.
Klar muss man in C++ nicht OOP programmieren...klar kann man in C++ genauso lowlevel programmieren wie in C, aber dann ist es fast schon wieder C.

-
TactX schrieb:
Reyx schrieb:
TactX schrieb:
Es ist ein Nachteil globale Variablen zu haben? wtf?

Es ist kein Nachteil, globale Variablen zu haben. Es ist ein Nachteil, sie ausschließlich zu haben!
Da stimme ich zu. Nur hat DEvent das nicht gesagt. Immer wieder lustig wie man sich Argumente zurechtlügt.
Es ist ein riesengroßer Nachteil Variablen global zu definieren. Da man keine Möglichkeit hat, diese z.B. readonly zu machen, könnte man theoretisch den Wert dieser Variable in einem beliebigen Codeteil ändern.
zB in druckertreiber.c ist jetzt eine globale Variable DruckerZeile.
in joistick.c könnte ich jetzt DruckerZeile verändern und damit den ganzen Druckerjob kaputt machen.
Gut, ist ein schlechtes Beispiel aber mir fällt grad kein besseres ein.Aufjeden Fall bietet C++ mit Klassen ein weitaus bessere Möglichkeit Daten und Methoden zu kapseln und ihre Sichtbarkeit zu steuern.
Seit wann ist die STL ein fester Bestandteil von C++ ? STL ist eine einfach Bibliothek, wie iostream, math, usw, benutzt es oder lass es.
Was sind den die achsotolle Vorteile von C ?
-
STL ist Standard C++, nutzt es oder mach weiter C
-
problem an globalen variablen ist das sie zu abhängikeiten führen und jede funktion die globale variablen benutzt side effects bekommt, d.h.
bei einer funktion wieint add(int a, int b) { return a + b; }kann man sich immer sicher sein was hinten rauskommt, die funktion ist "berechenbar"
wenn die funktion side effekte hat kannst du dir nie recht sicher sein, es ist die hölle sowas zu debugen, du musst dir nicht nur die parameter ankucken welche du übergibst sondern auch 10 andere funktion die zu unterschiedlichen zeiten usw. aufgerufen werden
-
DEvent schrieb:
TactX schrieb:
Reyx schrieb:
TactX schrieb:
Es ist ein Nachteil globale Variablen zu haben? wtf?

Es ist kein Nachteil, globale Variablen zu haben. Es ist ein Nachteil, sie ausschließlich zu haben!
Da stimme ich zu. Nur hat DEvent das nicht gesagt. Immer wieder lustig wie man sich Argumente zurechtlügt.
Es ist ein riesengroßer Nachteil Variablen global zu definieren. Da man keine Möglichkeit hat, diese z.B. readonly zu machen, könnte man theoretisch den Wert dieser Variable in einem beliebigen Codeteil ändern.
Wow, du hast den Sinn von globalen Variablen erkannt.

Dass es Situtation gibt wo man auf globale Variablen nicht verzichten kann muss ich nicht erklären, oder?
-
cout ist global. ist ganz praktisch so.
der seed von rand und srand iast global. ist ganz praktisch so.
ok, viel mehr beispiele fallen mir nicht ein. aber da muss doch irgend einer zugeben, daß gloable variablen ganz praktisch sein können.
-
DEvent schrieb:
Seit wann ist die STL ein fester Bestandteil von C++ ? STL ist eine einfach Bibliothek, wie iostream, math, usw, benutzt es oder lass es.
lölle!
Seit wann? kA, auf jedenfall ist es nun im C++ Standard.