Utility Learning, Non-Markovian Planning, And Task-Oriented Programming Language