Hacker News new | ask | show | jobs
by jnurmine 2902 days ago
Once upon a time I thought of this and came to a conclusion that in the future software is not written, it is grown.

A big hall with computers, churning on calculations to end up with reusable modules/components for some predescribed purpose. These are combined and eventually larger systems emerge.

The inputs to the calculations were to be descriptions of what the program should do, no details on the "how". For instance, "make an input box for name and snailmail address, with cancel and ok buttons".

It was obviously warp engine level stuff when it comes to feasibility and I thought it would be very far away, like 100 years away... But maybe it is closer than that.

2 comments

This is happening now for mechanical design. They call it generative design. You give inputs (volume/shape, loading cases, other parameters) and then the software iteratively solves for the optimum geometry to meet the goals.
And there is also ``form parameter design'' for ship hull geometry. It is also generative, but perhaps it more typically makes use of deterministic (nonlinear optimization) solvers to generate the geometry itself. (Implementations vary - I show my bias (or just inability to shut up) here as I am trying to finish a PhD in this as we speak) The main similarity I'm going for in this comment is that the user specifies design constraints and the program generates ship hull shapes that meet those requirements.

Tie generative methods in with solvers for hydrodynamics, motions, structures, stability, etc, and one can conceive of automating the ship hull design spiral, or sections of it anyway. That's not to say that some of this is not already out there in commercial software.

Example: antennas have been evolved to meet specific special criteria ...

https://en.wikipedia.org/wiki/Evolved_antenna

In a way, programs have evolved, just very slowly because the evolutionary pressure was from developers, whose speed and effectiveness is a bit random. Most codebases are like little cells, with pockets of non-coding technical debt still influencing the epigenetics of the software's future designs...