As a gross generalization, there are four phases to the development of computing. Phase 1, programming was written line by line by people, wouldn’t change after it was loaded into the computer, and could be broken down and analyzed. Phase 2, programming is written more by connecting modules, optimization takes place within the computer, but the optimized program is stable. Phase 3, programming is initiated by people, but the computer is given broad abilities that allow it to learn how to improve itself. Phase 4, programming is initiated by programs, and the possibility of the Digital Singularity dramatically increases. We’re already in Phase 3, machine learning, where machines are learning about how to program themselves resulting in programs that we don’t, and possibly can’t, fully understand. We have to trust the machines. This phase began a couple of decades ago, so it has progressed to the point that it becomes possible that we are already witnessing aspects of Phase 4, and therefore the heightened possibility of Singularity. Because we no longer can authoritatively understand how some programs operate, we can no longer authoritatively know how far computing has progressed.
(Click on the image for the link.)