Здравствуйте, Ikemefula, Вы писали:
WH>>Те ты хочешь, чтобы я тебе сделал дизайн глядя на тесты? I>Чуть ниже ты фактически показал, что ты не только в состоянии сделать это, но и знаешь приблизительное количество кода.
Я показал, что могу оценить размер данного куска кода. И больше ничего.
Проблема в том, что переписать только данный кусок кода бесполезно.
Чтобы type driven design заработал нужно переписать все.
Иначе получится байда типа опциональной "статической типизации" в некоторых языках.
А для этого нужно знать исходную постановку задачи.
Ибо с большой вероятностью я вообще использую иную вычислительную модель. Т.к. императивное ООП почти всегда не адекватно.
I>В строчках кода — так и есть. И все юнит-тесты обладают такой особенностью — код с тестами в несколько раз больше кода без этих тестов.
А код с типами и код без типов почти одинаковый.
Посмотри, что народ творит: http://goto.ucsd.edu/~rjhala/liquid/
I>Вобщем, суммируя, тебе нечего сказать кроме голословного "фактически убирая надобность в юнит-тестах полностью". На этом можно и закончить.
Больше, похоже, что ты быстренько сбежал в кусты, когда понял что жареным запахло.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>>>Те ты хочешь, чтобы я тебе сделал дизайн глядя на тесты? I>>Чуть ниже ты фактически показал, что ты не только в состоянии сделать это, но и знаешь приблизительное количество кода. WH> Я показал, что могу оценить размер данного куска кода. И больше ничего.
Это ты в кусты маршем ?
WH>Проблема в том, что переписать только данный кусок кода бесполезно. WH>Чтобы type driven design заработал нужно переписать все.
Здесь сразу отлуп ибо АПИ трогать нельзя.
WH>Иначе получится байда типа опциональной "статической типизации" в некоторых языках. WH>А для этого нужно знать исходную постановку задачи. WH>Ибо с большой вероятностью я вообще использую иную вычислительную модель. Т.к. императивное ООП почти всегда не адекватно.
Эдак придется переписывать весь продукт надо которым работала добрая сотня людей примерно 7 лет.
I>>Вобщем, суммируя, тебе нечего сказать кроме голословного "фактически убирая надобность в юнит-тестах полностью". На этом можно и закончить. WH>Больше, похоже, что ты быстренько сбежал в кусты, когда понял что жареным запахло.
Не, в кусы ты сам полез когда начал спрыгивать на свои задачки.
Здравствуйте, Ikemefula, Вы писали:
WH>>Проблема в том, что переписать только данный кусок кода бесполезно. WH>>Чтобы type driven design заработал нужно переписать все. I>Здесь сразу отлуп ибо АПИ трогать нельзя.
При дизайне с нуля?
I>Эдак придется переписывать весь продукт надо которым работала добрая сотня людей примерно 7 лет.
Ну, так изначально выбрали кривой инструмент.
Теперь мучайтесь.
I>Не, в кусы ты сам полез когда начал спрыгивать на свои задачки.
Какие свои задачки?
Ты пойми одну простую вещь: Разница между типизацией в C# и например liquid types примерно такая же как разница между типизацией в жабаскрипте и в C#.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WH>Ты пойми одну простую вещь: Разница между типизацией в C# и например liquid types примерно такая же как разница между типизацией в жабаскрипте и в C#.
Здравствуйте, Mamut, Вы писали:
WH>>Ты пойми одну простую вещь: Разница между типизацией в C# и например liquid types примерно такая же как разница между типизацией в жабаскрипте и в C#. M>http://rsdn.ru/forum/philosophy/4270550.aspx
в чистом виде
Вот весь ты в этом.
Разоряешься тут на тему цитируемых статей. А когда получаешь ссылку не только на статью но и на работающий код начинаешь скулить об элитизме.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WH>>>Ты пойми одну простую вещь: Разница между типизацией в C# и например liquid types примерно такая же как разница между типизацией в жабаскрипте и в C#. M>>http://rsdn.ru/forum/philosophy/4270550.aspx
в чистом виде WH>Вот весь ты в этом. WH>Разоряешься тут на тему цитируемых статей. А когда получаешь ссылку не только на статью но и на работающий код начинаешь скулить об элитизме.
Ты не понял Читай то, что я написал про элитизм еще раз, потом еще раз, а потом еще раз. Авось дойдет (хотя я уже сильно в этом сомневаюсь).
Когда с тобой начинаешь разговаривать о чем либо, ты всегда идешь по строго одному и тому же пути:
— максимально общее заявление
— на вопрос, а где это справедливо, ты сужаешь заявление до некоторого класса языков
— на вопрос, к каким языкам это применимо (или на справедливое замечание, что к существующим языкам это может быть неприменимо) ты показываешь ровно один экспериментальный язык, который обычно интересен только с академической точки зрения или просто никому не нужен даже даром (последние два таких языка — это Nemerle и Ur, а теперь к ним добавилась — академ-реализация liquid types для Haskell/OCaml).
При том, что, быть может, оно все и хорошо и прекрасно — но только и строго сугубо в теории. Теория хороша — но только в теории.
Здравствуйте, Mamut, Вы писали:
M>При том, что, быть может, оно все и хорошо и прекрасно — но только и строго сугубо в теории. Теория хороша — но только в теории.
Работающий компилятор это практика. И с этим ты ничего не сделаешь.
Ты тут всеми силами пытаешься защитить свои любимые язычки. Прим единственное, что ты можешь придумать, это повесить на другой язык ярлык типа: "экспериментальный язык, который обычно интересен только с академической точки зрения или просто никому не нужен даже даром".
Для человека, который требует рецензируемую статью для подтверждения любых слов, мягко говоря, странное поведение.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Чем конкретно чревата разработка сложных проектов на PHP
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Ikemefula, Вы писали:
WH>>>Проблема в том, что переписать только данный кусок кода бесполезно. WH>>>Чтобы type driven design заработал нужно переписать все. I>>Здесь сразу отлуп ибо АПИ трогать нельзя. WH>При дизайне с нуля?
На это был даден ответ, чуть ниже.
I>>Эдак придется переписывать весь продукт надо которым работала добрая сотня людей примерно 7 лет. WH>Ну, так изначально выбрали кривой инструмент. WH>Теперь мучайтесь.
Да, и вся индустрия теперь мучается вместе с нами
I>>Не, в кусы ты сам полез когда начал спрыгивать на свои задачки. WH>Какие свои задачки?
Те, на которые ты дал ссылку.
WH>Ты пойми одну простую вещь: Разница между типизацией в C# и например liquid types примерно такая же как разница между типизацией в жабаскрипте и в C#.
На простых примерах, особенно АТД, все и ежу понятно. Потому если у тебя ничего кроме того, что по ссылке нет, можно и закончить.
M>>При том, что, быть может, оно все и хорошо и прекрасно — но только и строго сугубо в теории. Теория хороша — но только в теории. WH>Работающий компилятор это практика. И с этим ты ничего не сделаешь.
Уже лет тридцать, как работающий компилятор — это не повод для гордости.
WH>Ты тут всеми силами пытаешься защитить свои любимые язычки. Прим единственное, что ты можешь придумать, это повесить на другой язык ярлык типа: "экспериментальный язык, который обычно интересен только с академической точки зрения или просто никому не нужен даже даром".
Нет, я не защищаю «любимые языки». Твоя любимая фраза — «в статически типизированных языках то-то и то-то». А как спросишь тебя про C++/Java/C# — сразу начинается, то у них типы не те, то еще что-то не то, и все скатывается... правильно к каким-то теоретическим изысканиям в языках, которые никому даром не нужны.
WH>Для человека, который требует рецензируемую статью для подтверждения любых слов, мягко говоря, странное поведение.
Поведение абсолютно нормальное. В данном случае я просто описываю наблюдаемое поведение.
Здравствуйте, Mamut, Вы писали:
M>>>При том, что, быть может, оно все и хорошо и прекрасно — но только и строго сугубо в теории. Теория хороша — но только в теории. WH>>Работающий компилятор это практика. И с этим ты ничего не сделаешь. M>Уже лет тридцать, как работающий компилятор — это не повод для гордости.
То есть работающий компилятор это теория? Я тебя правильно понял?
M>Нет, я не защищаю «любимые языки». Твоя любимая фраза — «в статически типизированных языках то-то и то-то». А как спросишь тебя про C++/Java/C# — сразу начинается, то у них типы не те, то еще что-то не то, и все скатывается... правильно к каким-то теоретическим изысканиям в языках, которые никому даром не нужны.
Так я давно говорю, что динамисты способны защитить динамику только на фоне говностатики типа той что ты перечислил.
Как только показываешь вам, что-то более умное так сразу начинается скулеж на тему что это никому не нужно...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
M>>>>При том, что, быть может, оно все и хорошо и прекрасно — но только и строго сугубо в теории. Теория хороша — но только в теории. WH>>>Работающий компилятор это практика. И с этим ты ничего не сделаешь. M>>Уже лет тридцать, как работающий компилятор — это не повод для гордости. WH>То есть работающий компилятор это теория? Я тебя правильно понял?
То есть гордится работающим компилятором для проверки каких-либо идей прекратили еще лет тридцать тому назад.
M>>Нет, я не защищаю «любимые языки». Твоя любимая фраза — «в статически типизированных языках то-то и то-то». А как спросишь тебя про C++/Java/C# — сразу начинается, то у них типы не те, то еще что-то не то, и все скатывается... правильно к каким-то теоретическим изысканиям в языках, которые никому даром не нужны. WH>Так я давно говорю, что динамисты способны защитить динамику только на фоне говностатики типа той что ты перечислил. WH>Как только показываешь вам, что-то более умное так сразу начинается скулеж на тему что это никому не нужно...
Не скулеж, а справедилвое замечание, что твои общие фразы про статику справедливы только для очень малого количества языков, исчесляемого от одного до трех.
Беганьем в кусты и скулежом занимаешься только ты. По схеме, описанной мной уже дважды (тут
Повторю: ты постоянно делаешь максимально общие заявления про статически типизированные языки вообще при ближайшем рассмотрении ты тут же поджимаешь хвост и начинаешь рассказывать про «нет, это все не так, вы все не понимаете, я говорил исключительно про Nemerle/Ur/академ. работы».
Вот если бы ты начинал свои заявления со слов «существуют/возможны такие реализации статически-типизированных языков, в которых справедливо то-то и то-то», тебе бы никто слова поперек не сказал.
I>Хочется узнать, как система типов даст возможность отказаться от таких вот тестов.
тесты заменяются на тотальную проверку инвариантов.
в данном случае видно, что тесты пытаются точечно проверить два инварианта:
1. флаги обрабатываются независимо друг от друга (или другими словами: изменение одного флага не меняет состояние других флагов),
2. все флаги обрабатываются единообразно(для массовых функций)
эти общие инварианты можно автоматически (или руками) уточнить до инварианта входа/выхода каждой функции.
замена тестов на инварианты позволяет:
во-первых, уменьшить объем тестового кода
во-вторых, добиться полноты проверки
в-третьих, ускорить время проверки валидности кода