Рекомендуемый контент за обеденный перерыв Обсуждение "Введение в Scala"
Я собираюсь дать короткий (30-40 минут) обеденный перерыв на Scala техническому персоналу моей компании. Я бы хотел, чтобы некоторые предложения касались того, что было бы самым подходящим контентом. Большинство посетителей будут иметь опыт работы на Java и/или С# (плюс различные языки).
Каковы основные моменты? Я хотел бы кратко представить синтаксис Scala, чтобы люди не чувствовали себя потерянными при просмотре примеров кода. Я также расскажу о некоторых историях, стоящих за языком и его дизайнерами. Что поможет людям максимально использовать возможности беседы?
Ответы
Ответ 1
Люди почти наверняка приходят поговорить, чтобы получить ответ на вопрос: "Почему я должен использовать Scala?". Все, что вы можете предоставить, чтобы помочь им ответить, будет ценным.
-
Доводите до минимума обсуждение истории и личностей, стоящих за Scala.
-
Вихревой тур по синтаксису полезен, но держите его коротким.
-
Проведите хороший кусок разговора, демонстрируя примеры и сравнения с Java. Показывать случаи, когда Scala светит. Вы должны буквально запускать и выполнять код, чтобы люди получали реальное, практическое чувство, как все работает.
-
Удостоверьтесь в том, что у вас есть недостатки! Обеспечьте объективный и сбалансированный обзор.
Ответ 2
Я дал аналогичный разговор - в основном, для тех, у кого есть Java-фона. Я чувствовал, что взятие куска реальной Java (около 30 строк) и итеративное добавление функций scala работало довольно хорошо. 30 строк Java в конечном итоге оказались 6 (шесть!) scala. Точка (конечно) состоит в том, что 6 строк являются более читабельными и поддерживаемыми, чем 30.
Я преобразовал scala в линейный Java-эквивалент и затем представил:
- Тип вывода
- Опция
- Затворы
- Сравнение шаблонов (в списках)
- Введите псевдонимы
- Рекурсия хвоста
Я обнаружил, что этот сегмент занял довольно много времени, потому что аудитория была очень заинтересована в мелочах синтаксиса scala (особенно вокруг функциональных выражений). Перед выполнением бит соответствия шаблону у меня был слайд, объясняющий различные вещи, которые вы могли бы использовать в матче.
Ответ 3
Tough. Нужно уравновесить новых и знакомых. Например:
-
Разговор о чертах, как они отличаются от интерфейсов и множественного наследования. Обратите внимание, что большинство методов во всех коллекциях Scala действительно можно найти по признаку Traversable
, который имеет один абстрактный метод: foreach
.
-
Говорите о функциях и частичных функциях, покажите map
/filter
/foreach
и как они используют функции.
-
Разговор о сопоставлении с образцом - показать, как unapply
используется для обеспечения независимости представления, в то время как классы case упрощают простой случай.
Прежде всего, ИЗБЕГАЙТЕ любую тему, которая может быть трудно понять быстро, или вы можете тратить время на них. Например, отличные темы, о которых я бы не говорил: типы self, дисперсия, для-понимания.
Выберите больше тем, чем у вас есть время. Позвольте публике направлять беседу в сторону topcis, в которой они больше заинтересованы. Если кто-то начинает слишком сильно задумываться над темой, скажите, что вам будет приятно объяснить это более подробно позже и спросить, не возражают ли они, если вы перейдете к другая тема. С другой стороны, если все, кажется, собираются в одном, в частности, остаются с ним. В противном случае может показаться, что вы хотите что-то скрыть.
Ответ 4
Я представил презентацию о повторной записи классов Java в Scala. В нем много примеров Java → Scala и (надеюсь) делает очевидным выигрыш. Не стесняйтесь брать любой контент, который вы хотите... презентация заняла 1 час 10 минут, поэтому вам может понадобиться вырезать некоторые вещи.
Презентация: http://www.colinhowe.co.uk/downloads/rewriting-java-in-scala.ppt
Видео: http://skillsmatter.com/podcast/java-jee/re-writing-java-classes-in-scala-and-making-your-code-lovely
Ответ 5
Вы могли бы сделать хуже, чем прохождение презентации Jonas Bonér, Pragmatic Real-World Scala. Возможно, пропустите некоторые продвинутые темы там, в разных приложениях черт и аннотаций самонастройки.