Reasoning Like Program Executors