Technologie
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

Coding Contests

55 Beiträge ▪ Schlüsselwörter: Programmieren, Coding, Catalyst Coding Contest ▪ Abonnieren: Feed E-Mail

Coding Contests

30.03.2016 um 20:37
Da in Kürze (08.04.2016) sowohl der Google Code Jam als auch der Catalyst Coding Contest (Archiv-Version vom 18.03.2016) anstehen, wollte ich mal anfragen ob es hier möglichweise andere Coder gibt die an sowas teilnehmen und was euch die Teilnahme eurer Meinung nach (wenn überhaupt) gebracht hat.

Aber zuerst einmal eine kurze Erklärung für diejenigen die keine Ahnung haben um was es bei so einem Contest geht und wie das Ganze abläuft.
Wie beim Wort Contest zu erwarten geht es um einen freundschaftlich, sportlichen Wettstreit unter Programmieren, bei dem es darum geht, zu einer gegebenen Problemstellung möglichst schnell einen passenden Algorithmus zu entwickeln und dann damit zu gegebenen Anfangsbedingungen die zugehörige Lösung zu ermitteln.
Falls diese Erklärung zu abstrakt ist, ich finde es hat große Ähnlichkeit mit den Textaufgaben, welche man in der Schule in Mathematik vorgesetzt bekam. Nur das man einen Satz Anfangsparameter für die jeweilige Aufgabe bekommt und zu jedem die Lösung generieren soll.

Diese Lösungen werden dann eingereicht, sind sie richtig d.h. die Lösungen passen zu den Anfangsbedingungen, bekommt man Punkte. Es fließt in die Punktwertung mit ein wie schnell man war und ob man Fehlversuche (falsche Lösungen) einreichte (es kann natürlich auch weitere Wertungsparameter geben, wie z.B. Codelänge, Codequalität etc. ...).
Je nachdem bekommt man dann die volle Punktzahl oder eben nur einen gewissen Teil der bestmöglichen Punktzahl.
Üblicherweise kommt nur ein gewisser Prozentsatz jede Runde weiter (z.B. die besten 30 %).

Die Anmeldung ist grundsätzlich frei und kostenlos, die Teilnahme erfolgt entweder ausschließlich über das Internet oder ist sowohl per Internet als auch vor Ort möglich.
Es kann mit praktisch jeder Programmiersprache teilgenommen werden, da sowohl Eingangsparameter als auch Lösung, als .txt-File bereit gestellt / eingereicht werden.
Natürlich gibt es auch Preise für die Besten, aber ich denke es geht wie bei den meisten anderen Wettkämpfen auch mehr um das Mitmachen, als das Gewinnen. Außerdem nutzen etliche Firmen (diese sponsoren das Ganze meist auch) solche Contests als Möglichkeit in Kontakt mit potentiellen neuen Entwicklern zu kommen und auch gleichzeitig deren Qualifizierung zu testen. Wer es darauf anlegt kann so also auch in Kontakt mit möglichen Arbeitgebern kommen.

Ich selbst war Anfangs sehr skeptisch, bin aber inzwischen begeistert von solchen Events. Sie prüfen eine der essentiellsten Fähigkeiten eines jeden Entwicklers (analytisches Denken) und
ich konnte feststellen (zumindest für mich), dass man sich nach einer gewissen Anfangshürde auch schnell verbessert/steigert.
Man wird auch mehr oder weniger gezwungen sich mit der gewählten Sprache intensiv auseinander zu setzen und lernt dadurch immer mal wieder etwas hinzu, was man auch im Arbeitsalltag gebrauchen kann.

Was denkt ihr ?
Könntet ihr euch dafür möglicherweise auch begeistern ?
Oder denkt ihr es ist lediglich eine unnötige Zeitverschwendung?


melden

Coding Contests

30.03.2016 um 21:34
Finde diese Contests super, jedoch, bin ich nur Hobby Programmierer und bin mit C++ / D / Python unterwegs, wobei D mein Favorit ist.

Jedoch mal abwarten was mit -std=C++17 alles so gemacht wird.

