Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 15
Seite [1]
maKe my dayyy


King for a day




Beiträge: 276
# Thema - 14.12.2009 um 22:53 Uhr
Weiß nicht ob das hier das richtige Forum ist, oder ob es eher ins Off-Topic gehört, also bitte verschieben falls es da besser reinpasst
Hab heute in Informatik mit meinem Lehrer über Breaks in Schleifen geredet...hab gesehen dass in PHP ja öfters damit gearbeitet wird...und nunja mein Lehrer hat Stress geschoben was das denn soll - Breaks würden nur die Leute benutzen, die keine richtige Schleifen schreiben können, sprich sie sind Pfuscher. Er hat in seinem Leben natürlich noch nie einen Break benutzt...
Würdet ihr dem zustimmen ? Oder seht ihr das anders ? Wenn ja wie?
Inaktiv
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 1 - 14.12.2009 um 23:13 Uhr
Also ich hab auch erst sehr selten breaks benutzt. Warum das aber schlecht sein soll weiss ich grad nicht. Es gibt ja immer mehrere Lösungen und ich kann mir schon vorstellen, dass es für viele Situationen, in denen manche Leute Breaks nutzen, es eine schönere Lösung gibt.

Es gibt immer die Möglichkeit ein Break zu umgehen und es anders zu Lösen, aber ich denke es kommt einfach auf die Situation an. Die beste Lösung ist immer den Code so zu schreiben, dass er so nah wie möglich an dem ist, wie man das Problem auch in Gedanken lösen würde.


------------------
www.laszlokorte.de

Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 2 - 15.12.2009 um 02:21 Uhr
wüsste nicht wo bei breaks das problem ist. ich finde die teilweise logischer, als alle möglichen bedingungen in die schleife zu schreiben.

ist jedenfalls eine geschmackssache. dein lehrer gehört wohl zu der sorte entwickler, die sich gegen die neueren und praktischeren entwicklungen der programmiersprachen wehrt. wie findet dein lehrer php sonst? sprich ihn mal drauf an, dass variablen keine festen variablentypen haben und automatisch ineinander umgewandelt werden. wird ihm wahrscheinlich auch nicht gefallen.

kann jeder für sich entscheiden. wichtig ist, dass man über alle entwicklungen nachdenkt und eine gewisse philosophie dahinter steckt. wenn du dich dafür entscheidest, dass du breaks gut findest und 1-2 argumente dafür hast, ist das in ordnung.


Inaktiv
|
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 3 - 15.12.2009 um 07:46 Uhr
Naja mit Breaks brichst du eine gestellte Schleife ab, ohne diese zu ende geführt zu haben. Daher wird dein Lehrer dieses wohl nicht mögen.
Bin auch der Meinung, dass man in C++/C# sowas garnicht kennt, und daher eine Abneigung gegen Breaks hat.

Aber wie duRiel schon sagte, dass kann/soll jeder für sich selber entscheiden. Es gibt Argumente für/gegen Breaks auf beiden Seiten.


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 4 - 15.12.2009 um 12:07 Uhr
Es ist eine rein theoretische diskussion, die es schon sehr lange gibt. Sucht auch mal auf "GOTO considered harmful".

In prinzip hat dein lehrer recht. Das abbrechen von eine schleife (oder wie beim goto, springen zu ein andern teil des code), verbricht die normale reihenfolge des programm ablauf.

Theorie:
Es ist auch einfacher zu beweisen das dein code 100% korrekt funktioniert wenn du keine breaks benutzt, da du bei einer schleife die pre- und post-condition und invariant der schleife mathematisch beweisen kannst. Fuer jeder break musst du dann auch (mathematisch) beweisen das die post-condition gilt (und die invariant nicht mehr gilt, deswegen der break), was viel mehr aufwand ist.

Edsger W. Dijkstra hat darueber genuegend geschrieben. In sein buch (zusammen mit Feijen) "Methodik des Programmierens" wird die basis erklaert...

Obwohl die theorie stimmt finde ich sie in praxis aber schlechter benutzbar. Es ist oft einfacher (und vor allem uebersichtlicher) ein break oder continue einzubauen, dan es mit if/else oder was auch immer zu machen.

Edsger W. Dijkstra wurde gesehen als "Gott", waehrend ich an "seine" Uni damals Informatik studiert habe. In theorie ist er auch ein "Gott", aber leider ist es, wie im RL, in der praxis nicht immer so schoen...

