Re: Программирование наоборот
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.05.19 07:36
Оценка: 20 (4) +1
Здравствуйте, Буравчик, Вы писали:

Б>Когда уже такое будет?

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

Менее принципиальный, но ещё более действенный подвох — неудобство.
Сейчас программист думает в терминах структуры программы — что ему нужно написать, чтобы программа сделала то, что нужно.
В вашем подходе программист будет вынужден думать не только об этом, но и о том, в каком порядке вносить изменения.
Как ему сделать из программы, которая рисует круг, робота для торговли на бирже.
Опять же, на пальцах: понять, где должна стоять каждая фитюлинка в кубике Рубика, можно без подготовки. А вот придумать последовательность шагов, которые собирают кубик — это уже challenge.
Вы предлагаете заменить упраждение по наклеиванию квадратиков на стороны упражнением по сборке кубика.

Отличный способ просадить продуктивность на порядки.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.