Mittmachen würde ich jedoch nicht, ich Programmiere eher für mich und an meinem ArchLinux rum.

Aber die Idee dahinter finde ich auf jedenfall super.


melden

Coding Contests

31.03.2016 um 00:21
Grundsätzlich macht es keinerlei Unterschied ob man nur hobbymäßig programmiert oder professionell.
Es geht ja hauptsächlich darum was zu lernen, das schadet keinem von beiden Typen.

Gerade Python ist für solche Zwecke stark, weil der Schreibaufwand drastisch reduziert ist und man allgemein
weniger falsch machen kann.
C++ würde ich aus Prinzip vermeiden, aber das ist letztendlich Geschmackssache, wenn man ein C++-Fanboy ist
und jahrelange Erfahrung damit hat ist es sicher eine gute Wahl.

C++-17 wird es für mich auch nicht attraktiver machen, es kommen da zwar immer nette neue Features dazu, aber
es wird auch nie was altes gestrichen, weshalb es inzwischen dutzende Wege nach Rom gibt, von denen nur die wenigsten
optimal sind.
Aber C++ an sich wird uns sicher noch viele viele Jahre erhalten bleiben :)


melden

Coding Contests

31.03.2016 um 19:39
Die Idee ist wirklich super!

Aber im Moment habe ich leider keine Zeit für Sowas...
Wenn ich die Zeit hätte könnte ich mich aber auf jeden fall dafür begeistern.

Da alle Programmiersprachen erlaubt sind würde ich wahrscheinlich PHP oder Javascript verwenden, da ich diese persönlich als recht einfach empfinde.


melden

Coding Contests

31.03.2016 um 20:14
Ok da jetzt schon der zweite meint es fehle ihm Zeit ... also ich empfinde es jetzt nicht so als würde es viel Zeit
beanspruchen. Ich mache ein paar Tage im Voraus, ein paar der Aufgaben der vergangenen Contests (diese werden
im Nachhinein veröffentlicht und können bearbeitet werden) und der eigentliche Contest dauert ein paar Stunden.
Im Falle des Code Jam sind die sogar über ein paar Wochen verteilt und man kann sich je nachdem wann man Zeit hat
der Aufgabe widmen (maximal Zeit ist eh meist nicht mehr als eine Stunde/Aufgabe).

Allerdings gibt es auch interessante Non-Contest Alternativen, welche genau wie die Contest Aufgaben funktionieren,
aber mehr als eine Art Coding-Rätsel für zwischendurch gedacht sind.
Zum Beispiel CodinGame oder Project Euler (Archiv-Version vom 29.03.2016).
Bei CodinGame gibt es auch noch meist eine schöne Animation zur Aufgabe, in der man nach vollziehen kann was der eigene Code genau macht, als auch ein Achievements System wie man es aus klassischen MMORPGS kennt :)
Zumindest bei Codingame habe ich dutzende der Puzzle gelöst und fand sie im Großen und Ganzen echt klasse.
An Project Euler bin ich grade dran, die Rätsel dort sind aber weitaus mathematischer und somit etwas trockener.

@JeTSkY
Ja gerade JS ist bei der Gesamtübersicht der genutzten Sprachen immer weit vorne dabei. JS ist relativ einfach und trotzdem
kaum Beschränkt hinsichtlich der Möglichkeiten. Außerdem ist JS momentan wohl eh eine der beliebtesten Sprachen, welche man für weit mehr als dynamische Websites nutzen kann.
Ich hab mich auch schon in JS geübt, aber ich vermisse dort einfach Typisierung und Objekte zu sehr :P (ja ich weiß es gibt da TypeScript und bald kommt eh ecmascript 6).


melden

Coding Contests

12.04.2016 um 10:32
Oh, noch nie von gehört :) Sieht ja spannend aus... Gibt sogar extra Aufgaben für Frauen ;)
Habe in meiner Ausbildung einiges "ansatzweise" gelernt (C, C++, Java unter anderem). Werde mich da gleich noch ein bisschen durchklicken und vielleicht nehme ich ja auch mal teil, würde dann wohl mit jQuery arbeiten. Das habe ich vor einer Weile für mich "entdeckt", macht Spaß damit zu arbeiten und man lernt sehr schnell dazu :)


