- Raw pointer languages (C, C++, unsafe Rust) are hard to optimize due to alias analysis and memory management.
- Constrained languages (Haskell, Futhark, SQL) give compilers more optimization freedom through additional structure like referential transparency or declarative semantics.
- Examples: Haskell stream fusion reduces nested loops to constant space; Futhark outperforms C on GPU tasks; SQL performance improves over decades via query planning.
- Performance hotspots can be addressed by using structured languages for those sections, reserving raw pointers for rare cases.
- Raw pointers are needed for specific optimizations (e.g., NaN boxing, XOR linked lists) but should be opt-in.
- Rust improves on C with unsafe opt-in, iterator fusion, and bounds check removal.
- The goal should be easy interop between languages, enabling use of the best tool for each task via inline DSLs or seamless FFI.