Pseudocode as a tool of thought.
Its unique properties include
- it's a programming notation explicitly designed for thinking and communicating
- a good balance between expressivity and non-ambiguity
- for every abstraction used, either natural-language or programming notation can be used to balance expressivity vs. precision at a granular level