none
О преимуществах языка F# в математических расчетов RRS feed

  • Общие обсуждения

  • В статьях по F# встретил утверждения типа "F# непревзойден в техническом и количественном программировании, т.е. в сложных математических расчетах". Для создания интерфейса программ я использую C#. Мне довольно часто приходится использовать вычисления с разреженными матрицами, преобразование Фурье, свертку и другие функции при цифровой обработки сигналов и изображений. Эти функции у меня находятся в DLL, написанных на C++. Хотелось бы в рамках только Microsoft Net иметь возможность быстро опробовать алгоритмы и создавать программы с развитым интерфейсом и мощными математическими функциями В связи с этим у меня возникли следующие вопросы:

    1. Будут ли в F# включены различные сложные математические функции типа указанных выше?

    2. Чем мне может помочь связка C# и F# в решении математических задач обработки сигналов и изображений?


    Alex
    3 июня 2011 г. 20:20

Все ответы

  • Хм...Думаю в плане производительности F# всеравно не сравнится с классическими С++. Но вот в плане лаконичности кода F# будет все-же удобнее.

    То что вы обычным С++ напишите 20 строк кода, на F# это может занять всего 5.

    Я бы всеравно оставил производительные алгоритмы старым, проверенным временем подходам на С++. А вот интерфейс - Вы правы, что пишите на .NET'е, в этом ему нет равных.

    ---------------------------------------

    Но с другой стороны, .NET не так отстает по производительности от классических подходов к работе приложения, если какой-либо код очень часто вызывается. Он будет единожды откомпилирован во время вызова и прокеширован, и далее все время будет выполняться без перекомпиляции времени выполнения. Если таких операция не много, то скорость работы не будет такой высокой как на традиционных приложениях.

     

    P.S.: Если Вам это очень важно, а я думаю, что это так, то советую Вам хорошенько изучить устройство и принцип работы платформы .NET.


    [My blog] [My E-mail]

    4 июня 2011 г. 21:59
  • Спасибо за ответ. Хотелось бы все-таки понять, в каких случаях мне может пригодиться язык F#. Как я понял из материалов в интернете, на F# удобно программировать параллельные вычисления. Но и в других языках есть библиотеки для параллельных вычислений. Как известно, Microsoft ничего просто так не далает и не зря ведь был разработан новый язык, вложены в него средства и труд. Может быть есть примеры, которые показывают большие преимущества этого языка по сравнению с другими в некоторых областях или для ряда задач?
    Alex
    6 июня 2011 г. 20:22
  • Несколько ссылок по теме на руском языке

    P.S. А вообще - это появилось в недраз MS Research Labs, а это подразделение в Майкрософте, которое отвечает за "просто так" :) Удачные творения оттуда выходят в мир.

     


    Don't forget to vote for useful replies and/or mark answers for your questions - that helps other guys to find the answer faster.
    6 июня 2011 г. 21:21
  • Так я и не понял, в чем преимущества языка F#. Видимо, нужно немного подождать, чтобы все-таки стало понятно, стоит ли его глубоко изучать.


    Alex
    7 июня 2011 г. 17:53
  • IMHO, не начав изучать - не поймешь. Невозможно принять решение "лучше или нет" не зная инструмента. В F# не включены сложные математические функции - он работает с той же стандартной библиотекой, что и остальные языки. Но он больше смещен в сторону функционального программирования, чем остальные языки платформы. 

    Создание разреженной матрицы в C++ и в F# отличается только синтаксисом. Но создание копии существующей матрицы с одним измененным элементом займет на F# всего пару дополнительных байт памяти. На С++ - потребует создания полной копии, или кучи кода. Написание какого-нибудь поиска в глубину на F# на той же матрице - в разы проще. Распараллеливание его на 16 ядер - в пол строчки. 

    Но при всем этом - замена готового отлаженного алгоритма на новый, только потому, что старый написан на C++ - бесполезная трата времени. :)


    My blog | My Favorite Project
    7 июня 2011 г. 22:55
    Модератор
  • Спасибо за ответ. Старые программы и готовые алгоритмы я трогать не буду, а вот для новых программ думал попробовать использовать F#.


    Alex
    8 июня 2011 г. 19:30
  • коллеги на работе недавно прикрутили F# проект в соблюшен - собирает метрики всякими тулами :)

    вообще думается поэкспериментировать вполне можно - в этом то и есть интерес - насколько применимо в реальной жизни  - без академического интереса :)


    Don't forget to vote for useful replies and/or mark answers for your questions - that helps other guys to find the answer faster.
    8 июня 2011 г. 19:36
  • "Но создание копии существующей матрицы с одним измененным элементом займет на F# всего пару дополнительных байт памяти. На С++ - потребует создания полной копии, или кучи кода. Написание какого-нибудь поиска в глубину на F# на той же матрице - в разы проще. Распараллеливание его на 16 ядер - в пол строчки."

    А вот это уже интересно! А где-нибудь можно найти примеры на F# для таких задач? Довольно часто приходится работать с большими матрицами, актуально эффективное использование памяти.  


    Alex