what is the difference between data and program memory? help me please..
Right. Allowing users to write into the program memory blocks would invariably lead to problems, if the user is using a variable that could become corrupt. On the other hand unused program memory would continue to be unused
Unused trunk space or knee space is left unused in a car also.
You often have to design for worst-case requirements and end up with mostly unused extra capacity.
If you do use IAP methods to store information in the program space (for the chpis that supports this), you should make use of checksums to give the program the ability to decide if a valid configuration has been stored, or if it should run with default values.