melden

Coding Contests

12.04.2016 um 20:11
Das mit dem extra für Frauen ist neu und hat mich zuerst auch sehr verwundert. Das ist ja fast
schon irgendwie diskriminierend :P , frei nach dem alten Vorurteil, Frauen sind schlecht in Logik
und Mathe ...
Habe dann doch lieber mal nachgelesen, dieser Contest wurde im Rahmen des Frauentags bei Google
abgehalten, da versucht Google weibliche Ingenieure und Entwickler anzuwerben. Also doch keine
Diskriminierung von Frauen, sondern von Männern :)

Btw. ich hab die Qulifikationsrunde des Code Jam überstanden und bin nun in Runde 1 dabei. Mach mir
aber keine sooo großen Hoffnungen :) Mein Ziel ist irgendwann ein T-Shirt zu ergattern (welches es für
das Erreichen der Runde 2 oder 3 gibt). Just for Fun !

@ancientalien
JQuery ist aber doch nur ein JS-Framework oder ? Oder meintest du damit lediglich, dass du JS nutzen
würdest ?


melden

Coding Contests

13.04.2016 um 13:35
@ArnoNyhm
Ja, im Prinzip hast du natürlich Recht, jQuery IST JavaScript :D Es gibt ein paar Unterschiede wenn man damit arbeitet, finde es einfacher und übersichtlicher mit jQuery.

Edit:
Oh und Glückwunsch zu Runde 1 :)


melden

Coding Contests

13.04.2016 um 17:42
@ancientalien
Ich wollte nur mal aus Interesse nachfragen :) Ich hatte JQuery dunkel als JS-Framework in Erinnerung.
Ich habe in letzter Zeit öfter Leute davon schwärmen hören, wegen den Gründe die du auch nennst (Einfacheit).

Die meisten Sprachen sind ohne zusätzliches Frameworks/Libs ziemlich uncomfortable und kaum nutzbar.
Ich zum Beispiel nutze C#, aber ohne das restliche .Net Framework, allen voran LINQ, wäre es gleich viel weniger
mächtig. Es geht ja im Allgemeinen auch nicht darum das Rad neu zu erfinden, sondern darum das Rad richtig zu
benutzen :)

Ich würde mir für Contests gerne noch eine rein funktionale Sprache (wie z.B. Haskell) beibringen, da in diesen in
extrem wenigen Zeilen extrem viel getan werden kann ... es ist fast schon beeindruckend :)


melden

Coding Contests

13.04.2016 um 17:58
@ArnoNyhm
Ich habe schon einige Projekte mit jQuery umgesetzt, hat jedesmal Spaß gemacht :) Ich lerne immer "nach Bedarf", also ich habe eine Aufgabe und "bastel" mir dann eine Lösung zurecht, optimiere sie usw. Habe in meiner Ausbildung nur grob etwas mit JavaScript gemacht und mir alles was jQuery betrifft dann selber angeeignet.

Von Haskell habe ich noch nie gehört, habe gerade mal auf Wiki den Artikel dazu überflogen. Sieht sehr "einfach" aus, also ohne viel Schnickschnack. Habe mal was mit Assembler gemacht, aber das war gar nicht meins :D Das ist mir irgendwie zu... Hm, wie soll ich es beschreiben? Zu "technisch"? Maschinell? :D Klingt bestimmt blöd... ;)

Schweifen wir gerade von deinem ursprünglichen Thema ab oder gehört das noch irgendwie mit dazu?


melden

Coding Contests

13.04.2016 um 21:25
ProjectEuler ist immer so ne Art Default-Ansatzpunkt für mich um neue Programmiersprachen zu lernen...

1-50 etwa habe ich irgenwann mit Ruby geknackt bis ich keine Ideen mehr hatte... außerdem weiß ich nicht mehr wo der ganze Quellcode rumfliegt.

Jetzt habe ich mit Haskell angefangen. Das ist schon ziemlich nett...

