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.