Warum programmiert ihr in C?



  • __-- schrieb:

    volkard schrieb:

    __-- schrieb:

    codequalität hier im forum von c und c++ vergleiche, dann fällt mir auf, dass bei c-code deutlich penibler auf fehler und returnwerte geachtet wird als in c++ (es verwendet doch jeder new xyz ohne darauf zu achten ob überhaupt speicher her ging...).

    new wirft in C++ doch eine Exception! Die braucht man nur in der main() abzufangen und fertig.

    komm ich dann nach der exception wieder dahinzurück wo sie geworfen wurde? oder kann ich dann das programm beenden?

    Konsolenprogramme beendet man normalerweise einfach nur mit der Meldung "Speicher ist alle gegangen". Ganz wie in C. Man kann natürlich auch was anderes machen. Der Waschmaschinensteuerprozess wird natürlich nicht beendet. Klickibuntis geben eine MessageBox aus und tun snst nichts. Je nach dem.

    Man kann nicht "zurück", aber man kann eine Exceptions auch woanders als in der main() fangen.



  • Ich programmiere nicht gerne größeren Code in C oder je nach Situation auch kürzeren, wenn man zB viel mit Strings arbeiten muss. Mir fehlen da einfach viel zu oft Templates (zumindest die STL-Container) oder Exceptions oder RAII oder andere Kleinigkeiten. In C ist es schon sehr aufwendig, wenn man etwas wie vector oder string haben will und man sieht oft, dass dort sehr viele Fehler gemacht werden (ala x = realloc(x, n); ). Es stimmt zwar, dass man in C oft schneller sieht, was der Code im Detail macht. Weil eben so etwas wie realloc direkt gemacht wird und man ständig und überall auf Fehlercodes prüfen muss. Aber das macht den Code nicht lesbarer, da man viel zu sehr damit beschäftigt ist, sich durch den Boilerplatecode zu wühlen.



  • Oh, schon leer. *nachfüllt*



  • Famer schrieb:

    Oh, schon leer. *nachfüllt*

    Ich hole schon mal Chips und Bier 🕶



  • Fakt ist doch das C nur was für Masochisten ist.



  • Ich programmiere in C++, C, C# und VB. Meiner Meinung nach hat jeder der Sprachen (auch PHP, Java, etc...) ein deutliches Anwendungsgebiet. Zu behaupten die eine wäre besser als die andere ist schlicht unfug.

    Man kann durchaus sagen, dass jede Sprache ihre Vor- und Nachteile besitzt und dadurch eine Daseinsberechtigung hat. Mir fallen auf Anhieb Anwendungsgebiete ein die ich niemals mit C++ schreiben würde, aber auch genügend wo C einfach die falsche Wahl ist.

    Es ist durchaus immer gut seinen Horizont für die anderen Sprachen zu öffnen. Schließlich ist aus Sicht eines Unternehmens immer die Sprache entscheidend, welche bei gleichen Ergebnissen die Entwicklungszeiten geringer hält.

    Mfg



  • this->that schrieb:

    dot schrieb:

    Es gibt nur einen einzigen rationalen Grund heutzutage C zu programmieren. Und das ist wenn es für eine Zielplattform keine C++ Implementierung gibt.
    Ein nicht rationaler Grund C zu programmieren wäre z.B. das heute relativ weit verbreitete C-Hacker-Syndrom, einige Symptome davon konnten ja auch hier auf den letzten Seiten schon beobachtet werden.

    Hehe. Klasse Artikel. Beschreibt in der Tat zu 100% unsere Unreg C-Kiddies 😃 👍

    komm geh wider spielen !



  • c.ool schrieb:

    C liegt genau in der Schnittmenge von klein, schnell und einfach; und da liegt es nunmal ziemlich alleine. 🙂

    Wobei man D auch noch dazuzählen könnte, nur ist das halt kaum verbreitet und hat kaum Auswahl bei den Compilern.

    Ansonsten ist C natürlich klasse, weil das Programmieren mit C noch richtig Spaß macht.
    Es ist nicht dieses öde zusammenklicken von Swingtoolboxen usw., sondern man kann da noch richtig was auf Hardwareebene reißen.



  • nichtreflexiv schrieb:

    Nur weil ihr permanent das Rad neu erfindet, in der Vergangenheit lebt und mit void Pointern rumfrickelt denkt ihr, ihr wärt was besseres.

    Oh, danke.

    Du hast offenbar noch nie ein großes Softwareprojekt entwickelt - dann würdest du merken, wie unpraktisch C ist und wieso alle modernen Sprachen OOP unterstützen.
    Was soll überhaupt "unter all dem abgeht" heißen? C++ hat keinerlei Overhead eingeführt.

    Doch! Geh mal mit nem Debugger durch compilierten C++ Code der Polymorphie bzw. das Überladen von Funktionen nutzt.
    Viel Spaß beim zurechtkommen!

    Bei C weiß ich wenigstens auch auf Speicherebene im Debugger, welche Funktion welche ist.



  • festus0815 schrieb:

    Den Anwender später, interessiert das wahrscheinlich überhaupt nicht.
    Er würde vermutlich über solches Köpfe_heiß_reden hier nur den
    selben schütteln.

    Naja, zumindest Javaanwendungen sind bei Anwendern meist eher unbeliebt, was IMO daran liegt, daß selbst das kleinste Programm erstmal die fette JRE Laden muß und das dauert und dauert und nervt nur den Anwender.

    Das gleiche Programm (vom Funktionsumfang her) in C und der Winapi geschrieben ist ratz fatz da -> das macht bei Endanwendern beliebt.

    Für Java haben die Leute eigentlich nur dann verständnis, wenn sie
    A) nichts besseres kriegen. Kennt jemand nen Ersatz zum TV-Browser?
    oder
    😎 sie Programmieren können und halt das einmalige Starten am Morgen von Eclipse oder Netbeans dulden bzw. gerne in Kauf nehmen.



  • festus0815 schrieb:

    Den Anwender später, interessiert das wahrscheinlich überhaupt nicht.
    Er würde vermutlich über solches Köpfe_heiß_reden hier nur den
    selben schütteln.

    Naja, zumindest Javaanwendungen sind bei Anwendern meist eher unbeliebt, was IMO daran liegt, daß selbst das kleinste Programm erstmal die fette JRE Laden muß und das dauert und dauert und nervt nur den Anwender.

    Das gleiche Programm (vom Funktionsumfang her) in C und der Winapi geschrieben ist ratz fatz da -> das macht bei Endanwendern beliebt.

    Für Java haben die Leute eigentlich nur dann verständnis, wenn sie
    A) nichts besseres kriegen. Kennt jemand nen Ersatz zum TV-Browser?
    oder
    😎 sie Programmieren können und halt das einmalige Starten am Morgen von Eclipse oder Netbeans dulden bzw. gerne in Kauf nehmen.



  • Didaktiker5 schrieb:

    Um es kurz zu machen:
    - Als C - Entwickler habe ich in erster Linie das Ziel, zuverlässige, hochperformante, robuste und - für den Anwender komfortable Software/Schnittstellen bereitzustellen.
    - Als C++ - Entwickler möchte man in erster Linie selber komfortabel programmieren, ob dann die Anwender vor der Nutzung des Kompilats erstmal wieder einen neuen Rechner anschaffen müssen, damit der dicke Brummer dann vielleicht halbwegs läuft, interessiert die Herrschaften erst in zweiter Linie.

    Thx, besser hätte ich es nicht schreiben können.

    C++ hat hier eigentlich nur einen Vorteil, die Entwicklung ist für den Auftraggeber billiger, da der C++ Entwickler schneller voran kommt.

    So kriegt der Auftraggeber dann zwar ein billiges Massenprodukt,
    aber eben keinen Rolls-Royce.

    --> So, also eigentlich müsste man sich eher fragen, warum noch irgendjemand in C++ programmiert, wo doch C für die meisten Problemstellungen ganz offensichtlich überlegen und auch flexibler ist.

    MFG

    Der Grund ist die Preisfrage.
    Die Kunden leben nach dem Motto Geiz ist geil und C++ oder Java ist in der Entwickluhng, daß kann man schon zugeben, halt billiger.

    C++ oder Java eignet sich daher perfekt zum Rausrotzen von Massenware.

    Gute C Qualität hat nunmal seinen Preis, aber dafür bekommt man dann auch das gehobene Produkt.



  • Didaktiker5 schrieb:

    Um es kurz zu machen:
    - Als C - Entwickler habe ich in erster Linie das Ziel, zuverlässige, hochperformante, robuste und - für den Anwender komfortable Software/Schnittstellen bereitzustellen.
    - Als C++ - Entwickler möchte man in erster Linie selber komfortabel programmieren, ob dann die Anwender vor der Nutzung des Kompilats erstmal wieder einen neuen Rechner anschaffen müssen, damit der dicke Brummer dann vielleicht halbwegs läuft, interessiert die Herrschaften erst in zweiter Linie.

    Thx, besser hätte ich es nicht schreiben können.

    C++ hat hier eigentlich nur einen Vorteil, die Entwicklung ist für den Auftraggeber billiger, da der C++ Entwickler schneller voran kommt.

    So kriegt der Auftraggeber dann zwar ein billiges Massenprodukt,
    aber eben keinen Rolls-Royce.

    --> So, also eigentlich müsste man sich eher fragen, warum noch irgendjemand in C++ programmiert, wo doch C für die meisten Problemstellungen ganz offensichtlich überlegen und auch flexibler ist.

    MFG

    Der Grund ist die Preisfrage.
    Die Kunden leben nach dem Motto Geiz ist geil und C++ oder Java ist in der Entwickluhng, daß kann man schon zugeben, halt billiger.

    C++ oder Java eignet sich daher perfekt zum Rausrotzen von Massenware.

    Gute C Qualität hat nunmal seinen Preis, aber dafür bekommt man dann auch das gehobene Produkt.





  • pointercrash() schrieb:

    Aber da fällt mir eine Sache ein, warum eine Koexistenz durchaus Sinn macht: Wenn ich meine Controllersoftware auf den PC portieren muß und mit einer GUI garnieren, geht's nicht einfacher, als mit dem Gespann C/C++. Die GUI ist in C++ doch schneller gemacht und mein C- Zeugs kann ich einfach mit "extern C" ins Projekt ziehen, schlimmstenfalls muß ich noch 'ne Wrapper- Klasse schreiben und fertig ist der Zauber! Dazu reichen meine C++- Kenntnisse aus und das Ganze ist doch bequemer, als alles in Java nachzufrickeln oder DLLs anzudocken (unschön in Java).

    So ne GUI kann man auch ratzfatz in Python realisieren und für den Rest weiterhin auf C bauen.

    Das ist allemal besser, als sich noch mit C++ rumzuplagen und schneller ist man auch.



  • volkard schrieb:

    __-- schrieb:

    volkard schrieb:

    __-- schrieb:

    codequalität hier im forum von c und c++ vergleiche, dann fällt mir auf, dass bei c-code deutlich penibler auf fehler und returnwerte geachtet wird als in c++ (es verwendet doch jeder new xyz ohne darauf zu achten ob überhaupt speicher her ging...).

    new wirft in C++ doch eine Exception! Die braucht man nur in der main() abzufangen und fertig.

    komm ich dann nach der exception wieder dahinzurück wo sie geworfen wurde? oder kann ich dann das programm beenden?

    Konsolenprogramme beendet man normalerweise einfach nur mit der Meldung "Speicher ist alle gegangen". Ganz wie in C. Man kann natürlich auch was anderes machen. Der Waschmaschinensteuerprozess wird natürlich nicht beendet. Klickibuntis geben eine MessageBox aus und tun snst nichts. Je nach dem.

    Man kann nicht "zurück", aber man kann eine Exceptions auch woanders als in der main() fangen.

    Tja, in C hat man das Problem dann wohl nicht.

    Denn hier kann ich bequem ATOMIC zurückgehen, den User sagen, der Speicher ist alle und er soll was anderes machen.
    Und letzteres kann ja durchaus mal eine Option sein.

    Z.b.ein Grafiker in einem 3d Modelprogramm.
    Dann macht er das 3d Dingens halt mit weniger Polygonen und schon paßt der Speicher.
    Das Programm mußte vorher aber nicht beendet werden.

    Bei C++ fliegt er dann wohl mit der Exceptions und "Speicher zu" knapp aus dem Programm.



  • dot schrieb:

    Ein nicht rationaler Grund C zu programmieren wäre z.B. das heute relativ weit verbreitete C-Hacker-Syndrom, einige Symptome davon konnten ja auch hier auf den letzten Seiten schon beobachtet werden.

    Ich muß dem Artikel schonmal hier wiedersprechen (habe ihn noch nicht ganz zu ende Gelesen)

    Darin heißt es:

    Sure, you can use the STL in the wrong way, leading to inefficient code, but the STL gives you the tools to easily create efficient and safe code,very much unlike C which offers you absolutely nothing of the sort. Moreover, as already seen above, C more probably leads to messy and unmaintainable spaghetti code which is probably also less efficient.

    Ich würde sagen.
    Gerade weil C hier nichts liefert, muß der Programmierer lernen, wie man es effizient realisiert.

    Am Ende weiß der erfahrene C Programmierer also sein Werkzeug effizient zu nutzen, da er auch die Algorithmen und Methoden kennengelernt hat um zum Ziel zu gelangen.

    Der C++ Coder hat dagegen immer noch nicht gerlernt, was seine STL Funktionen unter der Haube machen und deswegen wird er sie auch immer noch nicht immer richtig anwenden können.



  • stl graus !
    wie kann man etwas gut finden, wenn man nicht genau weis wie es unter dem verdeck aussieht?
    das ist ja das gleich, wie ein crypto kopf, der einen verschlüsselungsalgorithm schreibt aber die details nixht veröffentlichen will.
    nur weil mann vieleicht bei einem win-klickbunti soft. schneller ans ziel komme mit c++, ist das für mich noch kein argument.



  • C Fan schrieb:

    volkard schrieb:

    __-- schrieb:

    volkard schrieb:

    __-- schrieb:

    codequalität hier im forum von c und c++ vergleiche, dann fällt mir auf, dass bei c-code deutlich penibler auf fehler und returnwerte geachtet wird als in c++ (es verwendet doch jeder new xyz ohne darauf zu achten ob überhaupt speicher her ging...).

    new wirft in C++ doch eine Exception! Die braucht man nur in der main() abzufangen und fertig.

    komm ich dann nach der exception wieder dahinzurück wo sie geworfen wurde? oder kann ich dann das programm beenden?

    Konsolenprogramme beendet man normalerweise einfach nur mit der Meldung "Speicher ist alle gegangen". Ganz wie in C. Man kann natürlich auch was anderes machen. Der Waschmaschinensteuerprozess wird natürlich nicht beendet. Klickibuntis geben eine MessageBox aus und tun snst nichts. Je nach dem.

    Man kann nicht "zurück", aber man kann eine Exceptions auch woanders als in der main() fangen.

    Tja, in C hat man das Problem dann wohl nicht.

    Denn hier kann ich bequem ATOMIC zurückgehen, den User sagen, der Speicher ist alle und er soll was anderes machen.
    Und letzteres kann ja durchaus mal eine Option sein.

    Z.b.ein Grafiker in einem 3d Modelprogramm.
    Dann macht er das 3d Dingens halt mit weniger Polygonen und schon paßt der Speicher.
    Das Programm mußte vorher aber nicht beendet werden.

    Bei C++ fliegt er dann wohl mit der Exceptions und "Speicher zu" knapp aus dem Programm.

    Hä???
    Das ist doch ganz genau "Klickibuntis geben eine MessageBox aus und tun sonst nichts." Der Benutzer Klickt "Render das mal". Dabei geht der Speicher aus. Messagebox "Konnte nicht rendern, weil der Speicher alle ging." kommt. Benutzer macht das Modell kleiner und klickt nochmal "Render mal". Diesmal klappt's.
    Welches Problem genau?



  • C Fan schrieb:

    Am Ende weiß der erfahrene C Programmierer also sein Werkzeug effizient zu nutzen, da er auch die Algorithmen und Methoden kennengelernt hat um zum Ziel zu gelangen.

    Der C++ Coder hat dagegen immer noch nicht gerlernt, was seine STL Funktionen unter der Haube machen und deswegen wird er sie auch immer noch nicht immer richtig anwenden können.

    Lächerlich.
    Du vergleichst hier einen erfahrenen C-Programmierer mit einem C++-Anfänger.


Anmelden zum Antworten