Trabajo Profesional
Facultad de Ingeniería - UBA
ObjetivoS
Ambiente de Desarrollo para Clojure en Clojure.
ObjetivoS
Extensibilidad
ObjetivoS
USABILIDAD
Clojure
CLojure
+ SLIME + Clojure-mode
+ Counter-clockwise
+ La Clojure
Ambientes de DEsarrollo
Ambientes de desarrollo
Metodologia
Iteraciones
Reuniones periodicas
Entregables por iteracion
pruebas
PROTOTIPO
Objetivos
-
Investigar disponibilidad de librerías.
-
Explorar herramientas de abstracción.
-
Adaptación al estilo funcional de programación.
-
Identificar principales desafíos.
PROTOTIPO
(defn make-main
"Creates the main window and all
its controls."
[name]
(ui/init)
(let [main (ui/frame name)
tabs (ui/tabbed-pane)
ui-main {:main main :tabs tabs}
icons (map (comp ui/image io/resource) icons-paths)]
(-> main
(ui/set :icon-images icons)
(ui/set :j-menu-bar (build-menu ui-main))
(ui/set :size 800 600)
(ui/maximize)
(ui/show)
(ui/add tabs))
ui-main))
Interfaz gráfica - SWING
PROTOTIPO
Coloreado sintáctico
PROTOTIPO
Editor de Texto - DESEMPEÑO
Abstracción UI
(attr text-field :text "Hola")
Abstracción UI
Selectores
controles anidados
Manipulación complicada
SELECTORES SImPLIFICAN modificacón
(update window :label attr :text "Last name")
Antes
DESPUéS
Abstracción UI
Selectores - IMPLEMENTACIón
[:#center [:text-editor (partial has-doc? doc)]]
Abstracción UI
Sintáxisis declarativa
(def window [:window {:visible true
:size [200 60]
:layout :flow}
[:label {:text "Name"}]
[:text-field {:text "Enter your name here"}]]
(let [window (ui/window {:visible true
:size [200 60]
:layout :flow})
label (ui/label {:text "Name"})
text (ui/text-field {:text "Enter your name here"})]
(->> window
(ui/add label)
(ui/add text)))
Arquitectura
mvc
Arquitectura
Núcleo + PLugins
Arquitectura
Núcleo - Modelo
Documento
historial
Lenguaje
Configuración
ui
Aplicación
Arquitectura
Núcleo - VISTA
ventana
menú ppal
secciones
Arquitectura
Núcleo - CONTROL
EVENTOS
MANEJADORES
Arquitectura
PLugins
GLobales
LOCALES
-
Ventana Principal + Editor
-
Ir a línea
-
Deshacer / Rehacer
-
Notificador
-
Explorador de Archivos
-
Buscar y Reemplazar
-
Perfil de Código
-
Clojure
-
Markdown
-
Coloreado Sintáctico
-
Autocompletar
-
Resaltado de Delimitadores
-
Delimitadores Arcoiris
-
Paredit
-
Macro expansión
-
Vista Previa (Markdown)
Editor de TExto
Editor de TExto
coloreado sintáctico
Editor de TExto
DESHACER / REHACER
Editor de TExto
MARKDOWN
nREPL
Conexión con una instancia de Clojure a través de la red
network
READ EVAL PRINT LOOP
nREPL
Servidor
nREPL
CLIENTE
AUTO-completar
Contexto Local
Contexto Global
+
+
trabajo futuro
Funcionalidad
Interfaz gráfica
Dependencia entre plugins
Búsqueda del árbol sintáctico
Conclusiones
Inmutabilidad
Conclusiones
POO / PF
Conclusiones
Manipulación código fuente
Conclusiones
Alcance
¡MUCHAS Gracias!
Clojure Lab
By Juan Facorro
Clojure Lab
IDE built for Clojure in Clojure.
- 481