Scala bin
331 subscribers
13 photos
3 files
75 links
Канал о ФП в целом и Scala в частности.
Предложения/вопросы - @a7emenov
Download Telegram
На днях в комментариях на реддите опубликовали подборку видео о работе компиляторов Scala и Dotty вкупе с книгами о компиляторах вообще. Решил немного дополнить список обзорными видео, поскольку слушать полтора часа про построение деревьев в Dotty может показаться утомительным.

Scalac:
1. Scalac Survival Guide (1 час)
2. A deep dive into Scalac (47 минут)
3. Scala compiler plugins 101 (32 минуты)
4. Scalac micro-optimisation (7 минут)

Dotty:
1. Dotty Internals 1: Trees & Symbols (1.5 часа)
2. Dotty Internals 2: Types (2.3 часа)
3. Dotty Internals 3: Denotations (2.5 часа)
4. Hands-on Dotty — Dmitry Petrashko (1.6 часа)
5. What's Different In Dotty by Martin Odersky (1 час)
6. Integrating IDEs with Dotty (30 минут)

Отдельным пунктом хочу выделить презентацию How an Optimizing Compiler Works (47 минут) под авторством Li Haoyi, в которой затрагиваются основные аспекты работы оптимизирующего компилятора.
Полезный cheatsheet от Филипа Шварца на тему базовых операций Monad, Traverse и Foldable. Отлично подходит для запоминания тем, кто только начинает осваивать эти type-классы.
На этой неделе в поле моего зрения попала статья 5 ЯП, которые должен знать разработчик в 2019 году. В списке, внезапно, присутствует Scala (также рекомендуют и Haskell), но больше всего привлекли моё внимание следующие заявления автора:

-Вы не можете быть программистом без понимания C или C++
(You cannot be a programmer without understanding C or C++)

-Инженеры ПО и разработчики, знающие C, в целом лучше программистов, которые C не знают
(Software engineers or developers who know C are solely better than programmers who don’t know C).

В целом, сложно поспорить с тем, что знание, например, скриптовых ЯП сильно пригождается при решении небольших утилитарных задач (хотя недавний твит от Олега Пыжкова свидетельствует, что и это не всегда так). Тем не менее, даже после прочтения статьи необходимость понимания C и тем более С++ для меня осталась спорной.

В связи с этим, возник вопрос - насколько знание этих языков реально пригождается тем же скалистам в профессиональной деятельности? Речь идёт, естественно, не столько о синтаксисе, сколько об языках в целом: общие принципы написания программ на языке, основные паттерны, механизм сборки и т.д.
В процессе поиска информации про коэффекты обнаружил страницу под авторством Томаса Петричека с одноимённым названием coeffects, возникшую как дополнение к его докторской диссертации.

Сайт представляет собой отличный пример подачи материала - есть возможность как кратко ознакомиться с тематикой, так и углубиться в теоретическое основание или же, наоборот, практическое применение.

Для более наглядной иллюстрации материала присутствует также интерактивная составляющая, а для самых заинтересованных имеется перечень научных работ про коэффекты.
Буквально несколько часов назад была опубликована книга Дженса Грасселя Pure functional HTTP APIs in Scala. Издание расчитано на опытных Scala программистов, использующих "enterprise" библиотеки (Akka, Play, Spring), но стремящихся к более ФП-ориентированному подходу к разработке.

Книга по сути представляет из себя пример итеративной реализации web-сервиса с учётом всех значимых компонент: загрузка конфигурации, роутинг, тестирование и т.д. Дополнительным бонусом служит то, что получить книгу можно абсолютно бесплатно.
Небольшая коллекция слайдов от Филипа Шварца на тему функторов как таковых и мотивации к их появлению. Содержит выдержки объяснений от Бартоша Милевски и нескольких книг, среди которых крайне рекомендуемая мной Haskell programming from first principles.
Пытаетесь доказать, что программировать на Scala не так сложно, как говорят? Окститесь, даже JavaScript - это уже чересчур.
Похоже, что новый год начинается с очередных синтаксических предложений [1, 2] от доктора Одерски, на этот раз в отношении extension методов в Dotty. Первое позволяет именам методов начинаться с точки, в то время как второе вводит новое ключевое слово extension (of) для определения таких методов взамен имеющемуся синтаксису с given.