@maKe my dayyy:
Ich stimme dein lehrer zu. Weil man am besten erst lernen sollte, wie man es richtig macht, vor man es in die praxis anders macht. Man weiss dan, was man beachten sollte wenn man es anders macht, und somit macht man auch viele fehler nicht...

Dein lehrer versucht dich die logik und analytisches prozesse beim programmieren zu lernen, die man haben muss um guten code zu schreiben. Zu oft begegne ich code (vor das sich leute hier angepisst fuehlen, ich meine hiermit nicht CS, aber allgemein), wo ich deutlich sehen kann, das die leute die es programmiert haben, keine basis kenntnisse haben, wo man auf achten sollte...

http://de.wikipedia.org/wiki/Sprunganweisung :
Eine weniger kritisierte Variante des GOTO-Befehls ist das vorzeitige Verlassen eines Unterprogramms durch einen return-Befehl, das Abbrechen einer Schleife durch einen break-Befehl oder Abbrechen eines bestimmten Schleifendurchlaufs durch eine continue-Anweisung. Trotzdem gilt es in einigen Programmiersprachen als guter Programmierstil, wenn ein Block einen Einsprungpunkt und einen Ausstiegspunkt hat. In Sprachen, welche Ausnahmenbehandlung erlauben, wird dagegen die „Ein-Ausstiegpunkt“-Regel als obsolet angesehen, da throw-Anweisungen die Argumentation hinter dieser Regel ad absurdum führen.

In der Praxis hat sich jedoch gezeigt, dass der Verzicht auf GOTO zwar möglich ist, jedoch in einigen Fällen zu sehr aufwändigen Konstrukten führt. Besonders in zeitkritischen Programmteilen ist ein goto deutlich effektiver als am Ende von mehreren geschachtelten Schleifen jeweils eine Abbruchprüfung durchzuführen. Angesichts der Geschwindigkeit heutiger Prozessoren ist das Attribut zeitkritisch allerdings meist im Vergleich zu den Wartungskosten bei "Spaghetticode" vernachlässigbar.

Von einigen Entwicklern wurde auf der Linux Kernel Mailing List die häufige Verwendung von GOTO im Quellcode von Linux diskutiert. Linus Torvalds sagte dabei, dass die Verwendung von GOTO die Lesbarkeit des Quellcodes in vielen Fällen sogar deutlich erhöhen könne.



Zuletzt editiert von Mindcrime am 15.12.2009 um 12:12 Uhr (2x Editiert)
Inaktiv
|
fUnK3r ClanSphere Team


Specialist





Beiträge: 1656
# Antwort: 5 - 15.12.2009 um 12:18 Uhr
15.12.2009 um 07:46 Uhr - Fr33z3m4n:
Bin auch der Meinung, dass man in C++/C# sowas garnicht kennt, und daher eine Abneigung gegen Breaks hat.

In "Switch"-Konstrukten werden die sogar sehr häufig benutzt zumindest beim µController Programmieren braucht man das dann.
Sonnst fällt mir gerade aber auch kein Beispiel ein wo mans braucht.
In wieweit man Switch-Anweisungen in PHP benötigt weiß ich allerdings auch nicht =)


------------------
Grüßle Jo
><(((°> Son of God through Jesus Christ his Son <°)))><
www.funk3r.de
while (!asleep() ) sheep++;


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 6 - 15.12.2009 um 12:21 Uhr
die von dijkstra genannten kritikpunkte sind für mich keine kriterien (hab einigen kram von dijkstra auch durchgekaut).

wenn in einer situation eine break anweisung klarer erscheint und dadurch die struktur leichter zu verstehen ist, verwende ich sie.

auf die aufwendigkeit des analysierens des codes sollte man meiner meinung nach einen weitaus geringeren wert legen als auf die einfach zu verstehende logik.


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 7 - 15.12.2009 um 14:03 Uhr
wenn in einer situation eine break anweisung klarer erscheint und dadurch die struktur leichter zu verstehen ist, verwende ich sie.


Das ist wie ich ja gesagt habe der unterschied: praxis vs theorie.

Von theorie aus gesehen falsch, weil in theorie man 100% mathematisch beweisen muss das dein code stimmt, und das viel schwerer ist wenn man breaks einbaut...
In der praxis geht man davon aus das der code den man schreibt stimmt und braucht man nichts zu beweisen. Daneben wie du auch sagst ist es oft klarer und leichter zu verstehen. Aber klarer und leichter zu verstehen ist nicht dasselbe wie 100% bewiesen das der code stimmt...


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 8 - 15.12.2009 um 15:42 Uhr
ja, nur dass wie gesagt meiner meinung nach die klarheit des codes viel wichtiger ist als die einfache beweisbarkeit.

