Programm mit einer Funktion [HELP]



  • Dieser Programmierstil wird auch von manchen praktiziert, die nicht unbedingt die JW-Schule besucht haben. Er wird auch in guten Grundlagebüchern vorgestellt und nahegelegt. Ich stimme SeppJ zu, dass das nicht unbedingt das Gelbe vom Ei ist, aber das soll zum Einen dem Compiler helfen, die Funktionsaufrufe und -definitionen schneller zu überprüfen, zum Anderen ist es nicht schlecht, wenn main() als Erstes steht, weil es die Struktur des Programms vorgibt. So die Theorie.



  • SeppJ schrieb:

    WeißIkNet schrieb:

    Hm ok, ich habs aber auch so gelernt 😃

    Naja, im Prinzip ist es müßig, da man das sowieso nur bei Programmen < 100 Zeilen überhaupt so macht, daher kann man nicht wirklich von allgemeinem Stil reden. Mir ist nur aufgefallen, dass die JW-Schüler es so machen und sonst nur sehr wenige Leute. Und es ist halt total sinnlos und macht nur mehr zu schreiben.

    Naja, das kommt wohl von früheren Tagen her, da machte das durchaus Sinn.

    Denn der Compiler konnte so schneller die Funktionsdeklarationen zusammenfassen und wußte bei der Main schon was los war, d.h. er mußte bis zur main weniger Parsen.
    Das beschleunigte wohl die Compilezeit.
    Und bei begrenztem Arbeitsspeicher half die schnelle knappe Zusammenfassung auch sicher.

    Heutzutage ist das aber total sinnlos. Denn man merkt auf heutigen Rechnern da keinen Geschwindigkeitsunterschied mehr.



  • Früher wars AFAIK releva schrieb:

    SeppJ schrieb:

    WeißIkNet schrieb:

    Hm ok, ich habs aber auch so gelernt 😃

    Naja, im Prinzip ist es müßig, da man das sowieso nur bei Programmen < 100 Zeilen überhaupt so macht, daher kann man nicht wirklich von allgemeinem Stil reden. Mir ist nur aufgefallen, dass die JW-Schüler es so machen und sonst nur sehr wenige Leute. Und es ist halt total sinnlos und macht nur mehr zu schreiben.

    Naja, das kommt wohl von früheren Tagen her, da machte das durchaus Sinn.

    Denn der Compiler konnte so schneller die Funktionsdeklarationen zusammenfassen und wußte bei der Main schon was los war, d.h. er mußte bis zur main weniger Parsen.
    Das beschleunigte wohl die Compilezeit.
    Und bei begrenztem Arbeitsspeicher half die schnelle knappe Zusammenfassung auch sicher.

    Heutzutage ist das aber total sinnlos. Denn man merkt auf heutigen Rechnern da keinen Geschwindigkeitsunterschied mehr.

    PS:
    Aus ähnlichem Grund gab es auch die Headerdateien.


  • Mod

    Das macht keinen Sinn. Wenn alles in einer Datei steht, dann wird auch alles Verarbeitet. Dann greift das Prinzip der Header eben gerade nicht mehr.



  • SeppJ schrieb:

    Das macht keinen Sinn. Wenn alles in einer Datei steht, dann wird auch alles Verarbeitet. Dann greift das Prinzip der Header eben gerade nicht mehr.

    Man kann auch nur bis zur main Funktion suchen, genau deswegen sollten damals die Funktionsdeklarationen ja auch über der main stehen.



  • Ich hab auch nicht bei JW gelernt und schreibe auch immer Funktionsdeklarationen über der main() bevor die eigentliche Implementierung nach der main() folgt. Es ist ansonsten häufig sehr nervig, wenn Funktionen voneinander abhängig sind und man diese verschieben muss, damit der Compiler/Linker damit klar kommt und die Funktion findet. Das Problem tritt durch die Funktionsdeklaration erst gar nicht mehr auf und man hat gewissemraßen vorgesorgt.

    Allerdings schreibe ich selten ein Programm ausschließlich in der main(), das kommt eher bei Testanwendungen vor, wo es dann ohnehin quick and dirty um eine Idee geht, die ich außerhalb des Projektes testen will.



  • Ich verstehe Dich nicht. Der Compiler sagt Dir doch schon selber, was ihm nicht passt. Meinst Du, Du kannst durch Einholen einer zweiten Meinung hier im Forum den Compiler davon überzeugen, daß Du recht hast?

    Wenn Du jedoch die Fehlermeldng des Compilers nicht versteht, probiere es mal mit einem Grundlagenbuch.

    mfg Martin



  • mgaeckler schrieb:

    Ich verstehe Dich nicht. Der Compiler sagt Dir doch schon selber, was ihm nicht passt. Meinst Du, Du kannst durch Einholen einer zweiten Meinung hier im Forum den Compiler davon überzeugen, daß Du recht hast?

    Wenn Du jedoch die Fehlermeldng des Compilers nicht versteht, probiere es mal mit einem Grundlagenbuch.

    mfg Martin

    Auf welchen Posting bezieht sich dein Kommentar?? Nächstes Mal bitte Zitate verwenden oder zumindest den Autornamen hinschreiben.



  • [Rewind] schrieb:

    Auf welchen Posting bezieht sich dein Kommentar?? Nächstes Mal bitte Zitate verwenden oder zumindest den Autornamen hinschreiben.

    Stimmt. Sorry, ich vergaß, die hier verwendete Forensoftware zeigt das nicht an. Ich bezog mich auf die erste Nachricht.

    mfg Martin



  • [Rewind] schrieb:

    Dieser Programmierstil wird auch von manchen praktiziert, die nicht unbedingt die JW-Schule besucht haben. Er wird auch in guten Grundlagebüchern vorgestellt und nahegelegt. Ich stimme SeppJ zu, dass das nicht unbedingt das Gelbe vom Ei ist, aber das soll zum Einen dem Compiler helfen, die Funktionsaufrufe und -definitionen schneller zu überprüfen, zum Anderen ist es nicht schlecht, wenn main() als Erstes steht, weil es die Struktur des Programms vorgibt. So die Theorie.

    Bei mir ist main immer das Letzte. Dadurch spare ich mir die Prototypen der aufgerufenen Funktionen, wernn sie im gleichen Modul sind. Schneller ist der Compiler übrigens auch nicht, wenn main als erstes steht. Denn dann muß er sowohl die Prototypen als auch die Funktionsdefinitionen parsen.

    mfg Martin



  • Bei "das soll zum Einen dem Compiler helfen" habe ich vergessen "angeblich" hinzuzuschreiben, weil das nicht meine persönliche Meinung ist. Das Parsen von Prototypen ist kein Problem. Ich habe es zwar nicht überprüft, aber ich denke, das wird genauso wenig Zeit in Anspruch nehmen wie die Überprüfung von richtigen Funktionsaufrufen, Rückgabewerten, etc. (in kleinen Programmen ist das performancetechnisch sowieso irrelevant). Von da her sehe ich keine objektiven Gründe für die Anwendung dieser Schreibweise, wenn's aber für jemanden schöner/besser/angenehmer ist, so zu schreiben, soll er's machen.

    Grüße,
    Rew.


Anmelden zum Antworten