by Walter Bright, Dr. Dobb’s
Composability or the ability to write highly reusable software using a data source → algorithm → data sink model is a feature that depends heavily on language support. New facilities in D now make this possible.
The goal of writing reusable software is as old as programming, and is so well ingrained into programmers that we take it as an axiom. It’s accepted and non-controversial. Of course, we all strive to produce reusable software, but as I look back on 35 years of programming, I note with chagrin that practically none of the code I’ve written has been usable in another project. I will “reuse” code by copy-paste-modify, but that’s cheating, and even that doesn’t happen too often.
While it might seem that I have missed the boat somewhere, I’ve asked other long-time programmers, and many of them seem to have the same frustrating experience. This starts out, then, as journey into figuring out what went wrong. Why does that compressor I wrote before not work in another project? Why is my macro expander not reusable? Why did I chuck all my carefully written UTF code? Why do I write symbol tables over and over again? Why is that disassembler I wrote completely unusable in another application? Why do I keep reinventing the wheel?