No matter the business domain or programming language, programmers always end up needing support for ALL of these things in some form,
- Resource Semantics (such as RAII in C++, or finalizers in C#)
- Error Semantics (such as exceptions in most languages, or conditions in Common Lisp)
- Algebraic Types (such as structs and unions in C, or records and DUs in F#)
- Data Abstraction (such as that which is often badly entangled within object systems in OO languages)