languagedev | Unsorted

Telegram-канал languagedev - Programming Language Design

1563

Обсуждение дизайна языков программирования (как новых, так и существующих). Литература: https://github.com/true-grue/Compiler-Development Создание и устройство компиляторов: @CompilerDev Для новичков: @pld_beginners

Subscribe to a channel

Programming Language Design

Я бы сказал — зависит от. В некоторых случаях можно определить обработчик в виде композиции других обработчиков (например, если у них тип unit -> unit ).

С другой стороны, если назначение обработчиков — сделать побочный эффект (у каждого свой), а не трансформировать событие, то зачем их композить?

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

Programming Language Design

Ну, как бы, Reactive Streams в Java и FRP - это разное. И Rx тоже немного не то. Там нет общей концепции.

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

Programming Language Design

Я имею в виду общую концепцию. https://en.wikipedia.org/wiki/ReactiveX в ту же степь, и остальные "псевдо FRP" библиотеки.

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

Programming Language Design

Какая разница, Java или нет? Не на то сообщение ответ?

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

Programming Language Design

Ну и мы уже отлично знаем, что обработчики событий не композятся, надёжнее использовать reactive streams... 😁

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

Programming Language Design

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

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

Programming Language Design

При чём, даже, в принципе, достаточно эффективно. Потому что можно сначала накомпозить себе какую-нибудь процедуру таким образом, а потом скомпилировать её.

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

Programming Language Design

Наверное, под cross-cutting concern в контексте AOP следует понимать функционал, который добавляется к модулю, но от которого модуль не зависит. Потому как, если модуль зависит от этого функционала, то он явно его подключает и использует — и техники AOP не нужны.

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

Programming Language Design

Вы смешиваете 2 независимые ветки беседы.

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

Programming Language Design

Проблема cross-cutting, решение не. Трассировку ведь тоже не по всей программе включают

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

Programming Language Design

В принципе, мы можем искусственно аннотировать точки соединения (чтобы что-то не упустить).

Например, мы можем определить функцию со специальным именем, которая ничего не делает (identity function), и использовать ее в тех местах, где нужно подсоединять соответствующие аспекты.

Все еще AOP, но некоторый срез намеренно задается "внутри" модулей.

#aop #crosscutting

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

Programming Language Design

Эмуляция AspectJ — это не то же самое, что реализация AOP. 😊

Выше обсуждали, что AOP вообще начался с loop fusion — на before/after его сделать не получится. Поди, и на AspectJ его сделать не получится, так что непонятно, почему они говорят, что сделали AOP. 😏

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

Programming Language Design

Я уже это упоминал в диалоге. Боюсь внятно объяснить это займёт слишком много времени

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

Programming Language Design

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

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

Programming Language Design

а не будут ли мои макросы этим самым language workbench

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

Programming Language Design

Оставляя "RFP a la Conal Elliot" за скобками, общая концепция, как отметил @ruv256 выше, как минимум в использовании асинхронных очередей сообщений/данных и трансформации этих очередей (как целого, при помощи комбинаторов). Это обеспечивает композиционность, в отличие от "голых" обработчиков сообщений.

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

Programming Language Design

Не знаю как конкретно в Java Reactive Streams, а .NET Rx включают ещё и скедулер для всего этого дела, и ещё пару скедулеров и обвязок для отладки, и прочее по мелочи. Дельный набор.

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

Programming Language Design

да, я про reactive streams.

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

Programming Language Design

Которые reactive streams? Типа, асинхронная очередь?

В JavaScript — reactive-streams / reactive-streams-js

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

Programming Language Design

Это до тех пор, пока практика ограничена одной программой/библиотекой/командой разработки — как только 3 разные библиотеки начнут мутировать одно и то же каждая под свои нужды... станет очень весело разбираться и отлаживать. 😏

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

Programming Language Design

Ok. Я не к тому, что именно так надо делать. А к тому, что смотрите, как оно бывает на экзотических островах.

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

Programming Language Design

Есть такая книженция Software Design for Flexibility, там в первой главе обсуждаются различные игры с функциями в стиле. Вот есть у нас (define f (lambda (x) ...)), а потом мы берём, пишем какой-нибудь композитор для функций, и используем его, чтобы вокруг f накручивать функциональность. Например (set! f (after f (lambda (x) (display x)))). Можно и покрасивше оформить, но суть в том, чтобы просто иметь некую мутабельную переменную, вокруг которой наверчивается функциональность.

Оно, конечно, typefree и мутабельно... 🤷‍♂️ Но работает неплохо на практике.

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

Programming Language Design

Одна была про AOP, а вторая про что? 😊

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

Programming Language Design

Как раз таки нет, это локализованная проблема, потому что в логах ищется не "любая фигня", а какая-то конкретная фигня/сообщение, которое производится конкретным куском программы.

Снова не нужно путать идею (в данном случае, "сигнализировать о проблеме неизвестной стороне") и её реализацию. Можно сигнализировать не через логи, а через MQ, например.

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

Programming Language Design

Тогда это НЕ аспект, а кусок функциональной корректности.

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

Programming Language Design

Какое же это "cross-cutting", если оно за пределы одной функции не выходит?! 😂

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

Programming Language Design

Согласен. Но, это ведь не относится к корректности формы.

Формально, та часть программы/системы, которая читает протоколы — это аспект, который зависит от аспекта протоколирования. Вполне ожидаемо, что при выключении протоколирования, зависимые от него аспекты на это как-то "отреагируют".

Чтобы покрыть такие случаи, можно сказать: при выключении аспекта и всех зависимых от него аспектов.

#aop #crosscutting

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

Programming Language Design

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

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

Programming Language Design

Очень слабым и сложным. Делать что-то внутри языка всегда сложнее, чем делать это снаружи. Посмотрите тот же JetBrains MPS

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

Programming Language Design

Для этого есть language workbench

Читать полностью…
Subscribe to a channel