Языки/библиотеки для "числодробилок"?
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.08 18:48
Оценка:
Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".
На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?
Re: Языки/библиотеки для "числодробилок"?
От: Хитрик Денис Россия RSDN
Дата: 20.12.08 20:46
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

Fortran из языков. Готовые системы, которые можно встраивать в свои программы — Matlab и Mathematica.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[2]: Языки/библиотеки для "числодробилок"?
От: Курилка Россия http://kirya.narod.ru/
Дата: 20.12.08 21:15
Оценка:
Здравствуйте, Хитрик Денис, Вы писали:

ХД>Здравствуйте, Курилка, Вы писали:


К>>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

К>>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

ХД>Fortran из языков. Готовые системы, которые можно встраивать в свои программы — Matlab и Mathematica.


Про фортран были мысли, да. Насколько хорош фортран из гцц?
Матлаб и Математика вроде хороших денег стоят, и разве они не отдельные системы сами по себе?
Конкретно в текущем случае бюджет будет (если будет) совсем ограниченным, но варианты знать тоже интересно, безусловно
Re[3]: Языки/библиотеки для "числодробилок"?
От: Хитрик Денис Россия RSDN
Дата: 20.12.08 22:24
Оценка:
Здравствуйте, Курилка, Вы писали:

ХД>>Fortran из языков. Готовые системы, которые можно встраивать в свои программы — Matlab и Mathematica.

К>Про фортран были мысли, да. Насколько хорош фортран из гцц?

Мои знания чисто теоретические, практически не могу ничего толкового сказать, к сожалению. Знаю, что есть компилятор Фортрана от Intel. Можно посмотреть его лицензию.

К>Матлаб и Математика вроде хороших денег стоят, и разве они не отдельные системы сами по себе?


Да, стоят хороших денег. Они отдельные системы, но у них есть средства интеграции с С++. То есть, из С++ можно запустить расчёт и пользоваться результатами. В таком случае, я бы написал весь вычислительный код на языке Матлаба или Математики, а С++ поручил бы подготовку данных и отображение результата.

К>>>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?


Напомню ещё про Intel Performance Primitives. Для Linux они бесплатны.
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re: Языки/библиотеки для "числодробилок"?
От: Flying Dutchman Украина  
Дата: 20.12.08 22:31
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

Посмотри библиотки NAG (Numeric Algorithm Group).
Re: Языки/библиотеки для "числодробилок"?
От: yumi  
Дата: 21.12.08 02:06
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

NumPy
Lisp is not dead. It’s just the URL that has changed:
http://clojure.org
Re[2]: Языки/библиотеки для "числодробилок"?
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.12.08 09:46
Оценка:
Здравствуйте, yumi, Вы писали:

Y>NumPy


Да, тоже вроде вспомнилось, а есть какой-то опыт успешного использования?
Re[2]: Языки/библиотеки для "числодробилок"?
От: prVovik Россия  
Дата: 21.12.08 09:47
Оценка:
Здравствуйте, Хитрик Денис, Вы писали:

ХД>Fortran из языков. Готовые системы, которые можно встраивать в свои программы — Matlab и Mathematica.


Помню, будучи студентом пользовался Maple'ом. Имхо, он был гораздо удобнее мэпла и умел генерировать исходники на C++.
лэт ми спик фром май харт
Re[3]: Языки/библиотеки для "числодробилок"?
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.12.08 09:59
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Хитрик Денис, Вы писали:


ХД>>Fortran из языков. Готовые системы, которые можно встраивать в свои программы — Matlab и Mathematica.


V>Помню, будучи студентом пользовался Maple'ом. Имхо, он был гораздо удобнее мэпла и умел генерировать исходники на C++.


Maple удобнее мэпла?
Re[4]: Языки/библиотеки для "числодробилок"?
От: prVovik Россия  
Дата: 22.12.08 05:55
Оценка:
Здравствуйте, Курилка, Вы писали:

