Самоизменяющийся код?
Я хотел бы сделать следующее. Я объявил структуру в моей программе, и во время выполнения, когда программа выполняется, если есть пользовательский ввод, я должен иметь возможность создать другую новую структуру / редактировать эту структуру в моем коде. Как мы можем сделать это? Это то, что "Самоизменяющийся код"? Пожалуйста, уточните. Пожалуйста, приведите несколько примеров. Спасибо
Позвольте мне дать представление о том, что я хочу сделать, у меня есть "Структура / Класс", называемая "студент", которая содержит переменные, такие как "int roll_no" и "int reg_no". Если пользователь желает добавить новую переменную типа char name во время выполнения, как это можно сделать?
2 ответа
Посмотрите на это:
http://bracha.org/Site/Talks.html
Говорят о рефлексии, а это, вероятно, то, что вам нужно - рефлексия касается не только самоанализа (который большинство разработчиков уже знает), но и об изменении значения языковых конструкций и манипулировании кодом во время выполнения.
Лучшими языками для такого рода вещей, вероятно, являются ruby и smalltalk.
Если ваш язык не поддерживает эти возможности, у вас все еще есть возможность использовать генерацию кода - что возможно почти на каждом языке программирования, но гораздо проще в динамических с поддержкой eval. Например, такие вещи возможны даже в C/C++, но ваше приложение должно встраивать компилятор.
Java тоже хороший выбор (спасибо загрузчикам классов и множеству библиотек для манипулирования байт-кодом)
О, я почти забыл, взгляни на тест на метафизику и шепот.
Похоже, вам не нужно модифицировать существующий код, а вместо этого выдавать новый код во время выполнения. Это легко сделать в любой среде, где ваш компилятор присутствует во время выполнения. Это верно для.NET, для сред на основе JVM, различных Lisps и т. Д.