Ответы:
Я бы посоветовал взять веб-фрэймворк для этих целей. Rails, merb, Sinatra. В случае с Sinatra и merb может быть реально один исполняемый файл, но счастья вам это вряд ли принесет, лучше разрабатывать обычное merb или rails приложение. А для хранения данных я бы посоветовал вам базу данных: файловую - типа SQLite, или серверную - типа MySql или PostreSql. Так же можно попробовать базы данных, которые хранят данные ввиде "ключ - значение", например Redis. А еще можно серелизовать объект в json или yaml, но муторнее всего. Самый простой путь это Ruby on Rails + SQLite либо merb + SQLite. Хотя это и потребует чтения документаций и гидов, а так же небольших знаний ruby, HTML и ООП. Если есть время и желание - дерзайте, это очень интересно.
т.е. вы хотите чтобы программа записывала результаты в себя
заведомо плохой подход
запись в себя может себя убить
Модификация исполняемого (exe) файла в момент его выполнения обычно невозможна потому что он будет защищён от записи самой системой. Но если очень хочется, то можно его разблокировать специальными тулзами вроде WinUnlock (я не вкурсе, на чём основан принцип их работы), но опять же, скорее всего, если это делать в процессе работы программы, то произойдёт ошибка.
Может убить потому что ошибки исполнения кода, ошибки памяти и операционной среды никто не отменял, ошибки компиляции если вы хотите екзешник и.... Основную причину я могу и не знать... Но одно известно однозначно: никогда исполняемый код не содержит в себе конечных результатов работы этого кода.
если как скрипт, то можно, просто комментарий в конце пометить как-нибудь, типа "=begin data" и в программе то что после него и до "=end" считать как данные. и при выполнении скрипта(!) можно будет их считывать и записывать, например вот такой код работает:
#yasam.rb
File.open("yasam.rb","a"){|f| f.write("я стану больше и сильнее\n")}
правда интерфейс консольный, но всеже как вариант)
15 лет назад