Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRamiro Cuevas Modificado hace 10 años
2
Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...
3
Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...
4
!Odio los lenguajes dinámicos! lenguajes dinámicos! Cómo jefe de proyecto…..
5
Mi historia Me gustaban los lenguajes dinámicos Como Administrador adoraba Perl y las shells de Unix Al principio Las Actives Server Pages (ASP) eran fantásticas Proyectos con lenguajes dinámicos Intranet y Oficina sin papeles en Repsol Middleware bancario en Uno-E El problema está en la dimensión De decenas pasaron a centenas de páginas Errores de sintaxis en proyectos en producción Java triunfó como respuesta al los problemas con lenguajes dinámicos
6
Lenguajes estáticos Un mundo fijo en ejecución IU Lógica DatosNombreApellidoSaldo Rec ID CarlosCampos$56893 LuisAnsa$32829 JoseGarcía$99564 class Usuario { public string Nombre; public string Nombre; public string Apellidos; public string Apellidos; public long Saldo; public long Saldo;} <usuario> Carlos Carlos Campos Campos 56 56 </usuario>
7
Lenguajes estáticos Para cambiar hay que recompilar IU Lógica PersistenciaNombreApellidoSaldoE.Civil Rec ID CarlosCampos$56Soltero893 LuisAnsa$32Casado829 JoseGarcía$99Casado564 class Usuario { public string Nombre; public string Nombre; public string Apellidos; public string Apellidos; public long Saldo; public long Saldo; public int EstadoCivil; public int EstadoCivil;} <usuario> Carlos Carlos Campos Campos 56 56 Casado Casado </usuario> ¡El código fija las Estructuras de Datos! ¡El código fija las Estructuras de Datos!
8
Control vs flexibilidad Control Java, C# Tipos Estáticos Servicios Web Flexibilidad JScript, Ruby, Python Tipos Dinámicos REST El control fijar las estructuras de datos Resistencia al cambio Recompilar para cambiar ¿Son los lenguajes dinámicos poco maduros? ¿Ofrecen mayor flexibilidad y productividad? VS
9
Ventajas Tipos Estáticos Anticipan la detección de errores en la utilización de tipos Permite a los compiladores generar código máquina más optimizado El código es más entendible. En el código puedes ver el tipo de las variable, expresiones o funciones
10
Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...
11
Think Different.
12
C# es mejor que VB.NET
13
VB.NET es mejor que C#!
14
C++ es mejor porque es más rápido!!!
15
Nah… lo que importa es el CLR/JVM
16
Que va, que va…lo que importa son las librerías no el lenguaje
18
s = Hola + 2
19
Principales ventajas… Posponer las decisiones y evitar los limites Productividad Agilidad Principales mitos… Inseguro Lento Sin herramientas
20
¿?
21
¿ Lenguajes dinámicos ?
22
JavaScript Perl Python Ruby Smalltalk Lisp
23
Algunos rubíes de sintaxis
24
Ruido ArrayList al = new ArrayList(); al.Add(42); int res = (int)al[0];
25
Ruido ArrayList al = new ArrayList(); al.Add(42); int res = (int)al[0];
26
Ruido al = ArrayList.new al.Add(42) res = al[0]
27
Ironruby Sintaxis & Particularidades
28
Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...
29
Lenguajes + Frameworks Los lenguajes dinámicos son interesantes Lenguajes + Frameworks impresionan Ruby sin su framework Rails no sería lo mismo Python también tiene dos frameworks: Django y TurboGear Objetivo: Productividad del desarrollo Rompen con muchas convenciones en el desarrollo
30
Principios de Rails Objetivo concreto: Aplicaciones Web presentando datos en Base de Datos Integración sin Fisuras Convención en lugar de Configuración No te repitas (DRY: dont repeat yourself) Metaprogramación : programas que generan programas. Rails hace que cada línea escrita de código trabaje duro
31
Rails: Arquitectura prefijada Estructura de directorios prefijado Scaffolding: generación de código ActionPack: Un Modelo Vista Controlador para crear el Interfaz Web ActiveRecord: un modelo simple de ORM para acceso a base de datos Modelo Ajax incorporado GEMS: Empaquetado y gestión de distribución de módulos
32
Metaprogramación en Rails Programas que generan programas Generadores Métodos mágicos method_missing const_missing Definiciones dinámicas (define_method)
33
Alias class String alias :largo :length end puts "hola".largo puts "hola".length class String alias :old_largo :length def length old_length + 2 end puts "hola".length 4 4 6
34
Send: reflexión simplificada str = Metaprogramacion puts str.upcase puts str.send ( :upcase ) METAPROGRAMACION METAPROGRAMACION [ :upcase, :downcase, :reverse ].each do |m| puts str.send(m) end METAPROGRAMACION METAPROGRAMACION Metaprogramacion Metaprogramacion noicamargorpateM noicamargorpateM
35
Define_method y def class Prueba def foo metodo foo" metodo foo"end define_method ( :bar ) do metodo bar" metodo bar"endend p = Prueba.new puts p.foo puts p.bar metodo bar metodo bar metodo foo metodo foo
36
ActiveRecord - 1 ORM propio de Rails cercano al estándar Facilidad de asociación clase-tabla: Clase debe heredar de ActiveRecord::Base Rails asume el nombre de la tabla como el plural del nombre de la clase (método pluralize()). Permite asociación explícita Atributos de la clase se infieren en tiempo de ejecución Manejo automatizado de claves primarias
37
ActiveRecord - 2 Ejemplo: Creamos una tabla orders de órdenes de compra: create table orders { idintnot null auto_increment, namevarchar(100)not null, emailvarchar(255)not null, addresstextnot null, pay_typechar(10)not null, shipped_atdatetimenull, countryvarchar(70)null; primary key (id) };
38
ActiveRecord - 3 Ejemplo (sigue): Ahora queremos acceder a un objeto de la tabla orders, para lo que declaramos: class Order < ActiveRecord::Base end Rails resuelve las asociaciones y ya podemos utilizar objetos de la tabla: order = Order.find(123) order.name = Javier Espinazo order.save
39
ActiveRecord – 4: Funciones Dinámicas Order.find_by_name Qarana Order.find_all_by_pay_type cheque Order.find_by_age 20 Order.find_by_name(Buck, :conditions => {:country = Sweden, :age=> 20..30}) Order.find_by_name_and_country Andreas, Spain
40
Conclusiones Framework Lenguajes Dinámicos + Frameworks Espectacularmente productivos en sitios web pequeños Especialmente si desarrollas en Java con Struts ¿Qué ocurre cuando los proyectos crecen? En realidad, no importa. Ya están influyendo más allá de los lenguajes dinámicos Su libertad e ideas cambiarán tu forma de programar Ejemplos : ironruby y ironpython en.NET, Jruby en Java, fremeworks como Monorail y Microsoft MVC Ya se escuchas las propuestas de sistemas híbridos (tipos estáticos y dinámicos a la vez)
41
Escenarios Flexibles Arquitecturas Orientadas a Servicios (SOA) y el Versionado Software como Servicio (SaaS) y la Personalización Extrema Arquitecturas Tradicionales y los cambios de requisitos Aplicaciones Multipaís en multinacionales Arquitecturas Aplicaciones ISV
42
Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...
43
...Qué hacen 2 de MS hablando de Ruby y lenguajes inámicos...
44
DLR Dynamic LanguagesVBxJScript IronPythonIronRuby 3rd Party CLR Frameworks Integración VS Tools Scripting Hosts Applications ASP.NETSilverlight
45
Versión release a Finales del 2008 IronPython IronRuby - RoR? VBx JScript ¿ Los vuestros ?
46
…links… John Lam http://www.iunknown.com Ironpython Team http://blogs.msdn.com/ironpython DLR BLOG http://blogs.msdn.com/hugunin/ www.codeplex.com/IronPython www.ironruby.net
47
© 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.