Probleme 1,4 und 6 gehen locker mit Einzeilern von der Hand...

Aber auch mir mangelt es zur Zeit an der selbigen um an einem Contest teilzunehmen... so mache ich das nur zum Spaß...

Nächstes Jahr werde ich mich wohl mal am Google Code Jam versuchen


melden

Coding Contests

13.04.2016 um 22:42
@ancientalien
Naja so ganz Off-Topic ist es ja nicht ... Vorzüge bzw. Unterschiede verschiedener Sprachen sind schon Teil
des Topics bzw. spielen in dem Zusammenhang ebenso eine Rolle, wie auch Frameworks und die Funktionalität
die diese bereitstellen.

Haskell ist auch eine sehr spezielle Sprache die aus dem wissenschaftlichen/mathematischen Bereich kommt.
Falls das für dich wirklich einfach aussieht, ich denke da trügt der Schein. Die meisten Leute (ich schließe mich da
mal an) empfinden sie als schwer zu lernen. Dafür bekommt man dann aber auch was für seine Mühen. Selbst wenn
der Gewinn lediglich aus einem Blick über den Tellerrand der imperativen Sprachen besteht.

Assembler hatten wir im Studium auch 1-2 Semester lang, es ist schön das mal gesehen zu haben, aber man kam nicht
ohne Grund auf die Idee mit den Hochsprachen. Assembler bleibt zwar unweigerlich Bestandteil der Toolchain, aber ich
glaube nicht dass heute noch viele Leute mit Assembler arbeiten. Abgesehen von denen die das unbedingt wollen oder
diejenigen welche eine fragwürdige Optimierung erreichen wollen (overengineering !).

@interpreter
Hehe aus genau dem Anlass nutze ich Project Euler auch gerade. Allerdings habe ich die Seite erst vor eine paar Wochen
entdeckt, aber ich kenne einige sehr ähnliche Seiten, welche ich vorher auch schon zum üben neuer Sprachen genutzt habe.
Project Euler bietet sich natürlich gerade für Haskell an :).

Ich bin absolut begeistert von Haskell, es ist aber auch mit die schwerste Sprache die ich mir bis jetzt angeschaut habe.
Dies liegt sicher daran, dass nicht nur die Syntax befremdlicher wirkt als sonst (keins der üblichen C-Derivate), sondern
auch altbewährte Denkmuster nicht mehr 1:1 umgesetzt werden können. Gerade das finde ich aber auch interessant an
der Sprache, ein wunderschönes zweischneidiges Schwert.
Ich hoffe ich werde Haskell bis nächstes Jahr soweit verinnerlicht haben, dass ich mit ihr beim Code Jam antreten kann.

Ah und um nochmals auf den Zeitaufwand zu sprechen zu kommen. Also ich habe jetzt nicht mehr als vielleicht 12 Stunden im Zeitraum von 2 Wochen investiert. Klar man könnte auch sehr viel Zeit investieren, aber es soll Spaß machen und keine Arbeit sein. Ich finde es hält sich sehr in Grenzen.
Zumindest für die Qualifikationsrunde hatte man 28 h Zeit, man konnte sich die Zeit also so einteilen, wie es einem am Besten passte.


1x zitiertmelden

Coding Contests

13.04.2016 um 22:50
Btw. das waren die 4 Aufgaben der diesjährigen Qualifikationsrunde.


melden

Coding Contests

13.04.2016 um 23:49
@ArnoNyhm

Interessante Aufgaben aber nicht unbedingt ne große Herausforderung. Hast schon recht... so viel Zeit kostet das nicht.

Allerdings bin ich von deiner Idee das mit Haskell zu machen jetzt nicht so überzeugt. Da ist Haskell teilweise garnicht so gut für geeignet.


melden

Coding Contests

14.04.2016 um 08:41
@interpreter
Naja das waren ja auch nur die Aufgaben zur Qualifikation, wobei ich die letzte nicht einfach fand. Die späteren
Aufgaben werden nicht unbedingt viel schwerer nur dort kommt dann der Zeitdruck hinzu. Beeindruckend fand
ich eher, dass die besten nach ca. 45 Minuten mit allen Aufgaben fertig waren.

