Cool, and here is an idea
Apple's new meaning of locked down eco system - "you cannot rewire your chip".
Boffins have developed a new nanoscale material that could potentially allow computers to rewire themselves according to the user's needs. Scientists at Northwestern University decided to look at the problem of teeny-tiny circuits in ever-shrinking electronic devices in a new way, by coming up with a material that can be a …
Or perhaps a leap forward.
FPGA are mainly digital in nature and this seems more useful for analogue signal processing. We can already switch signal paths between different types of circuit but this looks to be a technology which actually shapes the circuit to what is wanted.
The main advantage would seem to be less components needed; each component can be any type of component rather than needing to have one of each and deciding which to use. Thus more usable components can be fitted in a chip.
ISTR from 25 years ago, that analogue computers were very fast and good at somethings (particularly with graphics ... getting an analogue circuit to draw a circle - or thousands of circles - on screen is blazingly fast, compared to digital) control engineering being on example we used. However they were tricky and cumbersome to programme, as you needed to rewire them every time.
So this news might lead to a combination of digital computers that can design and implement analogue components internally to provide the most accurate and fast applications. Maybe we are moving closer to a robotic world.
Of course one possible application for this is for tamper-proof, unhackable hardware that can destroy itself if it falls into the wrong hands .. or if you forget to pay the monthly licence fee to continue to use <appliance> for the purpose you thought you'd bought it outright for ..
ISTR there was this compiler that generated self-modifying code. The ratio of modified code to modifying overhead was about one to ten or something to that tune. Wonder what this'd do.
Maybe this will turn out to be a great RoTM-enabler, and maybe not. We already have "neuron like" constructs on chips, but not nearly enough to build a brain-sized constellation from.
Then again, our (usually technically human or at least persons, say corporations and quangos and such) overlords are already vying to take control from the people. So it's probably more of a "if we let them" issue. You know, privacy, data security, governance, building safeguards and such right into policies, providing redress, and not accepting crap from our rulers, ever, whatever they might be made off. That last tidbit really is quite a lot irrelevant, so maybe we oughtn't overlook the rest.
So, if
x = rand(); isn't good enough, you can try:
srand(rand()); x = rand();
Unfortunately, computers continue to be deterministic. If you'd like a computer program with a non-deterministic output, I'd be happy to write one for you (I will need a non-deterministic input, but that's easy enough to simulate by simply measuring the time between user inputs).
"Self-modiying code'" is as valid a technique as recursive code. Neither are widely used, because they reduce readability (and thus make debugging tough), and performance gains are minimal in most use-cases.
HTH.