Как стать автором
Поиск
Написать публикацию
Обновить
16.53

Scala *

Мультипарадигмальный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Scalabook: пополняемая база знаний о Scala на русском языке

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров437

Всем привет! Меня зовут Артём Корсаков, я руковожу группой разработчиков на Scala в компании «Криптонит». Хочу рассказать про мой проект, которым я занимаюсь уже 4 года — Scalabook.

За последние 20 лет язык Scala завоевал прочные позиции в backend-разработке, машинном обучении, обработке данных, создании распределённых систем и во многих других областях. Есть тысячи ресурсов по Scala: книги, статьи, курсы, подкасты, проекты с открытым исходным кодом, хакатоны и специализированные мероприятия, вроде Advent of Code. Однако часто возникают вопросы: с чего начать изучение Scala, или как систематизировать уже имеющийся опыт?

Вот так у меня и появилась идея создать русскоязычную базу знаний по Scala — Scalabook. Это уникальный проект, в котором представлены материалы о функциональном программировании, алгоритмах и структурах данных, классах типов, переводы статей, а также ресурсы различного уровня сложности для изучения Scala. Это собрание материалов по разным темам в русскоязычном пространстве. 

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

На сайте можно оставлять комментарии, получать обратную связь по решениям задач или предлагать дополнения для расширения базы знаний. Scalabook регулярно обновляется: добавляются новые упражнения, пояснения и материалы. Пользователи также могут внести свой вклад в этот процесс. Таким образом, изучение Scala становится более систематизированным, а не просто набором разрозненных ресурсов, в которых легко запутаться. Scalabook способствует обмену знаниями в сообществе Scala.

Читать далее

Новости

Scala Digest. Выпуск 32

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров500

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцать второй выпуск

От REST-монолита к гибкой архитектуре GraphQL-федерации: реальный кейс Авто.ру

Время на прочтение10 мин
Количество просмотров5.1K

Реализация системы с микросервисной архитектурой редко обходится без классического разруливающего REST-гейтвея. Но когда ваша система растёт годами, а в гейтвее плодятся сотни ручек с просачивающейся бизнес-логикой, можно внезапно обнаружить, что ваш REST-гейтвей стал монолитом со всеми вытекающими последствиями.

Мы в Авто.ру шли к этому состоянию гейтвея довольно долго. История его началась в 2015 году: десятки разработчиков, сотни ручек, почти 300 000 строк кода — и релизы, которые можно катить неделю. Чтобы спасти наш стремительно деградирующий time-to-market и вернуть разработке гибкость, мы решили попробовать GraphQL-федерацию. Спойлер: кажется, получилось.

Меня зовут Кирилл Ершов, я бэкенд-разработчик в Авто.ру, и в этой статье я расскажу, как мы перешли от REST к федерации GraphQL: зачем нам это понадобилось, с какими подводными камнями мы столкнулись, как выглядели первые миграции трафика, к чему всё это привело на данный момент в цифрах и инфраструктуре. 

Читать далее

Категории типов. Часть 2. Функторы

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров2.3K

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

Фокус заключается в том, что...

Конечный автомат (FSM – finite state machine)

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5K

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

Читать далее

Scala Digest. Выпуск 31

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров991

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. 

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцать первый выпуск

Категории типов. Часть 1. Hom-типы

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров5K

Данный обзор посвящён применению теории категорий в программировании. Акцент сделан на то, что стремление к повышению качества программ неизбежно приводит к абстракциям («функтор», «монада» и прочие), которые уже появились в математике при решении другого рода задач.

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

Читать далее

Scala Digest. Выпуск 30

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров866

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцатый выпуск

Scala Digest. Выпуск 29

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров819

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. 

Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать двадцать девятый выпуск

Миграция проекта на Scala 3

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.2K

