Issuu on Google+

INSTITUTO TECNOLOGICO SUPERIOR DE CHAMPOTON

LENGUAJES Y AUTOMATAS II. TEMAS:       

Tecnología. Software Libre. Videojuegos. Programación móvil. Optimización local. Optimización global. Criterios para mejorar el código.

EQUIPO:    

Juan Cruz Alayola. Hernández Ceballos Paola. Patiño Duran Luis. Jaime Pech Pérez.


QUE ES LA TECNOLOGÍA? La Tecnología se define como el conjunto de conocimientos y técnicas que, aplicados de forma lógica y ordenada, permiten al ser humano modificar su entorno material o virtual para satisfacer sus necesidades, esto es, un proceso combinado de pensamiento y acción con la finalidad de crear soluciones útiles. EVOLUCIÓN DEL PLANETA CON LA TECNOLOGÍA. La tecnología evoluciona rápidamente en el mundo en que vivimos, se considera que nuestro mundo revolucionara en aproximadamente unos 30 años. Para tener este cálculo se consideraron las tecnologías más importante e innovadoras en la actualidad.

Se considera que en los últimos años podremos ver un adelanto en el avance de la tecnología en el planeta esto incluirá los medios de comunicación, transportes, internet y avances en las herramientas de salud. ANIMALES VIRTUALES CON MENTES DIGITALES. Aunque emular un cerebro humano está aún muy por encima de las capacidades de la tecnología actual, proyectos

actuales como OpenWorm buscan digitalizar el cerebro de un gusano, por lo que pronto comenzarán los experimentos para emular las funciones neuronales de organismos más complejos, como mamíferos. Las mentes digitales de los animales podrían ser “subidas” a una interfaz robótica, revolucionando nuestra relación con las mascotas y permitiéndonos comprender mejor la evolución de las especies

INTERNET INTERPLANETARIO. Las misiones tripuladas a Marte serán una realidad para el 2030, ya sea en proyectos de exploración de la NASA o de colonización interplanetaria, como el proyecto MarsOne de la empresa Virgin, que planea llevar una tripulación civil al planeta rojo. Sin embargo, la comunicación entre Marte y la Tierra también puede ser vista como la primera forma de contacto interplanetario que haya emprendido el hombre, con lo que habrá multitud de necesidades técnicas que resolver.


CURAR LA SED DEL MUNDO CON EL AGUA DE MAR. Hoy en día ya existen grandes proyectos para desalinizar el agua marina y utilizarla como agua potable. Para el 2030, estos proyectos crecerán a escala industrial, echando mano de los recursos de energías renovables para su operación, como la energía solar y células fotovoltaicas. Los expertos afirman que los déficits de agua potable en grandes zonas del planeta serán historia para finales de la década del 2030.

MAQUINAS MILITARES AUTÓNOMAS. Aunque podría parecer una fantasía de tipo TERMINATOR, hoy en día ya existen sistemas no controlados con humanos que tienen potencial militar, táctico y estratégico.

El Aegis Combat System, que ya está en funcionamiento, tiene un sistema no vigilado por operadores humanos que detecta automáticamente lanzamientos de misiles enemigos para interceptarlos y destruirlos, además del sistema REDOWL, que se encarga de buscar y eliminar francotiradores enemigos en zonas de guerra. TRASPLANTES DE ÓRGANOS PARA TODOS. La medicina personalizada basada en los genes particulares de las personas y la posibilidad de producir, mediante biotecnología, órganos humanos autónomos hechos a la medida de los pacientes, volverá eventualmente irrelevante la figura del donador de órganos. Para el 2030 podremos producir órganos y tejidos a partir de las células madre de cada persona, lo que disminuiría casi en su totalidad el riesgo de que los órganos sean rechazados por el cuerpo.