Was spricht denn gegen Haskell ? Es sind jedes mal zahlreiche Leute mit Haskell dabei, auch welche die nicht
frühzeitig rausfliegen. Klar im Finale sind immer hauptsächlich Leute mit C++, Java und Python am Start, aber
ich denke das liegt nur daran, dass es einfach viel mehr Leute gibt die diese Sprachen nutzen. Dadurch
steigt natürlich auch die Wahrscheinlichkeit, dass jemand mit dieser Sprache ins Finale kommt.
Außerdem will ich eh nicht ins Finale :) bzw. denke ich nicht, dass ich dort je hinkommen würde.

Übrigens ist diese welche "Sprache ist gut für Contests" Diskussion ein Klassiker. Am Ende sind sich dann aber
immer alle einige, dass es kaum einen Unterschied macht welche Sprache man nutzt, solange man sie halbwegs
beherrscht.
Denn das eigentliche Problem ist einen Algorithmus zu finden der das Problem löst, nicht diesen in der gewählten
Sprache zu definieren, dass ist der einfache Teil :)


melden

Coding Contests

14.04.2016 um 12:37
@ArnoNyhm

Die Algorithmen die du für eine Verarbeitung mit Haskell definieren musst, weichen generell von denen ab, die in einer oop/prozeduralen Sprache verwendet werden.

Beispielsweise hast du bei Haskell keine Schleifenverarbeitung und musst alle Probleme auf die Rekursion runterbrechen.

Das erfordert mehr Hirnschmalz und das ist das Problem, wenn du unter Zeitdruck stehst.

Klar hat Haskell sehr knappen und sparsamen Code, der noch dazu rasend schnell ausgeführt wird, bei richtiger Implementation.

Aber die Herausforderung beim Programmieren ist eigentlich nicht das schreiben des Codes sondern das Denken und das Lösen der Probleme.
Da Haskell das Denken und Lösen schwerer macht, holst du dir einen echten Nachteil ins Haus, für Alle Probleme die nicht für eine Lösung mit Haskell prädestiniert sind.


2x zitiertmelden

Coding Contests

14.04.2016 um 18:58
@ArnoNyhm
Zitat von ArnoNyhmArnoNyhm schrieb:Falls das für dich wirklich einfach aussieht, ich denke da trügt der Schein.
Hm nein, ich meine nicht einfach im Sinne von "es ist einfach oder schnell zu lernen" :) Vereinfacht wäre vielleicht ein besseres Wort? Trifft es aber auch noch nicht so ganz ;) Ach man, ich komm gerade nicht drauf... :D Du weißt schon was ich meine...

Interessante Aufgaben, vielleicht werde ich mich einfach mal just for fun dran setzen :) Ist ja nie verkehrt sein Gehirn ein bisschen auf Trab zu halten ;)

Ich lese gerade:
Zitat von interpreterinterpreter schrieb:Klar hat Haskell sehr knappen und sparsamen Code
DAS war es, was ich mit einfach meinte ;)


melden

Coding Contests

14.04.2016 um 20:53
@ancientalien

Haskell ist nicht einfach... eher im Gegenteil. Es ist einfach sehr gut für das, wofür es da ist.

Ein Beispiel nur:

Eigentlich soll man es nicht veröffentlichen aber bei dem ersten werden sie es denke ich überleben:

euler1 = sum[x| x <-[1..999], mod x 3 == 0 || mod x 5 == 0]

das ist die Lösung für das erste Project Euler Problem in Haskell... kompakt und übersichtlich ja... einfach? naja.


melden

Coding Contests

