PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : liegt es an mir oder ist c++ wirklich so scheiße??


Gast
2007-01-21, 19:09:06
hallo!

ich bitte den provozierenden titel zu entschuldigen aber ich bin doch einigermaßen frustriert. Ich wollte ein physikalisches problem simulieren und habe dazu fertige libs im netz gefunden - nur leider waren die wohl nicht mehr unter aktuellen gcc kompilierbar. dies ist ein problem, das ich mit c++ habe. insgesamt wirkt das ganze sehr "zusammengefrickelt" und inkonsistent. ich meine hiermit nicht nur die tatsache, dass man wohl für jede neue gcc-version den quellcode anpassen muss, sondern auch ein unüberschaubares systaxchaos...

ich bin anfänger - ich will nicht ausschließen, dass das alles nur an mir liegt. Ich hätte aber gerne eine logische, konsistente! und leistungsstarke programmiersprache. Was wird denn da gerne genommen??

danke!

Spearhead
2007-01-21, 19:21:18
Das Code unter verschiedenen Versionen nicht immer funktioniert ist kein C++ Merkmal, das passiert einem auch mit Java, Visual Basic, PHP etc.

Also einfach mal durchatmen und ruhig bleiben ;)

Als Anfänger ist C++ aber nicht unbedingt die einfachste Sprache, das ist wohl wahr.

Und gleich ein physikalisches Problem simulieren? Bist du dir sicher das du dich nicht erst an was einfacherem probieren willst um dich einzulernen? ;)
Gut, kommt natürlich drauf an wie umfangreich das sein soll, deine Beschreibung ist da doch etwas wenig aufschlußreich, was willst du denn genauer machen?

Trap
2007-01-21, 20:23:21
dies ist ein problem, das ich mit c++ habe. insgesamt wirkt das ganze sehr "zusammengefrickelt" und inkonsistent.

Ich hätte aber gerne eine logische, konsistente! und leistungsstarke programmiersprache. Was wird denn da gerne genommen??
Darüber haben sich schon viele früher beschwert: http://en.wikipedia.org/wiki/Worse_is_Better

Bei logisch und konsistent nennt man normalerweise Sprachen in der Richtung von Haskell, Scheme oder Standard ML. Leistungsstark sind die allerdings mehr potentiell als tatsächlich, es gibt nur sehr wenig nutzbare Bibliotheken im Vergleich zu C/C++ oder Java und die Standardbibliothek ist auch eher klein.

Achso:
Code, der abhängig von der Compilerversion mal funktioniert und mal nicht, ist meistens einfach schlecht geschrieben. Schlechten Code kann man in jeder Sprache schreiben und ist überall weit verbreitet.

Coda
2007-01-21, 20:31:22
Wenn der Code damals nach der C++-98-Norm geschrieben wurde (die es inzw. schon sage und schreibe 9 Jahre gibt bald) dann würde es auch heute noch korrekt kompilieren.

Antwort also: Nein, nicht C++ ist scheiße, sondern viele Leute die programmieren.

ShadowXX
2007-01-21, 20:49:52
Wenn der Code damals nach der C++-98-Norm geschrieben wurde (die es inzw. schon sage und schreibe 9 Jahre gibt bald) dann würde es auch heute noch korrekt kompilieren.

Antwort also: Nein, nicht C++ ist scheiße, sondern viele Leute die programmieren.
Prinzipiell gebe ich dir recht....manchmal liegts aber auch am Compiler (MS hat öfter mal die "Schreibweise" für bestimmte Sachen geändert, speziell im Bereich von Templates.......ist allerdings nichts, was nicht innerhalb kürzester Zeit geändert werden kann).

Gast
2007-01-22, 00:02:54
hallo!

ich bitte den provozierenden titel zu entschuldigen aber ich bin doch einigermaßen frustriert. Ich wollte ein physikalisches problem simulieren und habe dazu fertige libs im netz gefunden - nur leider waren die wohl nicht mehr unter aktuellen gcc kompilierbar. öhm... fertige Libs kompilieren?? Eine fertige Lib ist[/] bereits kompiliert, du mußt sie nur noch zu deinem Programm [i]linken. Bei letzterem kommt es in der Tat recht häufig zu Problemen, und zwar dann, wenn die Lib mit einem anderen Compiler erstellt wurde als der, dessen Linker du jetzt zum Linken benutzt.