GEO-INGENIERÍA A GRAN ESCALA. A medida que el cambio climático se vuelve más dramático, la ciencia tendrá que comenzar a buscar soluciones prácticas para mantener las condiciones de vida en la Tierra como estables. Algunas de las técnicas de geo ingeniería más polémicas van desde árboles artificiales y fertilización de los océanos hasta proyectos de control climático para contrarrestar las emisiones de carbono en la atmósfera terrestre. ASISTENTES PERSONALES CON INTELIGENCIA ARTIFICIAL. El programa Siri para los más recientes modelos de Apple será solamente el ancestro de los asistentes personales de las siguientes generaciones de dispositivos y computación personalizada. Ubicuos, capaces de adaptarse y comprender las necesidades precisas de los usuarios, estos asistentes serán capaces de comportarse como nosotros lo haríamos al responder emails y acordar citas, llevando una agenda por ellos mismos e informándonos sobre ella, como un auténtico asistente personal. Dvorsky advierte, sin embargo, que debemos cuidar qué grado de autonomía le damos a nuestros clones virtuales.

COMPUTADORAS POR TODAS PARTES. La noción de un mundo completamente computarizado no es solamente el argumento de una novela futurista, sino algo que ya comenzamos a ver en los automóviles y en muchos electrodomésticos. Este fenómeno es descrito como “everyware”: las computadoras estarán presentes en nuestra ropa, en nuestros accesorios de moda e incluso en lentes de contacto. Nos comunicaremos con ellos a través de una interfaz basada en gestos táctiles naturales y lenguaje vocal cotidiano; sin embargo, la diferencia será que las computadoras tomarán decisiones autónomas (como ajustar el tamaño de la ropa, tal cual podemos ver en la película BACK TO THE FUTURE 3), por lo que su presencia será casi imperceptible.


SOFTWARE LIBRE.

La libertad para utilizar un programa significa que cualquier individuo u organización podrán ejecutarlo desde cualquier sistema informático, con cualquier fin y sin la obligación de comunicárselo subsiguientemente ni al desarrollador ni a ninguna entidad en concreto. ¿QUÉ ES EL CÓDIGO ABIERTO?

Formó parte originariamente de una campaña de marketing por parte de Software Libre. Se hace hincapié en los ¿QUÉ ES EL SOFTWARE LIBRE? beneficios técnicos y económicos del código abierto y el libre desarrollo. Es aquel distribuido bajo una El software libre es una cuestión licencia que permite su de libertad, no de precio, uso, modificación y El software libre está respeta la libertad de los redistribución lo liderado por un pionero usuarios y la comunidad. que permite llamado Richard M. En términos generales, estudiar el Stallman y el proyecto GNU los usuarios tienen la funcionamiento del que se inició en 1984. libertad de copiar, programa y efectuar modificaciones con el distribuir, estudiar, modificar fin de mejorarlo y/o y mejorar el software. Con estas adaptarlo a algún propósito específico. libertades, los usuarios (tanto Poco software que sea reconocido por la individualmente como en forma Iniciativa de Código Abierto y que a su vez colectiva) controlan el programa y lo que no sea software libre, de aquí que se hace. utilicen casi siempre ambos términos juntos para referirse a un software.  Libertad 0: la libertad para ejecutar el programa. Libertad 1: la libertad para estudiar el funcionamiento y adaptación del programa.  Libertad 2: la libertad para redistribuir copias.  Libertad 3: la libertad para mejorar el programa y luego publicarlo a toda la comunidad. 


BENEFICIOS DEL SOFTWARE LIBRE Y DE CÓDIGO ABIERTO.

OpenOffice: es la principal suite

COMPARTIR

CONOCER Y CONTROLAR LO QUE ESTÁ PASANDO 

Ubuntu: se ha convertido en la principal referencia hablando de las distribuciones del sistema operativo Linux con un gran impacto en otros proyectos de Open Source.

ARREGLAR EL SOFTWARE 

BENEFICIOS TÉCNICOS BENEFICIOS ECONÓMICO S

PROYECTOS MÁS CONOCIDOS. La filosofía Open Source ha tomado cierta importancia en el desarrollo de proyectos que acogieron esta filosofía en donde se encuentran algunos que se destacan o se han dado a conocer más que otros. 

phpBB: es un sistema de gestión de foros

Firefox: aunque el código está desarrollado en Mozilla, cualquiera puede realizar aportaciones a un proyecto

de oficina de código abierto para procesamiento de textos.


todo tipo de armas que podemos crear. Dying Light está siendo desarrollado tanto para las consolas de nueva generación: PS4 y Xbox One, como para las de la presente generación: Xbox 360, PS3 y, por supuesto, PC.

VIDEOJUEGOS ESPERADOS PARA EL 2014.

