Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

C has no in-built way to deal with SIMD, which is essential for high-performance computing over loads of data. On that count alone it is already out of the game.


What are you talking about? "in-built"? Have you ever written SIMD assembly before? It's comically easy to integrate SIMD optimizations into a C program.


Through in-built assembly, or some compiler-specific annotation. None of them is vanilla C, which was my point.


Actual "standard C" (along with most of the C stdlib) is pretty much useless for writing real-world applications, any non-trivial C code base will almost certainly use at least a handful non-standard extensions (sometimes even without knowing it) and both compiler- and platform-specific conditional code paths (just try how many libraries would compile with gcc's "-pedantic" flag, I bet it's not all that many).

This pragmatism by compiler vendors to just ignore the C standard where it doesn't make much sense, and to extend the language where it helps to solve real-world problems is actually a pretty powerful argument for C.


If you want truly high-performance, architecture-generic SIMD won't get you particularly far though - the utter mess of things that x86-64 does and doesn't support is an utter mess, and doing things well across fixed-width and variable-width SIMD architectures will require compromises on one of those quite often. (not at all to say that it's impossible, it's just quite full of asterisks that I personally think is too much to bother standardizing)


Part of what makes C touted as a 'low level language' is the relative ease of inlining assembly.


Which isn't part of the standard, and no compiler is required to support to achieve certification.


gcc had emitted simd instructions since the egcs days.


So does JS, Java, whatnot. That’s not the point.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: