Здравствуйте, alex_public, Вы писали:
I>>Аналог это что бы и ссылка-указатель была и модификация состояния и синтаксис, как в С++ ?
_>Синтаксис не обязательно. )
let x = y + 10
Re[29]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Klapaucius, Вы писали:
K>Мы вроде бы говорили о принципах ФП? Ну, вот контролируемая мутабельность этим принципам не противоречит, она нормально встраивается в чистый код. Мутабельность может быть деталью реализации библиотеки, а код ее использующий — полностью идиоматическим.
Контролируемая (т.е. всякие там монады st/io) или же не явная, скрытая внутри языка? Если первое, то это не подходит. А вот второе было бы классно, но я таких языков что-то не знаю...
K>Такое — это какое? Имеется в виду контролируемая мутабельность? Она, разумеется, во всех чистых языках есть. Развитая система для контроля уникальности ссылок есть в Clean. Оптимизации, устраняющие промежуточные результаты, там где это возможно есть в GHC, для списков в стандартной библиотеке и пакете stream-fusion, для массивов в пакетах vector и repa. Вполне работающие.
Мы про конкретный пример говорили (кадры видео и набор комбинаций фильтрующих функций). Так вот, можем ли мы написать чистый (это принципиально естественно, иначе весь смысл теряется) код, который при этом осуществлял бы фильтрацию на месте? ) В том смысле, что код был бы в обычном стиле "всё копируем", но при этом компилятор разглядел бы что можно оптимизировать и превратил бы это всё в фильтрацию массива на месте.
Re[65]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
_>>Ты похоже вообще уже забыл о том, какая задача решалась в той дискуссии. Мы решали проблему "добавление optional в некий существующий код, без его модификации". I>Правильно и это значит, что нужна универсальная функция.
Ну покажи как ты решаешь данную задачу, если у тебя допустим есть такая функция. )
Re[49]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Klapaucius, Вы писали:
K>Погодите. Начали мы с того, что обобщенный код в плюсах нетипизирован. Вы заявили, что обобщенный код везде такой. Когда выяснилось, что это не так, вы заявили, что в плюсах он такой потому, что работает во время компиляции. Когда выяснилось, что тот же параметрический полиморфизм именно во время компиляции и работает, вы заявили, что работа во время компиляции может быть разная. Это, конечно, верно. И именно это и следовало бы обсудить подробнее. Но вы вдруг написали про то, что бывает метапрограммирование внешними средствами, а бывает — средствами языка. При чем тут это? Я запутался.
1. Я нигде не соглашался, что обобщённый код на C++ нетипизирован. Наоборот, я говорил что с этим никаких проблем нет.
2. Я утверждал, что нельзя реализовать одновременно и быстрый параметрический полиморфизм и раздельную компиляцию. В начале были какие-то непонятности насчёт Хаскеля в этой области (т.к. он позволяет и то и то, только не одновременно), но потом мы пришли к выводу, что в нём всё аналогично (правда не два крайних положения, а есть ещё и промежуточные), т.е. никаких чудес, как и в C++.
3. Разговор про метапрограммирование в D к теме обобщённого программирования имеет лишь косвенное отношение и является отклонением от темы, как я сам и указал ещё несколько сообщений назад.
Re[34]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, alex_public, Вы писали:
I>>Ну стало быть, согласно твоим словам, ты считаешь что Эрлан это другое название для С++, других объяснений нет
_>Нет) Я просто не пойму, почему ты считаешь, что факт существования каких-то аналогов MPI противоречит факту лидирующего положения MPI в программирование суперкомпьютеров и вычислительных кластеров.
Я не знаю, про какие ты супер-копмьютеры говоришь. В суперкомпьютерах бОльшей частью не С++, а какой нибудь фортран или вовсе питон. Фортран потому что никто не хочет переписывать сотни миллионов строчек кода, а питон потому, что программы на суперкомпьютерах обычное дело, работают меньше, чем пишутся.
Эта куча супер-компьютеров, которые реально существуют и их нет на рынке и никогда не будет, в них может быть всё что угодно и это ничего не доказывает — исследования, наблюдения за погодой и тд и тд и тд.
Здравствуйте, Klapaucius, Вы писали:
K>Я надеюсь, вы это все не всерьез пишете.
Я специально там подчёркивал, что речь про чистый код. Понятно, что в грязном монадном коде, который по сути является встроенным императивный подъязыком, это всё без проблем делается. Но в этом смысла как раз нет.
K>Да почему не имеет-то? Да, если не использовать мутабельные ссылки, то семантически наблюдаемой разницы между передачей по ссылке и копированием нет. Но эффективность реализации имеет критическое значение. Какой смысл в фиче, если ее нельзя использовать из-за неприемлимой тормознутости?
Я и говорил, что семантической разницы нет. Разница в том что нам надо править для достижения результата. Базовые принципы или же оптимизацию.
K>Это не так, потому что в декларативных языках есть, в основном, все то же самое, что и в императивных — только в более управляемом виде. Но, даже если и так — так что с того? Императивному языку не нужно это поддерживать в лямбдах? Как раз наоборот, нужно. И императивные языки с решенной UFP вроде C# поддерживают.
Всё очень просто: если чистый функциональный язык полностью обходится в своей работе копированием (возможно оптимизированным) вверх/вниз, то C++, тоже имеющий оптимизированное копирование вверх/вниз, без проблем должен решать все задачи ФП.
K>Чего непонятного-то? Я же объяснил. Этот самый "эффективный [=]" позволяет иметь сколько угодно "копий", а то, о чем вы говорите подразумевает только передачу, а не разделение.
Ну так это же используется только при передаче вверх (т.е. когда старая копия всё равно разрушается сразу). А передав вверх, мы можем уже дальше размножать как угодно обычным const&.
K>Целый парад инвалидов. А нормальной ссылки как не было — так и нет. Выбор хорош тогда, когда его можно не делать — есть хорошее решение по умолчанию, а какое-то другое решение нужно принимать в краевых ситуациях. На C++ же нормального решения по умолчанию нет, есть только краевые, и вдоль вот этих вот стенок "пространства решений" программисту и предлагается двигатся. В результате ФП для него будет не средством облегчения написания и поддержки кода, а цирком с конями в лучшем случае, и изощренной пыткой в остальных.
Как раз это всё без проблем работает, т.к. за исключением shared_ptr это всё встроенные средства самого языка (а не стандартной библиотеки) и соответственно удобно и красиво обрабатывается. А вот при попытке поработать с неконстантной ссылкой в Хаскеле, мы действительно видим инвалидный код. Причём он ещё не просто сам страшный, но и заражает всё вокруг, так что просто так не избавишься от эффектов.
Re[31]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
I>Я не знаю, про какие ты супер-копмьютеры говоришь. В суперкомпьютерах бОльшей частью не С++, а какой нибудь фортран или вовсе питон. Фортран потому что никто не хочет переписывать сотни миллионов строчек кода, а питон потому, что программы на суперкомпьютерах обычное дело, работают меньше, чем пишутся.
Не, сейчас там в основном C.
I>Эта куча супер-компьютеров, которые реально существуют и их нет на рынке и никогда не будет, в них может быть всё что угодно и это ничего не доказывает — исследования, наблюдения за погодой и тд и тд и тд.
Вообще то MPI работает не только для суперкомпьютеров, но и для любых кластеров. Более того, он не требуется обязательно специальной ОС и настройки кластера на таком уровне, а позволяет сам построить эффективный кластер на базе произвольной сети компьютеров, работающих под разными ОС.
I>А вот что происходит реально http://www.slideshare.net/max_posedon/world-of-tanks-27831490
Ага, ага. Особенно мне понравился последний слайд с их базовыми идеями: "синхронный подход везде где можно". )))
I>Всего ничего — самая массовая онлайн игра в реальном времени, и это Питон и немного С++. Последний рекорд, позавчера, 1.1КК пользователей одновременно
Да, да, заглядывал туда позавчера. ) По 4 минуты в бой собирало — ужас. )))
Re[33]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, alex_public, Вы писали:
I>>Я не знаю, про какие ты супер-копмьютеры говоришь. В суперкомпьютерах бОльшей частью не С++, а какой нибудь фортран или вовсе питон. Фортран потому что никто не хочет переписывать сотни миллионов строчек кода, а питон потому, что программы на суперкомпьютерах обычное дело, работают меньше, чем пишутся.
_>Не, сейчас там в основном C.
Там винигрет всего подряд.
I>>Эта куча супер-компьютеров, которые реально существуют и их нет на рынке и никогда не будет, в них может быть всё что угодно и это ничего не доказывает — исследования, наблюдения за погодой и тд и тд и тд.
_>Вообще то MPI работает не только для суперкомпьютеров, но и для любых кластеров. Более того, он не требуется обязательно специальной ОС и настройки кластера на таком уровне, а позволяет сам построить эффективный кластер на базе произвольной сети компьютеров, работающих под разными ОС.
И где исследования рынка ? "С++ реализация MPI занимает XX(>50) процентов рынка распределенных приложений"
Я в курсе. Странно, что люди решили писать как проще, а не как быстрее, и построили один из наиболее нагруженых игровых проектов.
I>>Всего ничего — самая массовая онлайн игра в реальном времени, и это Питон и немного С++. Последний рекорд, позавчера, 1.1КК пользователей одновременно
_>Да, да, заглядывал туда позавчера. ) По 4 минуты в бой собирало — ужас. )))
Перформанс здесь ни при чем. Это балансер так работает, алгоритм подбора команд кривой. 9й-10й левел практически без задержек, а 8й ни разу не дождался. Я за день вкинул примерно 50 боёв и ни разу не было проблемы с пингом или лагами.
Re[37]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
I>И где исследования рынка ? "С++ реализация MPI занимает XX(>50) процентов рынка распределенных приложений"
Я не писал про C++ ничего такого. Я писал именно про MPI. И уточнил ещё, что это родная техника для C/C++. )
I>Я в курсе. Странно, что люди решили писать как проще, а не как быстрее, и построили один из наиболее нагруженых игровых проектов.
На самом деле он у них самый нагруженный только по числу пользователей. Но т.к. бои все не больше чем по 30 человек, то оно очень сильно и без всяких напрягов распараллеливается. Т.е. грубо говоря, если мы сумели построить шуструю систему для одного боя, то дальнейший рост не так сложен.
А действительно самый нагруженный игровой проект, это вроде как EVE Online, т.к. там чуть ли не единый мир для всех игроков. Т.е. там тоже есть какое-то деление на регионы, но технически все игроки могут собраться в одном. И когда такое бывает, то она адски тормозит. ))) Ну это по слухам, я сам не играл в неё.
I>Перформанс здесь ни при чем. Это балансер так работает, алгоритм подбора команд кривой. 9й-10й левел практически без задержек, а 8й ни разу не дождался. Я за день вкинул примерно 50 боёв и ни разу не было проблемы с пингом или лагами.
Нормальный там балансер, это просто сами игроки такое устроили (не знаю почему, акция что ли какая-то была?). Я там видел в процессе ожидания расклад типа 8000 человек в очереди на 8-ом уровне и по 500 человек на остальных. Т.е. балансер тупо не успевал раскидать 8-ок. Но при этом надо отдать должное, работал без единого сбоя, просто медленно (ну так и онлайн был рекордный). Т.е. в целом у них система отличная сейчас.
Re[38]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, alex_public, Вы писали:
I>>И где исследования рынка ? "С++ реализация MPI занимает XX(>50) процентов рынка распределенных приложений"
_>Я не писал про C++ ничего такого. Я писал именно про MPI. И уточнил ещё, что это родная техника для C/C++. )
Какой то новый термин. Родная техника это когда для hello world нужны простыни кода ?
_>На самом деле он у них самый нагруженный только по числу пользователей. Но т.к. бои все не больше чем по 30 человек, то оно очень сильно и без всяких напрягов распараллеливается. Т.е. грубо говоря, если мы сумели построить шуструю систему для одного боя, то дальнейший рост не так сложен.
Шустрые системы для одного боя были еще в 90х и шота выходит, все кто ни брался, не знали твою истину. Так что ли ?
_>А действительно самый нагруженный игровой проект, это вроде как EVE Online, т.к. там чуть ли не единый мир для всех игроков. Т.е. там тоже есть какое-то деление на регионы, но технически все игроки могут собраться в одном. И когда такое бывает, то она адски тормозит. ))) Ну это по слухам, я сам не играл в неё.
Интересный аргумент — еще один Питон + немного С++.
I>>Перформанс здесь ни при чем. Это балансер так работает, алгоритм подбора команд кривой. 9й-10й левел практически без задержек, а 8й ни разу не дождался. Я за день вкинул примерно 50 боёв и ни разу не было проблемы с пингом или лагами.
_>Нормальный там балансер, это просто сами игроки такое устроили (не знаю почему, акция что ли какая-то была?). Я там видел в процессе ожидания расклад типа 8000 человек в очереди на 8-ом уровне и по 500 человек на остальных. Т.е. балансер тупо не успевал раскидать 8-ок. Но при этом надо отдать должное, работал без единого сбоя, просто медленно (ну так и онлайн был рекордный). Т.е. в целом у них система отличная сейчас.
И представь — это Питон, который такой тормозной против С++
Re[39]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
I>Какой то новый термин. Родная техника это когда для hello world нужны простыни кода ?
Это ты вообще о чём? )
I>Интересный аргумент — еще один Питон + немного С++.
Ты так говоришь, как будто бы это не два моих любимых языках. ))) Хотя да, D всё же на мой вкус лучше, но у него нет инфраструктуры...
I>И представь — это Питон, который такой тормозной против С++
Ну вообще то сайт и у нас на Питоне работает. ))) Так что я как-то не пойму что ты хочешь сказать этим. )
Re[40]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Ikemefula, Вы писали:
I>>Какой то новый термин. Родная техника это когда для hello world нужны простыни кода ?
_>Это ты вообще о чём? )
I>>Интересный аргумент — еще один Питон + немного С++.
_>Ты так говоришь, как будто бы это не два моих любимых языках. ))) Хотя да, D всё же на мой вкус лучше, но у него нет инфраструктуры...
Это очень интересные сведения. Наверное то хочешь сказать, что питон уже догнал С++ по производительности ?
I>>И представь — это Питон, который такой тормозной против С++
_>Ну вообще то сайт и у нас на Питоне работает. ))) Так что я как-то не пойму что ты хочешь сказать этим. )
Все ты понимаешь, только притворяешься, — и клиент и сервер eve online написаны в основном на питоне, точнее на stackless Python.
Re[30]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>В смысле? Возможно одновременное изменение/чтение одних и тех же данных из нескольких потоков — поэтому и вводится синхронизация.
"на ровном месте" означает "без нужды". Тут может быть три варианта:
1) Вы считаете, что ленивость не нужна.
2) Вы не поняли зачем это нужно. (вычеркиваем)
3) У вас есть идея получше, как обеспечить ту же функциональность.
Предполагаю, что правильный ответ — 1.
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[41]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
I>Это очень интересные сведения. Наверное то хочешь сказать, что питон уже догнал С++ по производительности?
Не) Даже pypy версия только отдалённо приближается к js(v8)/Java/C#, а в нормальном Питоне вообще мрак в этом смысле. ))) Но там, где мы его используем, скорость вообще не принципиальна.
I>Все ты понимаешь, только притворяешься, — и клиент и сервер eve online написаны в основном на питоне, точнее на stackless Python.
Ну я про это не в курсе, но если ты говоришь, то наверное так и есть. ) И что? )
Re[42]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, alex_public, Вы писали:
I>>Это очень интересные сведения. Наверное то хочешь сказать, что питон уже догнал С++ по производительности?
_>Не) Даже pypy версия только отдалённо приближается к js(v8)/Java/C#, а в нормальном Питоне вообще мрак в этом смысле. ))) Но там, где мы его используем, скорость вообще не принципиальна.
Опаньки ! И это, представь, не является препятствием для построения суперкомпьютера навроде evo online, который входит в top 500.
I>>Все ты понимаешь, только притворяешься, — и клиент и сервер eve online написаны в основном на питоне, точнее на stackless Python.
_>Ну я про это не в курсе, но если ты говоришь, то наверное так и есть. ) И что? )
Это показывает, что твои аргументы про С++ несостоятельны.
Re[43]: Есть ли вещи, которые вы прницпиально не понимаете...
Здравствуйте, Ikemefula, Вы писали:
I>Опаньки ! И это, представь, не является препятствием для построения суперкомпьютера навроде evo online, который входит в top 500.
Там вроде не суперкомпьютер, а просто жирный кластер. Суперкомпьютер они может и хотели бы, но это стоит совсем другие деньги. )))
I>Это показывает, что твои аргументы про С++ несостоятельны.
Ээээ какие аргументы? Я вообще не пойму с чем ты споришь последний день. ) Вроде бы всё началось с твоего утверждения, что функциональные языки имеют какие-то таинственные преимущества при создание распределённых программ. Тогда причём тут примеры с Питоном, который функциональный не более чем тот же C++?