Буратино немного подумал.
— Нет, уж я, пожалуй, сейчас домой пойду.
— Пожалуйста, мы тебя за веревку не тянем, — сказала лиса, — тем хуже для тебя.
— Тем хуже для тебя, — проворчал кот.
— Ты сам себе враг, — сказала лиса.
— Ты сам себе враг, — проворчал кот.
«Золотой ключик, или Приключения Буратино», А. Н. Толстой.
Programming languages are rigorous but incomplete approximations of the language of mathematics. General purpose languages are Turing complete. That is, they allow to write all algorithms. (…) However, programming languages are not all equivalent, since they differ by their ability to describe certain kinds of algorithms succinctly. This leads to an —endless?— research for new programming structures that are more expressive and allow shorter and safer descriptions of algorithms. Of course, expressiveness is not the ultimate goal. In particular, the safety of program execution should not be given up for expressiveness. We usually limit ourselves to a relatively small subset of programs that are well-typed and guaranteed to run safely. We also search for a small set of simple, essential, and orthogonal constructs.
Пишу “игрушку” с командным взаимодействием между управляемыми компом человечками. Основной принцип заключается в том, что логика для каждого персонажа выполняется функцией, получающей в качестве аргументов список клеток, на которые он может сходить, и список всех видимых ему других персонажей. Он может ходить и стрелять, все просто как кирпич ) Обзор сделан маленьким - круг радиусом в ~2.5 клетки.
Взаимодействие и память реализуются простым, но достаточно эффективным способом: у каждого персонажа есть параметр сообщение типа string, которое могут прочитать он сам и все те, кто его видит. Свое сообщение можно невозбранно обновлять на каждом ходу.
Интересно проверить, на сколько сложного поведения удастся добиться от этих не особо многофункциональных человечков )
Возможно, что я допишу-таки свой интерпретатор ML-подобного скриптового языка на ocamllex/ocamlyacc, тогда можно будет даже распространять гаму по интернетам на радость фанатам OCaml/SML/etc. %)