Can a program learn to write itself?