Haben Headerdateien eigentlich Vorteile?
-
Optimizer schrieb:
Blue-Tiger schrieb:
was ich persoenlich an Header-Dateien mag, ist dass man die gesamte Schnittstelle einer Klasse auf einen Blick sieht
Das hab ich bei Java lange Zeit vermisst
Jo, schon komisch, dass Notepad das nicht anzeigen kann. Das war mal wirklich ein non-Argument.
Natürlich kann das Notepad. Blue-Tiger wollte dauf hinaus, dass man nicht ewig durch den ganzen Code scrollen muss um alle Methoden zu sehen. Man startet nicht immer Visual Studio um nur kurz einen Blick auf eine bestimmte Schnittstelle zu werfen, sonst würde man wegen der Ladezeit nicht mehr zum coden kommen.
Optimizer schrieb:
Man möchte, dass die Compiler hochgradig optimieren, was auf Grund der getrennten Übersetzung gar nicht möglich ist.
Begründung?
-
Red-Tiger schrieb:
Optimizer schrieb:
Blue-Tiger schrieb:
was ich persoenlich an Header-Dateien mag, ist dass man die gesamte Schnittstelle einer Klasse auf einen Blick sieht
Das hab ich bei Java lange Zeit vermisst
Jo, schon komisch, dass Notepad das nicht anzeigen kann. Das war mal wirklich ein non-Argument.
Natürlich kann das Notepad. Blue-Tiger wollte dauf hinaus, dass man nicht ewig durch den ganzen Code scrollen muss um alle Methoden zu sehen. Man startet nicht immer Visual Studio um nur kurz einen Blick auf eine bestimmte Schnittstelle zu werfen, sonst würde man wegen der Ladezeit nicht mehr zum coden kommen.
Ich starte schon immer Visual Studio kurz. Wenn du Notepad benutzt, um Quelltext zu betrachten, hast du ganz einfach was falsch gemacht. Im übrigen ist das Argument allein schon deshalb nicht so geil, weil man im Header _jede Menge_ anderen Schrott auch noch sieht außer die Schnittstelle. Und wie gesagt, es ist schon generell ein non-Argument. Ich will gar nicht den Quelltext sehen, wenn mich die Schnittstelle interessiert, da finde ich sowas schon viel besser. Wenn du "durch den ganze Code scrollen" musst, um "alle Methoden zu sehen", dann sage ich "lerne die Bedienung einer IDE deiner Wahl".
Optimizer schrieb:
Man möchte, dass die Compiler hochgradig optimieren, was auf Grund der getrennten Übersetzung gar nicht möglich ist.
Begründung?
Die Begründung ergibt sich völlig automatisch, du willst eine Begründung für etwas wie "wenn man keinen Apfel hat und auch keinen kauft, hat man auch weiterhin keinen". Zwei Module, die sich gegenseitig benutzen, aber getrennt, nichts voneinander wissend erstellt werden und die bei der Übersetzung u.U. die Implementierung auch gar nicht kennen, können nicht hochoptimiert sein. Erst beim Linken können Dinge wie Inlining usw. wirklich gut stattfinden, weshalb man den Linker wieder aufbläht. Stand aber fast so auch schon ein, zwei Sätze später.
-
Optimizer schrieb:
Blue-Tiger schrieb:
was ich persoenlich an Header-Dateien mag, ist dass man die gesamte Schnittstelle einer Klasse auf einen Blick sieht
Das hab ich bei Java lange Zeit vermisst
Jo, schon komisch, dass Notepad das nicht anzeigen kann. Das war mal wirklich ein non-Argument.
Mag sein dass ich da unflexibel bin, aber ich find Header-Dateien in der Hinsicht irgendwie uebersichtlicher als die Methodenauflistungen, die mir IDEs anbieten. Ich geb zu bei tiefen Klassenhierarchien ist eine Header-Datei bei weitem nicht so informativ wie das, was mir in der IDE angeboten wird. Trotzdem, ich persoenlich (<< subtiler Hinweis, den du anscheinend beim ersten mal nicht mitbekommen hast) komm idR mit Header-Files besser zurecht als mit "Class Browsern" oder aehnlichem.
-
Ich kann mit dem gezeigten Objektbrowser zwar auch nicht viel anfangen, aber
trotz allem reicht mir die Übersichtlichkeit der (z.B.) C#-Files vollkommen
aus. Wenn die Klassen klein sind (was sie ja sein sollten), man eine IDE
mit IntelliSense hat (wie heißt das bei der Konkurrenz) und die
Möglichkeit der IDEs nutzt, Bereiche zu gruppieren hat man eine genauso gute
Übersicht, wie bei Header-Files.Auf großen Monitoren, wo man den Objektbrowser ständig einblenden kann, ist
dieser sicher auch nützlich...
-
energyzer schrieb:
wie heißt das bei der Konkurrenz
Das ist unterschiedlich. Microsoft fasst unter dem Begriff "IntelliSense" alles zusammen, Dinge die bei der Konkurrenz code completion, parameter help, quick info, code templates ("implement interface..." usw. heißen.
-
Wie jetzt? Sie haben dafuer nur EIN buzzword???
-
Optimizer schrieb:
Die Begründung ergibt sich völlig automatisch, du willst eine Begründung für etwas wie "wenn man keinen Apfel hat und auch keinen kauft, hat man auch weiterhin keinen". Zwei Module, die sich gegenseitig benutzen, aber getrennt, nichts voneinander wissend erstellt werden und die bei der Übersetzung u.U. die Implementierung auch gar nicht kennen, können nicht hochoptimiert sein. Erst beim Linken können Dinge wie Inlining usw. wirklich gut stattfinden, weshalb man den Linker wieder aufbläht. Stand aber fast so auch schon ein, zwei Sätze später.
Blödsinn.
-
wenn man das konzept header datein nicht verstanden hat weis man nicht wozu sie gut sind, das ist klar.
das das konzept nicht zeitgemaess sein soll ist bloedsinn.
das man eine zeitlang damit arbeiten muss um dieses konzept zu verstehen ist auch klar.
hat man das nicht, und java nochdazu fuer das mass aller dinge haelt, dann soll man wenigstens keinen bloedsinn reden.
wer IDE fixiert ist war anscheinend noch nie auf einem rechner vorort im einsatz wo seine lieblingside nicht vorhanden ist, bzw tatsaechlich auf einen editor beschraenkt ist.
(
wobei, nicht das ich IDEs nicht mag, es kostet mich zB gemau einen klick um aus einem hxx wo der ganze "private schrott" vorhanden ist eine interface hxx zu erstellen die dann nur mehr das beinhaltet was fuer den benutzer relevant ist.
)
-
Naja, zu sagen "ihr habts eh nicht verstanden" um keine Argumente liefern zu brauchen, ist hier nicht relevant. Du hast keinen einzigen Punkt für Header geliefert. Du hast nur gesagt "Ihr seid doch eh doof!".
Bin ich hier im Kindergarten?
-
Der Vororteinsatz mitohne IDE ist doch ein Argument!
-
@daHa: ich bin der Meinung von Artchi. Erklär uns doch mal das Konzept der Headerdateien
Ein Artikel über das Thema "Sinn von Headerdateien" wäre doch echt interesant
bisheriger Stand:
Sinn von Headerdateien:
1. Erleichtert Compilerbauern die Arbeit (siehe Optimizer)Argumente die ich nicht gelten lassen Kann:
1. Ermöglichen einfache Auslagerung von Code
2. Ermöglichen Code in verschiedenen Anwendungen zu benutzen
3. gesamte Schnittstelle einer Klasse auf einen Blickdiese Punkte kann man auch ohne viel Aufwand in Programmiersprachen
ohne Header Dateien erreichen (z. B . Java oder C#) oder unter zuhilfenaheme einer kostenlosen IDE
-
Artchi schrieb:
Naja, zu sagen "ihr habts eh nicht verstanden" um keine Argumente liefern zu brauchen, ist hier nicht relevant. Du hast keinen einzigen Punkt für Header geliefert. Du hast nur gesagt "Ihr seid doch eh doof!".
Bin ich hier im Kindergarten?
eine sehr eigenwillige interpretation von dir, aber wenn du es so interpretieren wills, bitte.
im uebrigen brauch in kein argument pro header bringen, das sie zum konzept mancher sprachen und der zugehoerigen kombi preprozessor/kompiler gehoehren is halt so.
und das es fuer manche sinn macht ist halt auch so.
ob das jetzt jeder versteht is mir egal, allerdings darf ich meine meinung zum besten geben wenn ich manche argumente als schwachsinn interpretiere, so wie du deine meinung zum besten gegeben hast.
allerdings, deine forumlierten verallgemeinerte unterstellungen find ich in meinem post nicht, desswegen weis ich schon drauf hin das ich das was du mir unterstellst so nicht geschrieben hab.
-
@daHa: ich bin der Meinung und wahrschienlich auch Artchi, dass du es selbst nicht peilst und deshalb fordere ich dich auf, das Konzept von Headerdateien zu erklären.
-
Das Konzept der Header bauch er uns nicht erklären, das kann jeder in seinem C++ Buch tun.
Nur geht es ja um Vorteile, wie das im Topictitel heißt. Und darauf warte ich immer noch.
-
Vertexwahn schrieb:
@daHa: ich bin der Meinung von Artchi. Erklär uns doch mal das Konzept der Headerdateien
Ein Artikel über das Thema "Sinn von Headerdateien" wäre doch echt interesant
bisheriger Stand:
Sinn von Headerdateien:
1. Erleichtert Compilerbauern die Arbeit (siehe Optimizer)Argumente die ich nicht gelten lassen Kann:
1. Ermöglichen einfache Auslagerung von Code
2. Ermöglichen Code in verschiedenen Anwendungen zu benutzen
3. gesamte Schnittstelle einer Klasse auf einen Blickdiese Punkte kann man auch ohne viel Aufwand in Programmiersprachen
ohne Header Dateien erreichen (z. B . Java oder C#) oder unter zuhilfenaheme einer kostenlosen IDEwenn du deine java c# sonstiges welt 1 zu 1 umsetzten wills, bitte du das.
wenn du deine erfahrungen mit java c# sonsiges IDEs fuer alles umsetzten willst bitte tu das.
wenn du keinen sinn darin siehst das es manchmal doch recht praktisch ist header zu verfuegung zu haben dann hat sich dir die ein oder andere situation noch nicht so gestellt, oder du hast sie anders geloest.
wenn du alle die leute die das konzept definition / impelmentation getrennt moegen als antiquierte ideoten siehst die die herrlichkeit anderer neuerer sprachen konzepte nicht verstanden haben, dann bitte tu das.
und wenn irgendwer immer wieder halbgares technisches knowhow von sich gibt und du das kritiklos zur kentniss nehemn willst, dann bitte tu das.
ich hab keine lust dich von irgendwas zu ueberezugen, noch dazu wo eigentlich einiges/vieles, je nach argument, davon persoenlicher geschmack ist.
ueber so argumente wie das es nervig ist an 2 stellen signaturen zu aendern, naja, ich seh da recht wenig diskusionsgrund, ausser das ich dir sagen kann das es mich nicht stoehrt.
-
Artchi schrieb:
Naja, zu sagen "ihr habts eh nicht verstanden" um keine Argumente liefern zu brauchen, ist hier nicht relevant. Du hast keinen einzigen Punkt für Header geliefert. Du hast nur gesagt "Ihr seid doch eh doof!".
Bin ich hier im Kindergarten?
Naja
daHa schrieb:
wer IDE fixiert ist war anscheinend noch nie auf einem rechner vorort im einsatz wo seine lieblingside nicht vorhanden ist, bzw tatsaechlich auf einen editor beschraenkt ist.
hört sich für mich schon nach einem Argument an: mit Headern braucht man eben keine resourcenintensive IDE, da die u.U. nicht überall verfügbar ist.
-
Feststellung: Red-Tiger und daHa überzeugen nicht. Wie Artchi schon festgestellt hat, ist die einzige Aussage der Postings "ihr peilt es nicht".
-
@daHa: erst sagst du wir kapieren das Konzept der Headerdateien nicht - und du willst es uns aber auch nicht erklären
inzwischen haben dir schon 3 Leute gesagt, das dein Beitrag einfach voll daneben ist
-
OK, ich versuche es mal.
Ob das jetzt irgendwelche Vorteile im generellen sind weiß ich nicht, aber ich sehe das als solche an. Wie das in anderen Sprachen (Java, C#, etc.) gelöst wird weiß ich auch nicht.
1. Ich habe eine Trennung von Schnittstelle und Implementierung. Was mich bei Java irgendwie stört. Ich kann nicht einfach ne Datei öffnen und habe die komplette Schnittstelle vor Augen. Zugegeben, ich habe Java nur kurz an der Uni gemacht und kenne mich nicht wirklich aus. Aber eine Übersicht in der IDE aus der Quelldatei generiert erfüllt denselben Zweck. Ich finde es nur schöner, wenn das Sprachkonzept so etwas schon unterstützt. Ich entwickle ebenfalls mit PHP, wo ich mit einem simplen Texteditor arbeite, wobei es mich mittlerweile sehr stört, dass ich den Code nicht so schön trennen kann.
2. Wenn ich eine Bibliothek schreibe, dann muss ich an die Benutzer der Bib. lediglich die Header und die lib/dll liefern. Ich glaube man kann die private Sachen auch völlig rausschmeißen und der Code, der die Lib verwendet kann problemlos kompiliert werden. Wenn ich eine dll schreibe und gleichzeit die lib generiere, dann brauche ich mich nicht darum zu kümmern wie die Funktionen in der dll heißen, die IDE kann die Informationen direkt aus den Headern ziehen, dann wird noch kurz die kleine lib dazugelinkt und fertig. Auch hier weiß ich nicht, wie das in anderen Sprachen gelöst wird, wäre aber für Informationen dankbar.
Ansonsten sehe ich keine wirklichen Vorteile, aber Probleme auch nicht wirklich.
-
mantiz schrieb:
OK, ich versuche es mal.
1. Ich habe eine Trennung von Schnittstelle und Implementierung. Was mich bei Java irgendwie stört. Ich kann nicht einfach ne Datei öffnen und habe die komplette Schnittstelle vor Augen. Zugegeben, ich habe Java nur kurz an der Uni gemacht und kenne mich nicht wirklich aus. Aber eine Übersicht in der IDE aus der Quelldatei generiert erfüllt denselben Zweck. Ich finde es nur schöner, wenn das Sprachkonzept so etwas schon unterstützt. Ich entwickle ebenfalls mit PHP, wo ich mit einem simplen Texteditor arbeite, wobei es mich mittlerweile sehr stört, dass ich den Code nicht so schön trennen kann.
jede IDE hat einen Objektbrowser
2. Wenn ich eine Bibliothek schreibe, dann muss ich an die Benutzer der Bib. lediglich die Header und die lib/dll liefern. Ich glaube man kann die private Sachen auch völlig rausschmeißen und der Code, der die Lib verwendet kann problemlos kompiliert werden. Wenn ich eine dll schreibe und gleichzeit die lib generiere, dann brauche ich mich nicht darum zu kümmern wie die Funktionen in der dll heißen, die IDE kann die Informationen direkt aus den Headern ziehen, dann wird noch kurz die kleine lib dazugelinkt und fertig. Auch hier weiß ich nicht, wie das in anderen Sprachen gelöst wird, wäre aber für Informationen dankbar.
geht z. B. mit Assemblies genau so...
Ansonsten sehe ich keine wirklichen Vorteile, aber Probleme auch nicht wirklich.
es ist halt störend, dass man nicht gleich direkt in die Deklaration den Code schreiben kann, auch wenn es da Hilfen von der IDE gibt. Ich persönlich schreibe erst meinen Code in die Headerdatei/also mach alle Methode inline (was der Compiler aber soweiso in den meisten fällen, wieder ignoriert) - erst wenn der Code problemlos läuft Trenne ich Dekleration und Definiton - für mich unnötige Arbeit