https://medium.com/@afifakhalid901/a-beginners-guide-to-understanding-the-fundamentals-of-computer-programming-474d702d5e87