Mathematical logic constructs that let you program a computer.
Two constructs here that we are concerned about are…
Declarative
- Focuses on the “what” of a computation
- The runtime and compiler figure out the “how”
- SQL, MATLAB
- Includes pure functional languages
Imperative
- You specify the what and the how of the computation
- C++/Java/Python
Note
You can add features like OOP to any of these above categories of languages
Design
- Languages must
- Enable programmers to be productive
- Enable secure and correct construction
- Discourage bad practices
- Make it easy to program
- Increase productivity
- Help automate routine tasks
Question
A lot of these items are very subjective, what does it mean to make a programmer productive? What makes one programmer productive might not make another productive. What does it mean to discourage bad practices?
Increasing programmer productivity has been affected largely by AI