Warum programmiert ihr in C?



  • Dass man vor Satzzeichen keine Leerzeichen macht, ist aber in jeder Sprache so. 🙄

    Ist ja schlimm... besser so? 🙄

    Du willst mich ein C Kind nennen?

    Ich frage mich immer mehr ob ich das hier noch nötig habe. Könnte ja auch einfach unreg. schreiben...



  • -lowbyte- schrieb:

    Diskussion entschuldige ...

    Ich fragte nach, weil ich *keinen* Schreibfehler vermutete, sondern einen Jargon-Ausdruck mit einer Hintergrundbedeutung, die ich nicht kannte. (Klingt so nach disguise.)



  • Aufällig schrieb:

    -lowbyte- schrieb:

    Diskussion entschuldige ...

    Man macht vor Satzzeichen keine Leerzeichen. Wieso können eigentlich alle Cler kein Deutsch? Hat wohl auch was mit Intelligenz zu tun..

    Falsch!
    Das Leerzeichen war hier vollig korrekt.
    Die Auslassungszeichen haben ganze Wörter ersetzt, damit man sich damit dann einen Satz bauen kann.

    Diskussion, entschuldige ...

    Diskussion, entschuldige mich ob meiner Nachlässigkeit.

    Das Leerzeichen gehört nicht dahin, wenn man Wörter abbricht und deren Edne freistellt.

    Ich baue mir ein Haus...

    Ich baue mir ein Haustürschild.

    Ich baue mir ein Haus ...

    Ich baue mir ein Haus und hole mir dann einen runter.

    Man darf zwar das Leerzeichen weglassen, aber hier ist es mit Leerzeichen besser verständlich, denn mir als Leser wird nicht mehr die quälende Qual gelassen, ob ich das Wort und den Satz fortsetzen soll, oder nur wortweise den Satz.

    Diesbezüglich ist noch zu beachten, daß "korrekt" lokal ist. Zum Beispiel kennt unser Rechtschreibguru vom Zwiebelfisch nicht die Bedeutung der Anführungszeichen für das Quoten. Deutschlehrer eh nicht. Wir natürlich. Und in der Sprache sowohl draußen als auch in bedeutender Literatur wird gequotet wie sau.



  • -lowbyte- schrieb:

    Ich bin aus England und versuche so gut Deutsch wie möglich zu schreiben.

    Sprich, so gut wie möglich, und alles ist paletti. Kommas braucht nur, wer vor dem Absenden, um die Lesbarkeit zu erhöhen, seine Satze nicht umsortiert.
    Sprich so gut wie möglich und alles ist paletti. Kommas braucht nur jemand der vor dem Absenden seine Satze nicht umsortiert um die Lesbarkeit zu erhöhen. (Und Füllsel wie hier "jemand" einsetzt und so Sachen halt.)

    Ich bin aus England und versuche Deutsch so gut wie möglich zu schreiben.
    Ich bin aus England und versuche so gut Deutsch wie möglich zu schreiben.
    Ich bin aus England und versuche so gut wie möglich Deutsch zu schreiben.
    "so gut wie möglich " hätte ich als Leser gerne zusammen dann vermisse ich auch kein Komma. Aber wurstegal, es war auch ohne Kommas viel leichter zu lesen, als so manches hier. 🤡



  • anmerker schrieb:

    Dass man vor Satzzeichen keine Leerzeichen macht, ist aber in jeder Sprache so. 🙄

    Französisch.



  • Kein Leerzeichen steht
    - vor einem Punkt, Strichpunkt, Doppelpunkt, Fragezeichen, Ausrufezeichen,
    - nach einer öffnenden Klammer und vor einer schließenden Klammer (also beispielsweise so),
    - nach dem Anführungszeichen zu Beginn eines Zitats und vor dem entsprechenden Schlusszeichen: „Das ist ein Beispiel.",
    - vor und nach einem Schrägstrich: ein Beispiel zur Erklärung/Verdeutlichung.

    Hingegen steht in der Regel ein Leerzeichen
    - nach einem Punkt, Strichpunkt, Doppelpunkt, Fragezeichen, Ausrufezeichen,
    - vor und nach den Auslassungspünktchen … Danach steht übrigens niemals ein Punkt.
    Eine Ausnahme hinsichtlich der Leerzeichen bei … ist, wenn sich die Auslassung auf einen Teil des Wortes bezieht: „die …prämie“ oder so,
    - vor einer öffnenden Klammer und nach einer schließenden Klammer, falls danach nicht unmittelbar ein Satzzeichen wie zum Beispiel ein Komma folgt; weitere Ausnahme: wenn die Klammer einen Teil eines Wortes einschließt, zum Beispiel: „Mitarbeiter(innen)",
    - vor dem Anführungszeichen zu Beginn eines Zitats und nach dem entsprechenden Schlusszeichen, falls danach nicht unmittelbar ein Satzzeichen wie zum Beispiel ein Komma folgt.

    Source: Duden, 25. Auflage, S. 35, Regeln K 17 und K 18.



  • -lowbyte- schrieb:

    - vor und nach den Auslassungspünktchen … Danach steht übrigens niemals ein Punkt.

    Naja, das werden wir auch noch logischer machen, oder ich werde …!
    Wie kämen wir auch zu einem verdammten …?
    Also müssen wir ….
    Kommt Zeit, kommt Sinn.



  • remove



  • Also ich komme aus England, wohne aber in der Schweiz. Nicht das sich hier einer angelogen fühlt.



  • Ob ich C++ richtig kann? Wohl eher nicht, aber ich habe es wahrlich versucht zu lernen. Nach ein paar Monaten, in der ich mal mehr mal weniger gelernt hatte, war dann irgendwann die Motivation dahin.

    Und auch wenn ich jetzt keine große Ahnung von C++ habe, so habe ich mich doch mit der Sprache auseinandergesetzt und darf daher auch meine Erfahrung hier kund tun.

    Ich interessiere mich jetzt seit gut zwei Jahrzehnten für das Programmieren und C++ ist die erste Programmiersprache bei der ich irgendwann einfach die Lust verloren habe es weiter zu lernen. Als Bücher habe ich C++ Primer, Die C++ Programmiersprache und Effektive C++ zum Lernen benutzt.

    Keinerlei Probleme hatte ich vorher mit Assembler, GFA-Basic, Java, PHP. Python war eine wahre Freunde zu lernen auch wenn ich nicht viel damit gemacht hatte, so waren die Grundlagen in einer Woche gut zu lernen. Jetzt lerne ich gerade C und bin froh hier mal wieder eine richtig überschaubare Sprache vorzufinden.

    Zu OO kann ich auch nur sagen dass ich es nie richtig gebraucht habe.



  • Meinung001 schrieb:

    Ob ich C++ richtig kann? Wohl eher nicht, aber ich habe es wahrlich versucht zu lernen.

    Meinung001 schrieb:

    Python war eine wahre Freunde zu lernen auch wenn ich nicht viel damit gemacht hatte, so waren die Grundlagen in einer Woche gut zu lernen.

    Meinung001 schrieb:

    Zu OO kann ich auch nur sagen dass ich es nie richtig gebraucht habe.

    Also hast Du OOP nie gerafft. Und nur kleine Programme gebastelt.
    http://www.voidspace.org.uk/python/articles/OOP.shtml

    Meinung001 schrieb:

    Keinerlei Probleme hatte ich vorher mit Assembler, GFA-Basic, Java, PHP

    Du willst uns wohl verarschen. Oder nur sehr kleine Programmme gebastelt.



  • Nun komm mal runter Volkard, du willst doch hier nicht ernsthaft behaupten man brauche immer OOP um mittlere bis größere Programme zu entwickeln. Das ist absoluter Unsinn, sorry. OOP kann helfen kann aber auch genauso sehr hinderlich sein. Auf keine Fall ist OOP ein muss für gute und auch große Software. Leg dich mal wieder hin und schlaf dich aus vielleicht klappt es dann mit dem Nachdenken etwas besser.



  • Meinung001 schrieb:

    Ob ich C++ richtig kann? Wohl eher nicht, aber ich habe es wahrlich versucht zu lernen. Nach ein paar Monaten, in der ich mal mehr mal weniger gelernt hatte, war dann irgendwann die Motivation dahin.

    Hallo,

    jetzt würde mich mal interessieren, was denn die Probleme beim Erlernen von C++ war.

    C++ ist doch nur eine sinnvolle Erweiterung der Sprache C um OOP-Konzepte. Diese sind meiner Meinung nach nicht sehr schwer zu verstehen. Und wenn Du Java einigermassen kannst, sollte es doch auch mit C++ nicht so schwer fallen.

    Betrachten wir doch einfach mal die wichtigsten Änderungen:

    1. Was heißt eigentlich OOP?
    Bei der objektorientierten Programmierung werden Datenstrukturen und Methoden enger verzahnt. In C habe ich auf der einen Seite Strukturen und auf der anderen Seite Methoden. Methoden können als Parameter ein oder mehrere Strukturen bekommen oder auch nicht. Wie das verknüpft wird, bleibt den Programmierer überlassen. Es ist aber auch in C möglich, objektorientiert zu programmieren. Man/frau muß halt das, was der Compiler implizit bei C++ macht, die in C explizit ausformulieren. Beispiel stdio:

    Statt

    fprintf( file, "xxx" );
    

    würde man dann das, in C++ schreiben

    file->fprintf( "xxx" );  // wenn es denn sowas gäbe
    

    2. Kapselung
    In C++ kann der Zugriff auf Elemente einer Struktur gesteuert werden. So etwas gibt es in C direkt nicht, ich kann aber damit erreichen, daß nicht wild in den Strukturen herumgepfuscht wird. Wenn man die entsprechenden Getter und Setter Methoden implementiert, hat man trotzdem die Möglichkeit von überall aus, die Elemente zu ändern ist also genauso flexibel wie in C. Wenn diese Getter und Setter Methoden auch noch inline sind, kosten sie auch keine Performance.

    Nun werden Cler sagen, was habe ich davon? Ganz einfach, wenn ein Element geändert wird und ich möchte beim Debuggen herausfinden wo das passiert, brauch ich nur einen Breakpoint auf die Setterfunktion setzen und warten, bis der Debugger das Programm unterbricht.

    Nun werden die Cler sagen, das geht auch mit Watchpoints. Dann sage ich, daß dieses beim Debuggen das Programm ziemlich verlangsamen kann und dieses dadurch nur mühsamer wird.

    Ein weiterer Vorteil der Kapselung ist, daß es leichter ist, das Programm zu ändern, wenn sich im Laufe der Zeit die Logik des Programmes so ändert, daß beim Verändern eines Elements auch noch ein anderes Element angepasst werden muß oder irgendwelche Plausibilitäten eingebaut werden müssen.

    In C müsste ich alle Stellen heraussuchen, in denen das passiert und entsprechend anpassen, wer sauber in C++ realisiert hat, braucht nur genau diese eine Stelle suchen und korrigieren.

    Praktisch ist auch, daß ich die Kapselung nicht immer nutzen muß. Ich benutze auch in meinen C++ Klassen nach wie vor normale Strukturen, wenn mir der Extraaufwand mit Getter und Setter nicht sinnvoll erscheint. Und wenn es dann irgendwanneinmal doch geändert werden muß, zeigt mir schon der Compiler, wo Nacharbeiten erforderlich sind.

    3. Vererbung
    Das A&O eines komplexen Programmes sind die Datenstrukturen. Wenn die Datenstrukturen sauber formuliert sind, hat man schon die halbe Miete bei der Erstellung des Programmes. Dies gilt für jede Programmiersprache und auch beim Design eines Datenbankschemas.

    Hier bietet ein C++ eine ganze Reihe von Werkzeugen, die dem C-Programmieren fehlen. Ich kann beispielsweise einen Container schreiben, der eine abstrakte Datenstruktur speichern kann und jemand anderes erweitert diese abstrakte Struktur und kann trotzdem den Container benutzen. Wer schon einmal sich mit der OLE2 Api von Windoof beschäftigt hat, weiß was für einen Vorteil das bieten kann.

    4. Exceptions
    Man stelle sich mal ein Programm vor, das eine sehr tiefe Aufrufhierarchie. Ganz weit unten passiert ein Fehler und es heißt Kommando zurück. In C ist es einfach Routine, die Rückgabewerte aller Funktionen zu überprüfen und gegebenenfalls zu reagieren. Solche Routineaufgaben können aber problemlos vom Compiler erledigt werden und wenn dann doch mal eine besondere Fehlerbehandlung erforderlich sein sollte, die der Compiler nicht automatisch erledigen kann, macht man halt eine try..excpetion block.

    usw usf.

    Das besonders tolle an C++ ist, ich muß das Zeug nicht benutzen, ich kann wo immer es adäquat ist, auch meine normalen C-Funktionen benutzen. Beispiel:

    Niemand zwingt mich std::vector zu benutzen, wenn ich ein array brauche, dessen Größe schon vor der Speicheranforderung bekannt ist und das ich nur für einen Überschaubaren bereich brauche. malloc und free dürfen auch in C++ benutzt werden. Wer Klassen mit Konstruktoren benutzt, verwendet halt new[] und delete[].

    Grundätzlich gilt:
    C++ Programme sind nicht automatisch langsamer als C-Programme. Wer die Vorteile der STL nicht braucht, muß sie nicht nutzen. Wer sie braucht, wird auch in C keine großartigen besseren Ergebnisse abliefern. Und wenn doch, baut man sich halt seine eigenen Klassen.

    C Programme sind aber auch nicht automatisch absturzgefährdeter. Man kann auch in C sauber programmieren und auch mit C-Methoden kann man sehr große Projekte realisieren. Ich habe beispielsweise vor Jahren mal ein DTP-System für Unixkisten gemacht. Das war reines C, sogar nicht einmal Ansi C, Es war K&R C. (Da merke ich mal wieder wie alt ich eigentlich schon bin)

    Nochj ein Satz: OOP ist nicht erforderlich, es erleichtert aber manche Aufgaben ungemein.

    mfg Martin
    P.S.: Ich würde mir hier wünschen, daß diese Diskusion wieder in sachlichere Bahnen gelenkt wird. Es ist nicht zielführend sich gegenseitig zu beschimpfen und es bringt erst recht nichts, über die Deutschkentnisse mancher Forenteilnehmer herzufallen, wenn einem die Argumente ausgehen.



  • Bei OOP kann man sehr schnell viel falsch machen. Es ist sehr schwierig gute OO-Programmierer zu finden, da OOP wirklich nichts für Anfänger ist. Zumal ist C++ nicht wirklich eine Objektorientierte Programmiersprache jeder der OOP ernsthaft betreibt wird einen weiten Bogen um C++ machen, wenn er denn das kann. Ich schätze mal man braucht gute 2 Jahre um C++ und OOP einigermaßen zu erlernen, das ist vielen einfach zu aufwändig da es noch weit mehr zu lernen gibt als ein Paradigma und eine Programmiersprache.



  • nichtdeinErnstoder schrieb:

    Nun komm mal runter Volkard, du willst doch hier nicht ernsthaft behaupten man brauche immer OOP um mittlere bis größere Programme zu entwickeln.

    Nicht notwendig. Nur ungemein praktisch. Für mich sogar weniger wegen der Übersicht, als für die geordnete Ressourcenverwaltung. Deswegen komme ich mit der OO von Perl supi zurecht, während die von C# mir fast nichts gibt.

    nichtdeinErnstoder schrieb:

    Das ist absoluter Unsinn, sorry. OOP kann helfen kann aber auch genauso sehr hinderlich sein.

    Da muß man einfach schlau sein, und die OOP nicht dort einsetzen, wo sie stört. Wir müssen ja nicht OO-pseudoverpflichtende Sprachen wie Java nehmen.



  • P.S.: Ich würde mir hier wünschen, daß diese Diskusion wieder in sachlichere Bahnen gelenkt wird. Es ist nicht zielführend sich gegenseitig zu beschimpfen und es bringt erst recht nichts, über die Deutschkentnisse mancher Forenteilnehmer herzufallen, wenn einem die Argumente ausgehen.

    Danke Martin - das war der erste sachliche Beitrag in diesen Thread.



  • Ich denke diese Antwort fasst es auch ganz gut zusammen:

    :Why not using C++ for GTK-G ?

    Why using it? 😉

    :I saw you were using such notation '[object]_[method]'. You widly used
    :'[object]_init' or '[object]_close' or '[object]_shutdown' and this
    :looks like objects initialisations and destruction. So why ?

    Yes, this is modularity.

    Actually, the C code of GTKG is a mix of procedural style and OO style.

    I don't like C++. It's not really an OO language. At first sight it
    might appear to be one, but it is not. And it's so easy to write a mess
    in C++ that, brrr... it's not very encouraging.

    (I can develop why I think C++ is not an OO language if you want.)

    Furthermore, it takes better engineers to do OO design properly.
    Trivial OO design is easy, good OO design is hard. It would be harder
    to find good OO programmers than it is to find good C programmers.

    Finally, I don't know how good gcc is as a C++ compiler.

    But yes, I confess re-writing in an OO language would be nice.
    Unfortunately, the only OO language I know of is Eiffel.

    Raphael



  • C++ 30mal langsamer als C bekommt jeder hin der sich nicht sehr gut mit C++ und OOP auskennt. Da kann man in C++ so viel falsch machen und hat schnell ein Programm welches von der Performance an eine Scriptsprache erinnert. Viele Anfänger denken nur weil sie in C++ programmieren ist ihr Programm automatisch schneller als Beispielsweise ein Java-Programm. Es wird aber nur wirklich schneller sein wenn man sich extrem gut in C++ und OOP auskennt und das tuhen die wenigsten.



  • Du sagst also C++ ist eine schlechte Sprache weil so viele Leute nicht damit umgehen können!?



  • Cppungleichimmerschnell schrieb:

    C++ 30mal langsamer als C bekommt jeder hin der sich nicht sehr gut mit C++ und OOP auskennt. Da kann man in C++ so viel falsch machen und hat schnell ein Programm welches von der Performance an eine Scriptsprache erinnert. Viele Anfänger denken nur weil sie in C++ programmieren ist ihr Programm automatisch schneller als Beispielsweise ein Java-Programm. Es wird aber nur wirklich schneller sein wenn man sich extrem gut in C++ und OOP auskennt und das tuhen die wenigsten.

    Falsch. Es ist genau anders herum. In C++ musst du VERDAMMT viel falsch machen, damit das Programm mal langsam wird. Ganz anders als in Java.
    Da soll mir mal einer der C "Experten" ein Beispiel zeigen, in dem C++ Code 30mal langsamer ist als vergleichbarer C Code. Wir wissen alle, dass wir so ein Beispiel nie sehen werden. 🙄


Anmelden zum Antworten