14.04.2016 um 20:59
Zitat von interpreterinterpreter schrieb:Die Algorithmen die du für eine Verarbeitung mit Haskell definieren musst, weichen generell von denen ab, die in einer oop/prozeduralen Sprache verwendet werden.
Ja gerade das ist der interessante Punkt an der Geschichte. Viele Probleme lassen sich mittels funktionalen Algorithmen kürzer
und einfacher lösen, als mit dem was man von den imperativen Sprachen her kennt. Das ist mit der Grund warum ich mir Haskell überhaupt anschaue.
Zitat von interpreterinterpreter schrieb:Beispielsweise hast du bei Haskell keine Schleifenverarbeitung und musst alle Probleme auf die Rekursion runterbrechen.
Das ist nur ein Problem der Gewohnheit. Letztendlich lässt sich jede Schleife mittels Rekursion darstellen und ebenso
in die entgegengesetzte Richtung. Es macht also keinen wirklichen Unterschied.
Das einzige was mir bis jetzt Sorgen macht, wie realisiere ich mittels Rekursion dynamische Programmierung.
Meiner Meinung nach liegt das aber lediglich daran, dass ich noch nicht weiß, wie man "dynamic programming" mittels Rekursion realisiert.
Gehen wird es sicher, sonst hätte Haskell keinen so guten Ruf.
Zitat von interpreterinterpreter schrieb:Das erfordert mehr Hirnschmalz und das ist das Problem, wenn du unter Zeitdruck stehst.
Ebenfalls nur Gewohnheit, man ist halt an ein anderes Vorgehen gewohnt. Das bedeutet aber nicht unbedingt,
dass dieses besser oder weniger umständlich ist.
Die Befürworter funktionaler Sprachen betonen immer wieder, dass sich viele Problemstellungen mittels funktionaler
Sprachen, viel eleganter lösen lassen, als auf dem imperativen Weg.
Ich kann das natürlich schlecht beurteilen, aber genau deswegen will ich mir ja Haskell anschauen.
Zitat von interpreterinterpreter schrieb:Aber die Herausforderung beim Programmieren ist eigentlich nicht das schreiben des Codes sondern das Denken
und das Lösen der Probleme.
Da kann ich dir nur zustimmen, dass wollte ich mit meinem letzten Post auch ausdrücken. Die Leute die gut sind, sind das
nicht wegen der Sprache die sie benutzen. Sprache und Code sind nur Werkzeuge, trotzdem schadet es sicher nicht wenn
einem sein Werkzeug gefällt :)
Zitat von interpreterinterpreter schrieb:Da Haskell das Denken und Lösen schwerer macht, holst du dir einen echten Nachteil ins Haus, für Alle Probleme die nicht für eine Lösung mit Haskell prädestiniert sind.
Wie gesagt ich denke nicht, dass Denken und Lösen in Haskell schwerer ist, dann hätte die Sprache keine Daseinsberechtigung. Es ist nur anders und laut einigen Leuten in vielen Fällen angenehmer und einfacher.
Ob das so stimmt sei jetzt mal dahin gestellt.
Allerdings würde ich Haskell auch nur nutzen, wenn ich wirklich sicher in der Sprache wäre. Ich glaube auch
nicht, dass ich das in einem so kurzen Zeitraum schaffe.

Aber im Großen und Ganzen geht es mir mit Haskell mehr um einen Blick über den Tellerrand der imperativen Sprachen.
Ein anderer Blickwinkel auf altbekannte Probleme kann nicht schaden.

@ancientalien
Du kannst alle jemals gestellten Aufgaben auf der Seite des Code Jam lösen. Komplett ohne Zeitdruck.
Aber du bekommst genau wie beim Contest ein Input-File und musst passend dazu ein passendes
Output-File (beides simple .txt-Files) generieren und hochladen. Du bekommst dann auch Feedback ob richtig oder falsch.
Ebenfalls wie beim richtigen Contest.

Solltest du dazu fragen haben oder Hilfe benötigen stehe ich gerne bereit :)
Ich mach diese Aufgaben auch gerne mal Abends, als einen Art Knobelspiel und um zu üben :P

Falls du es noch etwas kürzer willst, aber in die selbe Richtung. Schau dir mal Project Euler oder CodinGame an. Da kannst du ähnliche Aufgaben einfach auf der Website lösen (bzw. dort einfach die Lösung einchecken).


melden

Coding Contests

14.04.2016 um 21:05
@ArnoNyhm

Was meinst du mit dynamischer Programmierung?


melden