Информация об изменениях

Сообщение Re[10]: Про типы и логику от 05.03.2015 9:19

Изменено 05.03.2015 20:42 Mamut [ищите в других сетях]

M>>Тут рядом Evgeny.Panasyuk утверждал, что в моем случае стат. типизация бессмысленна именно потому что все проверки были перенесены в одну функцию

EP>Перенесены в функцию у которой нет соответствующих предусловий.




EP>Если предусловия всё-таки есть, а внутренние проверки это всего лишь defensive programming, а отнюдь не разветвление в соответствии с контрактом функции — то смысл есть.


Специально для тебя терпеливо, как ребенку объясняю:

У тебя было:


function a(){    | function a(){    | 
                 |                  |
   if            |    if            |  
   if            |    if            | 
   if            |    if            | 
   if            |    if            | 
                 |                  |
                 |                  |
   x()           |    x()           |
                 |                  |
}                | }                |



Тут ты говоришь: «ах-ах-ах, предусловия, как стат. типизация помогает-то!»

Делаем простой фокус, следи за руками:


function a(){    | function a(){    |  function b(){    | 
                 |                  |                   |
   b()           |                  |     if            |  
                 |                  |     if            | 
                 |                  |     if            | 
                 |                  |     if            | 
                 |                  |                   |
                 |                  |                   |
                 |                  |     x()           | 
                 |                  |                   |
}                | }                | }                 |



Ой. Ничего не изменилось. Все условия на месте. Но только ВНЕЗАПНО «не, не имеет смысла».

При том, что jazzer и alex_public и AlexRK наперебой утверждают, что нет, имеет смыл


M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,

EP>std::chrono

Не суть важно.

M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)


EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.


Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко
M>>Тут рядом Evgeny.Panasyuk утверждал, что в моем случае стат. типизация бессмысленна именно потому что все проверки были перенесены в одну функцию

EP>Перенесены в функцию у которой нет соответствующих предусловий.




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 наперебой утверждают, что нет, имеет смыл


M>>Опять же, рядом где-то на сотой странице обсуждений смогли осилить только boost timer,

EP>std::chrono

Не суть важно.

M>>где афинные преобразования применяются (я, правда, не понял, в чем именно там проявляется мощь стат. типизации, ну да ладно)


EP>В аффинном пространстве есть точки и векторы. Складывать две точки нельзя, разница двух точек это вектор, сумма точки и вектора — точка, линейная комбинация векторов — вектор. Статическая типизация, помимо всего прочего, позволяет закодировать эту логику и проверять её во время компиляции.


Ну в общем это все упирается только в «если у нас все абсолютно доступно во время компиляции». Да, это приятно, не скрою. Но нам, например, от этого ни холодно ни жарко