Здравствуйте, jazzer, Вы писали:
J>>> (хотя математически сам компьютер — это КА, и соответственно все, что на нем работает, тоже КА),
VD>>Ой как интересно! С удовольствием послушаю о том какое состояние конечное у компьютера. J>В школу. Конечность автомата относится к конечности множества состояний.
Ага. Сходи обязательно. А то видно, что ты ее прогулял совсем. Это же твои слова "математически сам компьютер — это КА".
ЗЫ
Уровень данного разговора меня не удовлетворяет. Вернешься из школы, заходи еще раз.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Пока мне кто-нибудь не объяснит на пальцах, как можно разрулить ту ситуацию, которуя я описал, я не намерен тратить свое время на изучение этих теорем и работающих компиляторов с маргинальных языков. Это называется обыкновенным скептицизмом.
Нет. Это называется обыкновенным ламеризмом.
Есть теория.
Есть куча применений на практике.
Один Coq чего стоит. http://en.wikipedia.org/wiki/Coq
А ты даже пару небольший статей прочитать не можешь.
Да ты на этот флуд больше времене потратил.
PD>Хорош бы я был, если бы последовал твоему совету несколько лет назад и начал всерьез интересоваться Сингуларити. Мне эта затея с самого начала показалась несерьезной, так оно и оказалось. Хотя и работающий прототип был, и запустить можно было.
Если бы ты читал то что тебе пишут то понял бы две вещи:
1)Сингулярити изначально была исследовательской работы и практического будущего не имела.
2)Я сам много ругался по поводу кучи глупостей которые натворили авторы сингулярити. Но им простительно. Они ученые, а не инженеры.
PD>Ты объяснить не способен или не хочешь, ну и ладно. Сейчас jazzer пытается, посмотрим, что получится
Я тебе объяснял кучу раз. Вот буквально только что.
Здравствуйте, adontz, Вы писали:
A>Сингуларити... дай вспомнить.... Веб-сервер в 8 раз медленее на там же железе, 50Мб/с — максимальная пропускная способность TCP/IP стека и твои уверения, что безопасность не влияет на скорость. Нет, не интересно.
Откуда дровишки? Мне припоминается, что как раз в большинстве тестов она работала на уровне лучших результатов. И это при явной непотимизированности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, adontz, Вы писали:
A>>>Сингуларити... дай вспомнить.... Веб-сервер в 8 раз медленее на там же железе, 50Мб/с — максимальная пропускная способность TCP/IP стека и твои уверения, что безопасность не влияет на скорость. Нет, не интересно. WH>>Рома ты просто фееричен. Сравнивать вылизанную ОС и вылизанный веб сервер с экспериментальной системой...
A>Вот не надо ля-ля. Вылизать можно тормоза в раза в два, а 50Мбит/с, это тормоза в 20 раз и это архитектурные проблемы.
Ну, к примеру PegGrammar в релизе (с оптимизациями) где-то в 10 раз быстрее чем в дебаге (где оптимизации не используются). А если сравнивать его с ранними, неоптимизированными, версиями, то разница будет и по более. Так что 8 раз — это как раз совершенно реальный результат.
И все же. Откуда взята цифра 8?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
A>>Сингуларити... дай вспомнить.... Веб-сервер в 8 раз медленее на там же железе, 50Мб/с — максимальная пропускная способность TCP/IP стека и твои уверения, что безопасность не влияет на скорость. Нет, не интересно. VD>Откуда дровишки? Мне припоминается, что как раз в большинстве тестов она работала на уровне лучших результатов. И это при явной непотимизированности.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Но применимость такой идеи ничтожна, и по сути ограничивается именно таким примером, ну может, еще парочкой иных. А в том же примере с sqrt и положительными- неотрицательными и т.д. стоит лишь слегка его усложнить (например, разделить все множество не на 2 (положительные и неположительные), а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи.
Собственно твоя обычная реакция на все объяснения.
"Все фигня и на практике не применимо."
Самое забавное во всей этой истории, что jazzer зависимые типы не показал.
В полноценной системе этих ужасов, что ты тут напридумывал нет.
Но тебе же все равно.
Ты же не знания хочешь получить, а свою веру отстоять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>А ты даже пару небольший статей прочитать не можешь.
Не хочу.
PD>>Хорош бы я был, если бы последовал твоему совету несколько лет назад и начал всерьез интересоваться Сингуларити. Мне эта затея с самого начала показалась несерьезной, так оно и оказалось. Хотя и работающий прототип был, и запустить можно было. WH>Если бы ты читал то что тебе пишут то понял бы две вещи: WH>1)Сингулярити изначально была исследовательской работы и практического будущего не имела. WH>2)Я сам много ругался по поводу кучи глупостей которые натворили авторы сингулярити. Но им простительно. Они ученые, а не инженеры.
PD>>Ты объяснить не способен или не хочешь, ну и ладно. Сейчас jazzer пытается, посмотрим, что получится WH>Я тебе объяснял кучу раз. Вот буквально только что.
WH>И каков результат? WH>Полный игнор всего сказанного. WH>Каков смысл тратить усилия на того кто даже не слушает?
Ну и не трать. Тебя заставляют ? Ты же влез в эту дискуссию и ответил на какое-то мое сообщение, а не я. Мне вообще с тобой дискутировать совсем не интересно.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, jazzer, Вы писали:
PD>>>Нет. Мне доказывают, что можно сделать нечто, что позволит определить правильность порядка вызова функций без запуска программы, статически. Я привожу пример, когда ИМХО невозможно без запуска определить, правилен порядок или нет. Вот и все.
J>>Ну, просто порядок вызовов статически определить не проблема, правильно? См. Boost.Proto, например. J>>Т.е. отталкиваемся от того, что порядок узнать мы можем и проверить его тоже можем (оставим пока за скобками то, что в этом примитивном случае у тебя проверяющий код будет сравним с самим кодом).
PD>Порядок чего ? Вызовов в рантайме ? Проверяющий код будет при этом не сравним с самим кодом, а просто равен ему. И ничего тут не поможет.
Зависит от задачи. Вот обсужадемый пример с файлом — проверочный код совсем не равен вызываемому. http://www.rsdn.ru/forum/philosophy/4235576.1.aspx
PD>Вот пример, я его уже приводил
... PD>Можно ли определить, какая функция будет вызвана : DoX или DoY без этого проведения этого итерационного процесса в полном объеме ? Если бы это было возможно, математики человеку, которое такое решение бы предложил, при жизни памятник поставили.
Ты сводишь разговор к абсурду. Есть вычисления времени компиляции, а есть — рантаймовые. Если компилятор достаточно продвинутый, то вообще всю работу программы можно перенести на время компиляции, так что результирующая программа просто будет содержать print 42.
Если ты хочешь вообще все перенести на время компиляции — твое право, но это не значит, что это — единственный способ их использования, правда?
Опять же, см. пример с файлом, ссылка выше.
А то разговор ни о чем получается, я тебе: "Есть задачи, которые можно решить вот так за линейное время", а ты мне: "А вот есть задача коммивояжера, ну-ка реши мне ее за линейное время, я тебе памятник поставлю тогда!"
PD>И в моем примере с sqrt вопрос не в том, должен ли быть аргумент sqrt положительным. Вопрос в другом — правильно ли я задал порядок действий. PD>Тут все аргументы годятся , и этот код никаких исключений вызвать не должен. Но правильно ли я его написал ? Может, надо было написать if(x<0) ? И ты берешься в compile-time без тестирования сказать, правильно или нет ?
Чтобы определить, правильно ли ты задал порядок действий, тебе надо где-то этот правильный порядок действий описать, не?
Т.е. ты должен предъявить компилятору правильный порядок и актуальный, чтоб компилятор мог проверить.
Можно, как ты это делаешь, свести все к абсурду и дать компилятору правильную программу, а потом ее же еще раз, и попросить сравнить.
Ценность этой проверки будет равна нулю, очевидно, потому что сложность реализации эталона (и как следствие, ошибкоёмость) равна сложности написания самой программы, которая должна соответствовать этому эталону.
Подобные проверки имеет смысл делать, когда проверяющий код гораздо легче верифицировать, чем целевой код. В твоем примере они равны.
PD>Но применимость такой идеи ничтожна, и по сути ограничивается именно таким примером, ну может, еще парочкой иных.
В примере с WinAPI проверяется всего ничего, поэтому идея и работает. Ровно в соответствии с тем, что я сказал выше.
С тем же файлом — стоит задача не проверить вообще все, а только то, что некторые методы не вызываются до/после других.
Хотя, ессно, можно написать код, который верифицировать нельзя, типа вызывать все функции по рэндому.
PD>А в том же примере с sqrt и положительными- неотрицательными и т.д. стоит лишь слегка его усложнить (например, разделить все множество не на 2 (положительные и неположительные), а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи.
Ты веришь в Пролог? Или любой другой решатель логических систем? А теперь возьми язык, у которого подобный решатель встроен непосредственно в компилятор и есть средства задавать систему ограничений/отношений — и никакого хаоса не будет, как его нет в Прологе, хоть ты там сто интервалов сделай.
Естественно, это не С++ и прочие шарпы.
PD>Меня сомнение гложет — в правильном порядке я функции вызываю или нет в Func ?. Может, надо было наоборот ? 2 теста в рантайме дадут вполне определенный ответ.
Этот пример несколько нерелевантен тому, что я предлагаю
Тут нет интерфейса с фиксированным протоколом, исполнение которого надо контролировать, соответственно нету относительно чего контролировать правильность вызовов. Естественно, что компилятор не может подсказать тебе, правильно ли ты вызываешь функции или нет.
Здравствуйте, Pavel Dvorkin, Вы писали:
WH>>А ты даже пару небольший статей прочитать не можешь. PD>Не хочу.
ЧТД.
Ты сюда пришёл не за знаниями, а для того чтобы свою веру отстаивать.
PD>Ну и не трать. Тебя заставляют ? Ты же влез в эту дискуссию и ответил на какое-то мое сообщение, а не я. Мне вообще с тобой дискутировать совсем не интересно.
А я не на тебя время трачу.
Проблема в том, что воинствующий невежда, уверенный в своей правоте может просто передавить нормальных людей с недостатком знаний.
А это уже прямой вред посетителям сайта.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, VladD2, Вы писали:
VD>AST для этого должно быть типизированным.
Конечно.
VD>О том, что надо сделать в немерел я тут говорил где-то рядом. Нужно добавить пару событий в компилятор которые позволят вмешаться в процесс обработки типизированного АСТ на последних стадиях. Это не будет макросом, но конечно же будет похожим на них.
Я полагаю, что мы друг друга вполне поняли
Здравствуйте, adontz, Вы писали:
A>>>Сингуларити... дай вспомнить.... Веб-сервер в 8 раз медленее на там же железе, 50Мб/с — максимальная пропускная способность TCP/IP стека и твои уверения, что безопасность не влияет на скорость. Нет, не интересно. VD>>Откуда дровишки? Мне припоминается, что как раз в большинстве тестов она работала на уровне лучших результатов. И это при явной непотимизированности.
A>Из статьи про сингуларити на этом сайте.
А можно цитату?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, jazzer, Вы писали:
J>Меня тоже. На том и порешим. Спасибо, что предложил. С тобой все равно редко разговор конструктивным получается. К сожалению.
Да уж.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, jazzer, Вы писали:
PD>>Порядок чего ? Вызовов в рантайме ? Проверяющий код будет при этом не сравним с самим кодом, а просто равен ему. И ничего тут не поможет. J>Зависит от задачи. Вот обсужадемый пример с файлом — проверочный код совсем не равен вызываемому. J>http://www.rsdn.ru/forum/philosophy/4235576.1.aspx
Да, я это уже видкл. Твой подход с КА мне кажется верным.
PD>>Вот пример, я его уже приводил J>... PD>>Можно ли определить, какая функция будет вызвана : DoX или DoY без этого проведения этого итерационного процесса в полном объеме ? Если бы это было возможно, математики человеку, которое такое решение бы предложил, при жизни памятник поставили.
J>Ты сводишь разговор к абсурду. Есть вычисления времени компиляции, а есть — рантаймовые. Если компилятор достаточно продвинутый, то вообще всю работу программы можно перенести на время компиляции, так что результирующая программа просто будет содержать print 42. J>Если ты хочешь вообще все перенести на время компиляции — твое право, но это не значит, что это — единственный способ их использования, правда? J>Опять же, см. пример с файлом, ссылка выше.
Согласен. Я ведь простую вещь говорю. Разумееется, есть случаи, когда можно вынести эту проверку на этап компиляции. Но ИМХО это возможно при очень простой, чтобы не сказать примитивной логике задачи. Как только что-то посложнее — так сразу и не подходит. Я не против того, что иногда это может быть работоспособным, но едва ли ради этого надо огород городить. Если при сложной логике мы в рантайме все же разберемся, правильно или нет вызвали методы, то почему для простой логики надо это в компиле-тайм переносить, да еще при этом то ли новый язык создавать, то ли старый изменять. Чуть усложнится логика и все равно все прахом пойдет — у КА будет столько состояний, что никакой анализ в компиле-тайм не будет реально возможным.
J>А то разговор ни о чем получается, я тебе: "Есть задачи, которые можно решить вот так за линейное время", а ты мне: "А вот есть задача коммивояжера, ну-ка реши мне ее за линейное время, я тебе памятник поставлю тогда!"
Верно.
J>Чтобы определить, правильно ли ты задал порядок действий, тебе надо где-то этот правильный порядок действий описать, не? J>Т.е. ты должен предъявить компилятору правильный порядок и актуальный, чтоб компилятор мог проверить.
Ха! В том-то и дело. И это описание в сложном случае будет эквивалентно рантаймовскому исполнению. Вот возьми мой пример с итерацией. Описать прравило вызова DoX или DoY ? Пожалуйста. Если результат итерации > 0 — DoX, иначе DoY. И получаем перенос итерации в компиле-тайм. Да еще зависимость от всех возможных f .
J>Можно, как ты это делаешь, свести все к абсурду и дать компилятору правильную программу, а потом ее же еще раз, и попросить сравнить. J>Ценность этой проверки будет равна нулю, очевидно, потому что сложность реализации эталона (и как следствие, ошибкоёмость) равна сложности написания самой программы, которая должна соответствовать этому эталону.
Именно. Я об этом и говорю.
J>Подобные проверки имеет смысл делать, когда проверяющий код гораздо легче верифицировать, чем целевой код. В твоем примере они равны.
См. выше.
J>В примере с WinAPI проверяется всего ничего, поэтому идея и работает. Ровно в соответствии с тем, что я сказал выше. J>С тем же файлом — стоит задача не проверить вообще все, а только то, что некторые методы не вызываются до/после других. J>Хотя, ессно, можно написать код, который верифицировать нельзя, типа вызывать все функции по рэндому.
И не только по рандому. При достаточно сложной логике, при логике, зависящей от исходных данных — в общем случае тоже нельзя. Вот ты пример с файлом привел. А если я его модифицирую, вспомнив про права доступа. Мол, если не открыли с Full Access, то открыть с Read Only, а тогда, естественно, не писать, а писать все же надо, а для этого придется завести другой файл в другом каталоге, а там опять возможен Access Denied и т.д.
PD>>А в том же примере с sqrt и положительными- неотрицательными и т.д. стоит лишь слегка его усложнить (например, разделить все множество не на 2 (положительные и неположительные), а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи.
J>Ты веришь в Пролог? Или любой другой решатель логических систем?
Я верю (как я могу не верить!) в его существование, но я помню при этом, что т.н. вызов Японии миру (проект ЭВМ 5 поколения 80-х годов), напрочь провалившийся, намертво связан с Прологом. Не очень у него хорошая репутация.
>А теперь возьми язык, у которого подобный решатель встроен непосредственно в компилятор и есть средства задавать систему ограничений/отношений — и никакого хаоса не будет, как его нет в Прологе, хоть ты там сто интервалов сделай.
Боюсь, что применение этого решателя в компиляторе будет эквивалентно выполнению этой программы в рантайме. Ты меня в ad absurdum обвинил, ну а раз так, устрою я и впрямь ad absurdum. Берем чисто интерпретируемый язык, например, классический Бейсик, но расширенный синтаксический до приличного состояния. Где тут compile-time и где run-time ? Нет их. Есть time исполнения. И в рамках его и получится, что интерпретатор будет определять порядок действий (интерпретатор!), в зависимости от того, что он раньше проинтерпретировал. Весть процесс выполнения прогрмммы и есть эта самая интерпретация
Здравствуйте, WolfHound, Вы писали:
WH>ЧТД. WH>Ты сюда пришёл не за знаниями, а для того чтобы свою веру отстаивать.
Точнее , для того, чтобы высказывать свою точку зрения, даже если она не совпадает с чьей-то иной или даже лбщепринятой.
PD>>Ну и не трать. Тебя заставляют ? Ты же влез в эту дискуссию и ответил на какое-то мое сообщение, а не я. Мне вообще с тобой дискутировать совсем не интересно. WH>А я не на тебя время трачу. WH>Проблема в том, что воинствующий невежда, уверенный в своей правоте может просто передавить нормальных людей с недостатком знаний.
Добродетель, которая нуждается в защите, едва ли стоит того, чтобы ее защищать. (С) не помню чей.
WH>А это уже прямой вред посетителям сайта.
Какая трогательная забота о посетителях! Ну тогда продолжай ее и дальше.
PD>>Меня сомнение гложет — в правильном порядке я функции вызываю или нет в Func ?. Может, надо было наоборот ? 2 теста в рантайме дадут вполне определенный ответ. 0>Этот пример несколько нерелевантен тому, что я предлагаю 0>Тут нет интерфейса с фиксированным протоколом, исполнение которого надо контролировать, соответственно нету относительно чего контролировать правильность вызовов. Естественно, что компилятор не может подсказать тебе, правильно ли ты вызываешь функции или нет.