Валерий Лаптев писал(а):
1. Повторяю. Сам семантический редактор мне нафиг не нужен. Только как средство в обучающей среде. Если из этого удастся выудить промышленную составляющую - ради Бога.
...Я не согласен, что x*x эквивалентно pow(x,2). Для математика - да. Может быть, для непрофессионала от программирования такие вопросы неважны, а для программистов - важны.
Уважаемый Валерий! Мне кажется, что Вы допускаете очень распространённую и имеющую далеко идущие последствия ошибку.
Вы забываете о том, что
программирование (в отличие от математики, да и информатики)
является прикладной дисциплиной. Из этого следует, что первична задача, для которой выбирается адекватный инструмент. Например, а) ЭВМ, б) программирование на ЯВУ. Но не обязательно!
Повторяю, что семантикой задачи диктуется "икс в квадрате". Все остальные измышления есть синтаксис конкретного исполнителя.
Учить синтаксису конкретного исполнителя необходимо в специальном профессиональном учебном заведении. В школе надо учить информатике, и в её рамках - выбору адекватного метода решения и инструмента, а вовсе не разнице между x*x и x^2.
Валерий Лаптев писал(а):
И тут не в оптимизации дело, а именно в том, чтобы сразу на автомате выбирать адекватное средство для конкретного случая. Ибо профессионал должен понимать, что в первом случае - одна команда умножения, а во втором случае - вызов функции со всеми накладными расходами.
Профессионал должен понимать, что адекватность в данном случае есть не что иное, как учёт специфики исполнителя, который в конечном итоге оборачивается именно заботой об эффективности. А исполнители бывают очень разные. Например, процессор может поддерживать плавающую арифметику или нет, может иметь конвейер или нет. А, если вспомнить более экзотические примеры, вроде форт-процессоров, то задача адекватности из просто весёлой превращается в весьма нетривиальную.
Поэтому правильным решением будет отнести все эти различия на уровень компилятора и его оптимизатора.
Валерий Лаптев писал(а):
мне еще не попадался компилятор, который заменил бы вызов функции на одну команду умножения.
Это минус Вам (тем более, что Вы в области образования работаете).
Валерий Лаптев писал(а):
Аналогично и в случае с факториалом.
Вы меня совсем огорчаете отсутствием системного подхода. Неужели не понятно, что оптимизация цикла есть именно оптимизация цикла, мелкий технический вопрос, который не имеет фундаментального значения! Да, безусловно, обучаемый должен знать определённые паттерны преобразований (в т.ч. алгоритмических, наряду с математическими вроде вынесения общего множителя за скобку). Да, в этом (и только в этом) предлагаемая Вами технология полезна.
Но в целом Ваши высказывания по этой теме напоминают дилетантский тезис "информатика - это программирование" (добавить по вкусу "на Бейсике" или "на Обероне").
Предлагаю простейший тест: "Для чего нужен компьютер?"
а) для игрушек;
б) для программирования на языке XXX;
в) для повышения эффективности решения прикладных задач.
"Для чего нужно учить информатике?"
а) для ЕГЭ ("культурный", но неосознанный вариант ответа - "для фундаментального образования");
б) для умения программировать на языке ХХХ;
в) для умения выбирать адекватный инструмент решения прикладных задач.
Тогда всё встанет на свои места.