Язык программирования для математических расчетов?
Как вы думаете, на каком языке программирования лучше всего реализовывать сложные расчеты (финансовая и актуарная математика, статистика).
Понимаю что для этих целей собирают супер-компьютеры и HPC кластеры, но все-таки, какой язык использовать предпочтительней в условиях относительно слабой вычислительной мощности?
Я думаю, что язык должен быть функциональным, так как эта парадигма наиболее близка к чистой математике, так же важна возможность кластеризации приложения…
Вообщем, у кого какие мысли по этому поводу?
Если у кого есть опыт написания подобных приложений — буду очень признателен, если опишите хотя бы в трех словах как вы это делали.
Очень интересно, да и на shootout.alioth.debian.org/ отображены очень неплохие результаты особенно по скорости у этого языка. Думаю стоит плотнее к нему присмотреться.
Поддерживаю Фортран. Хорошо оптимизированный интелловский компилятор, есть некоторые конструкции близкие к функциональным языкам, вроде удобных операций над массивами, которые автоматически распараллеливиаются, много готовых библиотек.
Во-первых, парадигма функционального программирования всего-лишь говорит о том, как писать программы. Цель данной парадигмы — оформлять программы как математические функции.
Конечно, за этим стоят какие-то большие цели, кто-то считает что это единственный верный способ программирования, кто-то поклоняется данной парадигме как богу. Но данные люди, простите за столь грубое высказывание — дураки. Истина находится «между». Иначе говоря, функциональное программирование позволяет сделать код более компактным, красивым, быстрым, но использование только этой парадигмы, игнорируя остальные — только вред.
Важно понять что требуется от языка. Как я вижу, требование одно — большая скорость при небольших ресурсах, которые не будут увеличиваться(я правильно понял?).
Если всё так критично(100 и 1 раз оцените задачу!), то выбор не велик: C, C++.
Если хочется вкусить функциональщины, то можно попробовать Haskell, CL(Common Lisp). Но я повторюсь, если в задаче есть слово «функция», это ещё не значит что нужно использовать «функциональное программирование».
большая скорость при небольших ресурсах
Да, именно оно, но еще чего хотелось бы получить это скорость разработки и элегантность кода на выходе (да, я люблю красивые вещи)
Я понимаю что C язык быстрый и при правильном уходе требует мало ресурсов, но я видел как решались тривиальные интегральные уравнения на нем — мне не понравилось.
Ради эксперимента, могу посоветовать тот же CL, Haskell, но для первого нужны хорошие программисты(чтобы не наделали бед), а для второго нужно много времени на изучение и сложнее найти специалистов.
Могу посоветовать C++ с использованием Qt, boost, получается не такой и страшный код, зато в будущем не будет проблем.
Про высокопроизводительные вычисления в R имеет смысл посмотреть cran.r-project.org/web/views/HighPerformanceComputing.html.
Возможно, компромисс скорости разработки производительности поможет достигнуть использование Rcpp. Кое-что про это есть тут есть и завязки к hadoop etc. Большая проблема в этом смысле то, что R хранит объекты в памяти, но с помощью сторонних пакетов это преодолевается для больших объёмов данных.
Так как при разработке R учитывался опыт Scheme, в нём во многом поддерживается ФП (более подробно советую смотреть отличную книгу проф. Чемберса Software for Data Analysis).
Точно, R это то что доктор прописал, особенно если нужно бесплатное решение
Если платность не волнует — смотрите Matlab
Это первое что пришло мне в голову, честно говоря, подтектс этого вопроса — узнать о альтернативах Haskell’у 🙂
>>большая скорость при небольших ресурсах
>>Да, именно оно, но еще чего хотелось бы получить это скорость разработки и элегантность кода на выходе (да, я люблю красивые вещи)
Будь у человека больше вычислительных ресурсов, я бы посоветовал именно Пайтон, т.к. в нём присутствуют все парадигмы в необходимом для качественного кода объёме.
В конце концов, Пайтон не создан для таких вещей. Если такое и писать на нём, то только в виде модуля на Си.
Я думаю, что язык должен быть функциональным, так как эта парадигма наиболее близка к чистой математике,
Я же бы решил, что если нужно делать именно математические расчеты, то следует подумать о математическом пакете, например Matlab. Если Вы хотите получить лаконичность кода, то с этим здесь не должно быть проблем. Огромное количество стандартных функций математики и статистики. С тулбоксами Financial Derivatives Toolbox и Financial Toolbox не знаком, но список функций выглядит внушительным.
Скорость вычислений при правильном программировании, по моим наблюдениям ниже не более, чем в 2 раза (в сравнении, с C#, например). Можно использовать компиляторы и вызывать функции Matlab из любого языка. Правда в этом случае существенным недостатком является долгий старт окружения Matlab.
Можно еще добавить, что если хочется чисто функционального языка, то больше подойдет пакет Mathematica. Хотя MatLAB в плане программирования, конечно, более предпочтительный.
MATLAB оптимален для большинства прикладных задач, тем более подразумевает удобную интеграцию с другими языками.
Если задачи подразумевают широкое использование существующих алгоритмов (без вмешательства в их код) то Матлаб.
Если же алгоритмы будут свои или потребуется адаптация (с внутренним насилием!) чужих или же необходимость перехода в один прекрасный день к большим вычислительным мощностям, то Фортран.
MATLAB — является платным пакетом, если вас это не устраивает, то можно посмотреть в сторону Octave. Octave — опенсорсный продукт, синтаксис схож с MATLAB. Прекрасно подходит для высокоуровневого программирования математических расчетов.
Войдите, чтобы написать ответ
Как проще найти большую и малую полуось эллипса ошибок?
Язык программирования для решения математических задач, 7 букв
Ответ на вопрос в сканворде (кроссворде) «Язык программирования для решения математических задач», 7 букв (первая — ф, последняя — н):
Другие определения (вопросы) к слову «фортран» (19)
- Язык для ЭВМ
- Язык программирования
- Язык ЭВМ
- Программирование
- Компьютерный язык
- Язык програмирования для решения инженерных задач
- Язык программирования, широко используемый при научных подсчетах
- Язык программирования, разработан в 1957 г. программистами фирмы IBM
- Это язык программирования разработан инженерами «IBM» в 1957 году
- Один из первых языков программирования
- Первый язык программирования, появился в 1957 году
- Язык программирования, разработан в 1957 (США)
- Один из ранних языков программирования
- Коллега алгола
- Компьютерный язык Джона Бэкуса
- Язык программирования, разработанный инженерами IBM в 1957 году
- Компьютерный язык, переводится как «Переводчик формул»
- Какой язык разработан фирмой IBM в 1954 году
- Первый язык программирования высокого уровня, имеющий транслятор
Фортра́н (английское Fortran ) — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является сокращением от FORmula TRANslator (формульный транслятор). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм.
Имеется большое количество написанных на Фортране (в большей части на старых версиях языка) различных математических библиотек для матричной алгебры и решения систем линейных уравнений, библиотеки для решения дифференциальных уравнений, интегральных уравнений и их систем, аппроксимации функций, специальных функций, быстрых преобразований Фурье, математической статистики и других математических дисциплин. Эти библиотеки поставляются, как правило, с компилятором. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например — Международная математическая библиотека подпрограмм (IMSL).
Большинство таких библиотек являются фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны.
Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования, для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, обобщённое и модульное программирование, ООП, сохраняя при этом преемственность с более ранними версиями. Одна из главных концепций развития современного Фортрана — средства поддержки параллельности и векторные операции.
Что искали другие
Случайное
- Город в Узбекистане близ Бухары
- Брус в авангарде парусника
- Полуостров, приютивший Таиланд и Лаос
- Основой для образа этой сказочной героини послужила Коломбина из итальянской комедии масок
- Небольшой кусочек хлеба
- Поиск занял 0.007 сек. Вспомните, как часто вы ищете ответы? Добавьте sinonim.org в закладки, чтобы быстро искать их, а также синонимы, антонимы, ассоциации и предложения.