Мой собственный способ измерить выразительность и скорость языка — решить на нём “задачу Джеймса Бонда младшего”, выдуманную головоломку из игры на NES James Bond Jr
(видео). Несмотря на игрушечность задачи, кажется, это неплохой тест нового языка. Это веселее, чем реализовывать абстрактный поиск в ширину/глубину. Задачу решаю с небольшими алгоритмическими оптимизациями, но без оптимизаций по мелочам (скорее, наоборот, массив чисел специально копируется, как решена первая версия задачи на питоне, чтобы решения были сравнивыми, чтобы симулировать “код новичка” на языка и посмотреть, как язык справляется с этим копированием).
Сразу выводы про daScript
для тех, кому не особенно интересны подробности реализации:
— Выразительность языка ОЧЕНЬ похожа на Python
. Более того, я фактически просто переписал своё решение на Python
13-летней давности построчно, с парой изменений.
— daScript
по скорости в режиме интерпретации находится в одной лиге с компилируемыми языками (!!!). Код по скорости сопоставим с версией на Nim
(чуть быстрее “наивной” скомпилированной версии, и раза в 1.5-2 медленнее оптимизированной).
— В режиме Ahead-of-Time
компиляции daScript
обгоняет nim
(который вообще показывает достаточно хорошие результаты в нормальных бенчмарках с другими языками).