Hacker News new | ask | show | jobs
by jiggawatts 3 days ago
Something I noticed decades ago is that some small, innocuous features can drag with them giant ecosystems of software.

I first noticed this when I had to implement a C++ client for a custom RPC protocol and the dev “on the other end of the wire” added one new “convenience” in the data types supported… which would have required me to include the entire Java runtime in my client!

All protocol specs are vulnerable to this effect where it’s all too easy to require clients to include half a dozen different regex engines, three byte code virtual machines, and most of LLVM for good measure.

1 comments

any specification eventually grows to encompass all features of its original implementation language.
We should require 2 different implementation, each in different enough (so no C/C++ pair) language with each specification.

Because that way we not only get rid of language's smell in how stuff is implemented, but also the act of implementing the spec will quickly show any cases where it looked simple in spec but turns out to be mess implementation wise.

Too much work ? Well, make your spec be tighter and simpler before you burden the rest of programming community with implementing it