Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Categories:

Хост-языки для встроенных DSL перестают упоминаться. Но они есть.

MIT опубликовал хвалилку языка Gen, предназначенного для облегчённого программирования систем искусственного интеллекта, вот тамошний пресс-релиз: http://news.mit.edu/2019/ai-programming-gen-0626 (повод -- доклад на Programming Language Design and Implementation конференции). В этом пресс-релизе рассказывается о новом языке, и только о нём. Язык противопоставляется подходу TensorFlow -- утверждается, что программирование задач искусственного интеллекта на Gen много легче. Другие языки, например, Julia, упоминаются так, что это упоминание сразу и не найдёшь.

Вот статья ещё прошлого года, и говорят, что Gen более крут, чем кажется: This paper includes an evaluation that shows that Gen can solve inference problems including 3D body pose estimation from a single depth image; robust regression; inferring the probable destination of a person or robot traversing its environment; and structure learning for real-world time series data. In each case, Gen outperforms existing probabilistic programming languages that support customizable inference (Venture and Turing), typically by one or more orders of magnitude. These performance gains are enabled by Gen’s more flexible inference programming capabilities and high-performance probabilistic DSLs. -- https://dspace.mit.edu/bitstream/handle/1721.1/119255/MIT-CSAIL-TR-2018-020.pdf

Когда открываешь страницу самого "языка Gen" https://probcomp.github.io/Gen/, то тут же натыкаешься на "Gen is a package for the Julia programming language. Gen consists of multiple modeling languages that are implemented as DSLs in Julia and a Julia library for inference programming". И просьба установить Julia 1.0 или более старшую версию. Gen оказывается embedded DSL в Julia. Julia рассматривает себя как платформу для создания самых разных DSL, об этом пару лет назад даже был пост в блоге создателей языка "Creating domain-specific languages in Julia using macros" -- https://julialang.org/blog/2017/08/dsl

Тренд сжёвывания stand alone DSL реализациями embedded DSL в расширяемых языках (та же Julia) -- налицо. Вот, например, Modia подаётся не как отдельный язык, а сразу как domain specific extension of Julia for modeling and simulation of physical systems, https://github.com/ModiaSim/Modia.jl. Это "расширение Julia" создаётся авторами Modelica. И, похоже, это расширение готовится скушать саму Modelica как специализированный (domain-specific) stand alone язык инженерного моделирования. Смотрим внимательно: in Modia there is not (yet) a graphical definition of models (хотят добавить, но недосуг, не так уж и важно оказалось -- расчёт-то что с графикой, что без графики один и тот же) и more models converted from Modelica Standard Library (то есть библиотеки Modelica просто конвертируют в новый язык).

В итоге -- Julia становится языком-платформой, на которой доступны и Gen для задач AI, и Modia для мультифизики. И, надеюсь, когда-нибдь и SysMoLan -- язык системного моделирования (https://ailev.livejournal.com/1443879.html).

Языки внутри языков внутри языков. Языки-платформы (хост-языки) становятся настолько общим местом, что даже не упоминаются в описании embedded DSL (как в случае Gen). Языковые рыбки языковой воды не замечают. Никто же не обращает внимания, на каком языке написаны компиляторы Rust, Go, Julia, никто не поминает машинный язык тех же Intel или ARM процессоров, когда говорят о тех же Rust, Go, Julia. По факту отношение к embedded DSL и stand alone DSL стало одинаковым: неважно, какие языки участвовали в их создании. Важно, что там они делают с прикладной системной областью. А уж embedded или stand alone, это пустое. Конечно, embedded, ибо рядом ждут своей очереди на моделирование ещё десяток разных domains проекта, и хорошо бы это моделирование инфраструктурно вести в одной системе, а не в зоопарке разных систем. Проблема зоопарка осталась (зоопарк DSL в проекте неминуем, множественность же описаний системы требует множественности моделирования), но унификация сначала прошла машинного языка, а сегодня и хост-языка. DSL стал на одну ступеньку дальше от машинного кода.

При этом полно и попыток создать новые расширяемые языки-для-языков, то есть новые языки-платформы, новые хост-языки. Вот, поглядите на старт очередной попытки от justy_tylor, он неделю назад начал работать над прототипом нового компилятора: https://justy-tylor.livejournal.com/255265.html. Пожелаем ему удачи.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 31 comments