2010-01-22 6 views
18

Ich wurde gebeten, bald einen Workshop zu leiten und Dojo zu programmieren, damit Leute Scala ausprobieren und versuchen, etwas damit zu bauen. Die Teilnehmer werden alle neu bei Scala sein und könnten aus einer beliebigen Anzahl von Sprachen kommen (ich nehme an, sie können in mindestens einer Mainstream-Sprache programmieren - ich schließe Syntaxvergleiche mit Java, C#, Python und Ruby ein)).Irgendwelche praktischen Coding Dojo/Kata Ideen?

Ein Teil der Anziehungskraft von Scala ist, dass es praktisch ist - Sie können es als Drop-in "Power Java" (Java mit weniger syntaktischen Unordnung, Verschlüsse, Unveränderlichkeit, FP, Eigenschaften, Singleton Objekte, nette XML-Handhabung, Tippfehler usw.), der immer noch auf der JVM (und auf der .NET CLR) ausgeführt wird und nicht erfordert, dass Sie Build-Tools, Server-Infrastruktur, Bibliotheken, IDEs usw. ändern. Die meisten Katas, die ich gesehen habe, waren lustig, aber keine "echte Welt" - mathematische Herausforderungen wie Project Euler und so weiter. Diese scheinen nicht angemessen zu sein, da wir versuchen, den Gebrauch davon als eine praktische Sprache der realen Welt zu erforschen, die die Leute in Betracht ziehen könnten, sowohl für Hacking als auch für Arbeit zu verwenden, und weil die Leute nicht unbedingt mit der tiefere Teile der Scala-Syntax oder notwendigerweise der Konzepte hinter der funktionalen Programmierung.

Also, hat jemand mehr praktische, alltägliche Katas statt arithmetische "Problemlösung" gefunden? Katas, das kann testen, ob die Sprache, die Bibliotheken und die Werkzeuge die Anwendungsfälle der tatsächlichen täglichen Programmierung erfüllen können, die die meisten Leute tun müssen, anstatt sie auszuprobieren. (Nicht, dass die unpraktischen sind nicht lustig, aber nicht geeignet für die Art von Dingen, die ich ausgeführt habe.)

Wenn ich keine guten Beispiele finden kann, denke ich, dass es sein könnte nützlich, um etwas wie einen Bibliothekskatalog zu erstellen - die Veranstaltung richtet sich an Programmierer, die in erster Linie am Aufbau von Infrastruktur für Universitäten (und in Bildung und Kultur - Museen, Galerien, Schulen, Bibliotheken usw.) arbeiten. Es ist ein bisschen langweilig, aber es ist etwas, woran die Teilnehmer in ihrem täglichen Leben arbeiten. Irgendwelche Vorschläge?

+1

Wahrscheinlich sollte Community Wiki sein - es ist unwahrscheinlich, eine „richtige“ Antwort. Dies scheint eher ein Keim zur Diskussion zu sein. –

+0

Okay, ich habe es auf Community-Wiki eingestellt –

Antwort

1

Vielleicht können Sie sich das Material Ruby Quiz für Inspiration anschauen.

3

Die meisten Programmierbeispiele in meinem blog kodieren effektiv Dojo-Übungen. Insbesondere die , aber auch die puzzles und 99 beers. Vernachlässigen Sie die Matrizenserie nicht als "mathematisch", denn die Probleme, die ich selbst darin betrachte, hängen mit der Konstruktion von Klassen in Scala zusammen und nicht mit dem Erstellen von ausgefallenen Algorithmen. Tatsächlich überspringe ich die mathematischen Algorithmen selbst ziemlich genau.

Nun 99 Scala Problems und so ziemlich alles von Project Euler sind nette Übungen für den funktionellen Teil der Scala, aber ich verstehe, dass nicht Ihr Schwerpunkt zu sein. Ich empfehle retronym 's answer. Rosetta Code, die nicht funktional orientiert sind, könnten allgemeinere Beispiele haben. Es gibt viele mit Scala examples, natürlich, obwohl Sie vielleicht andere Aufgaben auch für Ideen betrachten möchten.

Es gibt viele coole Dinge über Scala zu lernen, aber man muss auf Anfängerniveau vorsichtig sein.Zum Beispiel würde ich nicht von der Abhängigkeitsinjektion (Selbsttypen und dem Kuchenmuster) oder von Typklassen (dem Muster, das solche mit Implikationen simuliert) sprechen.

Schauen Sie sich auch das Material auf der Scala Lang Website, insbesondere die Scala by Example Dokument.

  • Probleme: sie müssen Spaß machen, nicht ganz

    EDIT

    Ich habe jetzt mehrere Scala Dojos, hier ist also ein bisschen Sachen, die ich gelernt habe, von dann beaufsichtigt - einfach, nicht so schwer, und das muss sein jeder Meinung.

    Wir verwenden die Dojo Puzzles Website, die auf Portugiesisch ist, so dass es für die meisten Menschen hier nicht von Nutzen sein wird. Wenn es eine ähnliche Seite auf Englisch gibt, würde ich gerne davon erfahren.

    Die Art, wie es funktioniert, ist, dass Sie nach einem zufälligen Problem fragen, schauen Sie es sich an und besprechen Sie, ob Sie es aufheben oder nicht, und sagen Sie dann, dass Sie es benutzen werden, Sie werden es nicht benutzen oder vielleicht benutzt du es, aber du würdest gerne einen anderen sehen. Diese Abstimmung wird registriert und Sie können sehen, wie viele Personen ein Problem aufgegriffen haben. Dies hilft bei der Entscheidung, ob Sie es abholen oder nicht.

  • Scala-Wissen: Es stellt sich heraus, dass es nicht so wichtig ist, Schlüsselkonzepte der Scala-Sprache im Voraus einzuführen, insbesondere wenn einige der Teilnehmer Grundkenntnisse haben.

    Nach meiner Erfahrung reicht es oft aus, die Testumgebung mit einem trivialen "Bestanden" -Test einzurichten und zu erklären, wie die Leute die Tests schreiben sollten, um Leute zu starten. Wenn du merkst, dass jemand Schwierigkeiten hat, etwas zu schreiben, gib eine kurze Erklärung und mach weiter.

  • Unterricht Scala: Wenn du Scala unterrichten willst, halte den Unterricht kurz und folge einem Dojo. Behalten Sie in diesem Fall eine Reihe von Dojo-Problemen bei, die für den Unterricht angemessen sind und, je nachdem, wie viele Unterrichtsstunden Sie an einem Tag benötigen, kurz sind.

    Es hilft, künstliche Beschränkungen aufzuerlegen, wie man ein Problem lösen muss. Einige Beispiele für Einschränkungen, die ich in die Praxis umgesetzt habe, sind keine Klassen und Methoden für einzelne Ausdrücke (dh keine Mehrfachanweisungen oder val/var Deklarationen). Der Zweck dieser Einschränkungen besteht darin, es den Menschen unmöglich zu machen, das Problem so zu lösen, wie sie es gewohnt sind, was sie dazu bringt, die Sprache auf der Suche nach Alternativen zu erkunden.

Ich habe die endgültigen Ergebnisse von drei Dojos in this repository in meinem derzeitigen Job zu erledigen.

Im Moment verwenden wir das Randori Kata Format, aber ohne feste Zeit oder Pause, und mit Retrospektive am Ende des Dojo, nicht zu Beginn des nächsten. Dies ist jedoch gerade, wo wir gerade sind - wir haben viele Variationen erprobt, und wir entwickeln uns immer noch weiter.

0

Werfen Sie einen Blick auf Scala by exemple von Martin Odersky (Konzept von scala)

Verwandte Themen