Warum hat C++ so eine aufwendige Syntax?
-
Undertaker schrieb:
naja, ich war noch nie der meinung, dass C++ besonders nützlich ist. was soll's also - es stört mich nicht wirklich...

Nützlich ist C++ wirklich nicht. Man kann nur solche Sachen machen, wie Betriebssysteme programmieren oder Office-Anwendungen wie z. B. Microsoft Office oder eine Java Virtual Machine oder ebedded Systeme oder Interpreter oder Compiler für Programmiersprachen oder Raketensteuerungen oder Waschmaschinen. Man kann Systemnah programmieren oder auch objektorientiert oder funktional
.Habe ich irgendetwas vergessen? Gibt es irgendetwas, was ich mit einem Rechner im weitesten Sinne machen kann und mit C++ nicht geht? Also da fällt mir nichts ein.
Mit Templates kann man keine Funktionen aufrufen. Ich kenne auch keine Programmiersprache, mit der man in einer if-Abfrage Wiederholungen erreichen kann (also eine if-Schleife :p ). Templates sind einfach nicht dazu da.
-
Naja, wir sind halt alles nur Lemminge. Bjarne Stroustrup und Herb Sutter sind die Ober-Lemminge.
Sind halt alles Menschen, die nutzloses Zeug verbreiten. Das ganze investierte Geld in C++-Projekte hätte man auch verbrennen können. Vista... äh, Undertaker hat uns die Augen geöffnet.

-
darthdespotism schrieb:
Ich meine irgendwo gelesen zu haben das TMP Turing-Volllständig sei ...
http://wwwcs.uni-paderborn.de/cs/ag-madh/WWW/Teaching/2004WS/Perlen/HILBIG.pdf
-
Undertaker was du willst hatte Volkards mal als Projekt gestart: eine neue Sprache die C++ als Präprozessor hat, damit wäre all das was du willst (ein komplettes Programm während dem Compilieren auszuführen und dadurch Code zu erzeugen) möglich.
-
tntnet schrieb:
Undertaker schrieb:
naja, ich war noch nie der meinung, dass C++ besonders nützlich ist. was soll's also - es stört mich nicht wirklich...

Nützlich ist C++ wirklich nicht. Man kann nur solche Sachen machen, wie Betriebssysteme programmieren oder Office-Anwendungen wie z. B. Microsoft Office oder eine Java Virtual Machine oder ebedded Systeme oder Interpreter oder Compiler für Programmiersprachen oder Raketensteuerungen oder Waschmaschinen. Man kann Systemnah programmieren oder auch objektorientiert oder funktional
.ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
Artchi schrieb:
Naja, wir sind halt alles nur Lemminge. Bjarne Stroustrup und Herb Sutter sind die Ober-Lemminge.
Sind halt alles Menschen, die nutzloses Zeug verbreiten.na, übertreib' mal nicht so.
komplett sinnlos ist gar nichts und die leute haben ja auch ihren spass damit (den wir ihnen nicht nehmen wollen), das darfst du nicht vergessen.Artchi schrieb:
Das ganze investierte Geld in C++-Projekte hätte man auch verbrennen können.
hehe, es ist ja schon verbrannt

ich glaube, C++ projekte sind nie besonders wirtschaftlich.
-
Undertaker schrieb:
offenbar wird das function template nicht zur compile-time berechnet.
...und ich dachte, templates wären eine tolle sache
jetzt bin ich aber echt enttäuscht
Das ist ein grundlegendes Verständnis Problem.
square ist eine normale Funktion. Vergessen wir die Templates mal.
int square(int x) { return x*x; }Wenn wir nun
int x=square(2);schreiben, dann kann der Compiler dies vermutlich auf ein
int x=4;optimieren. aber zB in der Debug Version wird er diese Optimierung nicht durchführen. Und hier ist diese Optimierung garnicht erst möglich:
int x=square(rand());wie wir sehen: magie gibt es keine.
wenn wir nun templates hinzufügen: inwieweit ändern wir die funktion? GARNICHT.template<typename T> T square(T x) { return x*x; }es ist immer noch die selbe funktion. alles was mir gemacht haben ist uns schreibarbeit erspart. dieses template kann man auch ohne templates schreiben:
naemlich als square für int, float, double,... im Prinzip unendlich viele Varianten. Da aber unendlich viele Funktionen schreiben recht langweilig ist und man damit auch nie fertig wird, erstellt man ein template.Wir haben hier noch nichts was zur compiletime ausgeführt wird. es ist immer noch die gute alte square Funktion. Der Compiler kann sie optimieren, muss aber nicht.
Jetzt kommt die Magie der Templates:
Das Template selber wird ausgewertet, ergo die unendlich vielen square funktionen werden beim kompilieren erstellt. Wir können dies nun nutzen um eine square funktion zu schreiben die statisch ausgewertet wird:template<int X> struct Square { static const int Value = X*X; }; int x = Square<2>::Value;Aber man hat hier wieder einen Nachteil:
int x=Square<rand()>::Value;funktioniert nicht.
-
Undertaker schrieb:
tntnet schrieb:
Undertaker schrieb:
naja, ich war noch nie der meinung, dass C++ besonders nützlich ist. was soll's also - es stört mich nicht wirklich...

