Подтвердить что ты не робот

Любая практическая кодировка идей dojo/kata?

Мне было предложено запустить семинар и кодирование dojo для людей, чтобы опробовать Scala и попытаться что-то создать с ним. Участники все будут новичками в Scala и могут исходить из любого из нескольких языков (я предполагаю, что они могут кодировать хотя бы один основной язык - я включаю синтаксические сравнения с Java, С#, Python и Ruby).

Часть привлекательности Scala заключается в том, что она практична - вы можете использовать ее в качестве "мощной Java-технологии" (Java с меньшим количеством синтаксических помех, закрытий, неизменности, FP, черт, одноэлементных объектов, отличной обработки XML, вывод типа и т.д.), который все еще работает на JVM (и, предположительно, на .NET CLR), и не требует изменения инструментов сборки, инфраструктуры сервера, библиотек, IDE и т.д. Большинство ката, которых я видел, были забавными, но не "реальными" - математическими задачами, такими как Project Euler и т.д. Они не кажутся подходящими, поскольку мы пытаемся изучить его использование в качестве практического, реального языка, который люди могли бы использовать для взлома и работы, а также потому, что люди не обязательно будут слишком хорошо знакомы либо с более глубокие части синтаксиса Scala или обязательно концепций функционального программирования.

Итак, есть ли у кого-нибудь более практичные, повседневные ката, а не арифметические "решения проблем"? Katas, то есть, может проверить, могут ли язык, библиотеки и инструменты удовлетворять варианты использования фактического ежедневного программирования, которое большинство людей должны делать, а не тестировать. (Не то, чтобы непрактичные не были забавными, но просто не подходят для того, что меня попросили запустить.)

Если я не могу найти хорошие примеры, я думаю, что было бы полезно попробовать что-то вроде библиотечного каталога - это событие для программистов, которые в первую очередь работают над созданием инфраструктуры для университетов (и в образовании и культуре - музеи, галереи, школы, библиотеки и т.д.). Это немного скучно, хотя, но это то, что участники работают в повседневной жизни. Любые предложения?

4b9b3361

Ответ 1

Существует специальный учебный курс, посвященный профессиональному общему праву, с практическими упражнениями здесь:

http://github.com/javaBin/scala-training-slides

http://github.com/javaBin/scala-training-code

Слайды находятся в формате Open Office. Если у вас этого нет, вы можете загрузить их в SlideShare, который будет конвертировать их для просмотра в Интернете.

Ответ 2

Большинство примеров программирования в blog - это, действительно, кодирование dojo упражнений. В частности, серия матриц, но также головоломки и 99 пива. Теперь не игнорируйте ряды матриц как "математические", потому что проблемы, которые я затрагиваю в себе, связаны с построением классов в Scala, а не с использованием фантастических алгоритмов. Фактически, я в значительной степени пропускаю математические алгоритмы.

Теперь 99 Scala Проблемы и почти все из Project Euler - отличные упражнения для функциональной части Scala, но я понимаю, что это не ваше внимание. Я рекомендую retronym ответить. Rosetta Code, не являющийся функционально ориентированным, может иметь более общие примеры. Есть много примеров Scala, хотя, возможно, вы захотите рассмотреть и другие задачи для идей.

Там много классных вещей, чтобы узнать о Scala, но нужно быть осторожным на уровне новичка. Например, я бы не сказал об инъекции зависимостей (типы self и шаблон торта) или типы классов (шаблон, который имитирует такие с implicits).

Посмотрите также на материал на Scala Lang, особенно Scala по примеру.

ИЗМЕНИТЬ

Теперь я наблюдал несколько dojos Scala, поэтому вот немного чего я узнал от этого:

  • Проблемы: они должны быть забавными, не совсем легкими, а не такими-трудными, и это должно быть мнение каждого.

    Мы используем сайт Dojo Пазлы, который находится на португальском, поэтому для большинства людей он не будет полезен. Если у вас есть подобный сайт на английском языке, я бы хотел услышать об этом.

    Как это работает, вы задаете случайную проблему, смотрите ее и обсуждаете, сможете ли вы ее поднять или нет, а затем укажите, что вы ее используете, вы не будете ее использовать, или, может быть, вы будете использовать его, но вы хотите увидеть еще один. Это голосование регистрируется, и вы можете видеть, сколько людей выбрало проблему, которая помогает решить, стоит ли ее поднимать или нет на первом месте.

  • Scala знание: оказывается, что не важно заранее вводить ключевые понятия языка Scala, особенно если некоторые из участников имеют базовые знания.

    По моему опыту, настройка тестовой среды с помощью тривиального теста "прохода" и объяснение того, как люди должны писать тесты, достаточно часто, чтобы люди начали работу. Если вы чувствуете, что кто-то пытается что-то написать, дайте краткое объяснение и продолжайте с ним.

  • Обучение Scala: если вы намереваетесь преподавать Scala, держите уроки короткими и следуйте за dojo. В этом случае сохраните набор dojo проблем, которые соответствуют уроку, и, в зависимости от того, сколько уроков вы хотите в один день, короткое.

    Это помогает наложить искусственные ограничения на то, как нужно решить проблему. Некоторые примеры ограничений, которые я применил на практике, - это не классы и методы одиночного выражения (т.е. Не множественные утверждения или объявления val/var). Точка этих ограничений делает людей невозможными для решения проблемы в том, как они используются, что позволяет им исследовать язык в поисках альтернатив.

У меня есть окончательные результаты трех dojos, выполненных на моем текущем задании в этом репозитории.

В настоящий момент мы используем формат Randori Kata, но без фиксированного времени или разрыва и с ретроспективностью в конце dojo, а не в начале следующего. Это, однако, только то, что мы сейчас находимся, - мы экспериментировали со многими вариациями, и мы все еще развиваемся.

Ответ 3

Возможно, вы могли бы взглянуть на Ruby Quiz для вдохновения.

Ответ 4

Посмотрите Scala на пример от Мартина Одерского (создателя scala)