Das hängt mit dieser Name-Mangling-Geschichte zusammen: in C++ können Funktionsnamen überladen werden, d.h. es dürfen mehrere Funktionen den gleichen Namen tragen, was der Compiler dadurch realisiert, daß er Funktionsnamen "dekoriert", d.h. im erstellen Maschinencode mit unterschiedlichen Namenszusätzen versieht. Das aber macht jeder Compiler anders, was dann dazu führt, daß z.B. der Linker des gcc eine Funktion in einer mit VC erstellen Lib nicht finden kann, da er die falsche Namensdekoration zugrundelegt. Wirklich umgehen kann man Problem nur dadurch, daß die Lib im C-Stil erstellt wird, was bedeutet, daß schlicht kein Name-Mangling betrieben wird. Ansonsten muß es von der Lib für jede Compiler-Plattform eine eigene Version geben.

Was auch sein kann ist, daß du eben doch keine fertige Lib hast, sondern nur den Sourcecode zum selbst kompilieren. Diese besonders im Linux-Umfeld verbreitete Methode kann natürlich dazu benutzt werden, sich das Namendekorations-Problem vom Halse zu halten. Es soll aber auch Fälle geben, wo auch das nicht funktioniert. Vor allem ist das Problem dabei, daß man dafür meist Tools aus dem Unix-Bereich wie Shell-Scripts und make verwenden muß, was unter Windows dann bedeutet, daß man auf Unix-Emulatoren wie MSys (für gcc) zurückgreifen muß.

Vielleicht kannst du uns ja mal posten, was für eine Fehlermeldung zu bekommst?

maximAL
2007-01-22, 06:42:31
Bei logisch und konsistent nennt man normalerweise Sprachen in der Richtung von Haskell, Scheme oder Standard ML. Leistungsstark sind die allerdings mehr potentiell als tatsächlich, es gibt nur sehr wenig nutzbare Bibliotheken im Vergleich zu C/C++ oder Java und die Standardbibliothek ist auch eher klein.
dann halt F# (http://research.microsoft.com/fsharp/fsharp.aspx) - ML fürs net - framework, interoperabel mit allen entsprechende bibliotheken.

@topic: ja, C++ ist wild zusammengefrickelt, die compiler sind nur bedingt kompatibel und in der zeit, die es braucht, C++ wirklich zu lernen, kann man auch ein halbes dutzend andere sprachen (inkl. C) lernen, die für ihre jeweiligen anwendungsgebieten weit mächtiger sind.

tokugawa
2007-01-22, 11:16:45
Bevor ich aber das ultra-häßliche Pure C verwend, kann ich gleich C++ verwenden :P



Ansonsten stimm ich ja zu: mit C/C++ kann man sich sehr leicht in den Fuß schießen.

Trotzdem wird sich nichts daran ändern dass es Industriestandard ist, aufgrund der pragmatisch gesehen doch entscheidenden Aspekte, dass Libraries fast immer zuerst für C/C++ verfügbar sind (und Bindings in andere Sprachen meist unvollständig oder problematisch sind), sowie dass es einfach für jede Plattform als erstes einen C/C++-Compiler gibt. Ich denke da etwa an Konsolen-Entwickler...

EcHo
2007-01-22, 18:36:21
Bevor ich aber das ultra-häßliche Pure C verwend, kann ich gleich C++ verwenden :P



Ansonsten stimm ich ja zu: mit C/C++ kann man sich sehr leicht in den Fuß schießen.

Trotzdem wird sich nichts daran ändern dass es Industriestandard ist,

Bis hier hin Full ACK.


aufgrund der pragmatisch gesehen doch entscheidenden Aspekte, dass
Libraries fast immer zuerst für C/C++ verfügbar sind (und Bindings in andere Sprachen meist unvollständig oder problematisch sind), sowie dass es einfach für jede Plattform als erstes einen C/C++-Compiler gibt. Ich denke da etwa an Konsolen-Entwickler...
Das hängt imo vom Umfeld und der Projektart ab. Aus deinem Bereich, Spieleprogrammierung kommen sicher die meißten Libs zuerst für C++ herraus.
In anderen Bereichen wurde es aber schon überflügelt, sei es von C#;.NET oder Java(...).

tokugawa
2007-01-22, 18:55:31
Bis hier hin Full ACK.


Das hängt imo vom Umfeld und der Projektart ab. Aus deinem Bereich, Spieleprogrammierung kommen sicher die meißten Libs zuerst für C++ herraus.
In anderen Bereichen wurde es aber schon überflügelt, sei es von C#;.NET oder Java(...).

Ja, ist natürlich abhängig vom Gebiet (schrieb ja auch "fast immer" statt "immer", wobei das wohl diskutabel ist, wie häufig das ist).

Allerdings gibt's so gesehen ja immer noch COBOL- und FORTRAN-Codebasen auch :)