По первому вопросу. Огромным преимуществом Pact благодаря дисциплинированной среде выполнения и структуре является возможность допустить весь язык в среду FV. Pact 3.0 (следующая версия, которая выйдет с Chainweb Testnet) получает большую часть пути, включая освещение «пактов», нашей многоэтапной абстракции.Однако обратите внимание, что это может привести к тому, что все виды действий будут непроверяемыми, но это особенность, а не ошибка.Если вы хотите корректный код, вы должны идти узким путем.
Re: неполнота Тьюринга, только в том, что некоторые инструменты запрещены, а именно рекурсия, но также анонимные лямбды (что позволило бы ввести y-комбинаторы)).Последнее менее обременительно, так как его основное влияние оказывает на выразительность, которая честно противоречит нашей политике «простого в понимании кода»: выразительный код, хотя мощный, зачастую только для экспертов.Кроме того, Pact имеет расширенные функциональные возможности, такие как частичное применение (используется, например, в map
и fold
), которого нет в таких языках, как Solidity (и, честно говоря, Javascript).Рекурсия является более существенным недостатком, но здесь мы придерживаемся мнения: блокчейн - это среда с регулируемой стоимостью, а рекурсия там, где она действительно необходима (обратите внимание, что Pact может выполнять ограниченный цикл с помощью вышеупомянутых структур), указывает на вариант использования, которыйплохо подходит для среды с общими вычислениями, такой как поиск пути и т. д. Таким образом, продвинутому разработчику Pact, возможно, придется развернуть какой-то алгоритм в ограниченный цикл, но это разумная цена, чтобы заплатить за огромное повышение безопасности.