On Tuesday, 14 October 2014 at 01:36:08 UTC, Dicebot wrote:
Templates are absolutely critical for any new system level programming language for me to even consider it. I had my share of pain emulating those in plain C and don't want to ever do it again.
But maybe you don't really do low level programming then? In which areas of low level programming are templates critical? I have trouble finding examples where I have used it or seen it used for anything non-trivial in performant code.
In theory it is nice to write double/float/fixed-point functions once, but in reality you often need to change the algorithms or the implementation when moving from double to float if you care about performance.
Similarily for datastructures. You can often reduce the number of data structure collections needed to implement an algorithm by creating a special one that targets the dominant access patterns and operations of the algorithm. Or significantly improve memory handling. Or significantly improve cache performance.
In fact, when I think about it, you loose a lot when going from machine language to a programming language in the first place. When coding on a CISC like 68000 (that allows "high level assembly") you would structure the data, lookup tables and memory address space in a way to fit the problem and the instruction set to get performance and tight code.