We've had those since the days of FORTH though. Self-replication, self-healing, error-checking is easy enough to build in. We already have programs that run on automatic without human intervention. Writing a program that can look at itself and change its own code is old-hat in some programming languages; it 'seems' brand new in newer languages like C++ and Python, but programmers have been doing this stuff for years. Erlang which keeps the telephone switchboards operational and underlies a good portion of the current Internet is AMAZING at parallel, non-interfering message passing, with billions of simultaneous threads that are ... suicidal as it were, without effecting the rest of the systems already are purring along, doing their thing. It depends on the programming language used and the specifications of the designers. Neural networking always had promise and it's a rather mature field finally, after years of stagnation during the AI Winter of the 1990s, which was rather dreadful because I was a child of the 80s that saw the promise of 5th Generation computers fail miserably and back to 4th generation we went, and we're STILL stuck on 4th generation computers... so, I suppose I've seen many disappointments in the promises of AI through the years, and I cheer when we make some progress, but then we end up stepping backwards 10 paces after making one.