Skip to content

Latest commit

 

History

History
31 lines (23 loc) · 1.17 KB

PROSOL.md

File metadata and controls

31 lines (23 loc) · 1.17 KB

Problem solving

Problem solving means translating human-understandable problem descriptions into machine-executable programs. Ideally, machine-executable programs should also be human-understandable; we attain that ideal with abstractions.

Abstractions aid tremendously in developing solutions to problems in a top-down (decomposing a complex problem into simpler subproblems) or bottom-up (composing simple subsolutions into a complex solution) fashion.

Abstractions

Humans like to organize processes (for example, doing the laundry) in hierarchical levels of abstraction:

do laundry:

  • wash laundry 🧼
  • wait 1 hour ⏳
  • hang laundry 🧺

wash laundry: 🧼

  • put clothes into washing drum
  • apply laundry detergent
  • close washing drum
  • put plug into socket
  • choose temperature
  • press start button

hang laundry: 🧺

  • open washing drum
  • put clothes into laundry basket
  • remove plug from socket
  • put clothes onto clothes line

If we keep delving deeper into lower levels of abstraction until we reach individual muscle movements, even the most simple-minded being can do the laundry by following the given instructions carefully. And how do we call such beings? Robots!