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

Major Strategies

Languages