Thinking involves mental processes such as forming concepts, problem solving, reasoning, and decision making. There are different types of thinking such as autistic thinking and realistic thinking. Cognitive psychology studies mental processes like thinking, perceiving, remembering, and learning. Computer programming draws on skills also used in writing like creativity, logic, and sequencing, and can benefit from understanding cognitive psychology which studies how people think. Problem solving is considered one of the most complex intellectual functions and involves identifying problems, exploring solutions, choosing an action, and evaluating outcomes. Reasoning allows transforming information to reach conclusions through deductive or inductive logic.