Pregunta

Yo trabajo para una tienda especializada en finanzas.

Hemos pensado en el diseño de un lenguaje para describir las entidades financieras relacionadas con los mercados financieros.

Esto se utiliza principalmente como una especie de lenguaje de script para reemplazar muchos corren proceso en hojas de cálculo y macros VBA.

Tiene que ser simple y que, de hecho, para llamar a varias bibliotecas de C ++ y C # detrás de las escenas. Tiene que permitir a los usuarios manejar de manera abstracta objetos que podría representar series de tiempo (intradía y al día).

Tiene que ser totalmente depurable, cuando un usuario va a tener un problema, hay que ser capaz de entrar en el código C ++ / C # y reproducir los errores. Lo ideal es que tiene que ser capaz de ser lanzado a través de algún mecanismo dentro de Excel y devolver los resultados dentro de Excel. (Por desgracia casi todas las personas que trabajan en Finanzas está utilizando Excel)

Si tuviera que hacer esta tarea, ¿cómo hacerlo?

¿Usted iría para una sintaxis funcional?

¿Le desarrollar algún lenguaje de script que se interpreta o le compilarlo en otro idioma (como la conversión de los scripts en C ++ o C #)?

no he encontrado cualquier proyecto de código abierto para este tipo de desarrollo, pero ¿hay un producto comercial que utiliza este tipo de sintaxis?

EDIT: He leído todas las respuestas, pero voy a esperar más tiempo antes de recoger una respuesta. Son todas las opiniones muy útiles, aunque!

Edit2: He marcado de alto rendimiento como solución de Mark. Todas sus respuestas son muy útiles y me han modded todos ellos hacia arriba. Fue uno de los primeros respuestas y su respuesta es bastante perspicaz para nosotros.

¿Fue útil?

Solución

Le sugiero que se concentre en el desarrollo de un amplio conjunto de clases en su idioma preferido OO (C # o C ++, aunque sospecho que puede que le resulte más fácil integrar el primero con Excel). Eso le daría su lenguaje para describir las entidades financieras relacionadas con los mercados financieros . Cuando usted ha hecho que usted debe considerar si se debe continuar para envolver estas clases de alguna dominio específico del lenguaje, o simplemente para exponerlos a su comunidad de usuarios.

Me sospecha que su dominio tiene cierta complejidad irreducable y que un DSL intermedia tendrá que ser (casi) tan complejo como el conjunto de clases y que, por lo tanto, tiene poco que ganar mediante la creación de la misma.

Otro enfoque sería integrar Excel con Mathematica para los que Wolfram producir una caja de herramientas de algún tipo. No tengo ninguna experiencia de este, pero Mathematica es sin duda adecuado para cualquiera de los cálculos que tendrá que hacer.

Regards

Otros consejos

Me envolver las bibliotecas de C ++ en Python.

Yo definiría un conjunto de clases fluidas que - en efecto -. Era mi lenguaje específico de dominio

Me gustaría utilizar el lenguaje Python directamente sobre la base de esas dos fundaciones. No me inventar mi propia nueva sintaxis. El mundo no necesita otro Sintaxis; tenemos la sintaxis y gramáticas suficiente con analizar, suficiente para durar hasta el fin del tiempo.

¿Usted iría para una sintaxis funcional? Python tiene capacidades funcionales. Si usted tiene cuidado con el diseño de su clase de Python, se puede lograr un estilo limpio y funcional.

Lo ideal es que tiene que ser capaz de ser lanzado a través de algún mecanismo dentro de Excel y devolver los resultados dentro de Excel.

Desde el intérprete de Python puede ser embebido en un C ++ (o C #) aplicación, puede crear fácilmente Excel API. De Excel para su nuevo idioma, haga lo menos posible en la API C ++ para iniciar la funcionalidad de Python.

Por cierto, su competencia es Resolver Una . Esto es lo que hacen.

ResolverOne ( http://www.resolversystems.com/products/resolver-one/ ) es una combinación de Excel y Python. ¿Ha pensado en utilizar eso?

Yo recomiendo usar R .

Otro punto de vista que aprovecha c #.

Como ya dispone de una potente herramienta de uso general de programación funcional a los usuarios conocen y han comprado en la forma de Excel me gustaría ver a construir una solución en torno a eso. Aunque aún así hay la opción de esa manera de poder usar otros 3 ª parte complementos y opciones integradas (por ejemplo, R y Mathematica)

Me gustaría ver en Gestionado Complementos de automatización de funciones definidas por el usuario . Estas son esencialmente proyectos de biblioteca C # que utilizan los System.Runtime.InteropServices como se describe en este artículo enlace de texto . A los usuarios se agregan estas funciones a nivel celular de la forma habitual mediante el asistente de función y pueden ser más o menos lo que usted quiere que sean. Este es, pues, la DSL. Los usuarios pueden optar por integrar la funcionalidad en sus modelos existentes con facilidad. También sería rápida para crear prototipos de algo para poner a prueba la viabilidad de este. Estos son totalmente depurable.

Además el uso de Visual Studio Tools para Office se puede acceder a toda la jerarquía de objetos de Excel e incluso añadir paneles de acción que pueden ser establecidos mediante arrastrar y soltar los controles para los requisitos de entrada de datos más complejas. Creo que es incluso posible utilizar WPF con Excel de esta forma si necesita añadir visualizaciones especializadas. Si usted necesita para guardar los datos de nuevo a decir servidor SQL se podría construir un giro alrededor de validación de formularios utilizando este enfoque.

Me suena como un M $ pelele! (Sólo para aclarar las cosas que no trabajo para ellos).

Usted tendría que evaluar el desempeño de esto y no estoy seguro de cómo iba a escala.

Simon Peyton-Jones de Haskell fama contribuyó a un papel noreferrer 'contratos Composición: una aventura en la ingeniería financiera' que trataba de cómo los lenguajes funcionales se prestaban a componer descripciones ejecutables de contratos de derivados financieros. Dicho método debería ser posible con F #.

Creo que las ofertas de LexiFi destinada a comercializar parte de esta investigación.

Jane Street Capital utiliza OCaml, y escribió sus experiencias aquí . Es bastante interesante si amplia lectura.

En su entorno, si ha seguido su modelo, se puede usar F # , que comenzó su vida como un dialecto OCaml, pero que por supuesto se ejecuta en el mundo .NET.

Si la biblioteca subyacente utiliza Java usted debe echar un vistazo a hacer una conexión DSL en Groovy. Hay una serie de podcasts y el artículo sobre esto, tratan de buscar en Google "DSL maravilloso".

La mayoría de las instituciones financieras procesamiento de datos numéricos (o divisiones en él) ya han adquirido licencias Matlab. Le recomiendo que eche un vistazo a las instalaciones orientadas a objetos ofrecidos por Matlab (y, de hecho, en su Financiera Toolbox).

En la delantera Creo que adquiera tres cosas:

1) El acceso a un entorno de alto nivel en el que los usuarios pueden concentrarse en el problema y no en la implementación 2) Disponibilidad de gráficos de alta calidad 3) La perfecta integración con Excel y otros paquetes de productividad

Yo sé que quiere decir desarrollar un lenguaje (en oposición a una solicitud) pero tenga en cuenta que llevan a cuestas sus semántica de un lenguaje bien conocido -. De esta manera se evita la curva de aprendizaje para los usuarios

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top