До:
given listOps: [T](xs: List[T]) extended with {...}

После:
extension listOps of [T](xs: List[T]) with {...}


После значимой табуляции и изменений в синтаксисе присваивания (последние добавлены не были), данные изменения видятся гораздо менее спорными и, возможно, имеют реальные шансы в конечном итоге оказаться в Dotty.
После порядком затянувшегося перерыва решил попробовать написать что-то и на английском языке.

Итогом стала статья на Medium про использование Ordering в Scala. Примером стало, конечно же, любимое сообществом семейство кошачьих.

Искренне надеюсь, что дебют получился успешным. Буду очень рад вашим комментариям.
На фоне печальной коронавирусной истории Lightbend сделала жест невиданной щедрости и открыла бесплатный доступ к своим курсам до конца июня.

Курсы, в основном, посвящены продуктам компании (Akka, Lagom и т.д.), но присутствуют и курсы о реактивной архитектуре и даже domain-driven design.
Зарегистрироваться можно по ссылке.
Вдогонку ко вчерашней новости: аналогичным образом поступила одна из наиболее масштабных компьютерных организаций, - Ассоциация Вычислительной Техники (Association for Computing Machinery) - открыв доступ к своей цифровой библиотеке до 30 июня.

В основной коллекции библиотеки содержится порядка 600 тысяч записей, в расширенной - немногим менее 3 миллионов. По ключевому слову "Scala" удаётся найти около 4000 результатов. Получить доступ к библиотеке можно по ссылке.

За новость спасибо Евгению Игнатьеву.
Не так давно узнал, что вдобавок к сайту с вакансиями Profunctor запустил ещё и канал @profunctor_jobs с минималистичными описаниями вакансий, размещённых на сайте.

На фоне предложений с подробным описанием печенья и фруктов в офисе, но без зарплатной вилки/стэка/названия компании(!) очень приятно видеть продукт, ориентированный на разработчиков.
Вчера завершилась замечательная конференция ScalaLove, за которую огромное спасибо её организаторам. Надеюсь, в будущем такие мероприятия будут происходить значительно чаще.

Одним из докладчиков на конференции был Мартин Одерски, который уже не в первый раз (1, 2) описывал основные особенности Scala 3. Что особенно примечательно, синтаксические изменения, связанные с отступами, Мартин обозначил как наиболее сильно увеличившие персонально его продуктивность и отметил снижение числа строк кода в среднем на 10%.

Итогом доклада стал небольшой шедевр изобразительного искусства, вобравший в себя грядущие изменения:
Из-за многочисленных перестановок долго не знал, сложится или нет, но буквально несколько дней назад всё окончательно утвердилось. В эту субботу буду выступать на онлайн-митапе с обзорной презентацией про Scala, ФП и почему это важно.

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

Мероприятие будет проходить на английском языке в эту субботу, в 13:30 по Московскому времени. Принять участие можно, зарегистрировавшись по ссылке. (Меня клятвенно заверили, что, несмотря на надпись на сайте, "вместимость" мероприятия - 100 человек)
Что ж, митап подошёл к концу, большое спасибо всем, кто присутствовал, особенно за вопросы. Опыт выдался крайне положительным и я надеюсь, что в будущем представится возможность рассказать о чём-то более детально.

Запись доклада - здесь.
Презентация - здесь.
С небольшим запозданием до меня добралась новость, что Scala обзавелась страницей для начинающих от SoftwareMill с кратким обзором IDE, курсов, книг и основных библиотек.

Коллеги, ещё только планирующие попробовать Scala, страницу оценили - удобно, когда вся необходимая информация собрана в одном месте.