https://janus.codingforstudent.com/getting-smart-with-programming-paradigm/