Home » Code » The Challenge of Cross-language Interoperability

The Challenge of Cross-language Interoperability

David Chisnall, acmqueue, The Challenge of Cross-language Interoperability, here. Seems unlikely that there there will be a change in fast code = C code for sometime on the order of years for FinQuant Floating Point. Given the Street’s main Risk and P&L problems are addressed precisely by the x86/AVX performance growth of the preceeding 2-3 years and the expected x86 improvements through 2016, it is difficult to see how a significant processor architecture change could take root. That said, there does not seem to be a wealth of folks on the Street figuring out how to get their compiler to issue instructions rapidly enough to keep the FMA floating point execution units busy on each clock cycle. So if these applications are not actually tied to high performance execution, something else in the way of a new technology or architecture could come along.

The traditional division between high-level languages representing the class that is similar to a human’s understanding of the problem domain and low-level languages representing the class similar to the hardware no longer applies. No low-level language has semantics that are close to a programmable data-flow processor, an x86 CPU, a massively multithreaded GPU, and a VLIW (very long instruction word) DSP (digital signal processor). Programmers wanting to get the last bit of performance out of the available hardware no longer have a single language they can use for all probable targets.

The industry has spent the past 30 years building CPUs optimized for running languages such as C, because people who needed fast code used C (because people who designed processors optimized them for C, because…). Maybe the time has come to start exploring better built-in support for common operations in other languages. The RISC project was born from looking at the instructions that a primitive compiler generated from compiling C code. What would we end up with if we started by looking at what a native JavaScript or Haskell compiler would emit?

Ohloh, Compare Languages, here. Tracks the number of lines of code available in public open source repositories. 4 billion lines of C code and around 1.5 billion each of C++ and Java.

Language Comparison Page

The graph compares the languages picked by the user. The height of each point on the graph is the sum of all commits in that month that included at least one line of change for that language. A commit that changed two languages will be counted for each language.

Languages are always charted over 20 years, and do not include the most recent month. The most recent month is excluded because Ohloh does not yet have complete information for it.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: