A survey of programming languages and platforms for multi-agent systems