2010-01-22 5 views
18

On m'a demandé de diriger un atelier et un dojo de codage bientôt pour que les gens essayent Scala et essayent de construire quelque chose avec lui. Les participants seront tous nouveaux à Scala, et pourraient provenir d'un certain nombre de langues (je présume qu'ils peuvent coder dans au moins une langue traditionnelle - j'inclue des comparaisons de syntaxe avec Java, C#, Python et Ruby). Une partie de l'attrait de Scala est qu'il est pratique - vous pouvez l'utiliser comme Java de puissance "drop-in" (Java avec moins d'encombrement syntaxique, fermetures, immuabilité, FP, traits, objets singleton, manipulation XML astucieuse, type inference etc.) qui fonctionne toujours sur la JVM (et sur le .NET CLR soi-disant) et ne vous oblige pas à changer les outils de construction, l'infrastructure du serveur, les bibliothèques, les IDE et ainsi de suite. La plupart des katas que j'ai vus ont été amusants mais pas «réels» - des défis mathématiques comme le projet Euler et ainsi de suite. Cela ne semble pas approprié car nous essayons d'en explorer l'utilisation en tant que langage pratique et réel que les gens pourraient envisager d'utiliser à la fois pour le piratage et le travail, et parce que les gens ne vont pas nécessairement être trop familiers avec le des parties plus profondes de la syntaxe Scala ou nécessairement des concepts derrière la programmation fonctionnelle.Des idées pratiques de dojo/kata de codage?

Alors, est-ce que quelqu'un a rencontré des katas plus pratiques et quotidiens plutôt que des problèmes arithmétiques de «résolution de problèmes»? Les Katas, c'est-à-dire qui peuvent tester si le langage, les bibliothèques et les outils peuvent satisfaire les cas d'utilisation de la programmation quotidienne réelle que la plupart des gens doivent faire plutôt que de tester. (Ce n'est pas que les pratiques ne sont pas amusantes, mais ne conviennent pas au genre de chose qu'on m'a demandé de faire.)

Si je ne trouve pas de bons exemples, je pense que ça pourrait être utile pour essayer de construire quelque chose comme un catalogue de bibliothèque - l'événement est pour les programmeurs qui travaillent principalement sur la construction d'infrastructures pour les universités (et dans l'éducation et la culture - musées, galeries, écoles, bibliothèques et ainsi de suite). C'est un peu ennuyeux, mais c'est le genre de chose que les participants travaillent dans leur vie de tous les jours. Aucune suggestion?

+1

devrait probablement être la communauté wiki - il y a peu de chances d'être une réponse « correcte ». Cela ressemble plus à une graine à la discussion. –

+0

D'accord, je l'ai mis sur le wiki de la communauté –

Répondre

1

Peut-être pourriez-vous jeter un coup d'œil au matériau Ruby Quiz pour vous inspirer.

3

La plupart des exemples de programmation de mon blog codent effectivement des exercices de dojo. Particulièrement le matrices series, mais aussi les puzzles et 99 beers. Maintenant, ne négligez pas la série des matrices comme étant "mathématique", parce que les problèmes que je m'intéresse sont liés à la construction de classes dans Scala, pas à faire des algorithmes de fantaisie. En fait, je passe à peu près sur les algorithmes mathématiques eux-mêmes.

Maintenant, 99 Scala Problems et à peu près tout de Project Euler sont de beaux exercices pour la partie fonctionnelle de Scala, mais je comprends que ne soit pas votre accent. Je recommande retronymanswer. Rosetta Code, n'étant pas orientée fonctionnelle, pourrait avoir des exemples plus généraux. Il y en a beaucoup avec Scala examples, bien sûr, bien que vous souhaitiez peut-être envisager d'autres tâches aussi, pour des idées.

Il y a beaucoup de choses intéressantes à apprendre sur Scala, mais il faut être prudent au niveau des débutants.Par exemple, je ne parlerais pas de l'injection de dépendance (self types et le modèle de gâteau) ou des classes de type (le modèle qui simule tel avec implicits).

Regardez aussi bien le contenu du site Scala Lang, en particulier le document Scala by Example.

EDIT

J'ai maintenant supervisé plusieurs dojos Scala, voici donc un peu de choses que je l'ai appris alors:

  • problèmes: ils doivent être amusant, pas tout à fait -easy, pas-que-difficile, et cela doit être l'opinion de tout le monde.

    Nous utilisons le site Dojo Puzzles, qui est en portugais, donc il ne sera pas utilisé par la plupart des gens ici. S'il y a un site similaire en anglais, j'aimerais beaucoup en entendre parler. De la façon dont cela fonctionne, vous demandez un problème aléatoire, examinez-le et discutez pour voir si vous le ramasserez ou non, puis indiquez en disant que vous l'utiliserez, vous ne l'utiliserez pas. , ou peut-être l'utiliserez-vous mais vous aimeriez en voir un autre. Ce vote est enregistré et vous pouvez voir combien de personnes ont ramassé un problème, ce qui aide à décider s'il faut le ramasser ou non en premier lieu. Scala knowledge: il s'avère qu'il n'est pas très important d'introduire au préalable des concepts clés du langage Scala, en particulier si certains participants ont des connaissances de base. D'après mon expérience, il est souvent suffisant de configurer l'environnement de test avec un test «passe» trivial et d'expliquer comment les utilisateurs doivent écrire les tests. Si vous pensez que quelqu'un a du mal à écrire quelque chose, donnez une explication rapide et continuez.

  • Enseignement Scala: si vous voulez enseigner à Scala, gardez les leçons courtes et faites un suivi avec un dojo. Dans ce cas, gardez un ensemble de problèmes de dojo appropriés à la leçon, et, selon le nombre de leçons que vous voulez en un jour, bref.

    Cela aide à imposer des contraintes artificielles sur la façon de résoudre un problème. Voici quelques exemples de contraintes que j'ai mises en pratique: pas de classes et de méthodes d'expression unique (c'est-à-dire, pas d'instructions multiples ou de déclarations val/var). Le but de ces contraintes est de rendre impossible aux gens de résoudre le problème comme ils le font, ce qui les amène à explorer la langue à la recherche d'alternatives.

J'ai les résultats finaux de trois dojos fait à mon emploi actuel in this repository.

En ce moment, nous utilisons le format Randori Kata, mais sans temps fixe ou pause, et avec rétrospective à la fin du dojo, pas au début de la suivante. Ceci, cependant, est juste où nous sommes actuellement - nous avons expérimenté de nombreuses variations, et nous évoluons encore.

Questions connexes