0% encontró este documento útil (0 votos)
221 vistas20 páginas

Introducción a ClojureScript y su Uso

ClojureScript es un lenguaje de programación funcional que compila a JavaScript, con sintaxis similar a Clojure y Lisp. Tiene características como representación de funciones como valores, estructuras de datos inmutables, y evaluación dinámica a través de una consola REPL. ClojureScript no implementa todas las características de concurrencia de Clojure debido a limitaciones de JavaScript como un solo subproceso.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
221 vistas20 páginas

Introducción a ClojureScript y su Uso

ClojureScript es un lenguaje de programación funcional que compila a JavaScript, con sintaxis similar a Clojure y Lisp. Tiene características como representación de funciones como valores, estructuras de datos inmutables, y evaluación dinámica a través de una consola REPL. ClojureScript no implementa todas las características de concurrencia de Clojure debido a limitaciones de JavaScript como un solo subproceso.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

*

ClojureScript es un lenguaje de programacin de propsito general que hace nfasis especial en el paradigma funcional con el objetivo de eliminar la complejidad de la programacin concurrente, que es una parte del lenguaje de programacin Clojure que se compila a JavaScript

OBJETIVO GENERAL * Conocer acerca de ClojureScript a fin de implementarlo en un ejercicio prctico OBJETIVOS ESPECIFICOS * Investigar los principales conceptos acerca de ClojureScript. * Aprender sobre la instalacin de Clojure sobre cualquier Sistema Operativo.

Clojure es un lenguaje de programacin de propsito general, que es considerado un dialecto de Lisp. Ofrece un estilo de programacin interactiva, que incentiva una forma de programar funcional, con el objetivo de eliminar la complejidad asociada a la programacin concurrente. Clojure puede ser ejecutado sobre JMV . ClojureScript es un nuevo compilador de Clojure que se dirige JavaScript.

Evaluacin de Funciones Matemticas

* Esto es el ncleo detrs de los lenguajes

funcionales. En la Programacin Orientada a Objetos(POO), tendemos a pensar en funciones como mtodos que cambien el estado de nuestros objetos. Ahora, en una funcin matemtica nosotros no tenemos realmente la nocin del objeto o incluso ni de su estado.

Transparencia referencial. Al no haber variables, no hay efectos laterales, es decir, al ejecutar la funcin no cambiar nada fuera del entorno de sta. Tampoco depender para nada de lo que haya en ese entorno. Se dice que una funcin tiene transparencia referencial si, para un valor de entrada, produce siempre la misma salida. En programacin funcional esto es siempre as por definicin. * Concurrencia. Un programa funcional sta listo para la concurrencia sin demasiadas modificaciones. No se tendr que preocupar por los famosos deadlock ya que no se necesitas usarlos. Ningn dato es modificado dos veces por el mismo hilo, mucho menos por dos hilos diferentes.

Evaluacin perezosa (Lazy evaluation). Para una mente acostumbrada a lo imperativo cuesta entender este concepto, al no tener que seguir una serie de rdenes, una tras otra, algunos lenguajes funcionales slo evalan lo que les es requerido en cada momento. Esto permite cosas como el cdigo Haskell take 5 [1..], que significa tomar los cinco primeros nmeros de una lista infinita de nmeros empezando por el 1. En un lenguaje imperativo, esto llevara a un bucle infinito mientras se genera la lista. En Haskell, slo se genera lo que se necesita; en este caso, los cinco primeros nmeros. Esto puede redundar en una ejecucin ms eficiente y un cdigo ms claro y cercano al matemtico. Altsima abstraccin. Los lenguajes funcionales implementan mecanismos de abstraccin que hacen la vida mas fcil. Un sistema de tipos de datos, polimorfismo en muchos niveles, y un montn de nuevos conceptos como funciones de orden superior, las inevitables operaciones que no son puramente funcionales, como la entrada/salida o los nmeros aleatorios, quedan envueltos en abstracciones.

* Elegancia, legibilidad, flexibilidad. Por lo general, cuanto

ms abstracto es un lenguaje, ms se potencian estas caractersticas, por lo que los programas funcionales suelen ser ms claros, ms concisos y ms bellos que sus contrapartidas en lenguajes imperativos (incluso en Python o Ruby). Adems, la ausencia de entorno y de estado permite que, si se est leyendo una funcin, slo se tenga que retener esa funcin, sin preocuparse de ms. transparencia referencial, hacer unit testing en lenguajes imperativos es trivial. Adems, el alto nivel hace que los errores lo tengan difcil para esconderse por el cdigo, por lo que suelen salir programas muy fiables.

* Facilidad para las pruebas y la depuracin. Gracias a la

* Mayor dificultad inicial. Aunque sean muy fciles de entender


