La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos...

Presentaciones similares


Presentación del tema: "Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos..."— Transcripción de la presentación:

1

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

17

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.


Descargar ppt "Todo son problemas Lenguajes dinámicos Frameworks DLR...ntentemos...... i ntentemos..."

Presentaciones similares


Anuncios Google