Hallo, ich würde gerne mal auf Suse 8.2 umsteigen, aber da gibt es keinen gcc 2.x mehr. Der gcc 3 hat ja ein paar ganz nette Features, aber warum compiliert er keine älteren Programme mehr vernünftig?!? Was soll eigentlich dieser ganze STL Umbau? Warum gibt es da keine Kompatibilitäts-Option? Warum ist gcc 2.x nicht mehr in Suse enthalten? Man kann ja nicht mal mehr gcc 2.95.3 downloaden, selber compilieren und benutzen, weil keine passende glibc mehr da ist :-( Warum ist GCC plötzlich so pedantisch? Früher war gcc dafür berühmt, jedes auch noch so außergewöhnliche Programm compilieren zu können, und jetzt muß jedes einzelne Programm angepasst werden? Ist das der Sinn eines C-Compilers? Viele Grüße, Gordon.
Am Freitag Oktober 10 2003 20:15 schrieb Gordon Cichon:
Hallo,
ich würde gerne mal auf Suse 8.2 umsteigen, aber da gibt es keinen gcc 2.x mehr. Der gcc 3 hat ja ein paar ganz nette Features, aber warum compiliert er keine älteren Programme mehr vernünftig?!?
Was soll eigentlich dieser ganze STL Umbau?
Warum gibt es da keine Kompatibilitäts-Option? Warum ist gcc 2.x nicht mehr in Suse enthalten? Man kann ja nicht mal mehr gcc 2.95.3 downloaden, selber compilieren und benutzen, weil keine passende glibc mehr da ist :-(
Warum ist GCC plötzlich so pedantisch? Früher war gcc dafür berühmt, jedes auch noch so außergewöhnliche Programm compilieren zu können, und jetzt muß jedes einzelne Programm angepasst werden? Ist das der Sinn eines C-Compilers?
Viele Grüße, Gordon.
Du verwendest noch den gcc 3.3pre, also die "Original"-Version von SuSE? Auf ftp.suse.com im projects-Verzeichnis kann man die gcc-Version 3.3.1 downloaden, die dieses Verhalten nicht mehr zeigt. Gruß Udo -- Mail: udo@singollo.de oder udo.neist@t-online.de Hompage: http://www.singollo.de
Hi, On Fri, 10 Oct 2003, Udo Neist wrote:
Du verwendest noch den gcc 3.3pre, also die "Original"-Version von SuSE? Auf ftp.suse.com im projects-Verzeichnis kann man die gcc-Version 3.3.1 downloaden, die dieses Verhalten nicht mehr zeigt.
Wenn's nicht sein muss, dann nehme man die 3.3pre Version der Box, nicht die 3.3.1 vom ftp! Ersterer ist besser. Und bezueglich Pedanterie hat sich natuerlich nichts geaendert. Ciao, Micha.
Hi, On Fri, 10 Oct 2003, Gordon Cichon wrote:
Warum ist GCC plötzlich so pedantisch? Früher war gcc dafür berühmt, jedes auch noch so außergewöhnliche Programm compilieren zu können, und jetzt muß jedes einzelne Programm angepasst werden? Ist das der Sinn eines C-Compilers?
Ziel ist es einen Standard zu implementieren. Wenn der sagt, ein Programm ist fehlerhaft, dann wird ein Fehler geworfen. Hoert sich sinnvoll an. Fuer C++ Code koenntest du den g++ mit -fpermissive in den alten Kaputt-Modus schalten (jedenfalls ne Emulation davon), dann kann man einige madige Programme mehr kompilieren. Hast du persoenlich denn soviele C++ Programme die pre-ISO-C++98 sind? Wenn ja, dann solltest du sie langsam umstellen. Das mit den Compilern wird nicht "besser" (in deinem Sinne). Ciao, Micha.
Michael Matz wrote:
Ziel ist es einen Standard zu implementieren. Wenn der sagt, ein Programm ist fehlerhaft, dann wird ein Fehler geworfen. Hoert sich sinnvoll an.
Ja, Du hast schon recht, in der Theorie. In der Praxis ist es leider so, daß der Standard von C++ schlecht durchdacht und mehrdeutig ist. Das gilt insbesondere für die STL. Wenn man sich damals die Mühe gemacht hat, Code zu schreiben, der tatsächlich compiliert, ist man jetzt ziemlich blöd dran. Es nervt z.B. ziemlich, daß der Compiler sich nicht entscheiden kann, ob selbstgeschriebene Typ-Konvertierungs-Operatoren über- oder unterspezifiziert sind. Entweder man hat zu wenige, und der Compiler meckert, daß er die Typen nicht konvertieren kann, oder man hat zu viele, und der Compiler meckert, die Konvertierung sei mehrdeutig. Mit dem neuen Compiler jetzt gibt es z.T. überhaupt keine Möglichkeit mehr, bestimmte Sachen hinzuschreiben, ohne eine Fehlermeldung zu bekommen. (Versuch nur mal, gleichzeitig operator bool, operator int und operator size_t zu definieren. Oder versuch mal, gleichzeitig einen Konstruktor und einen operator = zu definieren, die eine Typ-Konvertierung machen. Da kann sich dann der Compiler nicht entscheiden ob er erst konvertieren und dann zuweisen soll, oder umgekehrt) Außerdem: Wer sagt denn, daß der jetzige Stand des C++ Standards stabil ist? Die könnten ja jederzeit wieder auf die Idee kommen, alles anders zu machen. Außerdem war C++ immer schon abwärtskompatibel. Wenn ich die Programme jetzt neu schreiben muß, dann kann ich sie ja auch gleich in C# schreiben. Ciao, Gordon.
Hi, On Fri, 10 Oct 2003, Gordon Cichon wrote:
Ja, Du hast schon recht, in der Theorie. In der Praxis ist es leider so, daß der Standard von C++ schlecht durchdacht und mehrdeutig ist. Das gilt insbesondere für die STL.
Starke Worte.
Wenn man sich damals die Mühe gemacht hat, Code zu schreiben, der tatsächlich compiliert, ist man jetzt ziemlich blöd dran.
(hat compiliert) != (funktioniert)
viele, und der Compiler meckert, die Konvertierung sei mehrdeutig. Mit dem neuen Compiler jetzt gibt es z.T. überhaupt keine Möglichkeit mehr, bestimmte Sachen hinzuschreiben, ohne eine Fehlermeldung zu bekommen.
Dann gab's diese Moeglichkeit frueher bestimmt auch nicht (wenn du nicht so'n altes Zeug wie 2.7.2 meinst). Der Compiler hat vielleicht nicht gewarnt, aber das getan, was du wolltest hat er mit einiger Sicherheit auch nicht, es sei denn durch einen gluecklichen Zufall.
Außerdem: Wer sagt denn, daß der jetzige Stand des C++ Standards stabil ist? Die könnten ja jederzeit wieder auf die Idee kommen, alles anders zu machen.
Nein. Jetzt gibt's zum ersten Mal einen Standard, und der wird in den naechsten Versionen soweit wie moeglich beruecksichtigt. Es ist nicht so, das sich die Leute absichtlich hinstellen und sagen "ha, jetzt zeigen wir's den Cretins, und machen ne andere Sprache draus".
Außerdem war C++ immer schon abwärtskompatibel.
??? Ciao, Micha.
Hi Micha, vielleicht sollte ich noch folgendes erwähnen: Es gibt hier Tonnenweise Code (> 100.000 Zeilen), der mühevoll so geschrieben ist, daß er bis einschließlich gcc 2.95.3 compiliert und funktioniert. Und das war harte Arbeit und klein glücklicher Zufall! Um Dir einen kleinen Eindruck zu vermitteln, versuche doch nur mal folgendes Teil mit gcc 3.x zu compilieren: http://freshmeat.net/branches/39041/ Ich möchte auch nochmal meine Meinung ausdrücklich wiederholen: Der Standard von C++ ist schlecht durchdacht und mehrdeutig, insbesondere die STL. Bitte erkläre mir mal, was daran starke Worte sind! Wenn Du ein paar Beispiele willst, was sich alles geändert hat versuch nur mal obigen Code zu compilieren. Oder wenn Dir das nicht reicht, versuch diesem hier: http://freshmeat.net/projects/self4linux/.
Außerdem: Wer sagt denn, daß der jetzige Stand des C++ Standards stabil ist? Die könnten ja jederzeit wieder auf die Idee kommen, alles anders zu machen.
Nein. Jetzt gibt's zum ersten Mal einen Standard, und der wird in den naechsten Versionen soweit wie moeglich beruecksichtigt. Es ist nicht so, das sich die Leute absichtlich hinstellen und sagen "ha, jetzt zeigen wir's den Cretins, und machen ne andere Sprache draus".
Und überhaupt: Wenn Du sagst "Jetzt gibt's zum ersten Mal einen Standard", was war dann die STL vor gcc 3? Kein Standard? Ich meine, da sagst Du es ja selbst... Und meine Meinung zu gcc 3: Das ist ein ganz netter Test-Ballon für KDE, und für AMD-64, IA-64 usw., aber er ist nicht abwärtskompatibel genug, um als Defaut-Compiler für alles herzuhalten. Ich finde es schade vom gcc 3 Team, daß sie das Thema abwärtskompatibilität ignorieren. Das schadet dem gesamten Open-Source System. Ich bin übrigens nicht der einzige, der gcc 2 für größere Projekte benutzt hat, und ich vermute, es gibt immer noch wesentlich mehr Code für gcc 2, als für gcc 3. Und wenn Du als Repräsentant von Suse meine Ausführungen nicht ernst nimmst, dann ist das arrogant. Ich kann mit diesem Compiler nicht auf Suse 9 upgraden, und werde es deswegen auch nicht kaufen. Und ich bin auch nicht der einzige, den das betrifft. KDE und OpenOffice sind nicht die einzigen Applikationen für Linux. Auch wenn Suse sich z.Zt. darauf kapriziert, war Linux schon seit längerem wegen der Command-Line-Interfaces und dem guten Scripting eine gute Plattform zum Software-Engineering. Warum macht Ihr das jetzt kaputt? Warum versucht Ihr, die Leute zu völlig unnötiger Arbeit zu zwingen? Warum könnt ihr nicht bei Suse einen gcc 2.95 als rpm zur Verfügung stellen? Viele Grüße, Gordon.
Hi, On Mon, 13 Oct 2003, Gordon Cichon wrote:
Es gibt hier Tonnenweise Code (> 100.000 Zeilen), der mühevoll so geschrieben ist, daß er bis einschließlich gcc 2.95.3 compiliert und funktioniert. Und das war harte Arbeit und klein glücklicher Zufall!
Nun ja. Ich habe in /matz/kdecvs ca. 4 Mill. Zeilen C++ Code rumliegen, der ganz gut mit gcc 3 tut.
Um Dir einen kleinen Eindruck zu vermitteln, versuche doch nur mal folgendes Teil mit gcc 3.x zu compilieren: http://freshmeat.net/branches/39041/
Okay, ich bin heut generoes, weil Montag ist: Hmm, ein octave Derivat. Also zumindest octace 2.1.49, was auf unserer Distri benutzt wird, tut auch sehr huebsch mit gcc 3. Dein Patch fuer 2.1.35 sieht auch so aus, als ob er sich relativ leicht auf gcc 3 uebertragen liesse. Auf den ersten Blick sehe ich jedenfalls keine fiesen Konstrukte. Da es ein Code-Generator ist, muesste man da vielleicht noch mal drueber gehen. Na jedenfalls sind es bloss 2505 Zeilen, das sollte zu schaffen sein.
Ich möchte auch nochmal meine Meinung ausdrücklich wiederholen: Der Standard von C++ ist schlecht durchdacht und mehrdeutig, insbesondere die STL. Bitte erkläre mir mal, was daran starke Worte sind!
In genau der gleichen Weise wie jede andere unfundierte Behauptung von irgendwie geheimnisvoll gearteter Schlechtheit.
Wenn Du ein paar Beispiele willst, was sich alles geändert hat versuch nur mal obigen Code zu compilieren. Oder wenn Dir das nicht reicht, versuch diesem hier: http://freshmeat.net/projects/self4linux/.
Du wirst verstehen, dass ich was besseres zu tun habe, als anderer Leute Schrottcode auf Fehler zu untersuchen. ISO C++ gibt's seit '98, drafts schon weit vorher. Solange es nur um so triviales wie overloading und operators dreht war die Sprache auch selbst davor recht stabil.
Und überhaupt: Wenn Du sagst "Jetzt gibt's zum ersten Mal einen Standard", was war dann die STL vor gcc 3? Kein Standard? Ich meine, da sagst Du es ja selbst...
Ich rede vom C++ Standard. STL in gcc 3 ist eine Implementierung desselben. Und zwar eine unvollstaendige mit vielen Fehlern (< 3.4).
Und meine Meinung zu gcc 3: Das ist ein ganz netter Test-Ballon für KDE, und für AMD-64, IA-64 usw., aber er ist nicht abwärtskompatibel genug, um als Defaut-Compiler für alles herzuhalten. Ich finde es schade vom gcc 3 Team, daß sie das Thema abwärtskompatibilität ignorieren. Das schadet dem gesamten Open-Source System.
Wir werden sehen. Nimm halt -fpermissive, vielleicht hast du Glueck, und damit compiliert dein Code wieder. Oder noch besser, mach C++ draus.
für gcc 2, als für gcc 3. Und wenn Du als Repräsentant von Suse meine Ausführungen nicht ernst nimmst, dann ist das arrogant.
Auf dieser Liste bin ich kein SuSE Repraesentant, sondern mein eigener.
Ich kann mit diesem Compiler nicht auf Suse 9 upgraden, und werde es deswegen auch nicht kaufen. Und ich bin auch nicht der einzige, den das betrifft.
Mach halt nicht. Viel Glueck fuer die naechsten Jahre noch ein System mit 2.95 zu finden. Sogar debian hat gcc 3 in unstable. Okay, das dauert noch, ehmm ... 10 Jahre, bis das stable wird, aber immerhin.
KDE und OpenOffice sind nicht die einzigen Applikationen für Linux. Auch wenn Suse sich z.Zt. darauf kapriziert, war Linux schon seit längerem wegen der Command-Line-Interfaces und dem guten Scripting eine gute
Bitte alles SuSE-Bashing nach http://www.suse.com/404.html Meinetwegen auch nach suse-beta@, lese ich auch nicht.
Warum versucht Ihr, die Leute zu völlig unnötiger Arbeit zu zwingen?
Eine geheime Verschwoerung mit Bestattungsunternehmern zur Herzinfarktverbreitung.
Warum könnt ihr nicht bei Suse einen gcc 2.95 als rpm zur Verfügung stellen?
Weil niemand diesen alten Mist supporten will. Dir steht es frei dies selbst zu tun. Ciao, Micha.
Gordon Cichon
Ich möchte auch nochmal meine Meinung ausdrücklich wiederholen: Der Standard von C++ ist schlecht durchdacht und mehrdeutig, insbesondere die STL.
Der Standard mag an der einen oder anderen Stelle seine Mängel haben (siehe die Defect-Reports der entsprechenden C++ Arbeitsgruppen), aber ihn so in Bausch und Bogen zu verdammen ist schlichtweg falsch!
Bitte erkläre mir mal, was daran starke Worte sind!
Genau diese Rundum-Abqualifizierung, die so einfach nicht gerechtfertigt ist!
Und überhaupt: Wenn Du sagst "Jetzt gibt's zum ersten Mal einen Standard", was war dann die STL vor gcc 3? Kein Standard?
Nein, die STL war so nie ein Standard. Die Standard C++ Bibliothek basiert zwar auf der STL, aber diese wurde für die standardisierung modifiziert. Ausserdem war die libstdc++ vor 3.0 deutlich weniger konform zum Standard.
Und meine Meinung zu gcc 3: Das ist ein ganz netter Test-Ballon für KDE, und für AMD-64, IA-64 usw., aber er ist nicht abwärtskompatibel genug, um als Defaut-Compiler für alles herzuhalten.
Ach, und das sind keine starken Worte? Ein Compiler hat zu allererst standardkonform zu sein und *dann* kommt erst die Abwärtskompatibilität, wenn sich diese mit vertretbarem Aufwand erhalten lässt.
Ich finde es schade vom gcc 3 Team, daß sie das Thema abwärtskompatibilität ignorieren. Das schadet dem gesamten Open-Source System.
Auch mal wieder so eine globale Diffamierung! Du scheinst den Diskussionen unter den GCC-Entwicklern nicht zu folgen (Tipp: Mailingliste gcc@gcc.gnu.org), sonst wüsstest du, dass die Entwickler sich um weitestgehende Abwärtskompatibilität bemühen. Deshalb sind z.B. auch ein paar GNU Erweiterungen (namespace __gnu_cxx) in die C++ Bibliothek aufgenommen worden. Wenn du aber anderer Meinung bist, dann fechte das mit den deutschen Vertretern im ISO Kommittee bzw. mit den GCC Entwicklern auf gcc@gcc.gnu.org aus. Hier bist du dafür im falschen Forum.
Und wenn Du als Repräsentant von Suse meine Ausführungen nicht ernst nimmst, dann ist das arrogant.
Hier im Forum ist jeder Repräsentant von sich selbst und nicht der Firma, für die er arbeitet. Die Beteiligung von SUSE-Mitarbeitern in diesen Listen ist reines Privatvergnügen.
Ich kann mit diesem Compiler nicht auf Suse 9 upgraden, und werde es deswegen auch nicht kaufen. Und ich bin auch nicht der einzige, den das betrifft.
Bitte, wenn du damit glücklich wirst. Aber du solltest dir darüber im Klaren sein, dass du mit einem Compiler arbeitest, der weniger standardkonform ist und für den es *keinerlei* Support mehr gibt, weder von den GCC-Entwicklern noch anders woher. Das bedeutet, dass es keinerlei Unterstützung neuer Plattformen geben wird und das die im 2.95.3 vorhandenen Bugs auch nie mehr behoben werden.
KDE und OpenOffice sind nicht die einzigen Applikationen für Linux. Auch wenn Suse sich z.Zt. darauf kapriziert,
Und wieder so ein unbegründeter Pauschalangriff,
war Linux schon seit längerem wegen der Command-Line-Interfaces und dem guten Scripting eine gute Plattform zum Software-Engineering. Warum macht Ihr das jetzt kaputt?
Nur weil auch wir zu gcc 3 übergegangen sind? Nun mach aber mal halblang!
Warum versucht Ihr, die Leute zu völlig unnötiger Arbeit zu zwingen? Warum könnt ihr nicht bei Suse einen gcc 2.95 als rpm zur Verfügung stellen?
Für die GCC Entwickler ist 2.95 tot (siehe oben), wer also soll ihn noch pflegen? SUSE im Alleingang sicherlich nicht. Philipp
Am Freitag, 10. Oktober 2003 20:15 schrieb Gordon Cichon:
Warum ist GCC plötzlich so pedantisch? Früher war gcc dafür berühmt,
Schau Dir an, wozu zu viel Tolleranz führt. Es gibt quasi keine korrekte Webseite mehr, weil der IE fast alles schluckt, was auch nur im entferntesten mit HTML verwandt sein könnte. Ich finds gut, wenn die gcc Leute jetzt etwas dagegen unternehmen, dass bei C/C++ ähnliche Zustände einkehren.
jedes auch noch so außergewöhnliche Programm compilieren zu können, und jetzt muß jedes einzelne Programm angepasst werden? Ist das der Sinn eines C-Compilers?
Ein C-Compiler sollte doch standardconformes C (also ANSI/ISO Standards) umsetzen können und Fehler im Programm beim compilieren aufzeigen. Wenn also der C-Code fehlerhft ist, was soll er Deiner Meinung nach tun? -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
participants (5)
-
Gordon Cichon
-
Manfred Tremmel
-
Michael Matz
-
Philipp Thomas
-
udo.neist@t-online.de