Saltar al contenido

Lenguajes lógicos: ¿Prolog o Lisp/Smalltalk o algo más?

Basta ya de investigar en otras webs porque has llegado al lugar adecuado, tenemos la solución que necesitas y sin complicarte.

Solución:

¿Hay alguna razón particular para no usar R? Es una especie de decisión entre compilar y comprar (o, en este caso, descargar). Si está haciendo un cálculo estadístico, R tiene muchos paquetes listos para usar. Estos incluyen muchas bibliotecas e interfaces para varios tipos de fuentes de datos. También hay bibliotecas de interfaz para incrustar R en otros lenguajes como Python, por lo que puede crear una aplicación híbrida con una GUI en Python (por ejemplo) y un motor de cómputo central usando R.

En este caso, posiblemente podría reducir el esfuerzo necesario para la implementación y terminar con una aplicación más flexible.

Si tienes el corazón puesto en aprender otro idioma, por supuesto, hazlo. Hay varias buenas implementaciones gratuitas (algunas como en el habla, otras como en la cerveza) de Smalltalk, Prolog y LISP.

Si está instalando una interfaz de usuario en el sistema, Smalltalk podría ser la mejor opción. Si desea crear grandes conjuntos de reglas como parte de su aplicación, Prolog está diseñado para este tipo de cosas. Varias personas han escrito sobre la efifanía de LISP que influye en la forma en que piensa acerca de la programación, pero realmente no puedo dar fe de esto por experiencia: solo he usado AutoLISP para escribir scripts de automatización en AutoCAD.

A riesgo de ofender a algunos, me cuesta reconciliarme”fácil de entender por otras personas aficionadas al lenguaje BASIC” con cualquiera de los idiomas que mencionaste. Eso es no pretende ser una crítica, sino una observación de que cada uno de los lenguajes que mencionas tiene un estilo y un idioma natural que es bastante diferente al de BASIC.

  • Smalltalk: OO puro desde cero, generalmente (por ejemplo, Squeak) junto con un entorno integrado que es simultáneamente el IDE y el tiempo de ejecución. IOW ingresas a Smalltalk VM y trabajas dentro de eso en lugar de simplemente escribir un texto que es “código fuente”.

  • LISP: mucho más cerca de la programación funcional (aunque con matices imperativos); los prefix La notación es la primera barrera para la mayoría de las personas a las que les “gustan” otros lenguajes, pero el concepto y el uso de macros es mucho más importante.

  • Clojure: la combinación de la integración de LISP, OO y JVM hace que este sea aún menos similar a BASIC.

  • Python y Ruby: los agruparé juntos (a riesgo de molestar aún más a los fanáticos de cualquiera de los dos 😉 porque ambos son lenguaje OO con notaciones distintas que requerirán un poco de curva de aprendizaje para un extraño. El uso de solo sangría para controlar el anidamiento en Python y el uso de caracteres especiales similar a Perl en Ruby son a menudo puntos de queja de los recién llegados. Aunque ambos se pueden escribir en un estilo imperativo, los usuarios experimentados lo considerarían no estándar.

  • Prolog: este es el BASIC más diferente de todos los lenguajes mencionados. Todos los demás lenguajes que mencionó se pueden (ab)utilizar en un estilo semi-procedimental, pero eso es esencialmente imposible en Prolog. Requiere una comprensión profunda y comodidad con la recursividad para hacer cualquier cosa que no sea trivial.

El código escrito con un “acento nativo” en prácticamente todos estos lenguajes (pero especialmente en Prolog, en mi humilde opinión) hará uso de modismos y conceptos que están fuera de la norma para la programación BASIC convencional. Dicho de otra manera, si elige uno de estos y luego escribe el código “con un acento BÁSICO”, prácticamente ha desperdiciado los beneficios que el lenguaje puede ofrecer.

Creo que vale la pena aprender todos ellos por los conceptos que pueden enseñar (o al menos reforzar, dependiendo de tu formación). Pero la similitud con Language X (para una amplia gama de valores de X) no es lo que obtendrá.

Puedo responderte parcialmente

(¿No son lo mismo Smalltalk/Lisp/Clojure? ¿Como Python y Ruby? En cuanto a la semántica)

No, no es. Smalltalk es un lenguaje OO con paso de mensajes en lugar de llamadas a métodos. Lisp es Lisp 😉 Significa lenguaje verdaderamente funcional con el poderoso macro sistema, soporte OO que nunca se ve en otros idiomas (en CL) y muchas más funciones. Closure es un lenguaje similar a Lisp sin muchas características de Lisp pero con una buena integración con JVM. No es compatible con la optimización de llamadas de seguimiento, por ejemplo. Y python o ruby ​​son lenguajes orientados a objetos imperativos clásicos con una capacidad funcional limitada. Nota palabra limitada. Por ejemplo, a Guido no le gusta la programación funcional y eliminó algunas características funcionales en la versión 2.5 y 2.6.

Si está familiarizado con la programación de procedimientos imperativos como en Python y desea cambiar su paradigma, debe tomar su decisión con cuidado.

Reseñas y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *