6

Я работаю для бутика, специализирующегося на финансах.Как разработать язык программирования, адаптированный к финансовым инструментам?

Мы думали о разработке языка для описания финансовых лиц, связанных с финансовыми рынками.

Это будет использоваться в основном как язык сценариев для замены многих процессов в электронных таблицах и макросах VBA.

Он должен быть простым, и на самом деле он может вызвать различные библиотеки C++ и C# за кулисами. Он должен позволить пользователям обрабатывать абстрактно объекты, которые могут представлять временные ряды (внутридневные и ежедневные).

Он должен быть полностью отлаживаемым, когда у пользователя возникнет проблема, мы должны быть в состоянии выполнить код C++/C# и воспроизвести ошибки. В идеале он должен быть запущен через какой-то механизм в Excel и возвращать результаты в Excel. (к сожалению, почти каждый человек, работающий в Финансах, использует Excel)

Если вам нужно было выполнить эту задачу, как бы вы это сделали?

Вы бы выбрали функциональный синтаксис?

Разработал бы какой-то язык сценариев, который будет интерпретироваться или вы скомпилируете его на другом языке (например, конвертируете скрипты на C++ или C#)?

Я не нашел никакого проекта с открытым исходным кодом для такого рода разработок, но есть ли какой-либо коммерческий продукт, использующий этот синтаксис?

EDIT: Я прочитал все ваши ответы, но я подожду больше времени, чтобы выбрать ответ. Они все очень полезные мнения, хотя!

EDIT2: Я обозначил высокопроизводительный знак как решение. Все ваши ответы очень полезны, и я все их модифицировал. Он был одним из первых ответов, и его ответ достаточно проницателен для нас.

+2

Разве это не то, для чего изначально был создан COBOL? = P –

+1

@Marc Нет, это не так. –

+0

Извините, но это был смешной комментарий:) – BlueTrin

ответ

10

Я предлагаю вам сосредоточиться на разработке богатого набора классов на предпочитаемом языке OO (C# или C++, хотя я подозреваю, что вам проще интегрировать первое с Excel). Это даст вам ваш язык для описания финансовых лиц, связанных с финансовыми рынками. Когда вы это сделаете, вы должны подумать о том, следует ли продолжать переносить эти классы на какой-либо конкретный язык домена или просто подвергать их своему сообществу пользователей.

Я подозреваю, что ваш домен имеет некоторую непреодолимую сложность и что промежуточный DSL должен быть (почти) таким же сложным, как ваш набор классов, и поэтому вам мало что нужно сделать, создав его.

Другим подходом было бы интегрировать Excel с Mathematica, для которого Wolfram создает какой-либо набор инструментов. У меня нет опыта в этом, но Mathematica, безусловно, подходит для любых вычислений, которые вам нужно будет сделать.

С уважением

5

Я бы обернул библиотеки C++ в Python.

Я бы определил пакет бесплатных классов, который, по сути, был моим доменным языком.

Я бы использовал язык Python непосредственно на основе этих двух оснований. Я бы не изобрел свой собственный новый синтаксис. Мир не нуждается в другом синтаксисе; у нас есть синтаксис и грамматики, достаточные для синтаксического анализа, достаточно, чтобы продлиться до конца времени.

Вы бы выбрали функциональный синтаксис? Python имеет функциональные возможности. Если вы будете осторожны с дизайном класса Python, вы можете достичь чистого функционального стиля.

В идеале он должен быть запущен через какой-либо механизм в Excel и возвращать результаты в Excel.

Поскольку интерпретатор Python может быть встроен в приложение C++ (или C#), вы можете легко создавать Excel API. Из Excel на новый язык сделайте как можно меньше в C++ API, чтобы инициировать функциональность Python.

BTW, ваш конкурс Resolver One. Это то, что они делают.

+1

Вторичный (даже если базовый язык не заканчивается Python); это именно то, для чего нужны DSL, и это избавляет вас от необходимости фокусироваться на бизнес-требованиях API, а не на более мрачных деталях. –

1

Если базовая библиотека использует Java, вы должны взглянуть на делать DSL в Groovy. Есть несколько подкастов и статьи об этом, попробуйте Googling «DSL Groovy».

+0

Я собирался предложить Scala по тем же причинам. Но один из языков * cough *, с которыми они хотят взаимодействовать, это C#, и я не думаю, что это действительно плавный переход к JVM-языку с языком CLR. –

+0

D'oh, пропустил эту деталь, так что да, было бы «сложно» взаимодействовать с C# :-) –

3

Я бы рекомендовал использовать R.

  • R имеет большое количество пакетов финансирования и временных рядов. Посмотрите на finance, econometrics и time series просмотров. R также широко используется в области финансов (см., Например, this recent conference).
  • R может интегрироваться с Excel. Посмотрите на this blog post on the subject.
  • R может запускать код на C++ и может взаимодействовать с C# через COM.
2

Jane Street Capital использует OCaml и пишет свои впечатления here. Это довольно интересно, если вы читаете.

Для вашей окружающей среды, если вы следовали их модели, вы могли бы использовать F#, который начинался с жизни как диалект OCaml, но, конечно же, работает в мире .NET.

+0

Спасибо за ваш ответ, я следил за F #, кажется, очень сильный кандидат на такие приложения, функциональный язык. – BlueTrin

3

Другая точка зрения, которая использует C#.

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

Я хотел бы посмотреть в Managed автоматизации надстроек для пользовательских функций. Это, по сути, проекты библиотеки C#, которые используют System.Runtime.InteropServices, как описано в этой статье link text. Для пользователей эти функции добавляются на уровне ячейки обычным способом с помощью мастера функций и могут быть более или менее то, что вы хотите. Тогда это ваш DSL. Пользователи могут легко интегрировать функциональность в свои существующие модели. Было бы также быстро прототипировать что-то, чтобы проверить его осуществимость. Они полностью отлаживаются.

Кроме того, используя Visual Studio Tools for Office, вы можете получить доступ к полной иерархии объектов excel и даже добавить панели действий, которые можно разложить, перетаскивая элементы управления для более сложных требований к вводу данных. Я считаю, что даже использовать WPF с Excel можно, если вам нужно добавить специализированные визуализации. Если вам нужно было сохранить данные обратно, чтобы сказать Sql Server, вы можете создать поворот вокруг формы проверки, используя этот подход.

Звучит как M $ shill! (Просто, чтобы установить запись прямо, я не работаю для них).

Вам нужно будет оценить эффективность этого, и я не уверен, как он будет масштабироваться.

+0

Excel-DNA - отличная реализация этой концепции. –

1

Большинство финансовых организаций (или подразделений), которые имеют хруст, уже приобрели лицензии Matlab. Я рекомендую вам взглянуть на объектно-ориентированные объекты, предлагаемые Matlab (и, действительно, на их Financial Toolbox).

Спереди я думаю, что вы получите три вещи:

1) Доступ к среде высокого уровня, где пользователи могут сосредоточиться на проблеме, а не на реализацию 2) Наличие высококачественной графики 3) Полная интеграция с Excel и другими пакетами производительности

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

3

Известность Саймона Пейтона-Джонса из Хаскелла внесла вклад в статью 'Composing contracts: an adventure in financial engineering', в которой говорилось о том, как функциональные языки предоставили себя для составления исполняемых описаний контрактов с производными финансовыми инструментами. Такой метод должен быть возможен с помощью F #.

Я считаю, что предложения LexiFi направлены на коммерциализацию некоторых из этих исследований.