The state of software is the state of the structures
of primitive societies: some in cave shelters, some
under roofs of sticks and leaves, some in mud huts.
We talk of Cathedral and Bazaar, but there are very
few carefully designed Cathedrals of software,
and those probably have plenty of barely hidden flaws.
The Bazaars are all around us, jammed together, spreading
for miles and miles, tent walls
and roofs billowing in the breeze, all awaiting a strong
zephyr to carry many of them away, and leave most of the rest in ruins.
What software needs is building blocks. Bricks of uniform size,
easily joined together. Concrete masonry units. Tilt-up walls.
Trans-oceanic shipping containers (connex, seabox).
Solid, composable, engineered, units. We should be able to
pull a well-known and heavily tested package or function to use,
just like a contractor would call for a delivery of 200 8x8x16"
CMU blocks, and be able to expect they will get just that,
with no gaps, weak spots, or broken webs.
But, no , all of us software crafts-folk want to carefully create
our very own artisanal version of whatever library functions,
that are needed for the project at hand. In a world that could be
made of solid concrete blocks, we are crafting our very own adobes,
with our own special blend of straw and mud, and we think we have advanced far beyond the folks living in mud huts.
Some of us will say they are master masons, crafting cathedrals out
of hand cut stones, each carefully measured and chiseled, and each
stone unique. We're still duplicating effort when we could be using
commercial off-shelf libraries. And all the while the project deadlines
go zipping past as we try to craft our way to local perfection.
All I can suggest as a solution is a multi-government and
multi-corporate effort to design and build fairly universal
functions, libraries, and packages that are robust,
exhaustively reviewed by humans,
and tested thoroughly. I won't ask for provable correctness, yet. :-)
Would the result be an Ada on steroids?
Depends on who is involved.
Choice of language should not matter.
The APIs would matter, a lot.
A few competing teams would be a possibility.
Passing several existing functions to an AI, with a
"do like these, only perfectly" might be useful, or useless.
And yes, then we would have 15 competing standards.
https://xkcd.com/927/
(Well, we probably already have at last 1,500, so, go figure.)
Bloated and crafted software - a rant:
The state of software is the state of the structures of primitive societies: some in cave shelters, some under roofs of sticks and leaves, some in mud huts.
We talk of Cathedral and Bazaar, but there are very few carefully designed Cathedrals of software, and those probably have plenty of barely hidden flaws.
The Bazaars are all around us, jammed together, spreading for miles and miles, tent walls and roofs billowing in the breeze, all awaiting a strong zephyr to carry many of them away, and leave most of the rest in ruins.
What software needs is building blocks. Bricks of uniform size, easily joined together. Concrete masonry units. Tilt-up walls. Trans-oceanic shipping containers (connex, seabox).
Solid, composable, engineered, units. We should be able to pull a well-known and heavily tested package or function to use, just like a contractor would call for a delivery of 200 8x8x16" CMU blocks, and be able to expect they will get just that, with no gaps, weak spots, or broken webs.
But, no , all of us software crafts-folk want to carefully create our very own artisanal version of whatever library functions, that are needed for the project at hand. In a world that could be made of solid concrete blocks, we are crafting our very own adobes, with our own special blend of straw and mud, and we think we have advanced far beyond the folks living in mud huts.
Some of us will say they are master masons, crafting cathedrals out of hand cut stones, each carefully measured and chiseled, and each stone unique. We're still duplicating effort when we could be using commercial off-shelf libraries. And all the while the project deadlines go zipping past as we try to craft our way to local perfection.
All I can suggest as a solution is a multi-government and multi-corporate effort to design and build fairly universal functions, libraries, and packages that are robust, exhaustively reviewed by humans, and tested thoroughly. I won't ask for provable correctness, yet. :-)
Would the result be an Ada on steroids? Depends on who is involved.
Choice of language should not matter. The APIs would matter, a lot. A few competing teams would be a possibility. Passing several existing functions to an AI, with a "do like these, only perfectly" might be useful, or useless.
And yes, then we would have 15 competing standards. https://xkcd.com/927/ (Well, we probably already have at last 1,500, so, go figure.)