Здравствуйте, DelphiGuru, Вы писали:
DG>После недели детального изучения исходников STL я пришел к выводу, что ее можно реализовать при помощи чистого ООП. Что думают пишущие на Си++ об этом
Я тоже так думаю. Только уточни, что именно ты имеешь в виду.
Там где нужны большие скорости вычислений, реально C++ лажает или кто-то станет туда пихать шаблоны, перегрузки операторов, множественное наследование, с запутанными иногда вызовами виртуальных функций и т.п. чтобы потом задолбаться, профилируя узкие места?
Тогда уж для математики лучше вместо C++ использовать Ada.
Здравствуйте, DelphiGuru, Вы писали:
DG>После недели детального изучения исходников STL я пришел к выводу, что ее можно реализовать при помощи чистого ООП. Что думают пишущие на Си++ об этом
Можно ли в Армении построить коммунизм? Можно, но лучше в Грузии
а чистый ООП пусть живет где-нибудь в дельфях, нам в c++ такого счастья не надо
Здравствуйте, Michael7, Вы писали:
M>Да и Фортран в вычислениях до сих пор широко используется и не только для поддержки старого кода. Еще один минус C++ в этом случае — это Name mangling из-за чего усложняется использование C++-ных библиотек в других средах и даже просто других компиляторов.
офигеть. а типа в фортране этого нет?
M>Так что писать сугубо вычислительную часть на C++ неразумно.
Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, Sni4ok, Вы писали:
S>>в расчётах, где-же ещё.
M>C++ именно в расчетах, в которых критична скорость, совершенно не оправдан. Потому что как только речь заходит об оптимизации по скорости все высокоуровневые абстракции C++ применять нельзя.
А пацаны то и не знали сделали ublas с нативными байндами.
M> От C++ остается фактически только Си, который и используется в расчетах. Да и Фортран в вычислениях до сих пор широко используется и не только для поддержки старого кода. Еще один минус C++ в этом случае — это Name mangling из-за чего усложняется использование C++-ных библиотек в других средах и даже просто других компиляторов.
M>Так что писать сугубо вычислительную часть на C++ неразумно.
Здравствуйте, nullptr, Вы писали:
n> Можно ли в Армении построить коммунизм? Можно, но лучше в Грузии n> а чистый ООП пусть живет где-нибудь в дельфях, нам в c++ такого счастья не надо
Не наезжай на дельфю, нету там чистого ООП и небыло никогда
Здравствуйте, minorlogic, Вы писали:
M>>C++ именно в расчетах, в которых критична скорость, совершенно не оправдан. Потому что как только речь заходит об оптимизации по скорости все высокоуровневые абстракции C++ применять нельзя. M>А пацаны то и не знали сделали ublas с нативными байндами.
Ublas — медленная библиотека. А вот быстрая оптимизированная Sun Performance Library, тоже реализующая функционал BLAS, таки на фортране сделана. Как и Lapack, например.
M>>Так что писать сугубо вычислительную часть на C++ неразумно.
M>GIL, VIGRA, BGL на другие мысли не наводят ?
Не имел с ними дела, но беглый гуглеж показывает, что это отнюдь не эталон быстродействия.
Здравствуйте, Andrey.V.Lobanov, Вы писали:
M>>...Еще один минус C++ в этом случае — это Name mangling из-за чего усложняется использование C++-ных библиотек в других средах и даже просто других компиляторов. AVL>офигеть. а типа в фортране этого нет?
А что, в Фортране есть name mangling? А когда оно там появилось? В те времена, когда у меня в проекте исполняемый файл собирался из идущих вперемешку С- и фортрановских исходников, я ничего подобного не замечал.
M>>Так что писать сугубо вычислительную часть на C++ неразумно. AVL>
Может, и неразумно, но по той причине, что числодробилки на С читаются труднее, чем на Фортране. IMHO, разумеется.
Здравствуйте, Privalov, Вы писали:
M>>>...Еще один минус C++ в этом случае — это Name mangling из-за чего усложняется использование C++-ных библиотек в других средах и даже просто других компиляторов. AVL>>офигеть. а типа в фортране этого нет? P>А что, в Фортране есть name mangling? А когда оно там появилось? В те времена, когда у меня в проекте исполняемый файл собирался из идущих вперемешку С- и фортрановских исходников, я ничего подобного не замечал.
ну, lower/upper case и всякие подчёркивания (по разному в разных компиляторах — за подробностями хоть в вики) вполне за mangling пойдут
M>>>Так что писать сугубо вычислительную часть на C++ неразумно. AVL>> P>Может, и неразумно, но по той причине, что числодробилки на С читаются труднее, чем на Фортране. IMHO, разумеется.
в плане читаемости да, согласен. только я и не предполагал, что мы тут за читаемость говорим...
Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, minorlogic, Вы писали:
M>>>C++ именно в расчетах, в которых критична скорость, совершенно не оправдан. Потому что как только речь заходит об оптимизации по скорости все высокоуровневые абстракции C++ применять нельзя. M>>А пацаны то и не знали сделали ublas с нативными байндами.
M>Ublas — медленная библиотека. А вот быстрая оптимизированная Sun Performance Library, тоже реализующая функционал BLAS, таки на фортране сделана. Как и Lapack, например.
Я бы не назвал медленной, хотя и не близко к лидерам. Просто есть много моментов которые на голом C повторить довольно непросто. А для скорострельности Ublas предоставляет байнды к нихкоуровневым реализациям.
M>>>Так что писать сугубо вычислительную часть на C++ неразумно.
M>>GIL, VIGRA, BGL на другие мысли не наводят ?
M>Не имел с ними дела, но беглый гуглеж показывает, что это отнюдь не эталон быстродействия.
Здравствуйте, lazy_walrus, Вы писали:
_>Здравствуйте, Константин Л., Вы писали:
КЛ>>ну я. какая разница. предвосхищая вопросы — если чел пялился в исходники неделю и в 2011 задает такие вопросы и делает такие предположения, значит он зря потратил своё время
_>А почему зря? Человек с опытом программирования на Delphi изучил исходники STL, расширил свой кругозор, у него возникли понятные вопросы почему STL сделан так а не иначе, и нельзя ли сделать лучше.
подожди, ты всерьез считаешь, что после недельного изучения stl нормальный человек будет утверждать что (курсив мой, ибо а как иначе?)
ее можно реализовать при помощи чистого ООП не потеряв ничего в фичах и гибкости
?
Я считаю, что чел смотрел неделю и ничего в итоге не понял
Здравствуйте, Michael7, Вы писали:
M>>>C++ именно в расчетах, в которых критична скорость, совершенно не оправдан. Потому что как только речь заходит об оптимизации по скорости все высокоуровневые абстракции C++ применять нельзя. M>>А пацаны то и не знали сделали ublas с нативными байндами.
M>Ublas — медленная библиотека. А вот быстрая оптимизированная Sun Performance Library, тоже реализующая функционал BLAS, таки на фортране сделана. Как и Lapack, например.
SPL смотрится круто, но для таких библиотек характерна одна проблема: они требуют определённого расположения данных в памяти. Если весь расчёт можно сделать в рамках одной библиотеки, то это не проблема вообще, но если для других операция требуется иное расположение данных то потребуется их конвертация и копирование. В C++ же, благодаря шаблонам, возможно реализовать обобщённые алгоритмы, которые могут работать с различными структурами данных без полиморфизма времени исполнения. А механизм специализации шаблонов позволяет по итогам профилирования оптимизировать код с минимальными изменениями программы в целом.
1) Архитектура STL — это ФП переложенное на императив с помощью шаблонов.
2) Итераторы при всей похожести на указатели являются на самом деле замыканиями в чистом виде, используя терминологию ФП.
3) Из 2 следует, что итераторы, в принципе, можно определять и вне контейнера. Все, что нужно для создания итератора — это контейнер и тип хранимого в данном контейнере. И следовательно, итератор, указывающий на конец, в принципе не нужен, если мы все равно проверяем, то проверять надо в итераторе, указывающем начало.
Здравствуйте, DelphiGuru, Вы писали:
DG>3) Из 2 следует, что итераторы, в принципе, можно определять и вне контейнера. Все, что нужно для создания итератора — это контейнер и тип хранимого в данном контейнере. И следовательно, итератор, указывающий на конец, в принципе не нужен, если мы все равно проверяем, то проверять надо в итераторе, указывающем начало.
Здравствуйте, DelphiGuru, Вы писали:
DG>2) Итераторы при всей похожести на указатели являются на самом деле замыканиями в чистом виде, используя терминологию ФП.
Итераторы являются замыканиями? Что то не уловил глубину мысли. Ты closures с continuations, случаем, не попутал?
Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, minorlogic, Вы писали:
M>>>C++ именно в расчетах, в которых критична скорость, совершенно не оправдан. Потому что как только речь заходит об оптимизации по скорости все высокоуровневые абстракции C++ применять нельзя. M>>А пацаны то и не знали сделали ublas с нативными байндами.
M>Ublas — медленная библиотека. А вот быстрая оптимизированная Sun Performance Library, тоже реализующая функционал BLAS, таки на фортране сделана. Как и Lapack, например.
Чет путаете, вроде Sun Performance Library использует не фортрановские имплементации.
Насколько я помню, есть библиотеки заточенные на нативный перфоманс. Кажется eigen называется.