Есть задачи, когда некая одна и та же логика/алгоритмы должны выполняться на сервере и на клиенте. Симметрично. Ну, то есть конечно можно все засунуть в сервер, но поскольку алгоритм должен дергаться часто, то будут неприятные для пользователя задержки (вне зависимости от ширины канала в общем то). Используемый набор алгоритмов зависит от решаемой в данный момент задачи и может меняться довольно часто. Обновлять клиент не вариант -- слишком это нужно будет часто и это нельзя сделать автоматически.
Поэтому простое решение -- это множество алгоритмов реализуется на неком интерпретируемом языке, интерпретатор крутится и на сервере и на клиенте. Когда алгоритмы меняются, сервер просто высылает новую реализацию клиенту. Все.
В принципе, для этого сейчас модно использовать js (нет, не только в браузерах), но меня он не устраивает по многим параметрам. В частности динамической своей типизацией.