Endlosschleife --> was sagt ihr (Mein Informatiklehrer sagt wieder, dass...)
-
Stimmt, da haste recht. Bei register ist ja sowieso dem Compiler überlassen, was er damit anstellt.
lg, freakC++
-
Fellhuhn schrieb:
Was man bei dem ganzen break/continue/return-Gedönse mitten im Code natürlich berückstigen muss ist das freigeben eventuell angeforderten Speichers. Da kann es sonst schnell zu Problemen führen.
Sowas löst man ja auch über RAII
-
hustbaer schrieb:
Fellhuhn schrieb:
Was man bei dem ganzen break/continue/return-Gedönse mitten im Code natürlich berückstigen muss ist das freigeben eventuell angeforderten Speichers. Da kann es sonst schnell zu Problemen führen.
Sowas löst man ja auch über RAII
Wenn man schon über Sinn und Unsinn von Keywords etc redet, dann löst "man" das nicht mit RAII.

-
Sehr passend zu diesem Thread, das heutige DailyWTF:
for (int i = 0; i < dtModules.Rows.Count; i++) { if (dtModules.Rows[i]["id"].ToString() == ID.ToString()) { dtModules.Rows.RemoveAt(i); i = 34598; //used to jump out of the for } }
-
Fellhuhn schrieb:
hustbaer schrieb:
Fellhuhn schrieb:
Was man bei dem ganzen break/continue/return-Gedönse mitten im Code natürlich berückstigen muss ist das freigeben eventuell angeforderten Speichers. Da kann es sonst schnell zu Problemen führen.
Sowas löst man ja auch über RAII
Wenn man schon über Sinn und Unsinn von Keywords etc redet, dann löst "man" das nicht mit RAII.

Ich steh grad völlig auf dem Schlauch. Kannst du mir das erklären?
Meinst du "man" wie in "man man" oder "man 3 printf"?
Und wenn ja, wo siehst du da jetzt die Verbindung? Und was hat das ganze mit Keywords zu tun?
-
Damit wollte ich sagen (und habe ich auch :p) das wenn man schon nichts mit den Keywords anzufangen weiß man auch keine Ahnung hat was RAII ist.
-
freakC++ schrieb:
Er sagte, man solle das mit einer Endlosschleife lösen, bei der beispielsweise eine bool Variable den anderen Wert annimmt, sobald ich "break" setzen würde. Dann wäre die Schleife auch sofort beendet.
Ist in C++ Quatsch.
Es war damals sinnvoll, als die "strukturierte Programmierung" so furchtbar modern war. Es geht nämlich darum, daß man open/close-Paare nicht trennt.for(...){ int file=open(...); bla(file); foo(file); int y=findFirstShit(file); if(y==0) break; int z=findNextShit(file,y); print(z); close(file); }Naja, davor hat man halt Angst.
Nicht, daß sowas noch vorkommen würde, aber das ist eine andere Geschichte.
Also machten wir es so:bool nochDrin=true; for(nochdrin && ...){ int file=open(...); bla(file); foo(file); int y=findFirstShit(file); if(y==0) nochDrin=false; else{ int z=findNextShit(file,y); print(z); } close(file);//wichtig! }Helau!
Ja, wenn man das konsequent so macht, trennt man nie wieder open/close-Paare. Um das noch machen zu müssen, muß man aber erstens einen Prozessor und COmpiler haben, wo Funktionsaufrufe teuer sind und man Innereien nicht Auslagern mag, und zweitens kein C++ haben, wo es taugliche Destruktoren gibt.for(...){ ifstream file(...); bla(file); foo(file); int y=findFirstShit(file); if(y==0) break;//führt close aus int z=findNextShit(file,y); print(z); //close(file);//auch close automatisch }Es ist so, daß der neuere Stil, jederzeit rauszugehen, und zwar so hart wie möglich (also return meistens noch viel besser als break), am Ende die Übersicht erhöht und Fehler vermeidet.
Der Stil des Lehrers gehört in die 70-er und frühen 80-er Jahre.
Aber egal, mach's in der Schule so, wie er will und zock die gute Note ab. Daheim mach's halt richtig. RAII gehört zu C++ und ist ein dicker Brocken in Sachen, was wann wo guter C++-Stil ist.
-
Hallo,
danke für nocheine ausführliche Antwort:Aber egal, mach's in der Schule so, wie er will und zock die gute Note ab. Daheim mach's halt richtig.
hahaha...das ist gut!
Werd ich machen!lg, freakC++
-
Fellhuhn schrieb:
Damit wollte ich sagen (und habe ich auch :p) das wenn man schon nichts mit den Keywords anzufangen weiß man auch keine Ahnung hat was RAII ist.
Ich mußte auch eben erstmal nachschlagen was das sein soll, und habe wieder nur festgestellt dass ich's sowieso schon ewig so mache. Geht mir dauernd so.
Ständig fliegen einem neue Fachbegriffe für Selbstverständliches um die Ohren.
Ist halt das alte Problem:
Schafft man mit dem Kram, hat man keine Zeit nach ständig Neuem Ausschau zu halten - und gilt bald als veraltet. Rennt man nur dem Neuen nach, kriegt man nix gebacken.
Hoffentlich gibt's bald mal 'nen Sourcecodeprocessor, der einem den Code auf die aktuelle Mode rüberschneidert.Und wo Lehrer Praxis hernehmen, möchte ich auch mal wissen.
-
Bitsy schrieb:
Schafft man mit dem Kram, hat man keine Zeit nach ständig Neuem Ausschau zu halten - und gilt bald als veraltet. Rennt man nur dem Neuen nach, kriegt man nix gebacken.
Hoffentlich gibt's bald mal 'nen Sourcecodeprocessor, der einem den Code auf die aktuelle Mode rüberschneidert.Das halte ich für sehr übertrieben. Man kann durchaus produktiv arbeiten und sich ab und dann mal etwas neues lernen, was man nicht wärend dem Studium gelernt hat.. Weiterbildung gehört sogar sehr stark in den Informatikbereich.
Und jetzt die neuen Techniken zu lernen, welche mit C++ einem vieles viel einfacher machen gehört halt zu der Sprache und wenn man das nicht will, dann sollte man halt bei C (oder bei was älterem) bleiben.
Und z.B RAII ist ja auch nichts neues.. Du sagst ja selbst, dass du die Technik bereits kennst, aber ich nehme mal an, dass du doch was gebacken gekriegt hast, oder?Und wo Lehrer Praxis hernehmen, möchte ich auch mal wissen.
Lehrer müssen nicht mal unbedingt gross Praxis haben, sodern sollten den Stoff vermitteln und die Grösse haben zu sagen, dass sie ev. nicht auf dem neusten Stand bei gewissen Dingen und nicht steif und fest behaupten, dass ihre Variante dem Heutigen Standard entspricht.
-
drakon schrieb:
Lehrer müssen nicht mal unbedingt gross Praxis haben, sodern sollten den Stoff vermitteln und die Grösse haben zu sagen, dass sie ev. nicht auf dem neusten Stand bei gewissen Dingen und nicht steif und fest behaupten, dass ihre Variante dem Heutigen Standard entspricht.
Seh ich auch so - allerdings kommen dann die ganzen ohne Ahnung wieder an und sagen: "Unser Lehrer hat keine Ahnung!!!!111elf Der weiß nicht, wie man erklärt und morgen schreiben wir eine Klausur und ich weiß nichts. Aber das ist ja nicht mal mein Fehler, der kann es halt selber nicht - hat er so gar zugebgen!" - das erzählen die dann ihren Eltern noch und es gibt ja immerwieder solche, die das glauben, die gehen zum Rektor und der Lehrer wird seiner Freizeit beraubt, weil er sich dann wieder vorm Rektor rechtfertigen muss etc....
bb
-
unskilled schrieb:
drakon schrieb:
Lehrer müssen nicht mal unbedingt gross Praxis haben, sodern sollten den Stoff vermitteln und die Grösse haben zu sagen, dass sie ev. nicht auf dem neusten Stand bei gewissen Dingen und nicht steif und fest behaupten, dass ihre Variante dem Heutigen Standard entspricht.
Seh ich auch so - allerdings kommen dann die ganzen ohne Ahnung wieder an und sagen: "Unser Lehrer hat keine Ahnung!!!!111elf Der weiß nicht, wie man erklärt und morgen schreiben wir eine Klausur und ich weiß nichts. Aber das ist ja nicht mal mein Fehler, der kann es halt selber nicht - hat er so gar zugebgen!" - das erzählen die dann ihren Eltern noch und es gibt ja immerwieder solche, die das glauben, die gehen zum Rektor und der Lehrer wird seiner Freizeit beraubt, weil er sich dann wieder vorm Rektor rechtfertigen muss etc....
bb
Stimmt auch wieder. Bildungssysteme sind nicht einfach.

-
*snip*
Und z.B RAII ist ja auch nichts neues.. Du sagst ja selbst, dass du die Technik bereits kennst, aber ich nehme mal an, dass du doch was gebacken gekriegt hast, oder?Ich habe die Technik so explizit nicht (beim Namen) gekannt - sie hat sich bei mir selbst im Laufe der Jahre aber so entwickelt, eben weil ich drüber nachgedacht habe, was ich da eigentlich tue. Mir wurden da nie irgendwelche Vorschriften gemacht, und die Projekte, die ich mit C und C++ gemacht habe, mußte ich auch ganz alleine durchziehen. Wenn die eigenen Bibliotheken aber wachsen und an neue Situationen (z.B. von C auf C++, oder auch Compiler, OS...) angepasst werden müssen, dann baut man eine gewisse Selbstverantwortlichkeit auf. Lies mal eine eigene Source zwei Jahre später - sowas formt... (gilt übrigens auch für Foren-Postings :D)
Freut mich natürlich, wenn ich sehe, dass solche Gedankengänge nicht so ganz verkehrt waren, und ich zumindest nicht in die vollkommen falsche Richtung gelaufen bin.
Von Neuigkeiten erfahre ich eigentlich nur noch aus diesem Forum - und dann mache ich's halt so wie mit dem RAII. Wird mal die Wiki gegoogelt und peng.
Im C09-Standard wären ein paar Dinge, die ich mir schon lange gewünscht habe; jene Boost-Library sollte ich auch nicht ganz ignorieren (obwohl sie an manchen Stellen schon arg abstrakt ist, muss ich erstmal sehen, für was das eigentlich gut ist). Also - ein wenig möchte ich schon noch wissen, wo vorne ist. Dafür macht's immer noch zu viel Spaß.
-
Ich fand einfach die Aussage, dass, wenn man auf dem aktuellen Stand sein will nichts gebacken kriegt sehr übertrieben, denn so schnell lebig, wie manche tun sind die grundlegenden Sachen nicht.
Es gibt natürlich Sachen, die man im Laufe der Zeit auch selbst lernt, aber stell dir mal vor du hättest schon sehr früh etwas von RAII gehört (und das gibt es denke ich schon über 10 Jahre) und die Technik angeschaut. Dann hättest du dir einiges an Zeit, Aufwand und wahrscheinlich auch Ärger ersparen können, oder etwa nicht? ( z.B hättest du mal Effective C++ von Meyers lesen können und da werden so ziemlich alle gängigen Sachen mal genannt und wenn du etwas intensiver brauchst kann man gut z.B die Artikel von Sutter online lesen und schon ist man recht gut informiert. Das Buch lesen und die Artikel anschauen geht (intensiv) keinen Monat und geändert hat sich an den Sachen seit Jahren auch nichts).
Mit C++0x wird es es natürlich wieder ein paar Änderungen geben und es wird Möglichkeiten geben, welche die aktuellen Techniken obsolet machen werden. Und da hat auch schon mal jemand hier im Forum die Befürchtung geäussert, dass das die C++ Gemeinde spalten wird in dijenigen, die die neuen Sachen benutzen und in die, die auf dem alten Standard verharren.Ich halte die Aussage, dass, wenn man produktiv arbeitet keine Zeit mehr hat für die "neuen" Sachen für schlichtweg falsch. Ich wenn wir einen ganz naiven C++ Prorammierer nehmen. Der hätte sagen wir um das Jahr 2003 "alle" Techniken, was C++ anbelangt lernen können und wäre bis der neue Standard kommt auf dem Top aktuellen Stand. Weiterbildung in dem Sinne auf dem Gebiet C++ ist schlichtweg nicht möglich, weil es nichts neues gegeben hat seit dann.
Also nix von wegen "nach neuem Aussachau halten müssen". Das gehört imo alles zu den Grundlagen.
-
Da gebe ich Dir auch vollkommen recht - sofern es nur um die eine Sprache selbst geht. Aber da bleibt es ja leider nicht dabei, und Bibliotheken schießen auch wie Pilze aus dem Boden - und werden ständig erweitert.
Schau Bewerbungsprofile an. Denjenigen, der alle der mindestens 20 Punkte auf 'Meisterniveau' beherrscht, den gibt es meiner Meinung nach nicht. Zumal mindestens ein ausgefallenes Produkt dabei ist, mit dem diese Firma dann praktisch fast ausschließlich arbeitet, weil sie es irgendwann aufgebabbelt bekommen hat.
Die versuchen dann ein recht gewaltsames break aus einer Endlosschleife
-
Bitsy schrieb:
Da gebe ich Dir auch vollkommen recht - sofern es nur um die eine Sprache selbst geht. Aber da bleibt es ja leider nicht dabei, und Bibliotheken schießen auch wie Pilze aus dem Boden - und werden ständig erweitert.
Ja, klar. Aber man muss ja nicht alles sofort beherrschen. Das gehört dann einfach zu der spezifischen Vertierung, wenn man wo arbeitet. Das ist aber ja in jedem Job gleich. Ein Automechaniker hat das grundlegende Verständniss alle Marken zu kennen, aber wenn er dann z.B bei einer Opel Garage anfängt muss er halt doch die spezifischen Dinge lernen. Kann dann aber nicht auch noch auf allen anderen Marken up to date sein.
Schau Bewerbungsprofile an. Denjenigen, der alle der mindestens 20 Punkte auf 'Meisterniveau' beherrscht, den gibt es meiner Meinung nach nicht. Zumal mindestens ein ausgefallenes Produkt dabei ist, mit dem diese Firma dann praktisch fast ausschließlich arbeitet, weil sie es irgendwann aufgebabbelt bekommen hat.
Die versuchen dann ein recht gewaltsames break aus einer Endlosschleife
Üblicherweise sollte ein Job Angebot ja nicht soo spezifisch sein, dass man, wenn man jetzt genaue die Sprache oder Bibliothek nicht kann die Stelle gar nicht bekommen kann. Klar gibt es Stellen, wo wirklich ein langjähriger Cobol Spezialist gefragt ist, aber das ist eher die Ausnahme und hat imo wenig mit aktueller Softwareentwicklung zu tun.

Im übrigen sehe ich selten, dass eine Sprache geschweige denn eine Bibliothek im Stellenprofil ausgeschrieben ist. Oftmals wird einfach z.b ein paar Jahre als Entwickler und dann villeicht 2-3 Sprachen, welche als Plus gelten ausgeschrieben sind. Oder aber es wird ein paar Jahre Erfahrung mit einer gängigen Sprache verlangt.Allerdings stellt sich oft die Frage auch gar nicht, weil wenn man z.B im Grafikbereich was sucht, dann wird da natürlich OGL/DirectX verlangt, aber wenn man sich dafür interessiert, dann hat kennt man die Sachen eh schon im vornherein aus Eigeninteresse.
Aber du hast recht, wenn man in allen Bereichen der Informatik auch nur auf einem aktuellen Stand sein will, dann ist das seehr mühsam.
Alleine schon, was ich mir noch anschauen will.
- z.B Go! WPF, Java, .NET 4.0, Latex, neue Websachen, Erlang (tiefer), ein paar andere Sprachen, Bibliotheken ebenfalls usw. Oder aber auch habe ich mir letztens die Facebook API angeschaut (welche nebenbei gesagt wirklich cool ist) und ein Haufen anderes Zeug, was mir gerade so nicht einmal einfällt..
Zum Glück kann man sich als Student die Zeit nehmen und sehr vieles davon anschauen und ausprobieren. Geht schon recht viel Zeit drauf, aber wie du schon sagst, wenns Spass macht ists kein Problem.
Aber ich bezweilfe, dass es irgend einen Job gibt, der so eine Vielfalt von Sprachen, Techniken und Bibliotheken verlangt.
Ein Beispiel aus eigener Erfahrung: Ich habe ein weilchen als Web Developer gearbeitet und alleine da hält sich das ja in Grenzen, auch wenn man sehr viele verschiedene Sachen können sollte, wie PHP, CSS, XHTML, MySQL, Javascript und ein wenig interne Bibliotheken. Mit 6-7 Gebieten ist das ja schon recht Vielfälltig und wenn man da mal die Grundlagen hat bleibts auch sehr überschaulich mit den Neuerungen.Ach, was labere ich da so viel. Ich denke du weisst, worauf ich hinaus wollte.

-
Dass sich nach einem gründlichen Frühjahrsputz nicht mehr so viel Zeug ansammelt, ja, das ist etwas, das sollte ich mir mal mehr zu Gemüte führen. Dieser innere Schweinehund ist ein ganz schönes Mistvieh!

-
Bitsy schrieb:
Dass sich nach einem gründlichen Frühjahrsputz nicht mehr so viel Zeug ansammelt, ja, das ist etwas, das sollte ich mir mal mehr zu Gemüte führen. Dieser innere Schweinehund ist ein ganz schönes Mistvieh!


-

wenn man da mal die Grundlagen hat bleibts auch sehr überschaulich mit den Neuerungen
Metapher... eieiei - okay, schwer zu verstehen, beim Frühjahrsputz fliegt der Dreck ja raus

-
Ach so.
War eben zu lange her, als ich das geschrieben habe und wusste nicht, auf was du dich beziehst.