18 January 2014

Основы Scala. 5 часов поедания мозгов

ProgrammingScalaFunctional Programming
Tutorial
Добрый день, уважаемое хабрасообщество!image

В конце ноября 2013 года мы с коллегой устроили встречу, на которой провели сеанс «интенсивного введения Scala в мозг добровольцев».

Выкладываю на суд общественности наше творчество и краткое описание «эксперимента».


Отказ от отвественности и Крик о помощи


Мы не являемся Scala-экспертами, но являемся практикующими специалистами.
Поэтому некоторые концепции мы можем обрисовывать неправильно.
Злого умысла в этом нет, errare humanum est.
Если вы видите неувязочку или уличили нас во лжи — оставьте комментарий к статье и разъясните нам, как жестко мы ошиблись. Я буду крайне за это благодарен!


TL;DR;


Все получилось. Нам понравилось. Людям понравилось. Смотрите и комментируйте.

Часть 1:Введение. Иммутабельность. «Строительные блоки». Основные типы. Иерархия классов.


Часть 2:Функции, методы. Функции как первородные объекты. Вывод типов. Замыкания. Коллекции. Циклы и for compehension. Сопоставление с образцом. Неявные конструкции.


Часть 3:Синтаксический сахар. Ленивые вычисления. Рекурсия. Streams. Монады.


Презентацию можно найти тут.

Отчет для представителей доLTDRной эры


Социальная часть

Итак, основной целью нашего выступления были следующие вещи:
  1. Повысить ЧСВ. Показать, что Scala не так страшна, как ее малюют.
  2. Продемонстрировать наличие крутых концепций, о которых многие вообще не думали.
  3. Задать вектор «кудаДальшеКопания».
  4. Подсадить на тяжелый наркотик Scala… ???… PROFIT!!

Проанализировав отзывы и пронаблюдав «подопытных» в естественной среде, мы пришли в к выводу, что большая часть наших целей выполнена! Ура!

Краткая примерная статистика:
  • Зарегестрировалось около 130 участников.
  • Пришло около 90 участников.
  • До конца дожило около 40 участников.
  • Письменные отзывы прямо на месте оставило 15 участников.
  • Численность участников чатика Scala.UA выросла на 8 человек.

В ходе выступления мы рассмотрели практически все темы, необходимые для уровней A1, A2 и L1 из классификации скала-программистов.

К тому же мы испробовали интерактивный формат выступления:
  • Любой участник задает вопрос в любой момент выступления
  • Лайфкодинг, в ходе которого любой участник может предложить изменение

Апарт №1
Я лично очень люблю форматы, поддерживающие живое общение с аудиторией, потому что они не дают отклониться от темы, уйти в «сложный язык» или перескочить на уровень непонятных аудитории абстракций.
Вероятно, такая любовь вызвана тем, что мне нравится импровизировать и не нравится заучивать выступление.

К тому же, есть некий психологический дискомфорт, когда у человека появляется вопрос, необходимый для формирования концепции, а он не может его тут же прояснить.
Слушатель все же должен сформировать гештальт как можно быстрее.

Теоретическая часть

Апарт №2
Главная проблема при рассказе про Scala — правильная структура и последовательность материала.
Мы прочитали ряд книжек, просмотрели ряд выступлений, прошли курс на курсере.

Скала сложна только потому, что при ее изучении человек утыкается в неизвестное в каждой теме, и углубляется в это неизведанное. Но стек в человеческом мозгу очень даже конечен, что приводит к «переполнению мозгового стека» при изучении Scala у неподготовленных адептов.

Мы попытались структурировать материал немного иначе, чем принято его подавать, чтобы оградить людей от «концентрированных знаний» в самом начале.

Наш список основных тем выглядит примерно так:
  • Introduction
  • Immutability
  • Building blocks
  • Basic types
  • Class hierarchy
  • Functions. Methods. First-class functions
  • Type inference
  • Closures
  • Collections
  • Loops. For comprehension.
  • Pattern matching.
  • Implicits
  • Scala syntax sugar

Ряд дополнительных тем «вшит» в само выступление и разъясняется по мере того, как аудитория этих тем касается.

Пересматривая наше выступление, мы обнаружили несколько концептуальных неточностей и дыр в понимании.
Но даже сразу по ходу выступления мы сделали вывод, что допустили стратегический промах — мы вынесли весь синтаксический сахар в конец.

Так делать нельзя!
Вопросы про хитрые конструкции языка будут всплывать практически во всех рассматриваемых темах.
Как правильно показать и разъяснить сахар по мере выступления — вопрос открытый.



Спасибо за внимание и конструктивную критику.
Приглашаем всех желающих в наш скайп-чат: bit.ly/scalachat (украинский чат: bit.ly/scala-ua)
Будем рады как новичкам, так и экспертам. Место проживания, раса, пол, и прочие малозначительные факторы значения не имеют.

P.S. Если вам нравится наше мероприятие, вы можете пригласить нас к себе в гости. Стучитесь в личку.
О планируемых мероприятиях можно узнать в нашем чатике.
Tags:scalaзомбимозгоедывсё просточестное словоманикюр медикамзнания в массымакбуки программистам
Hubs: Programming Scala Functional Programming
+50
61.6k 505
Comments 29