im system stehen die dateien, damit man mit ihnen arbeiten kann und damit man sie bei bedarf anpassen kann und sie versteht. deshalb stelle ich die anforderung an sie, dass sie leicht zu verstehen sein müssen.

wenn man sie mathematisch beweisen möchte, kann man sie immernoch so umbasteln, dass die breaks draussen sind. derjenige, der den beweis durchführen will, wird dazu in der lage sein.
derjenige, der ein paar anpassungen vornehmen will, und alle anderen, die den code verstehen wollen, sind vielleicht nicht in der lage, verkomplizierte schleifen zu verstehen und erst recht nicht, sie dafür erst umzubasteln (der aufwand steht auch nicht in relation zu der anpassung).

das ist mit ein grund dafür, dass mir einfach strukturierter quelltext wichtiger ist, als mathematisch leicht beweisbarer.


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 9 - 15.12.2009 um 16:23 Uhr
Das ist weil das deine anforderungen so sind.

maKe my dayyy hat hier die frage gestellt, weil das benutzen von breaks durch sein lehrer in seine Informatik klasse als schlecht bezeichnet wird. Es ist also eine algemeine bemerkung...

Wenn die anforderungen zb waehren:
- Die software muss in ein kernkrafwerk laufen um die stabe des kernreaktors zu bedienen
- Die software muss in ein NASA shuttle das luftreinigungs system bedienen
- Die software muss in ein krankenhaus patienten auf die intensiv station ueberwachen

Dan kannst du verstehen, das man 100% mathematisch beweisen will, das die software die geschrieben wurde, auch 100% einwandfrei funktioniert. Ein falscher break kann da menschenleben kosten...

Auf der bemerkung des lehrers das wir pfuscher sind, kann ich nur zurueck sagen: "Programmieren sie mal in der praxis mit 20 andere leute fuer mehrere jahren an dasselbe projekt"
Ich denke der lehrer hat noch nie in sein leben ein program geschrieben was mehr als 300 zeilen hatte, wo die complexitaet mehr war als ein einfaches postman oder schach problem...
Noch nie ein break benutzt, dan hat er anscheinend auch immer zeit genug gehabt um 500 stunden nachzudenken wie er es ohne ein break schaffen kann mit 500 if/else conditionen drin... Die zeit um 500 stunden zu denken haben wir in die praxis nicht weil es schon morgen fertig sein muss...

Die theorie von Lehrer beim Informatik stunde ist, obwohl er in prinzip recht hat, leider meilenweit von der praxis entfernt...


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 10 - 15.12.2009 um 16:37 Uhr
dem kann ich nurnoch zustimmen


Inaktiv
|
maKe my dayyy
Thread-Ersteller


King for a day




Beiträge: 276
# Antwort: 11 - 15.12.2009 um 19:00 Uhr
Schön dass hier so rege über das Thema diskutiert wird.
Da ich selbst noch relativ am Anfang stehe kann ich mich direkt nicht zu breaks äußern, ich hab bisher keine gebraucht.^^
@mindcrime: Laut meinem Lehrer hat er schon ganz viele aufwändige Dinge geschrieben, die angeblich auch schon 3000 zeilen gehabt haben sollen...Ob das stimmt kann ich nicht sagen.


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 12 - 15.12.2009 um 19:32 Uhr
clansphere hat laut ohloh.net 180.000 php code zeilen (ohne kommentare und leerzeilen)..


Zuletzt editiert von duRiel ClanSphere Team am 15.12.2009 um 19:33 Uhr (1x Editiert)
Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 13 - 15.12.2009 um 20:06 Uhr
Mein derzeitiges hobby project (davon 180.000 anscheinend von CS) hat ueber 350.000 zeilen...

Da will ich noch nichtmal reden von die projekte von meine arbeit fuer multinationals...


Zuletzt editiert von Mindcrime am 15.12.2009 um 20:07 Uhr (1x Editiert)
Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 14 - 15.12.2009 um 20:10 Uhr
wollte jetzt nicht mit "wer schreibt den meisten quellcode" anfangen nur um zu zeigen dass auch 3.000 zeilen nicht wirklich viel sind.


Inaktiv
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 15 - 15.12.2009 um 20:23 Uhr
War auch nicht auf dir bezogen @duriel, nur zum lehrer...


Inaktiv
|
Antworten: 15
Seite [1]


Sie müssen sich registrieren, um zu antworten.