Singularity выдала 91 операцию в секунду при взвешенной средней пропускной способности в 362 Kбит/с. Web-сервер IIS, выполняемый под управлением Windows 2003 на идентичной аппаратуре, выдает 761 операцию в секунду при взвешенной средней пропускной способности в 336 Kбит/с.
Сетевой стек Singularity, наоборот, не является узким местом, и может поддерживать пропускную способность в 48Mбит/сек.
Статья старая, но даже по тогдашним меркам производительность просто нелепая. В обсуждении (не очень большом) это обсосано.
(поскипал то, в чем мы оба согласны)
PD>Ха! В том-то и дело. И это описание в сложном случае будет эквивалентно рантаймовскому исполнению.
Ирония в том, что в чрезмерно простых случаях они тоже будут эквивалентны.
PD>Вот возьми мой пример с итерацией. Описать прравило вызова DoX или DoY ? Пожалуйста. Если результат итерации > 0 — DoX, иначе DoY. И получаем перенос итерации в компиле-тайм. Да еще зависимость от всех возможных f .
Нет, тут же у тебя один и тот же код, так что достаточно того, что скомпилируется мой if_positive из предыдущего письма. А вот если у тебя правило "функция всегда должна находить правильный корень" — тогда да, придется все вынести в компиляцию.
PD>При достаточно сложной логике, при логике, зависящей от исходных данных — в общем случае тоже нельзя.
Да в общем случае ничего нельзя В общем случае задача останова не решаема
Только нас интересеют не общий случай, а вполне конкретные частные.
И все разнообразие методов и подходов в программировании лежит именно в разнообразии частностей.
А зависимость от исходных данных — ну так она у меня есть, в виде знака этих самых исходных данных.
J>>Ты веришь в Пролог? Или любой другой решатель логических систем?
PD>Я верю (как я могу не верить!) в его существование, но я помню при этом, что т.н. вызов Японии миру (проект ЭВМ 5 поколения 80-х годов), напрочь провалившийся, намертво связан с Прологом. Не очень у него хорошая репутация.
Слушай, при твоем опыте программирования, и обвинять в неудаче проекта (причем уровня "вызов миру") язык?
>>А теперь возьми язык, у которого подобный решатель встроен непосредственно в компилятор и есть средства задавать систему ограничений/отношений — и никакого хаоса не будет, как его нет в Прологе, хоть ты там сто интервалов сделай.
PD>Боюсь, что применение этого решателя в компиляторе будет эквивалентно выполнению этой программы в рантайме.
Это всецело зависит от того, сколько ты хочешь отдать компилятору на контроль. Если всю программу — тогда да, будет вся программа.
Как и везде, нужен баланс.
ЗЫ. Мой учитель по вычматам любил говорить, что для большинства интересных численных моделей строгое обоснование модели эквивалентно аналитическому решению самой исходной задачи.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD> а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи.
Если на каждый чих делать по типу, то наверное да, а если можно будет создавать анонимные типы с ограничениями?
float[<0] Minus(float[>0] f)
Получили что то похожее на компилятора френдли контракты. Или вы в пользу DbC тоже не верите?
PD>>Ха! В том-то и дело. И это описание в сложном случае будет эквивалентно рантаймовскому исполнению. J>Ирония в том, что в чрезмерно простых случаях они тоже будут эквивалентны.
+1
J>>>Ты веришь в Пролог? Или любой другой решатель логических систем?
PD>>Я верю (как я могу не верить!) в его существование, но я помню при этом, что т.н. вызов Японии миру (проект ЭВМ 5 поколения 80-х годов), напрочь провалившийся, намертво связан с Прологом. Не очень у него хорошая репутация.
J>Слушай, при твоем опыте программирования, и обвинять в неудаче проекта (причем уровня "вызов миру") язык?
А я и не обвинял. Просто уж так получилось, что он намертво связан с этим провалившимся проектом. То ли он украл, то ли у него украли...
>>>А теперь возьми язык, у которого подобный решатель встроен непосредственно в компилятор и есть средства задавать систему ограничений/отношений — и никакого хаоса не будет, как его нет в Прологе, хоть ты там сто интервалов сделай.
PD>>Боюсь, что применение этого решателя в компиляторе будет эквивалентно выполнению этой программы в рантайме. J>Это всецело зависит от того, сколько ты хочешь отдать компилятору на контроль. Если всю программу — тогда да, будет вся программа. J>Как и везде, нужен баланс.
J>ЗЫ. Мой учитель по вычматам любил говорить, что для большинства интересных численных моделей строгое обоснование модели эквивалентно аналитическому решению самой исходной задачи.
Здравствуйте, dotneter, Вы писали:
D>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>> а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи. D>Если на каждый чих делать по типу, то наверное да, а если можно будет создавать анонимные типы с ограничениями? D>float[<0] Minus(float[>0] f)
А давай типы с ограничениями. Паскаль беру потому, что они у него есть
type t_0_100 = 1..100;
type t_101_200 = 101..200;
type t_201_300 = 201..300;
type t_301_400 = 301..400;
// etc.
Выглядит симпатично. Например, температура воды должна быть в типе t_0_100, а некоего другого вещества- скажем, t_101_200. И т.д. Пока эти вещества сами по себе — все замечательно. Но однажды понадобится их раствор, а у него, скажем 25..180. И горело все это синим пламенем.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, dotneter, Вы писали:
D>>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>> а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи. D>>Если на каждый чих делать по типу, то наверное да, а если можно будет создавать анонимные типы с ограничениями? D>>float[<0] Minus(float[>0] f)
PD>А давай типы с ограничениями. Паскаль беру потому, что они у него есть
PD>Выглядит симпатично. Например, температура воды должна быть в типе t_0_100, а некоего другого вещества- скажем, t_101_200. И т.д. Пока эти вещества сами по себе — все замечательно. Но однажды понадобится их раствор, а у него, скажем 25..180. И горело все это синим пламенем.
Не совсем ясно в чем проблема, можно конкретную задачу с кодом?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Точнее , для того, чтобы высказывать свою точку зрения, даже если она не совпадает с чьей-то иной или даже лбщепринятой.
О чем я и говорю.
Ты пропагандируешь свою веру.
При этом игнорируя сотни статей в рецинзируемых журналах.
PD>Добродетель, которая нуждается в защите, едва ли стоит того, чтобы ее защищать. (С) не помню чей.
Это бред полнейший.
PD>Какая трогательная забота о посетителях! Ну тогда продолжай ее и дальше.
Обязательно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, dotneter, Вы писали:
PD>>Выглядит симпатично. Например, температура воды должна быть в типе t_0_100, а некоего другого вещества- скажем, t_101_200. И т.д. Пока эти вещества сами по себе — все замечательно. Но однажды понадобится их раствор, а у него, скажем 25..180. И горело все это синим пламенем. D>Не совсем ясно в чем проблема, можно конкретную задачу с кодом?
Ты попался на то о чем я написал тут
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Хорошо. Тогда так PD>if(bool) PD> { PD> Open; PD> Read; PD> Close; PD>} PD>else PD>{ PD> Read; PD> Close; PD> Open; PD>} PD>Можно оценить правильность в общем случае ?
Да, только я не понимаю, в чем тут смысл ветвления.
Выглядеть это будет примерно так:
var service = GetService();
if(bool)
{
service
.Open()
.Read()
.Close();
}
else
{
service
.Read() // Ошибка компиляции, тип ссылки service не содержит метода Read.
.Close()
.Open();
}
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А я и не обвинял. Просто уж так получилось, что он намертво связан с этим провалившимся проектом. То ли он украл, то ли у него украли...
J>>ЗЫ. Мой учитель по вычматам любил говорить, что для большинства интересных численных моделей строгое обоснование модели эквивалентно аналитическому решению самой исходной задачи.
PD>Именно. Можно и другие примеры предложить.
Ну вот. Но это же не значит, что численные методы плохи или что им нет полезных применений
Здравствуйте, dotneter, Вы писали:
D>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Здравствуйте, dotneter, Вы писали:
D>>>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>>> а, скажем, на 10-20 интервалов- и сразу вся эта затея превратится в необозримое чудовище. А если таких чудовищ будет с десяток (а это пустяки), то в этом хаосе уже никто не разберется. Я никак не могу поверить в серьезность подобной затеи. D>>>Если на каждый чих делать по типу, то наверное да, а если можно будет создавать анонимные типы с ограничениями? D>>>float[<0] Minus(float[>0] f)
PD>>А давай типы с ограничениями. Паскаль беру потому, что они у него есть
PD>>Выглядит симпатично. Например, температура воды должна быть в типе t_0_100, а некоего другого вещества- скажем, t_101_200. И т.д. Пока эти вещества сами по себе — все замечательно. Но однажды понадобится их раствор, а у него, скажем 25..180. И горело все это синим пламенем. D>Не совсем ясно в чем проблема, можно конкретную задачу с кодом?
Типы , описанные выше, будем считать существующими
procedure GetMixtureBoilingPoint(water percent, other_percent) : T
{
// код, вычисляющий температуру кипения этой смеси. В зависимости от процентов будет от 25 до 180)
}
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Точнее , для того, чтобы высказывать свою точку зрения, даже если она не совпадает с чьей-то иной или даже лбщепринятой. WH>О чем я и говорю. WH>Ты пропагандируешь свою веру. WH>При этом игнорируя сотни статей в рецинзируемых журналах.
Я много чего игнорирую. И факт рецензирования где бы то ни было для меня небольшой аргумент. Я все же научный сотрудник по образованию, а если бы научные сотрудники принимали в качестве вргумента то, что это где-то опубликовано и прорецензировано, наука превратилась бы в коллекцию мусора.
PD>>Добродетель, которая нуждается в защите, едва ли стоит того, чтобы ее защищать. (С) не помню чей. WH>Это бред полнейший.
Ну-ну... Аргументация, вполне достойная тебя.
PD>>Какая трогательная забота о посетителях! Ну тогда продолжай ее и дальше. WH>Обязательно.
Давай. Мое воспитание не позволяет мне не отвечать, когда ко мне обращаются, так что у тебя есть полная возможность использовать этот мой недостаток. Но оно вполне позволяет отвечать сколь угодно резко, разумееется, в рамках общепринятой морали и правил RSDN.
Здравствуйте, 0x7be, Вы писали:
0>Да, только я не понимаю, в чем тут смысл ветвления. 0>Выглядеть это будет примерно так: 0>
0>var service = GetService();
0>if(bool)
0>{
0> service
0> .Open()
0> .Read()
0> .Close();
0>}
0>else
0>{
0> service
0> .Read() // Ошибка компиляции, тип ссылки service не содержит метода Read.
Ну и зря он мне сообщает об ошибке. Дело в том, что при bool==false файл уже открыт, так как раньше (в совсем другом месте) пришлось выполнить предварительное чтение, а поэтому я решил, что не стоит файл закрывать, ибо знаю, что основное чтение делать вскоре придется - незачем тратить время на его закрытие и открытие заново.
0> .Close()
0> .Open();
0>}
0>
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>А я и не обвинял. Просто уж так получилось, что он намертво связан с этим провалившимся проектом. То ли он украл, то ли у него украли...
J>
J>>>ЗЫ. Мой учитель по вычматам любил говорить, что для большинства интересных численных моделей строгое обоснование модели эквивалентно аналитическому решению самой исходной задачи.
PD>>Именно. Можно и другие примеры предложить.
J>Ну вот. Но это же не значит, что численные методы плохи или что им нет полезных применений
Эк тебя
За дискуссию спасибо. В общем, это примерно то, чего я и хотел от своих оппонентов. Внятно, четко и без демагогии и обвинений.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Я много чего игнорирую. И факт рецензирования где бы то ни было для меня небольшой аргумент. Я все же научный сотрудник по образованию, а если бы научные сотрудники принимали в качестве вргумента то, что это где-то опубликовано и прорецензировано, наука превратилась бы в коллекцию мусора.
Это как минимум повод прочитать.
Ты не сделал даже этого.
PD>Ну-ну... Аргументация, вполне достойная тебя.
Я называю вещи своими именами.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Я много чего игнорирую. И факт рецензирования где бы то ни было для меня небольшой аргумент. Я все же научный сотрудник по образованию, а если бы научные сотрудники принимали в качестве вргумента то, что это где-то опубликовано и прорецензировано, наука превратилась бы в коллекцию мусора. WH>Это как минимум повод прочитать. WH>Ты не сделал даже этого.
Я же объяснил почему. Кстати, из дискуссии с jazzer все вполне выяснилось. Мое мнение осталось примерно тем же, что и было — применимо в некоторых простых случаях, для более сложных — неприменимо или столь усложнено, что попытка применить эквивалентна переносу рантайма в компиле-тайм. Так что для случаев, когда заведомо известно, что все будет не просто, а очень просто (вроде open-read-close, и ни шагу влево или вправо!) это может быть применимо, ну а если шаги вправо-влево хотя бы в принципе допустимы, то в итоге потратишь времени больше, чем если бы этим не заниматься.
PD>>Ну-ну... Аргументация, вполне достойная тебя. WH>Я называю вещи своими именами.
Только вот , еще раз, эта фраза не моя. Кажется, Маркса. Она довольно-таки хорошо известна. И твое отнесение ее к бреду выглядит, право слово, довольно комично, тем более без всякой аргументации.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Ну и зря он мне сообщает об ошибке. Дело в том, что при bool==false файл уже открыт, так как раньше (в совсем другом месте) пришлось выполнить предварительное чтение, а поэтому я решил, что не стоит файл закрывать, ибо знаю, что основное чтение делать вскоре придется — незачем тратить время на его закрытие и открытие заново.
Предлагаю на будущее сразу формулировать условие задачи целиком, что бы таких роялей в кустах не появлялось. Намного облегчит общение.
Касаемо новых условий примера, вот решение:
var service = GetSerive();
Optional<IMyFileRead> readService;
// Первая возможность открыть файл.if(условие предварительного чтения)
{
readService = service.Open(); // Открываем файл.
readService = readService.Read(); // Читаем предварительно.
}
...
// Вторая возможность открыть файл.if(!readService.HasValue) // Определяем, что файл раньше не открывался.
{
readService = service.Open(); // Открываем файл, если раньше не открывался.
}
// Основная работа с сервисом.
readService = readService.Read(); // Читаем.
readService.Close(); // Закрываем.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, dotneter, Вы писали:
D>>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>>Определи T D>>type T = 25..180 ?
PD>Именно. Немного усложнив ситуацию (я ведь и без того там еще 2 типа определил) и занявшись тройными системами, мы дойдем до полного хаоса.
Таr я же и написал что можно типы не определять