Основная проблема «визуальных» языков заключается в том, что они по сути ничего и не визуализируют. Изображение исходного кода в виде квадратиков — это профанация, а не визуализация.
Визуализировать нужно данные, визуализировать нужно поведение. Например, вот так. Ну или хотя бы вот так или вот так.
«Визуальные» языки программирования не делают ни того, ни другого, и потому беспомощны в своей убогости.
Где-то я потерял одну очень хорошую статью про три культуры в программировании. Людям из первой интересно программирование с более математической стороны, им важно чтобы код был красив (в математическом смысле) и корректен. Вторым интересен сам процесс вычисления и эффективность использования ресурсов. Ну а третьи просто хотят решать практические задачи.
Так теряем мы контроль над реальностью? С точки зрения первой культуры, нет: наши возможности выражать инварианты в коде и доказывать конкретные свойства только растут. С точки зрения третей культуры тоже нет: наши способности решать проблемы не уменьшаются.
У людей же из второй культуры, начиная с 70-х, дела, похоже, идут всё хуже и хуже. Посочувствуем же им.
У меня нет намерения что-то доказывать (сам использую систему с systemd и не страдаю). Просто было бы неплохо излагать историю объективно, а не как в политике.
Как и ожидалось, в статье нет ни слова про daemontools, runit или Supervisor, но вместо этого — ложная дихотомия sysvinit vs systemd, и попытки преподнести любую критику как простое ретроградство.
Это зависит от того, будут ли авторы приложения указывать диапазон версий или только одну версию. В случае диапазона — широкие возможности переиспользования, причём без проблем вроде «вот в том дистре максимальная версия вот такая, а то иначе всё сломается».
Ну а в случае, когда каждому единственная версия, переиспользование не выходит. Хотя, одни версии могут быть популярней других.
В любом случае, механизм вот он, уже есть. Выбирать между крайностями не обязательно.
Так как все артефакты изолированны друг от друга, в системе может быть установлено несколько версий библиотеки
Пакеты, использующие одну и ту же версию библиотеки, используют одну и ту же библиотеку
Таким образом есть компромисс между единственно верной версией библиотеки и приложениями, таскающими всё в себе: небольшое количество версий, используемое совместно всеми.
То, что описано в статье, математики зовут «алгеброй Клиффорда». Она определяется следующим набором аксиом:
Aссоциативноcть: $$(AB)C = A(BC)$$
Дистрибутивность:
$$A(B + C) = AB + AC \qquad (A + B)C = AC + BC$$
Умножение на число: $$(αA)B = A(αB) = α(AB)$$
Умножение на единицу: $$1A = A1 = A$$
Квардрат вектора: $$aa = a^2 \in \mathbb R$$
Может, вообще стоило начать с тензоров и матриц?
Не может. Алгебра Клиффорда намного более простой и удобный инструмент для подобных вещей.
У меня в черновиках есть статья об алгебре Клиффорда, вдохновлённая книгой «Geometric Algebra for Physicists». Надо бы её наконец дописать и выложить на хабр.
Основная проблема «визуальных» языков заключается в том, что они по сути ничего и не визуализируют. Изображение исходного кода в виде квадратиков — это профанация, а не визуализация.
Визуализировать нужно данные, визуализировать нужно поведение. Например, вот так. Ну или хотя бы вот так или вот так.
«Визуальные» языки программирования не делают ни того, ни другого, и потому беспомощны в своей убогости.
Есть формальные спецификации Paxos (+ разновидности) и Raft на TLA+: https://github.com/tlaplus/DrTLAPlus
А никто так и не слышит (в самом деле, /ф/ и /в/ намного, намного ближе по звучанию). Так учат. И вот это — действительно преступление.
Так теряем мы контроль над реальностью? С точки зрения первой культуры, нет: наши возможности выражать инварианты в коде и доказывать конкретные свойства только растут. С точки зрения третей культуры тоже нет: наши способности решать проблемы не уменьшаются.
У людей же из второй культуры, начиная с 70-х, дела, похоже, идут всё хуже и хуже. Посочувствуем же им.
Как и ожидалось, в статье нет ни слова про daemontools, runit или Supervisor, но вместо этого — ложная дихотомия sysvinit vs systemd, и попытки преподнести любую критику как простое ретроградство.
Поклонники systemd, однако, такие поклонники.
Это зависит от того, будут ли авторы приложения указывать диапазон версий или только одну версию. В случае диапазона — широкие возможности переиспользования, причём без проблем вроде «вот в том дистре максимальная версия вот такая, а то иначе всё сломается».
Ну а в случае, когда каждому единственная версия, переиспользование не выходит. Хотя, одни версии могут быть популярней других.
В любом случае, механизм вот он, уже есть. Выбирать между крайностями не обязательно.
Таким образом есть компромисс между единственно верной версией библиотеки и приложениями, таскающими всё в себе: небольшое количество версий, используемое совместно всеми.
Проблема давным давно уже решена, просто все настойчиво игнорируют существование решения.
Именно так.
То, что описано в статье, математики зовут «алгеброй Клиффорда». Она определяется следующим набором аксиом:
$$A(B + C) = AB + AC \qquad (A + B)C = AC + BC$$
Не может. Алгебра Клиффорда намного более простой и удобный инструмент для подобных вещей.
У меня в черновиках есть статья об алгебре Клиффорда, вдохновлённая книгой «Geometric Algebra for Physicists». Надо бы её наконец дописать и выложить на хабр.