I think a program that makes programs based on users' requests makes sense. Of course we already have this, in a way, with the programming IDE and programming languages in general. So, programs do make programs. They make the ones we tell them to make based on how we tell them to make them.
You couldn't really make a "perfect" programming language unless it was programmed to be able to program... well, everything in every possible way, and someone would have to program it to be able to do that in the first place.
A program that programs itself is a "chicken or the egg" (OK, so the egg came first or there was no such thing as a completely definitive first chicken, but ignoring these minor technicalities...). You could make a program that can make changes to its programming, but how it goes about doing that and what changes it makes are determined by what it's programmed to be able to change and how it is programmed to react to changes in its "environment," or status.
How feasible would it be to create the foundations for and evolve a sentient and intelligent program? (And for that matter, how sentient and intelligent are any of us really?)