В 2021 году Мартин Одерски представил Scala 3. С тех пор экосистема адаптируется, а интерес к ней растет: Scala 3 становится стандартом для новых проектов, в то же время Scala 2 постепенно сворачивается.

В этой статье — наш опыт миграции проекта на Scala 3. Рассказываем, как справлялись с типовыми ограничениями и совместимостью, переписывали макросы и адаптировали популярные библиотеки, и почему архитектура модульного монолита помогла нам пройти этот путь безболезненно.

Читать далее

Scala Digest. Выпуск 28

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.1K

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. 

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать двадцать восьмой выпуск

Потоковая фильтрация CommonCrawl с Apache Spark для обучения языковых моделей

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров473

Для обработки Common Crawl на терабайтных объёмах широко используются архитектуры обработки данных, построенные на фреймворках вроде Apache Spark. Благодаря распределённой обработке данных и структурированному стримингу Spark позволяет разработчикам создавать масштабируемые пайплайны, применять логику фильтрации и формировать итоговые очищенные корпусы для обучения. Эта статья перевод моей статьи на medium.com, я хотел рассматреть, как на практике формируются обучающие наборы из Common Crawl (например, в проектах C4, CCNet, OSCAR, GPT-3, BLOOM, Falcon и др.), а затем показать пример Spark Streaming-приложения, который я написал и опубликовал в GitHub. Мы также приводим пример подхода, реализованного в DeepSeek, для фильтрации математического контента — узкоспециализированная задача, которая способна дать существенный прирост в качестве моделей.

Читать далее

Мартин Одерски и Ли Хаои: Эволюция Scala

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров1.3K

Дискуссии о будущем языка Scala не утихают. Как быстро он должен развиваться? Что необходимо улучшить? Должен ли он вообще претерпеть какие‑либо изменения? В этой статье мы обсудим, как Scala должен эволюционировать в дальнейшем, почему эта эволюция необходима и в каких направлениях мы ее ожидаем в первую очередь. Мы надеемся, что сможем ответить на многие часто задаваемые вопросы о будущем языка и поможем сообществу понять, в каком направлении будет развиваться Scala в ближайшие месяцы и годы.

Читать далее

Ближайшие события

Классические абстракции используемые в ФП

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.5K

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

Читать статью

Scala Digest. Выпуск 27

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.3K

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии.

Читать двадцать седьмой выпуск

Scala/Chisel против SystemVerilog: генерируем сложные цифровые схемы

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров7.6K

В наши дни общепризнанный стандарт для RTL-описаний — это язык SystemVerilog, но популярность сейчас набирает его альтернатива, Chisel. Далее я расскажу подробней об этом языке, его преимуществах, недостатках и рисках, связанных с переходом на Chisel со стандартного стека. Отдельно остановлюсь на функциональном программировании — возможности Chisel, которой нет в SystemVerilog, — и на дополнительных возможностях Chisel, улучшающих механизм переиспользования модулей. А также о том, почему код на Chisel менее подвержен ошибкам и всегда работает. Ну, почти всегда.

Читать далее

Scala Digest. Выпуск 26

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров944

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать двадцать шестой выпуск

Кредо программиста (в приложении к стилю кодирования)

Уровень сложностиПростой
Время на прочтение32 мин
Количество просмотров5.5K

Однажды меня попросили подготовить рекомендации по программированию на Scala для сотрудников нашей компании. В поисках лучших рецептов приходилось заглядывать в самые пыльные уголки Интернета, и в одном из них, в ветхом проржавелом сундуке я заметил старинный конверт. Просто из любопытства решил заглянуть туда, благо конверт был уже вскрыт. Истлевшие страницы, поблекшие чернила, но содержание настолько меня заворожило, что я просто не мог не поделиться со всеми!

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

Приятного чтения!

Scala Digest. Выпуск 25

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.1K

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать двадцать пятый выпуск

Документация приложения — дело рук самого приложения

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров4.1K

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

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

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

Читать далее
1
23 ...