Я создаю образовательную игру, которая благодаря своей модульности позволяет учить студентов программированию. По сути, это обычная карточная игра, которую можно легко изменить.
Предполагается, что основа игры полностью недоступна для редактирования (по крайней мере, в теории), поэтому мне нужно создать тип «Карточка», который позволяет выполнять анонимную функцию в качестве действия (даже хуже, или, возможно, даже более интересно ей нужна анонимная функция, которая может иметь произвольное количество аргументов).
Мне также нужна сильная библиотека графического интерфейса, и она должна быть переносимой, и, если это вообще возможно, потенциально должна быть веб-языком. Он должен иметь широкую поддержку модульности, быть объектно-ориентированным и, надеюсь, быть достаточно ясным, чтобы опытному программисту не требовалось понимать синтаксис. Это много требований, но я должен быть подробным, и я хочу конкретный ответ и почему это был бы хороший выбор, поэтому я должен разместить как можно больше информации, я думаю. У меня нет реальной необходимости в эффективности языка, поэтому языки низкого уровня в этом случае не нужны, языки очень высокого уровня легко будут достаточно быстрыми.
Python недостаточно силен. Рубин может быть, но я не достаточно знаком с его функциями. Haskell и Scheme имеют самую сильную поддержку, но не являются веб-языками и, насколько я знаю, по большей части не имеют библиотек GUI. C # может быть разумным, я не очень знаком с его функциями, но меня особенно беспокоит переносимость. Если это вообще возможно, я бы хотел избежать javascript, но если это действительно лучший вариант, мне, вероятно, придется идти в этом направлении.