Здравствуйте, Буравчик, Вы писали:
Б>Когда уже такое будет?
Давайте сразу предположим, что такое есть.
Все программы "вырастают" из простейшей int main() {return 0;} путём последовательности трансформаций.
В чём будет подвох?
Принципиальный — в том, что каждый шаг трансформации обязан сохранять валидность программы. Сразу видим, что подобным способом можно породить только те программы, которые входят в "область связности" исходной программы.
Совершенно неочевидно, что эта область связности покрывает абсолютно все нужные нам программы.
Простейший аналог: если задать начальное слово, и разрешить менять по 1й букве на каждом шаге, требуя, чтобы результат оставался в пределах словаря, то из МОРЕ сделать ГОРА получится, а вот ПИВО — уже нет.
Напомню, что в обычном программировании объём правок между последовательными сборками может быть любым; мы не обязаны соблюдать никакую непрерывность.
Менее принципиальный, но ещё более действенный подвох — неудобство.
Сейчас программист думает в терминах структуры программы — что ему нужно написать, чтобы программа сделала то, что нужно.
В вашем подходе программист будет вынужден думать не только об этом, но и о том, в каком порядке вносить изменения.
Как ему сделать из программы, которая рисует круг, робота для торговли на бирже.
Опять же, на пальцах: понять, где должна стоять каждая фитюлинка в кубике Рубика, можно без подготовки. А вот придумать последовательность шагов, которые собирают кубик — это уже challenge.
Вы предлагаете заменить упраждение по наклеиванию квадратиков на стороны упражнением по сборке кубика.
Отличный способ просадить продуктивность на порядки.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.