Wöchentlich Programme schreiben...
-
Die Idee find ich gut.
Ich wär aber dafür dass alles verwendet werden kann. C/C++ mit diversen Bibliotheken, Java, Delphi, Perl etc.Da würde man dann z.T. völlig verschiedene Ansätze sehen und die Vor- und Nachteile der verwendeten Tools.
Auch die Aufgabenstellung würd ich nicht Beschränken auf sachen die sich mit ISO/Console bewerkstelligen lassen.
Grade wenns kein echter Wettbewerb sein soll sondern es einfach einen Übungs- und Lerneffekt haben soll, is doch so künstliche Beschränkung grundlos - und geht auch an der Realität vorbei.
-
Ja, aber gerade das ist der Reiz wenn man diese Hilfsmittelchen wie diverse APIs nicht hat. das Hauptaugenmerk sollte auf den Code gelegt werden und nicht auf das Ergebnis. Ich denke jeder hier kann ein einfaches jump'n run programmieren aber die Konzepte und Techniken die dahinter stecken verschwinden meist hinter bunten Bildchen. Es kommt auf möglichst raffinierte Lösungen bzw. Ansätze an. Ich sehe schon eine Diskussion der Art: Boah, wie hast du die Textur für den Himmel so geil hinbekommen (und das Spiel läuft in Slowmotion weil er viele unnütze Operationen macht)?
-
Naja, wenn das Ding durch den Einsatz einer Bib zu langsam wird, sieht man das ja dann an dem Beispiel, das das hier nicht passt. Andrerseits ist es doch eleganter die Aufgabe "Programmiere ein Junp'n'Run" mit ner guten Bib zu lösen, als alles selber zu machen. Wenn man die Bib nicht haben will, sollte die Aufgabe eben "Programmiere eine 2-D Spielebibliothek mit einem Jump'n'Run-Anwendungsbeispiel" heißen.
Ich denke wenn man auf einen Aspekt ein besonderes Augenmerk legen will sollte das in der Aufgabe stehen. Wenn die Betonung eher auf einem Ergebnis liegt soll man auch alles verwenden können.Ist die Aufgabe z.B. ein netzwerkfähiges "4-Gewinnt" zu implementieren, kann ich die Netzwerk-Kommunikation mit WinAPI und UDP machen, mit irgendwelchen C++-Netzwerkbibliotheken, mit den Standard Java-Klassen, einer Delphi-Komponente oder von mir aus mit SOAP.
Und am Ende sieht man dann welche Lösung die verständlichste ist, die am einfachsten zu implementierende, die erweiterbarste, die elaganteste, die mit dem größen Overhead etc.
Wenn ich jetzt aber nur SOAP haben will heißt die Aufgabe halt "Programmiere ein netzwerkfähiges 4-Gewinnt, welches über SOAP kommuniziert". Und da seh ich dann wieder, wie verschiedene SOAP-Implementationen zu handhaben sind.
-
Wer soll die Regeln festlegen und wer die Aufgaben stellen?
-
@kartoffelsack: das problem mit diversen Libs und Apis ist ja, dass sie nicht jeder kennt und nicht jeder schon für jeden Bereich Applikationen geschrieben hat. Ich für meinen Teil hatte noch nie etwas mit Netzwerkprogrammierung am Hut. Reines C++ ohne den ganzen Klickibunti-Firlefanz sollte für keinen etwas sooo neues sein. Ich denke die Aufgaben sollten nicht in ein fertiges programm münden sondern eher zu raffinierten Lösungen anregen.
@Erhard: Ich denke Regeln sollten zu Beginn einmal festgelegt werden (z.B. nur Standard C++ mit STL benutzen) und die Aufgaben können von jedem gestellt werden. Derjenige der die Aufgaben stellt sollte eventuell noch Kriterien angeben (kurzer Code, schneller Code oder sicherster Code). Die Bewertung kann dann von allen Forumsmitgliedern erfolgen und die Lösungsansätze können diskutiert werden.
-
Ich vermute mal, dass ich jetzt von allen Seiten Schimpfe kriegen werden, aber ich persönlich habe keine Lust auf irgendwelchen wilden Algorithmen, die 0.00001 ms schneller sind als die herkömmlichen.
Das ist ok, wenn solche Aufgaben kommen, aber nicht ausschließlich. Ich finde, wenn ein paar Sachen wie Netzwerkprogrammierung drankommen würden, wäre das doch ne tolle Abwechslung?!
Zur Durchführung find ich Mastahs Idee gut, allerdings gefällt mir wiederum die Idee mit der STL nicht. Ich meine was spricht dagegen, einfach mal nen Client für MySQL zu schreiben oder sowas!? Fertig Lösungen schaden meiner Ansicht nach nicht, und daraus kann sich ja jeder dann die Teile "klauen" die ihm gefallen
.
Wer irgendne exotische Lib benutzen will, soll das doch tun. Vielleicht hat genau jemand anders die gesucht.
Ich hab vom Programmieren die wenigste Ahnung hier, denke ich mal, deswegen kann ich nur meine Sicht der Dinge darstellen. Ob der Lerneffekt bei fertigen Programmen höher ist als bei kleineren Algorithmen weiss ich nicht, aber motivierender ist es bestimmmt. Zumindest sollte man einige Dinge nicht von vorneherein ausschließen.
-
Ich denke man könnte sowohl als auch machen. Es wäre vielleicht auch nicht schlecht wenn man im Forum so eine Art Snippet-Sammlung hätte. Aber das ist ganz einfach. Jemand macht einen Thread in "Rund um die Programmierung auf" der heißt "Eure besten Snippets" und jeder der meint er hätte ein schönes (d.h. nützliches oder lehrreiches) Stückchen Code kann eins posten.
-
Das Problem dabei ist, dass wenn nen fertiges Code-Schnippselchen präsentiert wird, ich mich selber wahrscheinlich mit dem eigentlichen Problem nicht beschäftigt habe.
Gibt es eine Problemstellung, bei der die Lösung im Vorfeld noch nicht feststeht, dann MUSS ich micht damit beschäftigen, finde evtl. sogar ne Lösung. Aber meine Lösung muss halt nicht optimal sein, und wenn ich dann den Code von anderen Leuten sehe, der besser oder zumindest anders ist, dann guck ich mir diesen intensiver an, vergleich das mit meiner Lösung und komme vielleicht zu dem Schluss, das eine Schleife hier oder da besser ist, dass man dies oder das verkürzen kann etc.
Lange Rede, kurzer Sinn: Ich denke, dass der Ehrgeiz auf jeden Fall größer ist, anderen Code zu verstehen, wenn ich mich selber damit beschäftigt habe.
Abgesehen davon werden ja ständig irgendwelche Code-Schippsel präsentiert.
-
Ich denke ie Motivation ist ab Größten wenn ein Sieger gekürt wird aber das bedeutet Aufwand. Jemand muss die Codes beurteilen, eventuell sogar nachmessen wie schnell er ist.
-
Also an einen Wettbewerb hatte ich dabei gar nicht gedacht. Es gibt ja oft nicht nur eine richtige Lösung, sondern mehrere. Mir gings eher darum, dass man von anderen lernt, bei bestimmten, konkreten Problemstellungen. Für mich wäre das Motivation genug.
Wenn das natürlich in einem Wettbewerb ausarten soll, isses mir auch recht, nur das hatte ich nicht beabsichtigt. Da wirds dann aber schwierig, jemanden zu finden, der das beurteilt :D.
-
Naja, egal ob ein Sieger gekürt wird oder nicht. Ich fänd es gut und würde wenn so etwas mal kommt auch daran teilnehmen.
-
Zur Anregung andere Spiele-Programmierwettbewerbe:
http://web.informatik.uni-bonn.de/I/VL/III/programmier-wettbewerb.pdf
http://www.cs.uni-magdeburg.de/~yu/
http://www.stratira.de/Hamsterproblem:
http://chsemrau.de/contest2002/index.html
-
Ich find die Idee von dem Contest gut, würde aber keine Einschränkungen bezüglich Bibliotheken machen. Wenn jetzt jemand sein Programm mit Klickibunti Effekten aufpäppelt, heißt das ja nicht automatisch, dass dieses Programm gewinnen muss. Dann hat er/sie ja nicht soviel Zeit in die grundlegende Aufgabenstellung gesetzt wie die anderen Teilnehmer.
Aber auch so eine Art "Rate The Code" wäre toll. Wo einfach jeder ein Stückchen Code posten kann, und die anderen bewerten das dann, was man besser machen könnte, was verdammt schlecht geraten ist oder was einfach perfekt gelöst ist,...
Das Konzept hat zwei Vorteile:- Man braucht keine einzelne Person, die alles bewerten und austesten muss (Wie bei den Contests), sondern die Personen, die den Posts antworten, bewerten dann ja schon (und haben es wahrscheinlich auch ausgetestet).
und - Ich denke, auf diese Weise kann viel besser lernen, da man von den anderen sofort Feedback für seinen Code erhält.
Außerdem ist dann der Wiederverwendungseffekt größer. Jemand liest einen Post über ein gewisses Thema, an dem er selbst gerade arbeitet. Dann kann er sich ansehen, wie es andere gelöst haben, welche Strategien sie verwendet haben, was sich nicht als gut erwiesen hat,...
Das heißt dann auch, das man sich nicht komplett bei Null anfangen muss. Das ist meiner Meinung nach besser, als sich die Grundlagen selbst aneignen zu müssen. (Sicherlich kann man dabei auch viel lernen, wer es so machen will, der braucht sich ja die Posts nicht anzuschauen, aber wenn man schon so verzweifelt ist und am liebsten das Keyboard an die Wand schleudern möchte, dann ist so was sicher eine große Hilfe.
- Man braucht keine einzelne Person, die alles bewerten und austesten muss (Wie bei den Contests), sondern die Personen, die den Posts antworten, bewerten dann ja schon (und haben es wahrscheinlich auch ausgetestet).
-
An sich unterstütze ich diese Aussage. Aber: wer kuckt sich 40 Seiten Quellcode an? Reicht der Speicherplatz im Forum?
Schwierig wird auch die Diskussion einzelner Programmpassagen. Jeder kommentiert an anderen Stellen und ein Thread wird schnell riesig und schwer durchschaubar...
-
Ich wüsste ja mal eine kleine Aufgabe;
ist zwar nicht gerade für Anfänger, aber ansonsten recht interessant.
Beschrieben ist die Aufgabe hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=44562Wer Tips weiß, oder einen Source will, der halt einfach nur alle Kombinationen ausprobiert, der darf einfach nur antworten.
Viele Grüße, und viel Spass, ich bin auch noch am Suchen nach vernünftigen Optimierungen.
-
zur Libary Beschränkung:
Wir könnten uns auf einige Libs einigen, die zugelassen wärem
Für Grafikanwendungen OpenGL(GLUT) und DirectX
für Netzwerk: WinSock und die Linux Sock Lib
etc.
-
Hauptmann schrieb:
zur Libary Beschränkung:
Wir könnten uns auf einige Libs einigen, die zugelassen wärem
Für Grafikanwendungen OpenGL(GLUT) und DirectX
für Netzwerk: WinSock und die Linux Sock Lib
etc.Wieso sich auf einzelne Libs beschränken? Nicht jeder Coder will mit OpenGl oder DirectX proggen, es gibt auch noch andere Grafiklibs, die mancher Coder gern verwenden will (zB. SDL).
Warum soll jetzt dieser Coder gezwungen werden, auf eine andere Lib umzusteigen, wenn er an den Contests teilnehmen will?
Ich find eine Beschränkung sinnlos, weil sie den Programmierer einschränkt. Und die Contests sollten doch vor allem deshalb gestaltet werden, damit man von anderen lernt und das kann man doch am besten, indem man eine Vielzahl von Möglichkeiten offeriert bekommt, aus denen man auswählen kann. Wenn jeder sein Programm mit DirectX schreiben muss, geht doch die Vielfalt verloren. Und das kann doch nicht der Sinn sein?!?
-
Ich denke auch, wir lassen einfach alles zu, auch Inline-Assembler. Das Problem ist nur, dass man nicht alles hier posten kann, z.B. ein komplexes MFC-Programm. Da könnte der Entwickler einen Link auf die gezippten Dateien setzen. Die entscheidenden Stellen kann man dann hier vorstellen.
@CarstenJ: Schlage doch als Initiator dieses Threads die erste Aufgabe vor, damit es endlich losgeht.
-
Wie machen das einfach abwechselnd für jede Sprache. Es nützt ja nicht viel (denke ich) wenn hier 5 Anfänger etwas in C/C++ umsetzen, und die Cracks machen das in Assembler. Meiner Meinung nach sollte es kein Wettbewertb der Art sein, wie er in der C't stattfand. Dort kam es ja hauptsächlich auf die Geschwindigkeit der Lösung an. Klar kann man sich auch dort die Source-Codes angucken, aber die sind teilwese nicht oder schlecht dokumentiert. Außerdem fand ich das auch nicht gerade eine Aufgabe, wo Anfänger hätten mitmachen können.
Das mit den Zip-Files find ich ok, allerdings hat ja nicht jeder Webspace, wo er das hochladen kann!
-
man kann ja auch nur die entsprechenden Funktionen posten