Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java vs Python, Выбор языка для численного расчета 
:(
    Опции темы
foxis
Дата 25.1.2016, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.1.2016

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 24.1.2016,  12:18)

Двумерная плотно заполненная квадратная матрица вещественных чисел двойной точности размера 64000 -- потребует 32 гигабайта памяти. 64000*64000*8/1000/1000/1000=32.


Понятно спасибо.

Цитата(tzirechnoy @ 24.1.2016,  12:18)

Оперативная. По факту, если матрица не влезает в оперативную -- то всё равно стоит сменить алгоритм на работающий с подматрицами.
И, на самом деле, это часто правильно и для размера L3 cache, но не так ярко выражэно.


Т.е. если нет места в оперативке, то одну большую матрицу А можно разделить на 2 малых В, С, но выполнять арифметические операции с ней как с одной матрицей А ?

Цитата(tzirechnoy @ 24.1.2016,  12:18)

Только не в числодробилке!
А generic functions -- это отдельная от ООП тема, которая действительно часто полезна, но в ООП-языках её можэт и не быть или быть, но неудобно сделана.


Бывший ученик моего науч. рука как раз реализовал расчет методом граничных элементов с использованием ООП. 
С его слов, ООП во многом облегчает создание алгоритма. 

Цитата(tzirechnoy @ 24.1.2016,  12:18)

Работодатели как таковые -- действительно не показатель. Вон, на COBOL работодателей завались, однако язык дохлый. Да и само качество языка -- тожэ в общем для степени дохлости показатель вторичный (хотя для выбора, какой язык брать можэт и нет, а для дохлости -- да). Вон, тот жэ ABAP как язык не лучшэ COBOL, однако COBOL дохлый, а ABAP -- жывее всех жывых. Сворачивающееся сообщество -- вот скорее показатель.


Сворачивающееся сообщество что вы имеет ввиду ?

Цитата(tzirechnoy @ 24.1.2016,  12:18)

А с некоторой долей вероятности она и работать будет быстрее. После этого можно долго псить на питон, но возникает резонный вопрос: а что ещё нужно?


Почему вы решили что задача будет выполнена быстрее на Питоне чем на С++ ("с некоторой долей вероятности") ?

Добавлено через 6 минут и 45 секунд
Цитата(Фантом @ 24.1.2016,  14:44)

Именно. Раньше "все писали на Фортране", потом (в СССР/России) был период, когда для всего использовался Паскаль, потом - Си, потом - С++... А тем, что у каждого языка есть ниша разумного применения, мало кто интересуется.


Да, согласен с вами, хоть с++, java и т.п. и считаются языками общего назначения, тем ни менее у них есть своя специфика, которую надо учитывать.


Цитата(Фантом @ 24.1.2016,  14:44)

Так ведь задачи бывают разными, и в научной среде - тоже. Вот, например, типичная задача экспериментатора: взять ряд данных, центрировать его, нормировать, проделать с ним еще какой-то набор сравнительно простых математически действий, собрать пачку таких рядов и нарисовать красивую картинку с осями, усами и прочими подписями. Такое на Питоне делается легко, просто и красиво.

Просто даже в науке подавляющему большинству людей не нужны высокопроизводительные вычисления, а нужен инструмент для быстрой (с точки зрения времени разработчика) автоматизации каких-то стандартных действий с небольшими возможными связками, которые в дальнейшем не предполагается массово использовать и поддерживать. Вот в последнем качестве Питон практически идеален.


Да, полностью с вами соглашусь, аргументы логичны. Иногда хочется сделать все по быстрому и вывести результат на экран не заморачиваясь в специфике языка.

PM MAIL   Вверх
tzirechnoy
Дата 25.1.2016, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Цитата
можно разделить на 2 малых В, С, но выполнять арифметические операции с ней как с одной матрицей А ?


Скорее на 4 подматрицы, и провести вычисления на каждой из них отдельно, а потом хитро их друг с другом перемножыть (и получить четыре матрицы, представляющие матрицу-результат). Слово перемножыть -- условное, понятно, что в реальности действие заивист от того, что делаешь.

