История изменений
Исправление den73, (текущая версия) :
где грань в динамики, за которую нельзя заходить?
Всё зависит от конкретного случая, но компиляция нужна - это инструмент, который делает гигантский объём рутинной работы вместо тебя.
Я вот сейчас дорабатываю не очень большую (100-200кб) программу на старой версии Mathematica. Вот где полная динамика и полный ад. Всё можно:
- можно определить функцию с 4 аргументами, а вызвать с 5. Никакого предупреждения не будет выдано, ведь ты вправе вызвать функцию до того, как она определена, доопределять по ходу дела и у тебя есть ovelroad.
- можно определить функцию, а через две строчки определить её снова. Никакого предупреждения не будет выдано, т.к. ты вправе это сделать.
- можно вызвать функцию, которая вовсе не определена. Это не ошибка, а просто считается, что такая функция будет определена потом или что это некая абстракция, которая вообще не подлежит вычислению.
- всё лениво. Ленивость - это же крутая концепция программирования, зачем её запрещать? В итоге ошибки проявляются тоже лениво.
Так получаем 4 класса ошибок, с каждым из которых я плотно пообщался, потратив на это немало часов своего времени. Оказывается, свобода - это не всегда хорошо. Поэтому я постоянно наращиваю «иммунитет» в виде всяческих проверок. Не все проверки помогают из-за ленивости. Код проверок уже сопоставим по объёму с собственно кодом приложения. Вместе с этим уходит и гибкость, присущая системе Mathematica, и падает производительность программы, т.к. гибкий и некомпилируемый язык изначально медленный, а тут на него ещё навешивают проверки.
Исправление den73, :
где грань в динамики, за которую нельзя заходить?
Всё зависит от конкретного случая, но компиляция нужна - это инструмент, который делает гигантский объём рутинной работы вместо тебя.
Я вот сейчас дорабатываю не очень большую (100-200кб) программу на старой версии Mathematica. Вот где полная динамика и полный ад. Всё можно:
- можно определить функцию с 4 аргументами, а вызвать с 5. Никакого предупреждения не будет выдано, ведь ты вправе вызвать функцию до того, как она определена, доопределять по ходу дела и у тебя есть ovelroad.
- можно определить функцию, а через две строчки определить её снова. Никакого предупреждения не будет выдано, т.к. ты вправе это сделать.
- можно вызвать функцию, которая вовсе не определена
- всё лениво. Ленивость - это же крутая концепция программирования, зачем её запрещать? В итоге ошибки проявляются тоже лениво.
Так получаем 4 класса ошибок, с каждым из которых я плотно пообщался, потратив на это немало часов своего времени. Оказывается, свобода - это не всегда хорошо. Поэтому я постоянно наращиваю «иммунитет» в виде всяческих проверок. Не все проверки помогают из-за ленивости. Код проверок уже сопоставим по объёму с собственно кодом приложения. Вместе с этим уходит и гибкость, присущая системе Mathematica, и падает производительность программы, т.к. гибкий и некомпилируемый язык изначально медленный, а тут на него ещё навешивают проверки.
Исходная версия den73, :
где грань в динамики, за которую нельзя заходить?
Всё зависит от конкретного случая, но компиляция нужна - это инструмент, который делает гигантский объём рутинной работы вместо тебя.
Я вот сейчас дорабатываю не очень большую (100-200кб) программу на старой версии Mathematica. Вот где полная динамика и полный ад. Всё можно:
- можно определить функцию с 4 аргументами, а вызвать с 5. Никакого предупреждения не будет выдано, ведь ты вправе вызвать функцию до того, как она определена, доопределять по ходу дела и у тебя есть ovelroad. - можно определить функцию, а через две строчки определить её снова. Никакого предупреждения не будет выдано, т.к. ты вправе это сделать. - можно вызвать функцию, которая вовсе не определена - всё лениво. Ленивость - это же крутая концепция программирования, зачем её запрещать? В итоге ошибки проявляются тоже лениво.
Так получаем 4 класса ошибок, с каждым из которых я плотно пообщался, потратив на это немало часов своего времени. Оказывается, свобода - это не всегда хорошо. Поэтому я постоянно наращиваю «иммунитет» в виде всяческих проверок. Не все проверки помогают из-за ленивости. Код проверок уже сопоставим по объёму с собственно кодом приложения. Вместе с этим уходит и гибкость, присущая системе Mathematica, и падает производительность программы, т.к. гибкий и некомпилируемый язык изначально медленный, а тут на него ещё навешивают проверки.
Вот тебе пример того, к чему приводит твой вопрос.