July 3rd, 2019

2019

Учебник "Системное мышление 2019" уже в интернет-магазинах

Учебник "Системное мышление 2019" уже доступен во всех интернет-магазинах (Литрес -- https://www.litres.ru/anatoliy-levenchuk/sistemnoe-myshlenie/, Амазон -- https://www.amazon.com/dp/B079Z19R9W, Майбук -- https://mybook.ru/author/anatolij-levenchuk-3/sistemnoe-myshlenie-2/ и т.д.), ссылки туда можно найти со страницы книги в Ridero (нажмите на надпись "больше информации") -- https://ridero.ru/books/sistemnoe_myshlenie/. Зачем это? Ну, например Литрес продаёт в 13 электронных форматах, вдруг кому-то нужна форматная экзотика. Или у кого-то уже есть подписка на mybook. Цена? В Ридеро 36 рублей, в Литресе 40 рублей, в Амазоне 77 центов.

Картинки в файле .pdf A5 были с низким разрешением, т.е. нечитаемыми (Ридеро защищалась так от того, чтобы книжки не печатались мимо его типографии), это было явной ошибкой, и Ридеро её исправило. У кого оказалась эта .pdf A5 версия, вы можете её выкачать в Ridero заново -- разрешение там сейчас такое же, как в epub. Кому и этого разрешения в .pdf мало, идите в чат поддержки курса в телеграм https://t.me/systemsthinking_course, там припинена ссылка на .pdf A4 с полным оригинальным разрешением (да ещё этот файл и в ворде открывается, такой вот неожиданный бонус. Это ровно тот файл, который уходил на вёрстку в издательства).

Бумажную книгу я не рекомендую покупать в Ридеро. Там чёрно-белый вариант. Покупайте в "Баловстве", https://balovstvo.me/sys-thinking2019, с рассылкой по всему миру, там цветная хорошая печать на хорошей бумаге, и как бонус -- шёлковая ленточка-закладка. Печатается это в Киеве, то же издательство, которое издало 4 тома HPMoR на русском и прошлый учебник для Библиотечки ШСМ. Я уже держал в руках книгу в сигнальном экземпляре в Москве:
balovstvo_book

За неделю по линии Ридеро ушло 302 книжки, бесплатно .pdf A4 скачан 570 раз. Неплохой старт для такой непопсовой книжки!

Задачник пока готов на 40%, работа над ним продолжается.
2019

Хост-языки для встроенных 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. Пожелаем ему удачи.