¿Cómo funciona “Lenguaje de Programación Orientada a” comparar a la POO / funcional en el mundo real

StackOverflow https://stackoverflow.com/questions/1703869

  •  19-09-2019
  •  | 
  •  

Pregunta

Hace poco me puse a leer algunos literatura relacionada F #, al hablar de "Programación Funcional del mundo real" ye "Experto F #". g .. Al principio es fácil, porque tengo algo de experiencia en Haskell, y sé C #. Pero cuando se trata de " lenguaje de programación orientado " Simplemente no lo entiendo. - He leído algunas explicaciones y es como la lectura de un documento académico que se vuelve más abstracta y extraña con cada frase

.

¿Alguien tiene un ejemplo sencillo para ese tipo de cosas y cómo se compara con los paradigmas existentes? No, no es sólo la fantasía académica, ¿verdad? ;)

Gracias, Wishi

¿Fue útil?

Solución

F # tiene algunos mecanismos para hacer la programación en un estilo que se podría llamar "lenguaje orientado".

En primer lugar, las sutilezas de sintaxis (las llamadas a funciones no necesitan paréntesis, puede definir propios operadores infijos, ...) hacerlo de modo que muchas bibliotecas definidas por el usuario tienen la apariencia de una SL embebidos.

En segundo lugar, el F # "citas" mecanismo puede permitirle citar código y luego ejecutarlo con un motor alternativo semántica / evaluación.

En tercer lugar, F # "expresiones de cálculo" (también conocido como flujos de trabajo, mónadas, ...) también proporcionan una manera de proporcionar un tipo de semántica alternativos para ciertos bloques de código.

Todos los éstos caen un poco en la categoría EDSL.

Otros consejos

Idioma programa orientado (LOP) se puede utilizar para describir cualquier de lo siguiente.

Creación de un lenguaje externo (DSL)

Este es quizás el uso más común de la LOP, y es donde se tiene un dominio específico - tales como paquetes de envío de UPS a través de los tipos de tránsito a través de rutas, etc. En lugar de tratar de codificar todas estas entidades de dominio específico dentro del programa código, en lugar de crear un lenguaje de programación independiente para solo ese dominio. Así que usted puede codificar su problema en un lenguaje externo separado.

Creación de un lenguaje interno

A veces usted quiere que su código de programa para mirar menos como 'código' y mapa más estrechamente con el dominio del problema. Es decir, tiene el código 'más natural'. Una interfaz de fluidez es un ejemplo de esto: Fluido Interface . También, F # tiene patrones activos que apoyan esta bastante bien.

un blog publicar en LOP un tiempo que proporciona algunos ejemplos de código.

En programación orientada a objetos, intenta modelar un problema al usar objetos. A continuación, puede conectar los objetos juntos para realizar funciones ... y al final resolver el problema original.

En Lenguaje de Programación Orientada, en lugar de utilizar un objeto existente orientada a la programación funcional o lenguaje, se diseña un nuevo lenguaje de dominio específico que es el más adecuado para resolver su problema de manera eficiente.

El lenguaje de programación orientada a término puede ser sobrecargado en esa podría tener diferentes significados para diferentes personas.

Sin embargo, en términos de cómo lo he utilizado, significa que se crea una conexión DSL ( http: //en.wikipedia.org/wiki/Domain_Specific_Language ) antes de empezar a resolver su problema.

Una vez que se crea la DSL usted entonces escribir el programa en términos del DSL.

La idea es que la DSL es más adecuado para expresar el problema de un lenguaje de propósito general sería.

Algunos ejemplos serían la sintaxis del archivo de marca o Ruby on Rails clase ActiveRecord.

No tengo directamente de programación utilizado en el lenguaje orientado a situaciones del mundo real (la creación de un lenguaje real), pero es útil para pensar y ayuda a los objetos de dominio impulsada diseño mejor.

En un sentido, cualquier código de desarrollo del mundo real en Lisp o Scheme se puede considerar "lenguaje orientado", ya que está desarrollando el "lenguaje" de su aplicación y su árbol abstracto como usted a lo largo. pepino es otro ejemplo del mundo real me 'he oído hablar.

Tenga en cuenta que hay algunos problemas a este enfoque (y cualquier enfoque de dominio impulsada) en el desarrollo del mundo real. Un problema importante que he tratado antes es falta de coincidencia entre la lógica que tiene sentido en el dominio y la lógica que tiene sentido en el software. Dominio (empresa) la lógica puede ser muy complicado y sin sentido -. Y hace que los modelos de dominio para descomponer

Un sencillo ejemplo de un lenguaje de dominio específico, mencionó aquí , es SQL. También: UNIX shell scripts.

Por supuesto, si usted está haciendo una gran cantidad de operaciones básicas y tiene una gran cantidad de solapamiento con el lenguaje subyacente, es probable manipulación excesiva.

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