PLANTAS VS. ZOMBIES: GARDEN WARFARE

¿Quién no ama los videojuegos? En esta edición mostraremos algunos de los videojuegos que esperamos este 2014; nos encontraremos con ambientes siniestros así como divertidos. No esperemos más y demos un recorrido para conocerlos mejor.

DYING LIGHT

Para los amantes de los zombis llega este 2014 Dying Light. De los creadores del galardonado Dead Island y Call of Juarez, desarrollado por Techland, lo nuevo de Warner Bros. Un videojuego en primera persona con varios toques de survival horror.

En una ambientación terrorífica y opresora podremos recorrer y explorar a nuestro antojo, golpear y desmembrar zombis con

Si gustas de los zombis pero con una faceta humorística entonces tenemos para ti Plants vs. Zombies: Garden Warfare. Plants vs. Zombies se mete en las trincheras con una nueva experiencia de acción explosiva. Vuela zombis por los aires, siembra plantas y conoce nuevos personajes en el explosivo mundo que mezcla la profundidad de un juego de acción online tradicional con el humor refrescante de Plants vs. Zombies.

Esta versión contara con multijugador hasta para 24 jugadores pudiendo elegir tu bando, al igual que podrás modificar tus plantas y zombis con cientos de artículos únicos.


LORDS OF THE FALLEN Lords of the Fallen será un juego de acción y rol en tercera persona, nos mostrara una experiencia fascinante con toques estratégicos, en un mundo por explorar.

El juego contará con un sistema avanzado de combate con enormes arboles, ambientado en un mundo de fantasía en el que los dioses han fallado a la humanidad. El jugador asumirá el papel de un humano llamado Harkyn que tendrá que embarcarse en una aventura para evitar que una fuerza sobrenatural arrase el mundo. El jugador podrá tomar decisiones a lo largo de la aventura que alteren el mundo y cambien la historia del juego.

Lords of the Fallen a sido producido por CI Games, el juego es obra de Tomasz Gop, productor de The Witcher 2: Assassins of Kings.

ULTRA STREET FIGHTER IV Esta es la actualización para la última entrega de la popular y exitosa saga de lucha de la compañía japonesa Street Fighter.

Capcom ha anunciado que la versión para consolas de Ultra Street Fighter 4 llegará a EE.UU. y Europa para la primavera de 2014, poco después del estreno de la versión arcade.

La actualización de Super Street Fighter 4: Arcade Edition incluirá nuevos luchadores como Elena, Hugo, Poison y Rolento y Capcom ha asegurado que Ultra SF4 será la versión "con una influencia más abierta" de la serie, ya que la compañía japonesa se ha tomado la molestia de leer más de 20.000 comentarios hechos por los fans con el objetivo de incluir las modificaciones oportunas para hacer el mejor juego posible.


Y por último pero no menos importante tenemos:

CASTLEVANIA: LORDS OF SHADOW 2

FIFA 2014

De la saga Castlevania y la secuela de Castlevania: Lords of Shadow. a historia se desarrolla después del epílogo de Castlevania: Lords of Shadow, donde encontramos un Gabriel Belmont transformado en Drácula. Con la aparición de Zobek en la guarida del protagonista, este le promete que si lo ayuda a derrotar a Satán, él le ayudará a Gabriel a quitarse esa maldición

Por supuesto no podíamos dejar pasar “FIFA 2014”. En esta versión podrás sentir la electricidad de un estadio con vida y experimenta la majestuosidad de los escenarios de futbol más grandiosos del mundo. Cada zancada cuenta con la agilidad y explosividad de atletas de clase mundial, además, “FIFA 14” ofrece cientos de habilidades y comportamientos nunca antes vistos.

Y así damos por terminado este tour. Espero les haya gustado y pronto los sorprenderemos con más y mejores videojuegos próximos a salir.


PROGRAMACIÓN MÓVIL EN ANDROID.

En este artículo nos introduciremos en aspectos básicos del por qué la programación móvil, pero antes de entrar vamos a hablar acerca de la telefonía móvil.

TELEFONÍA MÓVIL En la actualidad la telefonía móvil está cambiando la sociedad actual, tal y como la ha hecho internet. Los teléfonos móviles son compactos, pueden llevarse en un bolsillo sin complicaciones, es decir tenemos acceso a un sinfín de aplicaciones, podemos comunicarnos con nuestros amigos y familiares, acceder a internet, etc.

Tal y como en una computadora ordinaria, sin un sistema operativo no sería nada, pero eso no es problema ya existen diversos sistema para estos pequeños pero poderosos dispositivos, entre los más importantes se encuentran android, Windows Phone, iPhone, symbian, BlackBerry, etc. De los cuales el más utilizado es android.

ANDROID COMO PLATAFORMA DE DESARROLLO El lanzamiento de android como nueva plataforma para desarrollo de aplicaciones móviles ha causado gran impacto entre los usuarios y las industrias que se dedican a producir aplicaciones para este sistema.

Para destacar las razones por la que android es distinto a otros sistemas, caben por destacar las siguientes: Puede que le parezca extraña la siguiente pregunta, pero ¿Podría un teléfono móvil convertirse en la nueva computadora del siglo XXI?, por muy extraño e irreal que lo parezca, no lo es, ya que estos dispositivos están ganando terreno en el mundo de la tecnología, pues no solo serviría como herramienta para ratos de ocio, comunicación, o búsqueda de información, si no que en el podemos realizar tareas tales como en nuestra propia computadora.

       

Plataforma abierta. Adaptable a cualquier tipo de hardware. Portabilidad asegurada. Arquitectura basada en componentes inspirados en internet. Gran cantidad de servicios incorporados. Aceptable nivel de seguridad. Optimizado para baja potencia y poca memoria. Alta calidad de gráficos y sonidos.


Para poder programar aplicaciones para este sistema operativo, tenemos a disposición varias herramientas tales como la de motodev studio de Motorola, y eclipse.

DESVENTAJAS DE PROGRAMAR PARA MÓVILES CON ANDROID 

 

VENTAJAS DE PROGRAMAR PARA MÓVILES CON ANDROID Entre las ventajas que se tienen al desarrollar proyectos para android destacan las siguientes: 

 

Entorno de desarrollo libre y compatible con varios sistemas operativos, por ejemplo eclipse ofrece un simulador para android. Librerías y componentes reutilizables para todo tipo de aplicaciones. Cuenta con una comunidad extensa de desarrolladores, gracias a esto podemos encontrar un sin fin de información acerca de como programar en android.

Una de las desventajas radica en que android es multitarea, esto quiere decir que al tener múltiple aplicaciones ejecutándose, se lleva un consumo elevado de batería. Es poco intuitivo para los usuarios nuevos. Si se va a programar una nueva aplicación, se debe tener en cuenta la versión a programar, ya que versiones obsoletas no cuentan con recursos hardware y software suficientes para correr la aplicación.

GOOGLE PLAY Una vez desarrollada una aplicación, un desarrollador de aplicaciones android, puede subirlas a esta plataforma, se tiene la posibilidad de distribuirla gratuitamente o venderla, si se decide por venderla todo desarrollador gana el 70 % del precio total de la aplicación. Esta ventaja permite a miles de desarrolladores generar sus propias ganancias, una ventaja que es considerable para los programadores de aplicaciones android.


OPTIMIZACIÓN LOCAL. Se realiza después de la generación de código de todo el programa o de un elemento ejecutable del programa (función, procedimiento).

Árbol sintáctico abstracto: optimizar subexpresiones redundantes, reducción de frecuencia, etc. Tuplas o cuadruplas: optimizar en uso de los registros o de las variables temporales. Ensamblador/Código máquina: convertir saltos a saltos cortos, reordenar instrucciones.

Condiciones que se han de cumplir.

Objetivo Obtener código que se ejecuta más eficientemente según los criterios.  Tiempo de ejecución (optimización temporal).  Espacio de memoria utilizad o (optimización espacial). Funcionamiento Revisa el código generado a varios niveles de abstracción y realiza las optimizaciones aplicables al nivel de abstracción • Representaciones de código intermedio de más a menos abstractas.

 El código optimizado se ha de comportar igual que el código de partida excepto por ser más rápido o ocupar menos espacio.  Hay que buscar transformaciones que no modifiquen el comportamiento del código según el comportamiento definido para el lenguaje de programación. Las optimizaciones locales se realizan sobre el bloque básico Optimizaciones locales    

