Рубрика «scala»

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

В русскоязычном интернете не очень много информации на эту тему, а та что есть на английском - довольно разрозненная и с разной терминологией в разных источниках.

Читать полностью »

Эффект Монреаля: почему языкам программирования нужен Царь стилей - 1


Давайте представим нереалистичный сценарий, где вы выбираете язык программирования для проекта, который в перспективе станет очень большим. Допустим, это будет набор сервисов в монорепозитории, над которыми работает более 100 человек. Чтобы сделать этот сценарий ещё менее реалистичным, предположим, что вы игнорируете типичные ограничения, например, не учитываете, сможете ли использовать сборщик мусора, и впишется ли поставленная задача в конкретный стек технологий.

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

Какое подмножество C++ или Kotlin вы используете? Что вы предпочтёте: project.toml или requirements.txt? Теперь у вашего языка есть возможность поэтапной типизации с помощью аннотаций типов. Хотите ей воспользоваться? Как вы реализуете конкурентность: с помощью многопоточности, Tokio или std::async?

Чем более экспрессивный язык, тем сложнее всё становится. И здесь на сцену выходит Go. И речь не только о gofmt, но и о его стандартной библиотеке и согласованности. В Kotlin вам приходится гадать, что лучше использовать для ошибок: исключения или объекты Result? В случае же Go вам всё ясно – ищем err. Да, это многословно, но зато предсказуемо.

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

Введение

Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source — библиотеку calypso для работы с BSON.

Публикация для тех, кто стремится к современным практикам разработки и разделяет наше влечение к Scala 3.

Готовы к открытиям? Добро пожаловать в мир функционального программирования и надёжной работы с schema-on-read.

План

  • моделирование предметной области с использованием ADT;

  • конвертация модели предметной области в BSON;

  • работа с библиотекой calypso на Scala 3;

  • эволюция схемы данных MongoDB;

  • практики работы с schema-on-read.

Как обнаружить полезную модель?

Читать полностью »

5 антипаттернов при написании кода на функциональном ЯП - 1


Антипаттерны в функциональных языках программирования могут показаться непривычными в силу отличия этих языков от других их видов, в связи с чем разработчики нередко пишут не самые удачные реализации, склонные к ошибкам и трудные в обслуживании. В статье мы разберём пять наиболее типичных антипаттернов, избегая которые вы сможете создавать более удобный в работе код при меньшем количестве ошибок.Читать полностью »

image


В этом посте развенчивается ряд очень существенных мифов о языке Scala, которые, как нам известно, циркулируют в блогосфере. Для каждого развенчанного мифа мы представим альтернативную точку зрения, подкреплённую данными из надёжных источников. Читать полностью »

Генерация конвейеров обработки данных в Dataflow - 1


Эта статья посвящена всем практикующим специалистам по данным, заинтересованным в освоении запуска, стандартизации и автоматизации пакетных конвейеров данных в Netflix.

О Dataflow мы писали в статье под названием Data pipeline asset management with Dataflow. Та статья представляла подробное знакомство с одним из наиболее технических аспектов Dataflow, но сам этот инструмент толком не описывала. На сей раз мы оправдаем заявленное вступление, после чего сосредоточимся на одной из основных возможностей Dataflow — образцах рабочих потоков. Для начала же мы коротко разберём Dataflow в общем.Читать полностью »

Когда я раньше задумывался о вращении в 3д, мне было неуютно. Оно казалось сложным. Вспомнить, например, эффект Джанибекова с прецессией свободно вращающейся гайки. Настало время разобраться!

В статье Вас ждут математика, физика, а заодно численное моделирование и визуализация в libgdx.

Читать полностью »

Написание чата с Akka - 1


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

Сервис будет реализован как комбинация из простого REST API и приложения WebSocket. Чтобы было чуть интереснее, я решил по максимуму использовать связанные с Akka библиотеки и typed actors.

Весь приведённый в статье код доступен в репозитории GitHub.
Читать полностью »

в scala 3

О проверке захвата - 1

Несколько дней назад мы увидели новую экспериментальную фичу под названием “проверка захвата” (capture checking), анонсированную в твите Мартина Одерски (Martin Odersky).

Эта фича является новой главой в десятилетней борьбе за добавление какой-либо формы системы эффектов в scala 3. Она имеет некоторое сходство с предложением Читать полностью »

Закончилась конференция для Java-разработчиков Joker 2021, проходившая с 25 по 28 октября 2021 года. Мероприятие стало четвёртым из девяти конференций, проводимых в этом году компанией JUG Ru Group в рамках осенне-зимнего сезона.

Joker 2021: прошедшая Java-конференция и общая статистика - 1

Обзор рассказывает об увиденных и услышанных докладах, о полученных при этом впечатлениях и о произошедших изменениях в проведении конференции формата онлайн.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js