Nützlich ist C++ wirklich nicht. Man kann nur solche Sachen machen, wie Betriebssysteme programmieren oder Office-Anwendungen wie z. B. Microsoft Office oder eine Java Virtual Machine oder ebedded Systeme oder Interpreter oder Compiler für Programmiersprachen oder Raketensteuerungen oder Waschmaschinen. Man kann Systemnah programmieren oder auch objektorientiert oder funktional
.ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
Warum bin ich (und nicht nur ich) regelmäßig blöd genug um so jemandem etwas erklären zu wollen? C++ nichtmal ansatzweise verstehen... aber scheiße finden kann mans ja.

-
Undertaker schrieb:
...
ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
..... wie das reichhaltige Portfolio an Betriebssystemen, embedded systems, virtual machines, ...., die in Java, Smalltalk, Ruby, ... geschrieben wurden, beweist.

Schon lustig, dass die Vorteile, die anderen Sprachen erst mit C/C++ ermöglicht wurden, als Argument gegen C/C++ verwendet werden.

Gruß,
Simon2.
-
Mr. N schrieb:
Warum bin ich (und nicht nur ich) regelmäßig blöd genug um so jemandem etwas erklären zu wollen? C++ nichtmal ansatzweise verstehen... aber scheiße finden kann mans ja.

Für das Verhalten gibt's nur eine Erklärung: grenzenloser Optimismus
(zumindest bei mir - da braucht's schon einiges, um jemanden aufzugeben)
-
CStoll schrieb:
Für das Verhalten gibt's nur eine Erklärung: grenzenloser Optimismus
(zumindest bei mir - da braucht's schon einiges, um jemanden aufzugeben)Langsam verliere ich für gewisse Leute aber langsam den Optimismus
Aber mehr als versuchen kann man ja leider nicht.
-
Simon2 schrieb:
Undertaker schrieb:
...
ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
..... wie das reichhaltige Portfolio an Betriebssystemen, embedded systems, virtual machines, ...., die in Java, Smalltalk, Ruby, ... geschrieben wurden, beweist.

Schon lustig, dass die Vorteile, die anderen Sprachen erst mit C/C++ ermöglicht wurden, als Argument gegen C/C++ verwendet werden.

Gruß,
Simon2.
Nenn mir mal einen Grund wieso man un Ruby kein Betriebsystem schreiben kann. Ruby, wie C++ und Java und Brainfuck sind Turing-Vollstaendige Sprachen. Man muss doch nur einen passenden Compiler schreiben...
Aus Maschinenebene unterscheiden sich die Sprachen doch nicht. Die Sprachen unterscheiden sich nur fuer uns Menschen durch die Sprachkonstrukte, die es einem bequemer machen damit zu programmieren. Wenn wir schon Sprachen vergleichen, dann nur durch a) ist die Sprache Turing-Vollstaendig und b) wie bequem/nuetzlich sind die Sprachkontrukte. Leider ist b) subjektiv, so dass wir uns hier ewig streiten koennen.
-
Ein entsprechender Ruby-Compiler würde mich interessieren. Hast du eine URL für einen Download? Nach möglichkeit kostenlos oder zumindest zum ausprobieren kostenlos.
-
Simon2 schrieb:
Undertaker schrieb:
...
ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
..... wie das reichhaltige Portfolio an Betriebssystemen, embedded systems, virtual machines, ...., die in Java, Smalltalk, Ruby, ... geschrieben wurden, beweist.
das beweist gar nichts. früher hat man auch schriftzeichen in steintafeln gemeisselt oder auf baumrinde gekritzelt, weil es nichts besseres gab.
Simon2 schrieb:
Schon lustig, dass die Vorteile, die anderen Sprachen erst mit C/C++ ermöglicht wurden, als Argument gegen C/C++ verwendet werden.

