Pregunta

Parece que hay un fuerte movimiento para la convergencia de las matemáticas y lenguajes de programación, como sucede particularmente en evidencia la influencia del cálculo lambda en lenguas modernas. La mayoría de las veces no creo que con las matemáticas, creo que con la lógica. Me parece que muchos de los fenómenos que se puede modelar matemáticamente se puede modelar lógicamente también.

No creo que alguna vez veremos un lenguaje puramente lógico o una puramente matemática de tracción ganancia de lenguaje para la programación de propósito general, pero me gustaría hacer un inventario de los beneficios de cada paradigma. Me gustaría saber:

  • ¿Cuáles son los beneficios del modelado de lenguajes de programación o lenguaje de las matemáticas en cuenta?
  • ¿Cuáles son los beneficios del modelado de una lengua en los principios de la lógica formal?
  • Puede un lenguaje de propósito general forgo ya sea lógica o matemática?
  • ¿Cuáles son algunos de los idiomas que realmente mostrar las ventajas de uno u otro enfoque?
  • ¿Qué características de hardware hacen que uno de los enfoques más atractivo que el otro?
¿Fue útil?

Solución

En primer lugar, no veo mucha diferencia entre la lógica y la matemática; el último es sólo el ex aplicarse sistemáticamente a constructos específicos.

Además, no estoy convencido de que la belleza teórica de lenguajes de programación basadas en matemáticas / lógica es realmente vale la pena mucho más cuando se trata de hacer las cosas por escribir código eficiente, fácil de mantener.

En cuanto a usted preguntas específicas.

  

¿Cuáles son los beneficios del modelado   lenguajes de programación o lenguaje   Características en las matemáticas?   ¿Cuáles son los beneficios del modelado de una lengua en los principios de la lógica formal?

Las pruebas de corrección se vuelven mucho más fácil -. Aunque es cuestionable si alguna vez vamos a llegar al punto donde se convierten en práctica de sistemas de la vida real

  

Puede un forgo lenguaje de propósito general   ya sea lógica o matemática?

Depende de lo que quiere decir con "forgo". Puede tener un lenguaje sin operaciones matemáticas (aunque tienes que ser bastante esotéricos; máquinas de Turing son el único que se me ocurre que ni siquiera tiene incremento o decremento), y que sin duda puede tener uno que no le importa nada acerca de formalismos ( ensamblador, C). Pero yo no creo que sea posible tener un lenguaje de programación sin lógica (aunque puede ser una lógica perversa, cf. Malbolge )

  

¿Cuáles son algunos de los idiomas que realmente mostrar los beneficios de uno u otro enfoque?

Bueno, si se tiene en cuenta cálculo lambda una forma de lógica, entonces Lisp ha estado mostrando sus beneficios bastante bien por ser desde 1958 el idioma cuyo poder expresivo otra aspiran lenguaje (pero no logran) para llegar.

Luego está Prolog, el único otro lenguaje "grave" Sé que intenta conectarse a tierra de forma explícita en la lógica formal. Y - Quelle sorpresa -. Es bueno en la materia lógica y poco más

  

¿Qué características de hardware hacen que uno de los enfoques más atractivo que el otro?

Ninguno. El fracaso de Máquina Lisp demuestra la OMI bastante concluyente que los compiladores + hardware en general son más poderosos que hardware especializado. Sin embargo, se podría decir que la potencia bruta del sistema simpe de hoy están haciendo idiomas que ignoran por completo las limitaciones de hardware práctica donde antes no lo eran.

Otros consejos

ya que la informática es una Branche especial de matemáticas - no hay convergencia de matemáticas y lenguaje de programación. Un lenguaje de programación se aplica matemáticas. Es una herramienta creada por personas con un profundo conocimiento profundo de las matemáticas para ser utilizado por otros (la mayor parte del tiempo con el conocimiento menos profundo). Se puede comparar a un interruptor de luz - que se puede utilizar sin tener estudió física, pero aún así es la física aplicada. A veces (especialmente si usted tiene un problema) que es necesario contar con el "conocimiento". Luego hay que el fondo especial.

Bueno, para ser honesto, muchos de estos llamados "lenguajes de programación modernos" simplemente se imlpementing cosas que han estado en varios lenguajes de programación durante más de 50 años.

  

¿Cuáles son los beneficios del modelado de los lenguajes de programación o las características del lenguaje de las matemáticas?   ¿Cuáles son los beneficios del modelado de una lengua en los principios de la lógica formal?

Estos son la misma cosa: la lógica formal es sólo una rama de las matemáticas. Dos beneficios principales de la utilización de las matemáticas formales son la optimización y seguridad. Cuando un algoritmo no tiene efectos secundarios (es decir referencialmente transparente), y se expresa exclusivamente usando matemáticas puras compiladores pueden reestructurar el algoritmo de acuerdo con reglas de matemáticas. Esto hace que sea más fácil para los compiladores a optimizar el código y explotar las arquitecturas paralelas. Otro beneficio importante es la capacidad de demostrar ciertas propiedades de código.

  

Puede un forgo lenguaje de propósito general   ya sea lógica o matemática?

No. ¿Cómo hacer operaciones booleanas o la aritmética sin lógica o matemática. Puede significar algo aquí que no entiendo.

  

¿Cuáles son algunos de los idiomas que realmente mostrar los beneficios de uno u otro enfoque?

Haskell, ML, ocaml, Miranda, Alice, Oz, Erlang, Twelf, Coq, Prolog, todos demuestran las aplicaciones más rigurosas de las matemáticas a la programación.

  

¿Qué características de hardware hacen que uno de los enfoques más atractivo que el otro?

No creo que el hardware cambia mucho las cosas en términos de los beneficios de los enfoques matemáticos rigurosos a la programación. Los beneficios de código referencialmente transparente son en su mayoría a nivel del compilador.

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