Skip to main content


Showing posts from March, 2023

Computer Science and Software Engineering

The theoretical description of an algorithm can declare that certain things are simply assumed not to happen. However, a real implementation may still have to include code to handle the case where something happens that was assumed to be impossible, even if that handling boils down to printf("Fatal System Failure") and exit, letting a human operator clean up the mess. This is arguably the difference between computer science and software engineering. [Designing Data-Intensive Applications (2017), Martin Kleppmann]