ne, ganz normal. nicht C++ hat es ermöglicht sondern menschlicher gehirnschmalz. oder willst du behaupten dass assembler besser ist als C++, nur weil es vorher da war?
btw, verwende nicht C*/**C++*. diesen begriff gibt es eigentlich gar nicht. C ist eine eigenständige sprache und auf manchen gebieten nicht wegzudenken, im gegensatz zu C++, welches so gut wie immer durch etwas anderes (sinnvoll und vor allem vorteilhaft) ersetzbar ist.

-
DEvent schrieb:
Simon2 schrieb:
Undertaker schrieb:
...
ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
..... wie das reichhaltige Portfolio an Betriebssystemen, embedded systems, virtual machines, ...., die in Java, Smalltalk, Ruby, ... geschrieben wurden, beweist.

Schon lustig, dass die Vorteile, die anderen Sprachen erst mit C/C++ ermöglicht wurden, als Argument gegen C/C++ verwendet werden.

Gruß,
Simon2.
Nenn mir mal einen Grund wieso man un Ruby kein Betriebsystem schreiben kann. ...
Habe ich nie behauptet !
Ich habe lediglich Undertakers Behauptung, C++ sei für nichts sinnvoll zu gebrauchen, die empirischen Werte gegenübergestellt.Undertaker schrieb:
Simon2 schrieb:
Undertaker schrieb:
...
ja, man kann
aber mit anderen sprachen kann man auch - und meistens besser
..... wie das reichhaltige Portfolio an Betriebssystemen, embedded systems, virtual machines, ...., die in Java, Smalltalk, Ruby, ... geschrieben wurden, beweist.
das beweist gar nichts. früher hat man auch schriftzeichen in steintafeln gemeisselt oder auf baumrinde gekritzelt, weil es nichts besseres gab....
Sehr schöner Vergleich ... aber was hat das mit dem Thema zu tun ?
C++ hat in zig Umfeldern bewiesen, dass es geht; Du (als hier ausgewiesener C++-Kenner) behauptest, dass irgendeine (von Dir nicht genannte) Sprache in diesen Bereichen dazu besser geeignet wäre ... ohne auch nur ein einziges Beispiel zu nennen.
Ist nicht besonders überzeugend.Undertaker schrieb:
btw, verwende nicht C*/**C++*. diesen begriff gibt es eigentlich gar nicht. C ist eine eigenständige sprache und auf manchen gebieten nicht wegzudenken, im gegensatz zu C++, welches so gut wie immer durch etwas anderes (sinnvoll und vor allem vorteilhaft) ersetzbar ist.

Lies meinen Satz noch einmal und dann versuche zu verstehen, warum ich hier den Ausdruck "C/C++" verwendet habe.
(Kleiner Tipp: Auch der Satz "Mit Programmiersprachen wie C/C++/Java/Basic/... kann man Computern Anweisungen geben" enthält ein ähnliches Konstrukt)Gruß,
Simon2.
-
Simon2 schrieb:
Du (als hier ausgewiesener C++-Kenner) behauptest, dass irgendeine (von Dir nicht genannte) Sprache in diesen Bereichen dazu besser geeignet wäre ... ohne auch nur ein einziges Beispiel zu nennen.
erstmal bin ich kein C++ kenner, ich kenne nur ein paar grundlagen (ist dir meine fragerei zu den templates noch in erinnerung?).
...und, sorry, ich nenne keine anderen sprachen.
ich will nämlich keinen flamewar anzetteln.
"C++ gegen irgendwas_anderes" hatten wir schon viel zu oft...

-
ich würd sagen java hat gewonnen was meint ihr?

-
Simon2 schrieb:
Habe ich nie behauptet !
Ich habe lediglich Undertakers Behauptung, C++ sei für nichts sinnvoll zu gebrauchen, die empirischen Werte gegenübergestellt.Ok, dann habe ich dich falsch verstanden.
-
Undertaker schrieb:
Simon2 schrieb:
Du (als hier ausgewiesener C++-Kenner) behauptest, dass irgendeine (von Dir nicht genannte) Sprache in diesen Bereichen dazu besser geeignet wäre ... ohne auch nur ein einziges Beispiel zu nennen.
erstmal bin ich kein C++ kenner, ich kenne nur ein paar grundlagen (ist dir meine fragerei zu den templates noch in erinnerung?).
Solltest du dann nicht ein wenig vorsichtiger mit Wertungen zu C++ sein?
Undertaker schrieb:
...und, sorry, ich nenne keine anderen sprachen.
ich will nämlich keinen flamewar anzetteln.Wie kannst du das mit beispielsweise dieser Aussage vereinbaren?
Undertaker schrieb:
aber mit anderen sprachen kann man auch - und meistens besser
So vermeidet man einen Flamewar, genau.

Undertaker schrieb:
"C++ gegen irgendwas_anderes" hatten wir schon viel zu oft...

Und wie sich herausstellt, kennen die größten C++-Kritiker nichtmal das Ziel ihrer Kritik.
-
@MrN: Wo Du grad dabei bist, denk mal kurz und fest an Java und fass Dir dabei an die eigene Nase. -- Danke!

-
Jester schrieb:
@MrN: Wo Du grad dabei bist, denk mal kurz und fest an Java und fass Dir dabei an die eigene Nase. -- Danke!

Ich habe zwar keine extensive Erfahrung mit Java, aber es ist nicht so, dass ich die Sprache nicht kenne. Und die konkreten Dinge, die ich kritisiere, kenne ich. Ich weiß ja sogar wie Generics funktionieren und was Annotationen sind, wobei ich zugegebenermaßen nicht alle Details kenne. Aber so etwas Grundlegendes wie die Natur von Funktionen oder Konstruktoren in C++ kenne ich doch und erwarte auch, dass sie jeder, der C++ bewertet, kennt.
Ich stimme Undertaker zu, dass wir das J-Wort hier nicht weiter erwähnen sollten.