y mantener, suele ser ms difcil escribir un programa funcionalmente, sobre todo para mentes acostumbradas a lo imperativo. La gran variedad de conceptos complejos a tener en cuenta hace difcil dominar el lenguaje y producir buen cdigo. La ausencia de variables de estado, aunque nos facilite la vida a posteriori, hace que se tenga que utilizar ms la cabeza al sentarse a escribir lneas y planificar muy bien lo que se va a hacer, y esto en entornos de produccin puede no ser lo ms conveniente. * Falta de recursos. Al estar tan poco extendidos, faltan la gran cantidad de recursos (libreras, frameworks, etc.) existentes para otros lenguajes; aunque ltimamente, se estn volviendo a poner relativamente de moda, cada vez salen ms soluciones.

La programacin orientada a objetos es una forma de programacin imperativa puesto que al programar orientando a objetos se describe la secuencia que debe seguir el programa para resolver un problema dado.

* La diferencia con otras formas de programacin imperativas

como la programacin estructurada es que en la orientacin a objetos se hace uso de estructuras de datos llamadas objetos que aglutinan propiedades y mtodos conjuntamente con sus interacciones.
fiabilidad posible un objeto del mundo real y como se relaciona o interacta con el resto del mundo que lo rodea a travs de interfaces. La programacin orientada a objetos se basa tambin en conceptos como la abstraccin de datos, la encapsulacin, los eventos, la modularidad, la herencia y el polimorfismo.

* Un objeto es una estructura abstracta que describe con la mayor

Caracterstica

Enfoque imperativo

Enfoque funcional Informacin deseada y transformaciones necesarias

Enfoque del programador Cmo realizar tareas (algoritmos) y cmo realizar el seguimiento de cambios de estado.

Cambios de estado Orden de ejecucin

Importante Importante

Inexistente Baja importancia

Control del flujo primario Bucles, elementos condicionales y llamadas a funciones (mtodos).

Llamadas a funciones, incluyendo la recursividad.

Unidad de manipulacin primaria

Instancias de estructuras o clases

Funciones como recopilaciones de datos y objetos de primera clase

*A diferencia de algunas herramientas

JavaScript y macros, ClojureScript no hace cualquier "minificacin" u otras optimizaciones para reducir el tamao del cdigo JavaScript que emite. ClojureScript est diseado para trabajar con el compilador de cierre de Google a fin de producir JavaScript optimizado.

* En el nivel de idioma, ClojureScript est diseado para imitar


Clojure tanto como sea posible. * Sin embargo, ni ClojureScript ni Clojure hacen ningn intento de ocultar los detalles de funcionamiento de la plataforma de host subyacente, JavaScript o JVM, respectivamente. Como resultado de ello, habr diferencias entre las dos lenguas en las que sus plataformas de acogida sean las que se traten: * Las llamadas a acoger mtodos o clases * Capacidad de tipos, tales como cadenas y nmeros * Capacidad de operaciones tales como la aritmtica * Concurrencia y roscado (JavaScript es un nico subproceso) * Rendimiento

* ClojureScript no implementa todo el lenguaje

Clojure. En particular, ClojureScript no incluye la mayor parte de las caractersticas de concurrencia para el que es bien conocido en Clojure, porque VM JavaScript son de un nico subproceso, estas caractersticas son menos importantes. * Clojure es un lenguaje de programacin joven (2007), pero ha crecido rpidamente en la estabilidad, facilidad de uso, y el rendimiento. ClojureScript es an ms joven (2011) y es consecuentemente menos maduro.

La sintxis de ClojureScript es similar al Lisp, est construida sobre expresiones simblicas que son convertidas en estructuras de datos por un lector antes de ser compiladas. Las expresiones se caracterizan por estar delimitadas por parntesis, y por su notacin prefija, por la que se llama al primer miembro de cada lista como funcin, pasndole el resto de miembros como argumentos.

*Desarrollo

dinmico con una consola de evaluacin REPL *Representacin de funciones como valores, y preferencia por la recursin. *Nmeros de precisin arbitraria, y representacin literal de fracciones, generadas en las divisiones no enteras.

*Sistema

integrado de estructuras de datos persistentes e inmutables. *Interaccin con java: al compilarse las aplicaciones escritas en Clojure pueden ser fcilmente integradas en servidores de aplicaciones u otros entornos java.

*El cdigo en clojurescript es reducido. *Recursin bien implementada. *Tiene una repl (Desarrollo dinmico con
evaluacin)

una consola de

*Funciones son objetos de primera clase. *Estructuras de datos, vectores, mapas, listas. *Se puede utilizar las clases de Java para trabajar
Clojure.

con

*Clojure es un poderoso lenguaje

expresivo desarrollado para Java. *Orientado mas a las aplicaciones web. *Es accesible ya que es lenguaje funcional. *ClojureScript puede acceder a los mtodos y campos de objetos de JavaScript directamente reduciendo el tiempo de ejecucin.

*Profundizar mas sobre este


nuevo lenguaje ya que ClojureScript es una buena opcin a la hora de crear aplicaciones web.

También podría gustarte