Сообщение Re[10]: Про типы и логику от 05.03.2015 9:19
Изменено 10.03.2015 13:54 Mamut [ищите в других сетях]
M>>Тут рядом Evgeny.Panasyuk утверждал, что в моем случае стат. типизация бессмысленна именно потому что все проверки были перенесены в одну функцию ![](/Forum/Images/biggrin.gif)
EP>Перенесены в функцию у которой нет соответствующих предусловий.
![](/Forum/Images/biggrin.gif)
EP>Если предусловия всё-таки есть, а внутренние проверки это всего лишь defensive programming, а отнюдь не разветвление в соответствии с контрактом функции — то смысл есть.
Специально для тебя терпеливо, как ребенку объясняю:
У тебя было:
Тут ты говоришь: «ах-ах-ах, предусловия, как стат. типизация помогает-то!»
Делаем простой фокус, следи за руками:
Ой. Ничего не изменилось. Все условия на месте. Но только ВНЕЗАПНО «не, не имеет смысла».
При том, что jazzer и alex_public и AlexRK наперебой утверждают, что нет, имеет смыл![](/Forum/Images/xz.gif)
M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,
EP>std::chrono
Не суть важно.
M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)
EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.
Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко![](/Forum/Images/xz.gif)
![](/Forum/Images/biggrin.gif)
EP>Перенесены в функцию у которой нет соответствующих предусловий.
![](/Forum/Images/biggrin.gif)
EP>Если предусловия всё-таки есть, а внутренние проверки это всего лишь defensive programming, а отнюдь не разветвление в соответствии с контрактом функции — то смысл есть.
Специально для тебя терпеливо, как ребенку объясняю:
У тебя было:
function a(){ | function a(){ |
| |
if | if |
if | if |
if | if |
if | if |
| |
| |
x() | x() |
| |
} | } |
Тут ты говоришь: «ах-ах-ах, предусловия, как стат. типизация помогает-то!»
Делаем простой фокус, следи за руками:
function a(){ | function a(){ | function b(){ |
| | |
b() | b() | if |
| | if |
| | if |
| | if |
| | |
| | |
| | x() |
| | |
} | } | } |
Ой. Ничего не изменилось. Все условия на месте. Но только ВНЕЗАПНО «не, не имеет смысла».
При том, что jazzer и alex_public и AlexRK наперебой утверждают, что нет, имеет смыл
![](/Forum/Images/xz.gif)
M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,
EP>std::chrono
Не суть важно.
M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)
EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.
Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко
![](/Forum/Images/xz.gif)
Re[10]: Про типы и логику
M>>Тут рядом Evgeny.Panasyuk утверждал, что в моем случае стат. типизация бессмысленна именно потому что все проверки были перенесены в одну функцию ![](/Forum/Images/biggrin.gif)
EP>Перенесены в функцию у которой нет соответствующих предусловий.
![](/Forum/Images/biggrin.gif)
EP>Если предусловия всё-таки есть, а внутренние проверки это всего лишь defensive programming, а отнюдь не разветвление в соответствии с контрактом функции — то смысл есть.
Специально для тебя терпеливо, как ребенку объясняю:
У тебя было:
Тут ты говоришь: «ах-ах-ах, предусловия, как стат. типизация помогает-то!»
Делаем простой фокус, следи за руками:
Ой. Ничего не изменилось. Все условия на месте. Но только ВНЕЗАПНО «не, не имеет смысла».
При том, что jazzer и alex_public и AlexRK наперебой утверждают, что нет, имеет смыл![](/Forum/Images/xz.gif)
M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,
EP>std::chrono
Не суть важно.
M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)
EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.
Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко![](/Forum/Images/xz.gif)
![](/Forum/Images/biggrin.gif)
EP>Перенесены в функцию у которой нет соответствующих предусловий.
![](/Forum/Images/biggrin.gif)
EP>Если предусловия всё-таки есть, а внутренние проверки это всего лишь defensive programming, а отнюдь не разветвление в соответствии с контрактом функции — то смысл есть.
Специально для тебя терпеливо, как ребенку объясняю:
У тебя было:
function a(){ | function b(){ |
| |
if | if |
if | if |
if | if |
if | if |
| |
| |
x() | x() |
| |
} | } |
Тут ты говоришь: «ах-ах-ах, предусловия, как стат. типизация помогает-то!»
Делаем простой фокус, следи за руками:
function a(){ | function b(){ | function z(){ |
| | |
z() | z() | if |
| | if |
| | if |
| | if |
| | |
| | |
| | x() |
| | |
} | } | } |
Ой. Ничего не изменилось. Все условия на месте. Но только ВНЕЗАПНО «не, не имеет смысла».
При том, что jazzer и alex_public и AlexRK наперебой утверждают, что нет, имеет смыл
![](/Forum/Images/xz.gif)
M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,
EP>std::chrono
Не суть важно.
M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)
EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.
Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко
![](/Forum/Images/xz.gif)