V>>Помню, будучи студентом пользовался Maple'ом. Имхо, он был гораздо удобнее мэпла и умел генерировать исходники на C++.


К>Maple удобнее мэпла?


Тьфу, мэпл был удобнее матлаба хотел сказать
лэт ми спик фром май харт
Re: Языки/библиотеки для "числодробилок"?
От: Mazay Россия  
Дата: 22.12.08 14:37
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

Кроме Фортрана и плюсов:
  • OCaml вроде как самый шустрый из декларативных.
  • Язык Mercury. Логический и функциональный. Задумывался как убивец Фортрана с соответствующей производительностью.
  • R (programming language) — язык программирования для статистической обработки данных и работы с графикой. По производительности —

    Почему никто не сказал про Boost.uBLAS? Тоже библиотека для линейной алгебры.

    Библиотеки numpy и scipy пользуются популярностью. Про производительность их ничего не скажу, но сам питон весьма тормоз. Хотя кому я это расказываю?
  • Главное гармония ...
    Re: Языки/библиотеки для "числодробилок"?
    От: unix_hater  
    Дата: 22.12.08 17:52
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

    К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

    http://www.oonumerics.org/oon/
    Re[3]: Языки/библиотеки для "числодробилок"?
    От: novitk США  
    Дата: 22.12.08 18:02
    Оценка: 7 (1)
    Здравствуйте, Курилка, Вы писали:

    К>Да, тоже вроде вспомнилось, а есть какой-то опыт успешного использования?


    Есть, в ЛА все более-менее нормально. Еще посмотри на http://www.sagemath.org/, это такая мега-дистро для всей математики на Питоне.
    Re[4]: Языки/библиотеки для "числодробилок"?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 22.12.08 18:11
    Оценка:
    Здравствуйте, novitk, Вы писали:

    N>Здравствуйте, Курилка, Вы писали:


    К>>Да, тоже вроде вспомнилось, а есть какой-то опыт успешного использования?


    N>Есть, в ЛА все более-менее нормально. Еще посмотри на http://www.sagemath.org/, это такая мега-дистро для всей математики на Питоне.


    В ЛА?
    Кстати, а чего снова питон? У учёных 2 варианта — фортран или питон чтоль?
    Re: Языки/библиотеки для "числодробилок"?
    От: Sergey Chadov Россия  
    Дата: 22.12.08 18:23
    Оценка: 1 (1)
    Здравствуйте, Курилка, Вы писали:

    К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

    К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

    www.netlib.org а далее в зависимости от того, что нужно
    --
    Sergey Chadov

    ... << RSDN@Home 1.2.0 alpha rev. 685>>
    Re[5]: Языки/библиотеки для "числодробилок"?
    От: novitk США  
    Дата: 22.12.08 18:55
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>В ЛА?


    Линейная алгебра.

    К>Кстати, а чего снова питон? У учёных 2 варианта — фортран или питон чтоль?


    Не совсем. В каждом из вариантов есть свои алтернативы. Для фортрана это C++, а для Питона соответственно Матлабы, Мэплы и Математики.

    Сам я в финансах, здесь доминирует плюсы с питоном. Если интересует managed, то посмотри сюда http://jscience.org.
    Re[6]: Языки/библиотеки для "числодробилок"?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 22.12.08 19:25
    Оценка:
    Здравствуйте, novitk, Вы писали:

    N>Сам я в финансах, здесь доминирует плюсы с питоном. Если интересует managed, то посмотри сюда http://jscience.org.


    Думаю не очень managed интересен, но за линк спасиб.
    Re[5]: Языки/библиотеки для "числодробилок"?
    От: Nicht Россия  
    Дата: 26.12.08 08:29
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Здравствуйте, novitk, Вы писали:


    N>>Здравствуйте, Курилка, Вы писали:


    К>>>Да, тоже вроде вспомнилось, а есть какой-то опыт успешного использования?


    N>>Есть, в ЛА все более-менее нормально. Еще посмотри на http://www.sagemath.org/, это такая мега-дистро для всей математики на Питоне.


    К>В ЛА?

    К>Кстати, а чего снова питон? У учёных 2 варианта — фортран или питон чтоль?

    Да там на питоне та только морда да интеграция. Основные расчеты делаются такими пакетами как R, MAXIMA и так далее.
    Вот список проитегрированных копонентов
    Re: Языки/библиотеки для "числодробилок"?
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 04.01.09 18:59
    Оценка:
    Здравствуйте, Курилка, Вы писали:

    К>Возник тут сабжевый вопрос, а в этой области я, мягко сказать, "плаваю".

    К>На что кроме C++ и библиотек из разряда LAPACK следует хотябы посмотреть?

    В общем случае надо действовать исходя из следующих принципов:

    1. Библиотеки часто важнее языка. Если есть библиотека для конкретной задачи именно под конкретный язык и сложно делать переходник — лучше использовать этот язык, даже если это Кобол:) Очень важным частным случаем библиотеки является MPI или аналог, если надо параллелить задачу.

    2. Язык, в котором меньше посторонних для задачи возможностей — лучше слишком универсального. Это одно из преимуществ Фортрана, но которое срабатывает только при хорошем оптимизирующем компиляторе (gcc это практически не использует). В новых диалектах Фортрана начиная где-то с 90-го есть масса специфичных именно для вычислений фишек типа "подмассив массива из каждой M-й строки и каждого N-го столбца". Но опять-таки чтобы это применить — нужен серьёзный компилятор, вроде того, что делал DEC.

    Если опишете задачу — можно будет сказать что-то поконкретнее.
    The God is real, unless declared integer.
    Re[2]: Языки/библиотеки для "числодробилок"?
    От: Курилка Россия http://kirya.narod.ru/
    Дата: 04.01.09 19:08
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Если опишете задачу — можно будет сказать что-то поконкретнее.


    К сожалению пока что имевшийся вопрос остался теоретическим, так что врядли имеет смысл сильно залезать в конкретику.
    А вопрос топика был скорей в "общей картинке": тут часто говорят, например что язык Х не подходит для "числодробилок", вот хотелось понять, а что гораздо больше подходит.
    Re[5]: Языки/библиотеки для "числодробилок"?
    От: VGn Россия http://vassilsanych.livejournal.com
    Дата: 04.01.09 19:22
    Оценка:
    V>Тьфу, мэпл был удобнее матлаба хотел сказать

    У них разные задачи. Может ты имел в виду Mathematic'у?
    ... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
    Re[3]: Языки/библиотеки для "числодробилок"?
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 04.01.09 20:01
    Оценка: 13 (3)
    Здравствуйте, Курилка, Вы писали:

    N>>Если опишете задачу — можно будет сказать что-то поконкретнее.


    К>К сожалению пока что имевшийся вопрос остался теоретическим, так что врядли имеет смысл сильно залезать в конкретику.

    К>А вопрос топика был скорей в "общей картинке": тут часто говорят, например что язык Х не подходит для "числодробилок", вот хотелось понять, а что гораздо больше подходит.

    С точки зрения принципиальной возможности посчитать — годится, понятно, практически любой. Формулировка типа "не годится" относится к языкам, в которых численные расчёты типичного вида сопровождаются чрезмерными накладными расходами. Например, в большинстве ФЯ данные заранее непредсказуемого размера — это списки, и доступ к n-му элементу стоит O(n), в то время как в массиве языка типа Си это O(1); а модификация ещё дороже. Если в библиотеке такого языка нет реализации списка за O(1), а тем более при необходимости копировать вместо модификации — на нём операции с матрицами в традиционном стиле типа "ортогонализация на месте" будут давать безумные накладные расходы. Здесь сразу же надо объявить дисклеймер — да, возможно, надо на функциональном языке надо писать изначально иначе. Но эта тема "писать иначе" уже тут неоднократно раскрывалась, не хочу дублировать.

    При рассмотрении полного цикла жизни софта, язык для численных расчётов должен позволять максимально прямолинейно отображать формулы в код и получать при этом достаточно эффективное решение. Собственно, Фортран так и был создан (FORmula TRANslation), множество признаков растёт прямо из математической практики. "The God is real, unless declared integer" — это следствие практики использовать i, j, k... под индексы, а остальные буквы — под значения. Массивы с нумерацией с единицы. Многомерные массивы. Отождествление через equivalence. Типы данных — целое и два вещественных... Никаких указателей (в версиях до 77-82). И, опять-таки — что делается в формулах, то и должно быть выражено в командах. А, возможно, самое существенное — это отсутствие необходимости заставлять авторов кода понимать специфические средства системщиков вроде указателей: мало того, что они сами по себе концептуально достаточно извращённы — им ещё мало где правильно учат (ой мало где). Сейчас это поколение у нас (но не в западном мире) отброшено в лучшем случае в 1С (а то и в админы или вообще на пенсию), но в 80-х было достаточное количество программистов, которые нормально работали с Фортраном и не понимали Си — из-за массы неприемлемых концепций вроде указателей.

    Язык программирования среднего уровня (везде подразумевается — со средой исполнения) с ориентацией на численные расчёты должен предоставлять:
    1. Базовые типы данных — целое разумного размера, вещественные как минимум двух размеров; обычно это IEEE754 float & double. Туда же — комплексные не дороже того, как с ними бы работали как с парой вещественных.
    2. Одно- и многомерные массивы скалярных величин, статического и динамического распределения, с нумерацией с единицы или с заданного значения; фиксация на нумерации с 0 крайне неудобна для кодирования и потому недопустима. Доступ к элементам массива должен обеспечиваться максимально естественным образом (сишное a[x][y] уже на грани допустимого, а принуждение к одномерности недопустимо).
    3. Дешёвую модификацию данных в скалярах и массивах — стоимостью O(1) (кроме случая тотального выверта логики, опять же)
    4. Подпрограммы и функции (тонкости разделения в конкретном языке несущественны, но обязательна возможность передачи параметров по ссылке, включая скаляры и массивы; повторюсь — указатели являются сущностью "за гранью")
    5. Базовые элементы логики кода (последовательное выполнение, ветвления, циклы)
    6. Широкий комплект стандартных математических функций — от atan2() до бесселевых
    7. Контроль переполнений и прочих исключительных ситуаций (деление на 0, обнуление значения...) на уровне среды, задание реакции на них (возможно, грубой — try/catch уже для этого уровня высший пилотаж)

    Это примерно базовый комплект. В пределах популярных расширений можно также говорить о:
    1. Арифметика (целочисленная и плавучая) произвольной точности
    2. Стандартные библиотеки в поставке — для типичных операций (решение СЛАУ, ортогонализация...)

    (Заметим, что даже понятие структуры уже не является обязательным! А тем более класса...)

    Из описанных требований уже в общем-то видно, что адекватно задаче, что нет, и насколько будет дорого использовать конкретный язык. ФЯ массово отпадают — см. выше. C, C++ неплохи, но требуют подготовки программистов — которые умеют работать в их концепциях (указатели, структуры). C# явно поближе:) Питон — на грани, Перл — за гранью (осваивать его заморочки нафиг не сдалось для числовых задач), но оба как интерпретируемые и почти не компилируемые сильно теряют.

    Думаю, понятно, хотя описал очень сумбурно:)

    Ну и, разумеется, средства высокого уровня вроде того же MatLab — у которых видны уже не голые числа, а целые векторы и матрицы, и которые могут сами первообразную взять и так далее. Но так как это формально уже не языки, я их тут не рассматриваю. Практически же для лабораторного тестирования возможности и качества решения используются в первую очередь они, а переход на языки уровня Фортрана происходит тогда, когда надо задачу вынести на расчётный кластер.
    The God is real, unless declared integer.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.