Allgemeine Frage untersschied zwischen C und C++



  • volkard schrieb:

    wenn du die sprachmittel nicht zufällig aus der kiste greifst, rauscht da auch nix.

    naja, das ist nur so'ne verrückte theorie von mir, wie man sich das vielleicht vorstellen könnte. der anfänger produziert weisses rauschen, während der versierte progger sich einer immer glatteren kurve nähert.

    volkard schrieb:

    +fricky schrieb:

    ich mit turbo-c++, damals auf 'nem 468'er. ich konnte schon ein bisschen C und fand's völlig geil, wie konstruktoren und destruktoren automatisch dran kamen.

    Schon so lange dabei? Warum hast Du in der ganzen Zeit nichts dazugelernt?

    ich hab's halt nicht weiter verfolgt. mich mit den 'martial arts' der c++ programmierung auseinanderzusetzen, war mir die mühe nicht wert. ich bin eher der ergebnisorientierte typ, und keiner, den man für völlig abgefahrene tricks einer bestimmten programmiersprache begeistern kann, wenn's anders einfacher geht.
    🙂



  • hustbaer schrieb:

    Das is ja geil 😃
    Was ähnliches gab's bei Turbo-Pascal wenn ich mich richtig erinnere, allerdings nicht mit einer so "kurzen" Zahl...
    Oder war's Borland-C?
    Hmmm...

    Naja, wenn die Runtime buggy ist, kann das durchaus passieren. Mein Bruder hatte 'nen ST und nach zwei Versuchen, mit ST-Basic was zu machen mußte GfA- Basic her.
    Vermutlich meinst Du aber den unit CRT- Fehler von TP. Die mußte man includen, sonst keine Bildschirm- Ein/Ausgabe. Weil die Borlander aber zur Erstellung eines Softtimers auf die "geniale" Idee kamen, die Maschine mit einer Leerschleife auszubenchen 😮 , gab's auf schnelleren Prozessoren als 233er(MHz) einen Unterlauf bzw. Division by zero- Error == crash! Da das gleich zu Beginn stattfand, hatte man zunächst keine Möglichkeit der Umgehung, außer das in der Win-DOS- Box laufen zu lassen, hat aber auch nicht lange geholfen. Später wurde das Teil von anderen Leuten gepatcht.
    Aber auch mit C- Compilern hatte ich so meinen Spaß. Ein frühes Keil MCS-51- C strotzte nur so vor Macken und IAR hat mich z.B. mit einem schweren Bug erstmal ewig sitzen lassen und dann für das "Upgrade" die Hand so weit aufgehalten, daß ich dankend verzichtet habe, weil das Projekt längst in ASM umgesetzt war.
    Also, es liegt nicht nur an der Sprache und dem Programmierer, sondern auch an deren Implementation.



  • Momentan bin ich dabei C etwas intensiver zu lernen, wenn ich die Klausuren hinter mir habe, gehts weiter mit Java finde auch Java etwas leichter, da ich da schon etwas Erfahrung habe. 😃



  • pointercrash() schrieb:

    hustbaer schrieb:

    Das is ja geil 😃
    Was ähnliches gab's bei Turbo-Pascal wenn ich mich richtig erinnere, allerdings nicht mit einer so "kurzen" Zahl...
    Oder war's Borland-C?
    Hmmm...

    Naja, wenn die Runtime buggy ist, kann das durchaus passieren. Mein Bruder hatte 'nen ST und nach zwei Versuchen, mit ST-Basic was zu machen mußte GfA- Basic her.
    Vermutlich meinst Du aber den unit CRT- Fehler von TP. Die mußte man includen, sonst keine Bildschirm- Ein/Ausgabe. Weil die Borlander aber zur Erstellung eines Softtimers auf die "geniale" Idee kamen, die Maschine mit einer Leerschleife auszubenchen 😮 , gab's auf schnelleren Prozessoren als 233er(MHz) einen Unterlauf bzw. Division by zero- Error == crash! Da das gleich zu Beginn stattfand, hatte man zunächst keine Möglichkeit der Umgehung, außer das in der Win-DOS- Box laufen zu lassen, hat aber auch nicht lange geholfen. Später wurde das Teil von anderen Leuten gepatcht.
    Aber auch mit C- Compilern hatte ich so meinen Spaß. Ein frühes Keil MCS-51- C strotzte nur so vor Macken und IAR hat mich z.B. mit einem schweren Bug erstmal ewig sitzen lassen und dann für das "Upgrade" die Hand so weit aufgehalten, daß ich dankend verzichtet habe, weil das Projekt längst in ASM umgesetzt war.
    Also, es liegt nicht nur an der Sprache und dem Programmierer, sondern auch an deren Implementation.

    Nönö, das war schon auch sowas ala "printf("%f", bestimmterWert)" -> Crash.
    Ziemlich bizarr.
    Bin mir jetzt fast sicher dass dass Borland C war, und dass die Funktion printf war. Naja, egal 🙂

    BTW: der "DICE C" am Amiga war lustig (=extrem buggy). Dafür war der wenigstens gratis. Watcom C/C++ hat auch immer wieder lustige Sachen gemacht. Und nichtmal MSVC 9 hat einen komplett fehlerfreien Code-Generator. Leider 😞
    Bin aber bei MSVC 6+ niemehr selbst über einen Fehler gestolpert, d.h. die Situationen in denen die falschen Code erzeugen sind gottseidank sehr speziell, und kommen nur selten vor.



  • ^^ zu buggy compilern: http://www.imagecraft.com/ (der icc12) hat einmal den code: array[index++]; nicht richtig umgesetzt. musste ich array[index]; index++; daraus machen, damit es ging. hab stundenlang versuch, nen fehler irgendwo im code zu finden. schrottcompiler sind schon allein deshalb nicht lustig, weil man immer zuerst bei sich selbst nach fehlern sucht. dass ich daraufhin diesen compiler nicht mehr verwendete (stattdessen den von freescale), versteht sich von selbst.
    🙂



  • hustbaer schrieb:

    Bin aber bei MSVC 6+ niemehr selbst über einen Fehler gestolpert, d.h. die Situationen in denen die falschen Code erzeugen sind gottseidank sehr speziell, und kommen nur selten vor.

    Unter MSVC 6 bin ich noch recht häufig über Fehler gestolpert, vorwiegend aber deshalb weil ich beruflich erst mit diesem zu tun bekam, als ich persönlich schon mit dem 2003/2005 gearbeitet habe (Beginnt schon bei dem Gültigkeitsbereich von Zählervariablen in einer for-Schleife). Ab da ist mir glaube ich nur einmal unter dem 2003 noch ein Fehler direkt aufgefallen.



  • @asc:
    Standard-non-compliance, Abstürze beim Compilieren etc. ja, das hat man beim VC6 ja dauernd.

    Ich meinte aber Fehler im Code-Generator/Optimizer, so dass er mir "silently" falschen Code ausspuckt.

    Ich weiss schon dass der VC6 da auch Fehler hat, gibt ja z.B. extra nen komischen Workaround in boost::shared_ptr eben wegen einem VC6 Codegenerator/Optimizer-Bug, aber selbst drübergestolpert bin ich wie gesagt noch nie.



  • abros schrieb:

    Momentan bin ich dabei C etwas intensiver zu lernen, wenn ich die Klausuren hinter mir habe, gehts weiter mit Java finde auch Java etwas leichter, da ich da schon etwas Erfahrung habe.

    jedenfalls sparst du so den fruchtlosen umweg über c++. du hattest in deinem ersten posting hardware-programmierung erwähnt - das geht nicht mit Java (bevor jetzt einige meckern werden: ich meine 'direkte hardware-programmierung', ohne irgendwelche libraries usw. zu benutzen).
    🙂



  • +fricky schrieb:

    kennt nicht einer ein brauchbares smalltalk-system für windows, gleich mit IDE dabei und so?
    🙂

    IBMs VisualAge SmallTalk, aber das ist Enterprise Software …



  • Fricky wollte ja nicht gleich viel Geld ausgeben.

    Obendrein hab' ich gegen IBM- Compiler so meine Vorbehalte. Ich hab' mal bei einer Promo- Aktion IBMs Visual Age for C++ und Visual Age for Basic gekauft. Das Zeug war gemäß IBM- Nomenklatur ("it's not a bug, ...") so "fully featured", daß man damit gar nichts anfangen konnte 😡 . Besonders die C++ - IDE hatte die unpraktische Eigenschaft, sich immer wieder mal die komplette Projektdatenbank zu shreddern und dann abzustürzen 👎 .
    Auch das Basic hatte jede Menge Macken und war so entsetzlich langsam 🙄 , daß MS VB3 daneben fast rasend schnell wirkte. Angeblich war VA4Basic übrigens in Smalltalk geschrieben, ich kann aber nicht beschwören, daß das stimmt.

    Also, diese Promo- Aktion war eher so abschreckend, daß ich jegliches Interesse an IBM- Zeugs verloren habe. Später gab's dann zwar Patches, die fast so groß wie die Originalpakete waren, aber da hatte ich nichtmal mehr Lust, sie einzuspielen. Ich weiß nicht, ob sich das allgemein auf IBM- Zeugs übertragen läßt, aber die zwei Pakete waren definitiv Vollscheißdreck (sorry, finde keine freundlichere Bezeichnung, die der Produktqualität angemessen wäre).



  • pointercrash() schrieb:

    Fricky wollte ja nicht gleich viel Geld ausgeben.

    ich nehm's auch gern, ohne geld auszugeben. bin grosser filesharing und warez-fan.
    ~john: danke für den tip
    🙂



  • pc():
    ich hab' vor jahren mal mit DB/2 rumgefummelt. dabei musste ich patches in der reihenfolge 1,2,4,3 installieren. in der richtigen sequenz hätte patch 4 wieder bugs eingespielt, die 3 beseitigt hatte. ok, aber auch wenn IBM, was software angeht, nicht so der knüller ist, in puncto hardware sind sie spitze. ich schwöre auf IBMs notebooks. selbst IBM-notebooks, die aus der qualitätskontrolle geflogen sind und als noname-produkte billiger verkauft werden, sind um längen gediegener als beispielsweise irgendwelcher dell-dreck (bei dem dir nach 'nem 1/2 jahr die tasten rausfallen, das wäre eher was für unseren bärigen freund mit chronischem atemwegsleiden (siehe dazu die hardwarequalitäts-threads in 'rund um den PC')).
    🙂



  • +fricky schrieb:

    pc():
    ich hab' vor jahren mal mit DB/2 rumgefummelt. dabei musste ich patches in der reihenfolge 1,2,4,3 installieren. in der richtigen sequenz hätte patch 4 wieder bugs eingespielt, die 3 beseitigt hatte.

    Ich hab' genug Zeit mit OS/2 und dem Warp Server vertrödelt und kenne das Prinzip der gepatchten Patchdisketten noch. Wenn's mal lief, war das System kaum umzuhauen, der Weg dahin z.T. einfach unmenschlich gestaltet.

    +fricky schrieb:

    ich schwöre auf IBMs notebooks. selbst IBM-notebooks, die aus der qualitätskontrolle geflogen sind und als noname-produkte billiger verkauft werden, ...

    ... und gibt's nimmer. Das Zeug heißt jetzt Lenovo und ist bis auf die immer noch gute Tastatur der gleiche Chinesenscheißmüll wie von Acer, Asus & Co. Der Laptop eines Bekannten war in 1 1/2 Jahren häufiger in Reparatur als bei ihm zuhause. Lang haben sie ja nicht gebraucht, den guten Ruf anzukratzen ...

    +fricky schrieb:

    ... das wäre eher was für unseren bärigen freund mit chronischem atemwegsleiden (siehe dazu die hardwarequalitäts-threads in 'rund um den PC')). 🙂

    Jetzt kannste ihm ja den Tip geben 😉 . Leider hatte ich meinem Bekannten zu Lenovo geraten wg. IBM und so. Im Sinne einer zu erhaltenden Freundschaft sollte man sich generell vor Tips hüten ...



  • pointercrash() schrieb:

    +fricky schrieb:

    ich schwöre auf IBMs notebooks. selbst IBM-notebooks, die aus der qualitätskontrolle geflogen sind und als noname-produkte billiger verkauft werden, ...

    ... und gibt's nimmer. Das Zeug heißt jetzt Lenovo und ist bis auf die immer noch gute Tastatur der gleiche Chinesenscheißmüll wie von Acer, Asus & Co. Der Laptop eines Bekannten war in 1 1/2 Jahren häufiger in Reparatur als bei ihm zuhause. Lang haben sie ja nicht gebraucht, den guten Ruf anzukratzen ...

    Für die N- und R-Serien mag das zutreffen - eben die klassische Erweiterung der Palette nach unten -, aber die T-Serie ist eigentlich kaum anders als die alten IBM-Notebooks.



  • audacia schrieb:

    Für die N- und R-Serien mag das zutreffen - eben die klassische Erweiterung der Palette nach unten -, aber die T-Serie ist eigentlich kaum anders als die alten IBM-Notebooks.

    Ne, ist leider wirklich ein klassisches Stinkpad (frag' mich jetzt bitte nicht nach dem Typ), mit Business- Service und so. Aber der klappt imerhin noch gut, was auch bitter nötig ist nach dem zweiten Mainboardtausch, mit dem Display war was, der Akku wurde zu Anfang getauscht und irgendwas mit dem DVD- Röster wird als Dauermacke nie behoben.
    Ich glaube fast, solche Sachen erledigen sich dann von selbst, wenn der entnervte Kunde wirklich Frisbee damit spielt.



  • pointercrash() schrieb:

    ... nach dem zweiten Mainboardtausch, mit dem Display war was, der Akku wurde zu Anfang getauscht und irgendwas mit dem DVD- Röster wird als Dauermacke nie behoben.

    Das klingt sehr nach einer Einzelerfahrung. Mein T500 hat keine Hardware-Macken, wenn man von dem gelegentlich leicht dysfunktionalen Fingerprint-Reader absieht - aber das ist legitim, denn über den habe ich mal ein Glas Wasser geschüttet 🙂

    Vielleicht habe ich auch nur Glück, und dein Fall ist die Regel. Dann ist Lenovo aber in absehbarer Zeit gleichfalls dysfunktional.



  • audacia schrieb:

    Vielleicht habe ich auch nur Glück, und dein Fall ist die Regel. Dann ist Lenovo aber in absehbarer Zeit gleichfalls dysfunktional.

    Ist ja nicht mal mein Fall, nur insofern, als daß ich einem Kumpel gesagt hab' ist ja quasi IBM, guck Dich dort in der Profireihe um. Sein vorheriges Sony- Schleppi war aber noch schlimmer, da gabs massive Probs mit dem Service.
    Einfach den nächsten, jährlichen Kundenzufriedenheitsreport der c't genau lesen. Tendenziell weiß man da dann halbwegs Bescheid.

    EDIT: Achso, ja, Scheiße, mein Sony- Laptop, das einzige Laptop, das ich je hatte, starb nach 6 Monaten den Akkutod. Nix Kulanz, knapp fünfhundert Deutschmarks wollten die für'n Ersatz haben. Die Geschichte hab' ich aber von anderen Marken ähnlich um 00/01 rum gehört und nie wieder Laptops angeschaut.



  • +fricky schrieb:

    ich bin eher der ergebnisorientierte typ, und keiner,

    Man kann sich in C++ viel Arbeit sparen, die man mit C++ von Hand immer wieder machen muß. Und vermeidet so viele mögliche Fehlerquellen. Die Makros in C sind ein schlechter Versuch das Problem anzugehen, aber als wirklich geglückt kann man das nicht bezeichnen. Templates in C++ lassen einem viel Arbeitszeit sparen, wenn man damit umzugehen weiß. Allerdings sind gerade die Fehlermeldungen bei falscher Nutzung von Templates in ihrer Undurchsichtigkeit wohl kaum mehr zu überbieten. (Mit der neuen ISO Norm wird es daher Abhilfe geben.) Ein weiser Rat ist bei C++ Programmieren, daß man möglichst auf C Sprachmittel verzichten sollte, da man so nicht viel gewinnt, dafür die Fehlerquellen auf C Niveau hält, ergo man gleich C programmieren kann. Für versierte C-Programmierer ein verführerisches Gift, statt C++ gibt es bei denen meist nur C with Classes.

    Andere Sprachen sind hier eindeutig im Vorteil z.B. Ada, aber mit Algol artigen Sprachen willst Du ja auch nichts zu tun haben.



  • ~john schrieb:

    +fricky schrieb:

    ich bin eher der ergebnisorientierte typ, und keiner,

    Man kann sich in C++ viel Arbeit sparen, die man mit C von Hand immer wieder machen muß.

    zum beispiel?

    ~john schrieb:

    Andere Sprachen sind hier eindeutig im Vorteil z.B. Ada, aber mit Algol artigen Sprachen willst Du ja auch nichts zu tun haben.

    ich mach manchmal VHDL, ist ja ADA-ähnlich.
    🙂



  • +fricky schrieb:

    zum beispiel?

    Template Meta Programming, aber das ist für dich ja so etwas wie "the dark arts" der C++ Programmierung. OOP, Exceptions werden direkt unterstützt, das spart viel Handarbeit gegenüber C ein. Leider habe ich schon viel zu viel C Code gesehen bei denen das Fehlerhandling sehr kreativ mit exit oder abort gelöst war. Fehlerhandling ist scheinbar etwas für Weicheier.


Anmelden zum Antworten