Большынство операцый позволяют такое упрощение при помощи того или иного алгоритма.

Цитата
Сворачивающееся сообщество что вы имеет ввиду ?


Что новых активных людей в фортран не приходит (ввиду малой осмысленности, да) -- а старые постепенно уходят, либо естественным образом (переходят на другие языки), либо противоестественным (бросают работу и умирают).

Цитата
очему вы решили что задача будет выполнена быстрее на Питоне чем на С++


Потому, что на C есть большой соблазн заняться закатом солнца вручную в виде перемножэния матриц, нахождения обратных, различных вариантов прогонки по матрицэ и пр. Поскольку вот вроде -- вот у тебя матрица, вот формула, делаешь простенький цыкл, всё должно скомилироваться в лучшэм виде, и это проще, чем пытаться узнать какой-нибудь API для перемножэния матриц.

В C++ ещё возникает дурацкий соблазн сделать это через итэраторы буста с шаблонами и обобщёнными функцыями, поскольку он ведь при компиляцыи всё подставит, а template metaprogramming -- это всегда круто!

В питоне шансов заняться этим гораздо меньшэ, берёшь в зубы NumPy/SciPy и оперируешь более абстрактными операцыями на конкретных матрицах. А NumPy автоматически подхватывает BLAS и не только, который, по факту, существенно лучшэ оптимизирован чем написанный на Си цыкл (for i=0; i<n; i++) for (j=0; j<n; j++) {...

PM MAIL   Вверх
foxis
Дата 26.1.2016, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.1.2016

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 25.1.2016,  19:29)

Скорее на 4 подматрицы, и провести вычисления на каждой из них отдельно, а потом хитро их друг с другом перемножыть (и получить четыре матрицы, представляющие матрицу-результат). Слово перемножыть -- условное, понятно, что в реальности действие заивист от того, что делаешь.


Хорошо, спасибо. А где про это можно почитать, литературу какую-нибудь не подскажите по этому вопросу ?

Цитата(tzirechnoy @ 25.1.2016,  19:29)

Что новых активных людей в фортран не приходит (ввиду малой осмысленности, да) -- а старые постепенно уходят, либо естественным образом (переходят на другие языки), либо противоестественным (бросают работу и умирают)


А на какие именно языки они переходят естественным образом  ? 
"ввиду малой осмысленности" это значит что нет смысла дальше работать с фортраном ?


Цитата(tzirechnoy @ 25.1.2016,  19:29)

Потому, что на C есть большой соблазн заняться закатом солнца вручную в виде перемножэния матриц, нахождения обратных, различных вариантов прогонки по матрицэ и пр. Поскольку вот вроде -- вот у тебя матрица, вот формула, делаешь простенький цыкл, всё должно скомилироваться в лучшэм виде, и это проще, чем пытаться узнать какой-нибудь API для перемножэния матриц.

В C++ ещё возникает дурацкий соблазн сделать это через итэраторы буста с шаблонами и обобщёнными функцыями, поскольку он ведь при компиляцыи всё подставит, а template metaprogramming -- это всегда круто!

В питоне шансов заняться этим гораздо меньшэ, берёшь в зубы NumPy/SciPy и оперируешь более абстрактными операцыями на конкретных матрицах. А NumPy автоматически подхватывает BLAS и не только, который, по факту, существенно лучшэ оптимизирован чем написанный на Си цыкл (for i=0; i<n; i++) for (j=0; j<n; j++) {...


Насчет того, что на С++ есть соблазн мат. часть написать вручную, это спорный вопрос. Например на С++ есть математическая библиотека   armadillo, некий
аналог библиотек scipy, numpy для Питона. Наверника есть и другие библиотеки на С++. Такие библиотеки даже на java есть.
А вот на таких языках как visual basic где нет математических библиотек, там как раз и соблазн и появляется.


PM MAIL   Вверх
Google
  Дата 20.9.2017, 15:51 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.1470 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.