Comments 13
Спасибо, Хаскелю, на мой взгляд, очень не хватает материала про то как из <непонятная хрень из алгебры> сделать что-то полезное.
Отличный пример того, как Хаскель позволяет реализовать сложный функционал в виде библиотеки. Во многих языках пришлось бы выбирать между непрактичным синтаксисом и добавлением поддержки на уровне языка. А здесь STM от разработчиков компилятора выглядит точто так же, как и STM от стороннего исследователя.
Вопрос #1: найдутся ли достаточно рискованные люди, чтобы попытаться при помощи такого подхода превзойти производительность существующей реализации STM в отдельных случаях?
Вопрос #2: реализация на С++ будет пытаться в точности повторить описанный подход (с операцией bind и множеством вложенных лямбд)? Или для постоения AST в плюсах есть какие-то трюки, чтобы сделать синтаксис более читаемым?
Вопрос #1: найдутся ли достаточно рискованные люди, чтобы попытаться при помощи такого подхода превзойти производительность существующей реализации STM в отдельных случаях?
Вопрос #2: реализация на С++ будет пытаться в точности повторить описанный подход (с операцией bind и множеством вложенных лямбд)? Или для постоения AST в плюсах есть какие-то трюки, чтобы сделать синтаксис более читаемым?
Спасибо :)
#1 Я таки хочу сделать оптимизацию своей STM и прогнать бенчмарки. Но вряд ли буду этим заниматься раньше мая, так что если есть рисковые люди, то welcome.
#2 В С++ все очень плохо с монадами, потому что нет do-нотации, а делать все на лямбдах — очень неуклюже. Но выбора у меня нет, мне нужен именно комбинаторный STM, так что без вариантов: bind, лямбды, вот это вот все. То есть, порт на C++ концептуально один в один, но отличия в синтаксисе все же будут. Еще много проблем с тем, что в С++ нет ADT, и работа со сложными типами превращается в какой-то сущий ад. Тем не менее, мне уже удалось реализовать почти все, что я хотел, и последним штрихом я добавляю разные комбинаторы, пытаюсь придумать более простой синтаксис, а также портирую задачу обедающих философов. Иными словами, я на финишной прямой.
#1 Я таки хочу сделать оптимизацию своей STM и прогнать бенчмарки. Но вряд ли буду этим заниматься раньше мая, так что если есть рисковые люди, то welcome.
#2 В С++ все очень плохо с монадами, потому что нет do-нотации, а делать все на лямбдах — очень неуклюже. Но выбора у меня нет, мне нужен именно комбинаторный STM, так что без вариантов: bind, лямбды, вот это вот все. То есть, порт на C++ концептуально один в один, но отличия в синтаксисе все же будут. Еще много проблем с тем, что в С++ нет ADT, и работа со сложными типами превращается в какой-то сущий ад. Тем не менее, мне уже удалось реализовать почти все, что я хотел, и последним штрихом я добавляю разные комбинаторы, пытаюсь придумать более простой синтаксис, а также портирую задачу обедающих философов. Иными словами, я на финишной прямой.
UFO just landed and posted this here
Ох, корутинов мне еще не хватало! Они уже зарелизены, или надо тащить экспериментальные либы/компиляторы? Это те, которые Нишанов делал? Он, кажется, компилятор от MS использовал.
Идея интересная. Пусть повертится в подкорке.
На самом деле, чуваки даже do-нотацию эмулировали с помощью бустовой магии:
github.com/evgeny-panasyuk/monad_do
У меня просто времени нет, чтобы это повторить, да и Буст тянуть не хочется… Все же можно нечто похожее сделать с помощью макросов и проксей.
Идея интересная. Пусть повертится в подкорке.
На самом деле, чуваки даже do-нотацию эмулировали с помощью бустовой магии:
github.com/evgeny-panasyuk/monad_do
У меня просто времени нет, чтобы это повторить, да и Буст тянуть не хочется… Все же можно нечто похожее сделать с помощью макросов и проксей.
UFO just landed and posted this here
BTW, я таки сделал STM для C++. И рассказал об этом на C++ Russia 2018. Видео пока не доступно, а слайды прикреплю.
Библиотека cpp_stm_free
Задача обедающих философов
Слайды: «Функциональный подход к Software Transactional Memory» (C++ Russia 2018)
Библиотека cpp_stm_free
Задача обедающих философов
Слайды: «Функциональный подход к Software Transactional Memory» (C++ Russia 2018)
А про подклассы монад я ничего не знаю. Где бы почитать?
Разве не логичнее при смене стейта на Eating брать вилки?
Sign up to leave a comment.
Software Transactional Memory на Free-монадах