Folding Propagación de constantes Reducción de potencia Reducción de subexpresiones comunes.

Un bloque básico es un fragmento de código que tiene una única entrada y salida, y cuyas instrucciones se ejecutan secuencialmente.


Implicaciones:  Si se ejecuta una instrucción del bloque se ejecutan todas en un orden conocido en tiempo de compilación.  La idea del bloque básico es encontrar partes del programa cuyo análisis necesario para la optimización sea lo más simple posible.

suavidad de la función objetivo y no exijan, por ejemplo, la existencia del gradiente. Entre estos métodos de optimización global existe un conjunto que incorporan mecanismos estocásticos, entre los que pueden citarse los métodos de: Monte Carlo, Simulado Recocido (Simulated Annealing), Algoritmos Genéticos, y Optimización Bayesiana; y otros determinísticos, que no presuponen derivación. Entre los determinísticos, los métodos Lipschitzianos han probado su eficiencia. Entre estos el DIRECT (Dividing Rectangles) es una propuesta eficiente que por su importancia se tratará en este curso. DEFINICIÓN DEL PROBLEMA DE OPTIMIZACIÓN GLOBAL.

OPTIMIZACIÓN GLOBAL. Los métodos de descenso basados en la existencia del gradiente de la función objetivo, se caracterizan por converger hacia extremos locales de la función sin garantía de que estos extremos correspondan a extremos globales. Más aún, localizan sólo un extremo. Es por ello que a pesar de la popularidad de los métodos de búsqueda local, se han desarrollado paralelamente métodos de optimización global cuyo propósito es obtener el conjunto de puntos donde

Tipos de métodos de optimización global. Estocásticos: evalúan f sobre una muestra aleatoria sobre la región de interés.  No Confiables: Simulado recocido (Simulated annealing), búsqueda aleatoria (random search). 

la función se optimiza. Es frecuente, además, que debiliten las hipótesis de

Sin embargo, la eficiencia es una característica de estos métodos


Problemas de gran escala (+100 variables) son resueltos mejor con estos métodos estocásticos.

Determinísticos:

no

envuelve

ningún

elemento aleatorio  Confiables: Ramas y bordes (Branch and Bound), métodos de intervalos (Interval methods) 

Métodos de puntos (Point methods): calculan valores de la función sobre puntos de muestras (incapaces de resolver confiablemente un problema de optimización global). Ejemplo Monte Carlo. Métodos de bordes (Boundary Methods): calculan cotas sobre conjuntos compactos. Si son implementados apropiadamente y considerando errores de redondeo, pueden producir soluciones globales rigurosas.

CRITERIOS PARA MEJOR AR EL CÓDIGO.

Evitar la optimización prematura. Al iniciar la optimización de una parte del código que ya funciona sin que el código entero esté terminado, corres el riesgo de romper la funcionalidad. La optimización sólo debe realizarse en respuesta al análisis de rendimiento, hacia el final del proyecto. Hacer la optimización antes de esta etapa puede introducir errores. Código de auto documentación.

Los comentarios son una parte muy importante de la programación por razones obvias, pero la documentación del código puede serlo aún más, ya que

permite entender el código con sólo leerlo. Los nombres de funciones y variables pueden ser hábilmente elegidos, de modo que cuando se junten con la semántica del lenguaje se conviertan en un código fácilmente legible. Por otro lado, auto documentar un código no es un sustituto para los comentarios. Revisión de código. Antes de promover el código, siéntate con un compañero y explícale exactamente lo que pretendes hacer con el cambio. A menudo, sólo con hacer esto tú mismo reconocerás algunos errores de tu código sin que tu compañero diga nada. Es realmente eficaz. Prueba de código. Probablemente ya hayas probado si funciona, pero es conveniente revisarlo en profundidad. Analizar todos los casos de uso y hacer una prueba que confirme que el código funciona como se espera en todas las condiciones posibles es algo fundamental. Si hay parámetros, envía valores fuera del rango esperado, e incluso envía valores nulos. Si es posible, enséñale tu código a un compañero y pídele que trate de romperlo. Código no repetido. Debes evitar la duplicación del código a toda costa. La duplicación del código causa confusión cuando un colega lo lee, y provoca errores cuando el segmento duplicado se reproduce en un lugar determinado y no en los demás.


Revista tecnologia