statistics - tutorial - prolog pdf
Lenguajes lógicos-Prolog o Lisp/Smalltalk o algo más? (5)
Prolog es un lenguaje muy diferente. Puede ser muy difícil de entender, principalmente porque depende en gran medida de la recursividad para realizar tareas muy básicas. Si realmente estás dispuesto, pruébalo. Puede ser muy poderoso porque permite expess relaciones y resolver problemas complicados simplemente, ejemplos típicos son Towers of Hanoi o quicksort. Cambiará tu forma de pensar, lo que puede ser difícil si estás acostumbrado a los idiomas imperativos.
Entonces, estoy escribiendo algún tipo de programa de estadísticas (de hecho, lo rediseño a algo más elegante) y pensé que debería usar un lenguaje creado para ese tipo de cosas (que trata de enormes datos de estadísticas, conexiones entre ellos y algo corto de programación genética / neuronal).
Para decirte la verdad, solo quiero una excusa para sumergirte en lisp / smalltalk (¿no es smalltalk / lisp / clojure lo mismo? - como python y ruby? -semantics-wise) pero también quiero que se entienda fácilmente un idioma por otras personas que son aficionadas al lenguaje BÁSICO (es por eso que no elegí LISP - aún: D).
También verifiqué Prolog y parece un lenguaje bastante bueno (fácil de hacer relaciones entre datos y más fácil que Lisp) pero me gustaría escuchar lo que piensas.
Gracias
Editar: siempre confundo el ceceo común con smalltalk. Perdón por juntar estas dos lenguas. También lo que quise decir con " otras personas que son aficionadas al lenguaje BASIC " es que no prefiero un lenguaje con semántica como lisp (para personas sin antecedentes de CS) y encuentro que Prolog es un poco más intuitivo (pero ese es mi opinión después de que me molesté un poco con los dos).
Puedo responderte parcialmente
(¿no son smalltalk / lisp / clojure lo mismo? - como python y ruby? -semantics-wise)
No, no es. Smalltalk es el lenguaje OO con paso de mensaje en lugar de llamadas de método. Lisp es Lisp ;-) Significa un lenguaje verdaderamente funcional con un potente macro sistema, compatibilidad con OO que nunca se ha visto en otro idioma (en CL) y muchas características más. El cierre es un lenguaje parecido a Lisp sin muchas características Lisp, pero con una buena integración con JVM. No está apoyando la optimización de la cola de cola, por ejemplo. Y python o ruby son los lenguajes OO imperativos clásicos con algunas habilidades funcionales limitadas. 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 procesal imperativa como en Python y desea cambiar su paradigma, debe tomar su decisión con cuidado.
Si está interesado en Prolog, entonces hay una versión gratuita de Visual Prolog disponible y la versión comercial tiene un precio razonable.
Es un derivado de Prolog, por lo que no es la implementación clásica del lenguaje, pero tiene una historia respetable: Borland comercializó el ancestro de DOS como Turbo-Prolog a finales de los 80.
También es solo Windows, pero se puede usar para crear archivos DLL de Windows estándar para que pueda vincular su código a un lenguaje de programación de Windows "normal". Nunca he usado el paquete con enojo, pero hice un par de cursos de Prolog en la Uni, así que lo he descargado de vez en cuando para jugar y buscar posibles usos y se ve lo suficientemente sólido. Puede ser solo el conjunto de engranajes que estás buscando.
A riesgo de ofender a algunos, me resulta difícil conciliar "con facilidad para otras personas aficionadas al lenguaje BASIC " con cualquiera de los idiomas que mencionas. Eso no pretende ser una crítica, sino una observación de que cada uno de los idiomas que menciona tiene un estilo y un lenguaje natural que es bastante diferente del 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 ingresa a Smalltalk Vm y trabaja dentro de él en lugar de solo escribir texto que es "código fuente".
LISP - mucho más cerca de la programación funcional (aunque con contornos imperativos); la notación de prefijo es la primera barrera para la mayoría de las personas que "les gusta" a otros idiomas, pero el concepto y el uso de macros es mucho más sustancial.
Clojure: la combinación de integración LISP, OO y JVM hace que esta sea incluso menos parecida a BASIC.
Python y Ruby: mezclo todo esto (a riesgo de molestar aún más a los fans de ;-) porque ambos son lenguaje OO con notaciones distintas que le quitarán un poco de curiosidad a un extraño. El uso de sangrías, solo para el control de anidamiento en Python, y el uso similar a Perl de los caracteres especiales en Ruby son a menudo puntos de queja de los recién llegados. Aunque ambos pueden escribirse con un estilo imperativo, los usuarios con experiencia los considerarían no estándar.
Prolog: este es el BASIC más diferente de todos los idiomas mencionados. Todos los otros idiomas que mencionó pueden (ab) usarse en un estilo semi-procedimental, pero eso es esencialmente imposible en Prolog. Requiere una comprensión profunda de, y la comodidad con, la recursión para hacer algo no trivial.
El código escrito con un "acento nativo" en prácticamente todos estos idiomas (pero especialmente 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", habrá desperdiciado los beneficios que el lenguaje puede ofrecer.
Creo que todos ellos valen la pena aprender por los conceptos que pueden enseñar (o al menos reforzar, dependiendo de su origen). Pero la similitud con Language X (para una amplia gama de valores de X) no es lo que obtendrás.
¿Hay alguna razón en particular para no usar R? Es una especie de decisión de compilación versus compra (o en este caso de descarga). Si está haciendo un cálculo estadístico, R tiene muchos paquetes disponibles. 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 puedes construir 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 corazón dispuesto a aprender otro idioma, hazlo por todos los medios. Hay varias implementaciones gratuitas de Smalltalk, Prolog y LISP (algunas como en voz, algunas como en cerveza) .
Si está poniendo una interfaz de usuario en el sistema, Smalltalk podría ser la mejor opción. Si desea crear conjuntos de reglas grandes como parte de su aplicación, Prolog está diseñado para este tipo de cosas. Varias personas han escrito sobre la ephiphany de LISP que influye en la forma en que piensas acerca de la programación, pero realmente no puedo avalar esto por experiencia. Solo he usado AutoLISP para escribir scripts de automatización en AutoCAD.