Stilfrage: C als Präfix für Klassen
-
auf c++ ebene ist das aber egal und da rum gehts hier
Wusste gar nicht, dass wir uns im C++ Forum befinden. Mein Browser zeigt jedenfalls "Rund um die Programmierung" an.
Ich glaube ihr seid blos 0 == i weil ihr es als anfänger anders gelernt habt und fast nie ein i = 0 statt i == 0 geschrieben habt.
Dazu kann ich nur sagen, dass ich seit über 12 Jahren programmiere, Assembler, C und bin jetzt dabei die Mysterien von C++ zu erforschen. Vor 4 Jahren wurde dann aus Hobby der Beruf. Da denk ich kann man nicht mehr von Anfänger sprechen. Und mit der Begründung, die hier schon jemand gebracht hat, dass eine Warnung bei i = 0 im Getümmel von X Warnungen untergeht, der sollte besser mal versuchen ein Programm so zu schreiben, wo weder Fehler noch Warnungen entstehen (JA, das ist doch tatsächlich möglich ). Schliesslich will ich mich nicht um jede Unzulänglichkeit bezüglich Fehlervorbeugung kümmern müssen, da will ich mich voll und ganz auf meinen Compiler verlassen.
-
Original erstellt von groovemaster2002:
Dazu kann ich nur sagen, dass ich seit über 12 Jahren programmiere, Assembler, C und bin jetzt dabei die Mysterien von C++ zu erforschen. Vor 4 Jahren wurde dann aus Hobby der Beruf. Da denk ich kann man nicht mehr von Anfänger sprechen.das du jetzt anfänger bist will ich damit nicht sagen, ich meine als du es mal warst
Original erstellt von groovemaster2002:
Und mit der Begründung, die hier schon jemand gebracht hat, dass eine Warnung bei i = 0 im Getümmel von X Warnungen untergeht, der sollte besser mal versuchen ein Programm so zu schreiben, wo weder Fehler noch Warnungen entstehen (JA, das ist doch tatsächlich möglich ). Schliesslich will ich mich nicht um jede Unzulänglichkeit bezüglich Fehlervorbeugung kümmern müssen, da will ich mich voll und ganz auf meinen Compiler verlassen.jup und auch wenn man fremd header und libs benutzt gibt es z.b. beim msvc ein nettes #pragma
#pragma warning( push, 3 ) #include <irgendwas.h> #pragma warning( push, 4 ) int main() { int i = 0; if(i = 0); }
-
Original erstellt von groovemaster2002:
Ich denke es reicht Namen grob mit Hilfe von Gross- und Kleinschreibung zu unterscheiden.Das ist in deutschen Texten so üblich, ja. Ist auch extrem praktisch, weil ich dann Texte schön schnell überfliegen kann (die meisten Menschen lesen dann nur die Wörter die mit einem Großbuchstaben beginnen, weil Deutsch im Gegensatz zum Englischen eine eher 'Substantiv-Basierte' Sprache ist), aber genau das sollte man mit Progammcode nicht(!) machen.
Das 'Problem' liegt bei C++, weil dort einige Programmteile nicht lokal interpretierbar sind: 'a b(c);' ist zB in C eine Funktionsdeklaration, in C++ könnte man auch ein Objekt b vom Typ a in Abhängigkeit von c erzeugen wollen. Um dieses globale Wissen zu kompensieren verwendet man eine Notation, die es in C nie gebraucht hat. In C ist die Notwendigkeit eine Notation irgendeiner Art zu verwenden (damit meine ich jetzt nicht, kein sinnbasiertes Namensschema einzuführen) nicht gegeben.
-
@Dimah
#pragma versuch ich idR zu vermeiden, da nicht alle von jedem Compiler gleich gut unterstützt werden. Habe da zB zwischen MS und Borland schon Unterschiede festgestellt (kann aber auch daran liegen, dass ich nur relativ alte Borland Compiler kenne wie der bei BC5).@Daniel E.
Um dieses globale Wissen zu kompensieren verwendet man eine Notation, die es in C nie gebraucht hat.
Und wie sieht diese Notation genau aus? Vielleicht könntest du mal ein konkretes Beispiel posten. Da ich mich momentan gerade als C++ Rookie versuche würde mich das schon sehr interessieren.
-
Original erstellt von groovemaster2002:
**@Dimah
#pragma versuch ich idR zu vermeiden, da nicht alle von jedem Compiler gleich gut unterstützt werden. Habe da zB zwischen MS und Borland schon Unterschiede festgestellt (kann aber auch daran liegen, dass ich nur relativ alte Borland Compiler kenne wie der bei BC5).
**#pragma wird vom compiler ignoriert wenn er den befehl nicht versteht
dh man packt das #pragma vielleicht in ein paar guards und die sache ist gegessen -> und man erreicht das sinnlose warnungen wegfallen und man trotzdem mit der höchsten warnstufe kompilieren kann (weil die 'sinnlosen' warnungen nur bei deinem code warnen).gerade bei C/C++ ist das wichtig, da man die fehler zur compileTime erkennen muss.
-
Original erstellt von Dimah:
**jup und auch wenn man fremd header und libs benutzt gibt es z.b. beim msvc ein nettes #pragma
#pragma warning( push, 3 )
#include <irgendwas.h>
#pragma warning( push, 4 )
**aber die header des msvc selbser werfen lauter warnungen.
dazu kann man deinen trick erweitern mit #pragma includealias(<iostream.h>,<msvc_bugfix/iostream.h> ) und in der <msvc_bugfix/iostream.h> steht dein code mit
#pragma warning( push, 3 )
#include <iostream>
#pragma warning( pop )
-
Erfahrung kann schließlich in vielerlei Hinsicht auch hinderlich sein. Nimm einen erfahrenen C Programmierer und versuche ihm ordentliches C++ beizubringen. Da stört die Erfahrung mehr als das sie nützt.
Der Satz lässt mich schon den ganzen Tag nicht mehr los. Jetzt muss ich das doch noch kommentieren.
Die Erfahrung ist nicht hinderlich. Das Problem ist, dass man oft zu bequem ist, sich in eine neue Sichtweise einzuarbeiten. Zu faul neu zu lernen. Wenn ein erfahrener C-Programmierer an C++ rangeht und sich auf die Sachen raussucht, die er schon kennt, einfach weil es bequemer scheint, dann findet er seinen Weg nie. Es ist nicht seine Erfahrung, die ihn behindert. Teile seiner Erfahrung können ihm auch in C++ nützlich sein. Behindert wird er, wenn er seine Erfahrung unkritisch auf das neue überträgt, wenn er sich nur auf Gemeinsamkeiten stürzt.
Jetzt mal wieder zurück zum eigentlichen Thema des Threads. Präfixe. Meine Erfahrung aus Projekten mit und ohne Präfixen ist, dass sie mir geholfen haben die Sourcen mit denen ich arbeiten musste leichter und schneller zu verstehen. Im allgemeinen behindert es mich nicht, wenn ich Präfixe benutze. Warum sollte ich sie nicht mehr verwenden?
Sollte aber der (unwahrscheinliche) Fall auftreten, dass ich die Länge von Variablennamen stark beschränken müsste, muss ich eine Entscheidung treffen. Ist es wichtiger einen aussagekräftigen Bezeichner zu haben oder ist es sehr wichtig über Präfixe den Typ zu erkennen. Bei dieser Entscheidung kann mir meine Erfahrung helfen. Wenn ich nie die Erfahrung gemacht habe, dass mir Präfixe was bringen können, werde ich die Vorteile die ich damit haben kann nie erfahren. Sollte ich aber, weil ich positive Erfahrungen mit Präfixen gemacht habe, darauf bestehen, dass diese verwendet werden, und gar nciht darüber nachdenken, dass ich auch Vorteile haben kann, wenn ich sie weglasse, dann bin ich unflexibel und borniert. Es ist nicht die Erfahrung die mich behindert, sondern die Faulheit und die Unfähigkeit über meinen Tellerrand zu gucken.
-
Hmmm.. beeindruckend, Kauz
Ich denke, dass Du recht hast.
Ich hab mir die Präfixe (so mal nebenbei gesagt) erst vor circa einem Jahr angewöhnt, nachdem ich bemerkt habe, dass ich durch alte Programme nicht mehr durchsehen konnte. Dass ich jetzt hier als altmodisch, unflexibel und auch noch überheblich angesehen werde - nun, damit muss ich wohl leben. Naja, wer mich kennt, kennt mich besser
<Selbsbeschreibung>
Ich habe meine Meinung, verteidige sie aber versuche nicht, sie jemandem aufzuzwingen. Ich mache mein eigenes Ding, ob es anderen sinnvoll erscheint, oder nicht. Ändern kann ich sie übrigens auch, aber nur, wenn ich stichhaltige Beweise habe, dass meine Meinung falsch ist, und die gibt es gerade in Stilfragen nicht
</Selbstbeschreibung>
Wenn ihr eure Erfahrungen macht, dann müssen es nicht meine sein. Ich hab übrigens nie gesagt "Volkard, benutze Präfixe!". Wäre blödsinn. Ich bin sie gewohnt und setze sie für mich sinnvoll ein. Volkard meint für sich, dass sie unsinnig sind. Sie würden ihn womöglich irritieren. Gut, das ist auch sein gutes recht. Ich will auch garnicht, dass alle meinen Stil schreiben. Erstens ist ein Programmierstil wie ein Fingerabdruck und zweitens weiß ich, dass ich nicht unbedingt der sauberste Programmierer bin (ich benutze sogar globale Variablen ).Ich hab übrigens mehrmals versucht, diese Diskussion zu einem vernünftigen Ende zu bringen. Immerhin bin ich inzwischen "überheblich" geworden, weil ich dagegen gehalten habe, als andere Leute meinten, Präfixe wären "generell überflüssig" oder "schwachsinn". Ich sagte, dass das unter Umständen ziemlich sinnvoll sein kann, was aber auch wieder nur der Fall ist, wenn man damit umgehen kann und will. (ohne jemandem zu nahe treten zu wollen, aber ist der überheblich, der zu Kompromissen bereit ist?)
Die Frage, war "Sind Präfixe für Klassen sinnvoll?" Aus meiner Sicht immernoch ja! Wenn ihr mich dafür an den Marterpfahl hängen wollt, bitte. Nur solltet ihr mal drüber nachdenken, ob das nicht eher eine Beschäftigung für ein privates Treffen wäre, anstatt hier im Forum, wo jemand von Deinen Nubes, Volkard, eine (meines Erachtens durchaus berechtigte) Frage stellt und als Antwort Abschweifungen, Beleidigungen, Unfreundlichkeiten und vor lauter Verwirrung überhaupt keine sinnvolle Aussage bekommt.
Das ist nicht gerade das, was ich von einem Forum erwarte. Klar, eine Meinung sollte jeder haben, aber auch andere akzeptieren.Was ich vergessen habe. Hat schonmal einer eine IDE ála VC++ auf einem Großrechner gesehen? Ich nicht!
Insofern bin ich nicht überholt. Der Trend geht nämlich allmählig wieder dazu über, dass man Mainframes benutzt. Mal abgesehen davon bin ich ein Freund von Papier. ich kann auf einem Monitor nicht lesen. Ich blättere vor, zurück, schreibe mir Notizen an den Rand, mache Eselsohren in wichtige Seiten - habt ihr schonmal versucht, einen Monitor zu knicken?? Klar hat sogar der Bloodshed inzwischen einen Klassenbrowser, aber wusstet ihr, dass Papier eine längere bescheinigte Haltbarkeit hat, als eine Festplatte oder CD? (Erzählt mir nix, ich hab grade ein Projekt am Laufen, in dem es um Langzeitsicherung von Daten geht ;))
<ironie>Zu dumm nur, dass ein Klassenbrowser nicht ausdruckbar ist.</ironie>Es schließt mit freundlichem Gruß
DjR
-
Original erstellt von DocJunioR:
wusstet ihr, dass Papier eine längere bescheinigte Haltbarkeit hat, als eine Festplatte oder CD?Klar. Aber Papier geht kaputt, wenn man damit arbeitet, und hält sich, wenn es in einem Buchregal verstaubt. Elektronisch gespeicherte Daten halten sich um so besser, je mehr man mit ihnen arbeitet, und gehen verloren, wenn man sie lange nicht anfaßt.
-
1:0 für dich, Bashar
Ich arbeite aber mit Papier. wenn ich damit fertig bin, gibt's eh ne neue druckversion[ Dieser Beitrag wurde am 24.03.2003 um 17:07 Uhr von DocJunioR editiert. ]
-
@DocJunioR
also langsam ist es einfach nur noch dreißt. Ich habe jetzt mal alle fünf Seiten nach dem Wort "überheblich" durchsucht. Ergebnis: Nur *du* und *Kauz01*
haben dieses Wort benutzt. Dabei hat sonst *niemand* irgendwas von "überheblich" geschrieben.Dass ich jetzt hier als altmodisch, unflexibel und auch noch überheblich angesehen werde - nun, damit muss ich wohl leben
Wäre nett, wenn du wenigstens die Beiträge lesen und verstehen würdest, bevor du rumjammerst.
So, von mir aus kannst du jetzt mit deiner Selbstbeweihräucherung weitermachen.
-
Original erstellt von DocJunioR:
Insofern bin ich nicht überholt. Der Trend geht nämlich allmählig wieder dazu über, dass man Mainframes benutzt.Bitte Quelle angeben.
Mal abgesehen davon bin ich ein Freund von Papier. ich kann auf einem Monitor nicht lesen.
Also überholt.
Ich blättere vor, zurück, schreibe mir Notizen an den Rand, mache Eselsohren in wichtige Seiten - habt ihr schonmal versucht, einen Monitor zu knicken??
Andere Werkzeuge, andere Techniken.
a) Mehrer Dateien offen haben, und umschalten.
b) Editor merkt sich pro Datei letze Corsorposition.
c) Copy&Paste verwenden statt Papierschnipsel auszuschneiden und woanders hinzukleben.
d) Lesezeichen benutzen.
e) Volltextsuche benutzen.
Also überholt.Klar hat sogar der Bloodshed inzwischen einen Klassenbrowser, aber wusstet ihr, dass Papier eine längere bescheinigte Haltbarkeit hat, als eine Festplatte oder CD?
Ja, und? Tontafeln haben noch ne längere.
Die sind sogar noch überholter und für Dich automatisch besser als Papier.
-
Die Erfahrung ist nicht hinderlich. Das Problem ist, dass man oft zu bequem ist, sich in eine neue Sichtweise einzuarbeiten.
Da bin ich anderer Meinung. Mit der Zeit prägen sich bestimmte Denkstrukturen/Herangehensweisen aus. Wer sein Leben lang Probleme strukturiert gelöst hat, wird immer Schwierigkeiten haben wirklich gut objektorientiert zu denken.
Ich denke nicht, dass all die unzähligen Programmierer die Probleme mit einem Paradigmen-Wechsel haben, nur zu faul, bequem oder unkritisch sind.
Es gibt einfach keine 100%tige flexibilität.
-
Original erstellt von HumeSikkins:
[quote]
Ich denke nicht, dass all die unzähligen Programmierer die Probleme mit einem Paradigmen-Wechsel haben, nur zu faul, bequem oder unkritisch sind.Es könnte auch daran liegen, dass erfahrene Programmierer nicht alles glauben, was über Objektorientierung gelogen wird.
-
Es könnte auch daran liegen, dass erfahrene Programmierer nicht alles glauben, was über Objektorientierung gelogen wird.
OO war nur als Beispiel gedacht. Und ich wollte auch nicht sagen, dass OO generell besser ist als andere Techniken. Fakt ist aber, dass es viele C-Experten gibt, die den Wechsel zur OOP niemals wirklich schaffen. Andersherum hört man auch von vielen OOP-Experten, dass sie nicht mehr dazu in der Lage wirklich gute strukturierete Lösungen zu basteln. Einfach, weil ihr Hirn mittlerweile automatisch in anderen Kategorien denkt.
Es geht mir also überhaupt nicht um eine Wertung der konkreten Techniken. Nur darum, dass meiner Meinung nach Erfahrung auch hinderlich sein kann.
-
Original erstellt von HumeSikkins:
**@DocJunioR
also langsam ist es einfach nur noch dreißt. Ich habe jetzt mal alle fünf Seiten nach dem Wort "überheblich" durchsucht. Ergebnis: Nur *du* und *Kauz01*
haben dieses Wort benutzt. Dabei hat sonst *niemand* irgendwas von "überheblich" geschrieben.
**Original erstellt von HumeSikkins:
**[quoteScheinbar kann ich nicht nur nicht lesen sondern auch nicht schreiben. Ich habe nicht denjenigen als überheblich angesehen, der seine Meinung kund tut sondern denjenigen als gönnerhaft, der so Großmutterhaft daher redet.
**Sorry, dass ich mir den Schuh angezogen habe, vielleicht passt er mir ja garnicht. Fragt sich noch, wer seine eigenen Beiträge liest..
Deswegen finde ich übrigens Papier schöner - Es ist übersichtlich..
@ Volkard: überholt stand afaik nicht wörtlich in den Beiträgen, kam aber für mich so rüber. Zu den Arbeitstechniken. altmodisch ist nicht gleich überholt. Ich hab mich daran gewöhnt und werde es weiterhin nutzen - sorry ;). Möglich, dass es für Dich überholt ist, aber es geht genausowenig nach Deiner Nase, wie nach meiner auf dieser Welt! du machst es, wie Du es am besten kannst, Hume macht's wie er's will und ich habe meinen eigenen stil.
BTW: Ich möchte diese Diskussion wieder auf ein sachliches Level zurückführen. Mag sein, dass ich ab einem gewissen Punkt auch nicht mehr besonders freundlich war, aber ich habe von meinen Erfahrungen gesprochen, die hier nach meiner Auffassung einfach als völlig sinnlos und überflüssig hingestellt wurden und das ist ne Sache, mit der ich nunmal ein Problem habe.
Volkard, ich habe höchsten Respekt vor Deinem Wissen, was C++ angeht, aber ich bin nicht der Meinung, dass irgendjemand der Weisheit letzten Schluß findet. Nicht Du, nicht Hume, Kautz und erst recht nicht ich. Es sollte immer mehr als eine Meinung geben, aber diese Diskussion ist nichts mehr als eine Anhäufung von gegenseitigen haltlosen Kritiken. Das Thema ist wohl eher was für nen gemütlichen Abend bei nem Bierchen. Ich wurde hier mehrmals falsch verstanden und genauso geht's mir mit euch. Tja, der digitale Buchstabe hat halt seine Nachteile..
Ich hab ehrlich anderes im Sinn, als mich hier unbeliebt zu machen (Ich werde trotzdem immer meine Meinung zum Besten geen) zumal der Schreibstil nichts mit der Logik hinter dem Programm zu tun hat, die imho eigentlich den wichtigeren Teil des Ganzen ausmacht..
Ich habe meine Meinung gesagt und damit ist es für mich jetzt gut. Für weitere Nachfragen stehe ich immer bereit
Gruß
DjR
-
Da bin ich anderer Meinung. Mit der Zeit prägen sich bestimmte Denkstrukturen/Herangehensweisen aus. Wer sein Leben lang Probleme strukturiert gelöst hat, wird immer Schwierigkeiten haben wirklich gut objektorientiert zu denken.
Mit dieser Argumentation kannst du jedes Lernen vor dem Erlernen der Objektorientierung verbieten oder als schlecht hinstellen.
Ich persönlich musste schon in der Schule Probleme und in Deutsch ganz anders lösen als die in Geschichte, hatte bei Latein eine völlig andere Vorgehensweise als bei Mathematik. Etwas überspitzt ausgedrückt sagst du: Wer Latein gelernt hat ist in den Denkstrukturen so festgefahren, dass er nie vernünftig programmieren wird.
Ich möchte die Sache hier aber nicht auf den Gipfel treiben. Es ist auch so, dass es Anstrengung erfordert, nicht immer wieder in das alte Fahrwasser zurückzugehen. Du hast recht mit der obigen Aussage. Es ist immer schwierig was neues zu lernen. Ich persönlich sähe meine Arbeit und auch mein Leben als sehr langweilig an, wenn ich aufhören würde mich diesen Schwierigkeiten zu stellen.
-
Ihr diskutiert ja immernoch...
-
Original erstellt von DocJunioR:
...zumal der Schreibstil nichts mit der Logik hinter dem Programm zu tun hat, die imho eigentlich den wichtigeren Teil des Ganzen ausmacht.Zur Logik gibts auch Stil. Der eine mag eher endliche Autonaten, der andere lieber Rekursion und der dritte leiber wiederholte Anläufe. Der eine mag nur flache lokale Variablen und dafür mehr übergeben, der andere mag gerne Attribute.
Und auf jeden Fall ist's da ganz unaufgeräumt. Heut ist die Auswertung zu wpc53 gekommen: http://www.geocities.com/acmesofties/wpc.htm
Von 6 Einsendern haben die Tester drei als falsch erkannt. Der Siegercode ist auch falsch, womit's vier wären. Und daß die anderen beiden korrekt sind, mag ich auch nicht so auf Anhieb glauben, leider kenn ich deren Code nicht.
Hab mal Code von so nem 3D-Shooter gesehen. Glaub' doom war's. War schrecklich. So das zusammenfummeln der Schleifen und Bedingungen und dann wiedermal unmotiviert break oder goto...
Leider finden sich da gar keine Regeln. Und Diskussionen über den Stil größerer Codebrocken finden nicht statt.
edit: alle 6 einsendungen waren falsch.[ Dieser Beitrag wurde am 25.03.2003 um 12:53 Uhr von volkard editiert. ]
-
Hallo Kauz01,
ich schreibe es gerne für dich noch einmal: Mir geht es *nicht* um eine Wertung.
Ich sprach lediglich von Schwierigkeiten.Etwas überspitzt ausgedrückt sagst du: Wer Latein gelernt hat ist in den Denkstrukturen so festgefahren, dass er nie vernünftig programmieren wird.
Nein. Das sage ich nicht. Weder an- noch überspitzt!
Was ich sage ist, dass vorhandene und gut ausgeprägte Denkstrukturen schwer zu durchbrechen sind.