Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - ecarisio

#1
General / ¿Eres Agile de verdad?
22 de Septiembre de 2014, 09:44:58 AM
En lo últimos años, palabras como "Agile" o "Lean" se han convertido en buzz words que todo el mundo dice aplicar en sus desarrollos de software y de producto.

Las empresas han hecho grandes inversiones en programas de transformación de procesos y cultura con el objetivo de ser ágiles en el desarrollo de productos y servicios basados en software, tratando de cambiar la forma de trabajo y adoptando "metodologías" ágiles tipo Scrum, XP, Kanban. Incluso la industria se ha profesionalizado, llegando a  aparecer certificaciones  como Scrum Master.

No seré yo quien ponga en cuestión ni la validez de los programas de transformación, ni de las "metodologías" ágiles (que prefiero llamar métodos o buenas prácticas).  Todo lo contrario, bien aplicados pueden ser muy útiles y generar el cambio deseado. Pero más allá de los Manifiestos y de los libros de "metodologías" ágiles (un buen ejemplo es Métodos Agiles y Scrum – Manuales Imprescindibles),  muchas veces se pierde de vista lo que realmente significa ser Agile en el desarrollo de productos basados en software.

Lo primero que hay que entender es la naturaleza del desarrollo de software. Tal como explicábamos en el post "Hay Musica en el Desarrollo de Software", también en el libro "Historias de Developers", el desarrollo de software es incierto por naturaleza  y por tanto, no es planificable ni predecible a priori.

En el mundo científico e ingenieril, siempre que en un sistema o problema hay incertidumbre, se aplican técnicas de Gestión Adaptativa. En el fondo estas técnicas se basan en la ejecución de ciclos de hypotesis-sintesis-realization-feedback, hasta que se hace converger el sistema a un determinado estado o se hace emerger una solución al problema.

El equivalente a esos ciclos en el desarrollo software son lo que llamamos ciclos de intention-sintesis-realization-feedback (ISRF), que de una forma tácita se pueden observar en un desarrollador cuando está programando. Para hacer que su código funcione, el desarrollador está inmerso en ciclos continuos y entrelazados de diseño, codificación, ejecución y pruebas que duran desde segundos hasta horas y días. Una dificultad añadida en el desarrollo de software está en que hay que descubrir a la vez tanto el problema a resolver como su solución software. Ambos son inciertos. Ahora bien, mediante la gestión adaptativa basada en la ejecución de ciclos ISRF se puede hacer emerger tanto la especificación  del software como su realización (arquitectura, código, ejecutables).

Podríamos decir que, en el fondo, los métodos ágiles, no son más que una serie de buenas prácticas para la gestión adaptativa del desarrollo software. El fin último es manejar la incertidumbre inherente al desarrollo de software, para hacer que un equipo de personas creativas con altos conocimientos, hagan emerger tanto la especificación del problema como su solución software.

Diría que ésta es la parte fundamental a entender y a aplicar bien. Idealmente en la vida real esta gestión adaptativa se debería llevar a cabo en un espacio de tiempo y con recursos limitados (el coste sería sino infinito), con un equipo totalmente comprometido a llegar al máximo posible en cuanto funcionalidad y calidad del software (el coste es fijo, la calidad y funcionalidad software a la que se llega es variable).

El feedback y la comunicación continua entre el equipo es absolutamente clave para poder ejecutar ciclos ISRF cortos, rápidos y efectivos. Hay equipos, especialmente pequeños y con personas de alta capacidad de desarrollo software, donde las prácticas ágiles se manifiestan de una forma tácita (como ocurre muchas veces en el "garaje" de una startup). En otros casos, los métodos ágiles pueden servir de guía. No obstante,  siempre que se apliquen de una forma explícita,  se deberían adaptar  de acuerdo a los skills y a la naturaleza del equipo, y nunca forzarlos de una forma imperativa. Muchas veces se aplican métodos y  prácticas ágiles religiosamente, perdiendo de vista lo que es verdaderamente importante: llevar a cabo una gestión adaptativa de la incertidumbre inherente al desarrollo de software, sea con un método o sin él.

Firmado:  Rubén González Blanco (@_rubengb) Head of Architecture for Product Innovation and Research at Telefonica I+D y Director del Máster Telefónica en Desarrollo de software avanzado.
¿Quieres aprender a desarrollar el software más avanzado?

Telefónica y U-tad han unido sus fuerzas para lanzar uno de los masters más interesantes del momento: el "Máster Telefónica en desarrollo de software avanzado", un programa orientado a formar desarrolladores de software de alto nivel técnico que puedan trabajar en startups, compañías de software y en grandes compañías que están abordando la transformación digital de sus negocios.

A lo largo del máster se abordarán temas como la optimización de algoritmos y estructuras de datos, sistemas distribuidos, desarrollo sobre plataformas cloud, DevOps, patrones avanzados de diseño y arquitectura, prácticas ágiles o técnicas avanzadas en C++, Python y node.js junto con lenguajes del siglo XXI como Scala o Go.

También se verán técnicas de programación avanzada en Linux o desarrollo para las principales plataformas móviles (iOS, Android, Windows Phone y Firefox OS). De la misma forma, se estudiará el diseño e implementación de interfaces de usuario, escalabilidad, alta disponibilidad y distintos paradigmas de programación (lógica, concurrente, funcional, reactiva, orientada a objeto, orientada a aspectos, etc.) El máster está impartido por expertos en la materia que proporcionarán los fundamentos que permiten al alumno avanzar más rápidamente en su carrera profesional como desarrollador software.

El Máster Telefónica en Desarrollo de Sotware Avanzado tiene una duración de 600 horas y cuenta con el reconocimiento del departamento I+D de Telefónica.

http://www.u-tadpostgrados.com/desarrollo-software-avanzado/?utm_campaign=EM&utm_content=articulo
#2
Telefónica I+D y U-tad (Centro Universitario  de Tecnología y Arte Digital) unen fuerzas y celebran el mes del Software, un ciclo formativo que se compone de cuatro master classes. La iniciativa estará liderada por ingenieros de Desarrollo de Telefónica I+D que se encargarán de mostrar a los asistentes diferentes materias relacionadas con el ámbito del software.

Entre las materias destacadas, en las master classes se abordarán lenguajes de programación, algoritmos, frameworks, paradigmas y prácticas de desarrollo. Todos los eventos se celebrarán en la sede principal de Telefónica (Distrito C, Edificio Oeste 1 Planta baja – Sala : F11. Telefónica). Las master classes a las que podréis asistir en las próximas semanas, son las siguientes.

Reserva tu plaza gratuita: http://u-tad.com/ingenieria-telefonica/

11 de septiembre

El software es Jazzware – Rubén González: Head of Architecture for Product Innovation
and Research at Telefónica I+D
Existe mucho desconocimiento sobre qué es desarrollar software y qué es un desarrollador software. Te invitamos a la ponencia de Rubén González para entender la profesión desde otra perspectiva y te ayudará a aplicar mejor conceptos de Agile, Arquitectura de software, etc.

Cinco algoritmos sencillos de entender y que quizás no conozcas - Salvador de la Puente:
Computer engineer at Firefox OS en Telefónica Digital.
Ordenaciones en tiempo lineal, map-reduce, agrupamiento por centroide, PGP, Proof of Work son nombres que quizá hayas oído alguna vez o ni te suenan. Se trata de algoritmos ampliamente utilizados, muy optimizados y fáciles de entender. ¡Ven a descubrirlos!


18 de septiembre

Basic Agile para ser Agile –  Rubén González: Head of Architecture for Product Innovation and Research at Telefónica I+D.
Antes de aplicar SCRUM, XP u otro método hay que entender ciertos fundamentos que son básicos para poder aplicar Agile de una forma efectiva Rubén González te lo cuenta.

¿Programación idiomática? Los idiomas de Python - Salvador de la Puente: Computer engineer at Firefox OS en Telefónica Digital.
Usar un lenguaje de programación frente a otro que no requiere compilar está muy bien y acorta enormemente los ciclos de prueba y depuración del software, pero normalmente cambiamos de lenguaje. ¿El motivo? porque nos gusta la sintaxis y aporta soluciones más legibles y claras a problemas conocidos y recurrentes. Esto son los idiomas. Ven a descubrir lo que puedes hacer en Python.


25 de septiembre

La arquitectura del software se escribe con "a" minúscula  –  Rubén González: Head of Architecture for Product Innovation and Research at Telefónica I+D.
¿Sabes qué es la arquitectura del software? ¿Cómo la definirías? ¿Qué papel crees que tiene el arquitecto del software en un proyecto?

Node.js: What, When, Where, Why -  Marcos Reyes: Head of development @ Industrial IoT / Fi-ware en Telefónica Digital.
Master Class introductoria al entorno Node.js, exponiendo qué es, para qué escenarios puede utilizarse y por qué es una de las opciones más interesantes del momento en dichos escenarios. El objetivo es exponer los conceptos clave que nos ayuden tomar la decisión de incluir node.js en nuestros productos


2 de octubre

OpenStack and DevOps  - Felipe Alfaro: Technological Expert en Telefónica.
Descubre el uso de OpenStack dentro del paradigma DevOps. Cómo OpenStack influye en el despliegue continuo, despliegues automatizados y repetibles, compilación de código en la nube, diferentes entornos de despliegue (desarrollo, pruebas, QA, preproducción y producción), integración con otras nubes públicas como Amazon AWS, etc.

La Web del futuro: WebComponents y WebRTC  –  Salvador de la Puente: Computer engineer at Firefox OS en Telefónica Digital.
Si hay algo que puede cambiar la forma de entender la web tal y como la conocemos hoy día es WebRTC y sus conexiones P2P dentro del navegador. En el futuro el uso de WebComponents revolucionará la manera de desarrollar aplicaciones web consiguiendo mejor código y de mayor usabilidad. ¿Cómo? Ven y te lo contamos

Máster Telefónica en Desarrollo de Software Avanzado

Además de su colaboración en las master classes de este otoño, Telefónica y U-tad han unido sus fuerzas para lanzar uno de los masters más interesantes del momento: el "Máster Telefónica en desarrollo de software avanzado", un programa orientado a desarrolladores de software de alto nivel técnico con recursos avanzados de programación tanto en implementación como de diseño software: patrones avanzados, eficiencia, computación paralela y diseño avanzado, algoritmos y estructuras de datos.

A lo largo del máster se abordarán temas como la optimización de algortimos y estructuras de datos, despliegue de bases de datos o técnicas avanzadas en C++. También se verán temas como programación avanzada con Boost o desarrollo para las principales plataformas móviles (iOS, Android, Windows Phone y Firefox OS). De la misma forma se estudiará el diseño e implementación de interfaces, el desarrollo en plataformas distribuidas y distintos paradigmas de programación (lógica, concurrente, funcional, reactiva, orientada a aspectos, etc.)

En el campo de la producción de software se abordarán temas como estructuras de datos auto optimizables, implementaciones dependientes de caché, cerraduras o eficiencia de Stack y Heap. El Máster Telefónica en Desarrollo de Sotware Avanzado  tiene una duración de 600 horas y cuenta con el reconocimiento del departamento I+D de Telefónica.

http://www.u-tadpostgrados.com/desarrollo-software-avanzado/?utm_campaign=EM&utm_content=articulo
#3
Cada vez más, la simulación por computador se está consolidando como el tercer pilar de la investigación científica, junto a teoría y experimentación. La simulación por ordenador abre la puerta a líneas de investigación y desarrollo que, bien por razones técnicas o bien por causas económicas, habían sido descartadas en el pasado.

Investigadores y empresas de prácticamente cualquier ámbito se ven directamente beneficiadas por las simulaciones: desde ciencias médicas hasta tecnologías de la información, pasando por el desarrollo de materiales avanzados, investigación en nuevas fuentes de energía, predicción meteorológica, o incluso mercados financieros. Sin embargo, muchas de estas simulaciones requieren capacidades de cálculo inexistentes o difícilmente accesibles hasta fechas recientes.

Afortunadamente, los recursos necesarios para llevar a cabo este tipo de costosas simulaciones, en el pasado únicamente accesibles a grandes corporaciones o grupos de investigación, se han trasladado hacia equipamiento que podemos encontrar incluso en los escritorios de la mayoría de hogares. Hoy en día, es posible acceder a hardware con capacidades de cálculo que hace unos años sólo podían obtenerse en grandes centros de proceso de datos, desde equipos de sobremesa. Una de las principales razones tras este cambio de tendencia es la popularización de los procesadores gráficos (GPUs).

En el año 2008, Nvidia revolucionó el panorama de la computación de altas prestaciones (HPC), introduciendo el paradigma de programación CUDA que, junto a sus tarjetas Tesla, marcaron un antes y un después en la adopción de la programación paralela no sólo en los grandes centros de proceso de datos, sino en los PCs de empresas y particulares. Seis años después, el uso de GPUs en general, y de CUDA en particular, se ha convertido en un estándar de facto en aplicaciones con altos requisitos de procesamiento de datos.

De hecho, en la última lista Top500, que aglutina los 500 supercomputadores más potentes del mundo, la utilización de aceleradores basados en CUDA o en tecnologías similares se ha convertido en la tendencia dominante. La capacidad de cálculo de este tipo de plataformas, junto con su elevada eficiencia energética, las ha transformado en las arquitecturas más populares a la hora de acelerar cálculos.

Es por ello que el estudio y uso de técnicas de programación masivamente paralela, necesarias para la programación eficiente de procesadores gráficos, se ha convertido en un pilar fundamental dentro del ámbito de la computación de altas prestaciones.

Sólo dominando el trasfondo teórico y práctico de estas técnicas, junto con los entornos de programación paralela ampliamente utilizados hoy en día (CUDA, OpenCL, OpenMP, etc.) será posible aprovechar al máximo las capacidades de este tipo de hardware enfocadas a la computación de altas prestaciones en general, y a la aceleración de simulaciones en particular.

Firmado por: Francisco Igual Peña profesor del Master en Computación Gráfica y Simulación de U-tad.
Master en computación gráfica y simulación

Si estás interesado en lo que puede ofrecerte la simulación gráfica y sus posibles aplicaciones a la vida real, sin duda te interesará  el"Master universitario en computación gráfica y simulación" que se imparte en el programa formativo de U-tad.

Este Máster nace ante la necesidad actual de formar a profesionales altamente cualificados, capaces de representar información compleja con un alto componente visual. Estos profesionales son demandados en diferentes campos como pueden ser la industria de los videojuegos, el cine, la bioinformática, la geomática o la simulación.

La configuracion del plan docente ha sido desarrollado en colaboración con empresas líderes en el sector de la animación y simulación, característica que hace de éste un Postgrado con alta proyección nacional e internacional (Indra, Acciona, Mirage, Next Limit, Geospace, Mirage, etc.)

http://www.u-tadpostgrados.com/computacion-grafica/?utm_campaign=EM&utm_content=articulo
#4
General / La revolución de las Apps
22 de Septiembre de 2014, 06:06:22 AM
Desde U-tad impulsamos el Máster en Programación de Apps para smartphones y tablets que especializa a los alumnos en el diseño, creación, programación y lanzamiento de aplicaciones.

http://www.u-tadpostgrados.com/programacion-apps/?utm_campaign=EM&utm_content=articulo

Las tablets y móviles irán sustituyendo poco a poco a los ordenadores de sobremesa, nos lo contaba en esta entrevista Jose María Cáceres, socio director de Lacq Consulting SL y Director del Máster en Programación de Apps. Nuestros hábitos están cambiando y también la forma en la que interactuamos con los dispositivos. Según este estudio que Medialets acaba de publicar, incluso el uso de aplicaciones será más frecuente que el propio navegador web.

Los datos lo corroboran: diariamente en España se descargan 4 millones de aplicaciones, 22 millones de españoles abren, cierran y usan Apps y además, somos el país europeo con mayor penetración de smartphones y tablets
Y es que las Apps son la base en torno a la que gira el concepto del smartphone y, también, un valor en alza dentro de los contenidos digitales. Whatsapp, Angry Birds, Flappy bird o Summly son ejemplos de sencillas aplicaciones que han generado millones de dólares.  Es extraño encontrar un negocio que no cuente ya con su propia aplicación, gracias a ellas se facilita el acceso al producto y además, se fideliza también al usuario.

Conscientes de las necesidades de este mercado, U-tad impulsa el Máster en Programación de Apps para smartphones y tablets con el que se pretende dotar a los profesionales de los conocimientos necesarios en el diseño, creación, programación y lanzamiento de Apps, tanto para soportes móviles como para web o redes sociales.

No te pierdas la II edición de las Olimpiadas Android

Desde U-tad queremos fomentar el talento y las amplias posibilidades que esta industria nos ofrece y por eso te proponemos un reto: programar una App en 8 horas. Si te atreves a aceptarlo no olvides rellenar tu inscripción para la II Edición de las Olimpiadas Android que se celebrará en U-tad el próximo 15 de noviembre. Además, el 25 de octubre se realizará un taller de programación en Android como antesala de las Olimpiadas que estará abierto a cualquier apasionado de la programación. ¡Acepta el reto y consigue fantásticos premios en la II Edición de las Olimpiadas Android!

http://www.u-tadpostgrados.com/programacion-apps/?utm_campaign=EM&utm_content=articulo
#5
Principiantes / Fundamentos en la programación de videojuegos
16 de Septiembre de 2014, 07:16:54 AM
http://www.micromania.es/taller/fundamentos-en-la-programacion-de-videojuegos

La programación es la herramienta que nos permite dictarle a un ordenador las instrucciones que definen las reglas de un videojuego, la interacción y sus respuestas. ¡Aprender un lenguaje de programación válido es crucial para un equipo de desarrollo en cualquier proyecto!

Descubre los fundamentos de los lenguajes de programación.

Para alguien ajeno al universo de la programación de computadores, el proceso mediante el cual indicamos a una máquina una serie de tareas a realizar puede parecer cosa de magia, un arcano insondable difícil de abordar. Sin embargo, se trata esencialmente de comunicarse con fluidez y precisión en unos términos y gramática que el ordenador pueda comprender e interpretar. En definitiva, un lenguaje. En este artículo veremos los fundamentos de la programación de computadores, los lenguajes de programación que se han distinguido como más útiles y poderosos, junto con los paradigmas que más se han estandarizado en el desarrollo de videojuegos.



Lenguajes y paradigmas

Como probablemente muchos sabrán, toda la información que un ordenador es capaz de manejar fluye a través de corrientes eléctricas por unos circuitos, que según su voltaje, representarán unos o ceros. Cómo un programador puede dictarle a una máquina –que sólo entiende estas sucesiones de unos y ceros– que realice una determinada tarea es, en realidad, algo elemental. En este taller de U-tad nos centramos en los principales paradigmas de los lenguajes de programación que se han utilizado a lo largo de la Historia para desarrollar videojuegos, los principios fundamentales de cada uno de ellos, y cómo han ido evolucionando con el paso de los años.



Código máquina y ensamblador

El lenguaje denominado código máquina contiene una serie de instrucciones y datos que son directamente interpretables por el procesador de un ordenador. Los procesadores disponen de instrucciones, como por ejemplo devolver el resultado de sumar dos valores. Si el procesador recibe la secuencia de unos y ceros que se corresponde con esta instrucción, entonces interpretará los siguientes unos y ceros como los valores a sumar. La cuestión que nos queda es, ¿cómo podríamos representar un determinado valor decimal, por ejemplo el valor "9″, con esta serie de unos y ceros llamada código binario?

Lo que se hace es interpretar cada bit (cada "1″ o "0″) como una determinada potencia de dos –en función del orden en que se leerá– y luego se suman todas estas potencias. Si estuviésemos manejando un código binario de 4 bits (es decir, cada valor está compuesto de cuatro dígitos de unos y ceros), el valor máximo que se puede representar es:

23 + 22 + 21 + 20 = ¿...?

En efecto, el valor que resulta es 15 en su forma decimal. Para representar un determinado valor, se suman las potencias de dos correspondientes a las posiciones donde hay unos en el valor que recibe el procesador. Por ejemplo, el valor 9 se representaría de la siguiente forma: 1001

Es decir, 23 + 0 + 0 + 20 = 8 + 1 = 9.

¿Imaginas qué difícil sería decir las cosas en código binario? Los lenguajes de programación han permitido una comunicación viable y eficaz.

Lo que ocurre es que, para un programador, subdividir la tarea que quiere que el ordenador realice en instrucciones y datos introducid0s en código binario es un engorro descomunal propenso a errores. Ante la necesidad de agilizar la tarea apareció el lenguaje ensamblador. El ensamblador nos permite escribir las instrucciones y datos como texto, que luego se traduce a código máquina mediante una herramienta. Por ejemplo, si en ensamblador tenemos una instrucción llamada "ADD" (addition), será traducida a la secuencia de ceros y unos que representa la instrucción "suma".



El código máquina no resultaba un medio ágil; para programar fue necesario crear lenguajes de programación que permitieran traducir instrucciones a código máquina desde un nivel superior

El ensamblador, al permitirnos codificar directamente las instrucciones del procesador, es increíblemente rápido, y fue utilizado como el lenguaje de programación para videojuegos por excelencia durante la época de los 8 y los 16 bits (ZX Spectrum, NES, Super NES, etc.).



La aparición del BASIC

El BASIC es toda una familia de lenguajes de programación orientada a fines académicos por su facilidad de uso. El primer BASIC surgió a mediados de los años 60, en la versión que terminó por llamarse Darmouth BASIC, pero su uso se extendió con los ordenadores personales de finales de los 70 y principios de los 80. La mayoría de aquellos aparatos incluyeron una versión del lenguaje BASIC para que los usuarios domésticos pudiesen realizar programas sencillos sin conocimientos de programación. Como se dice, una de sus características es su extremada sencillez. Un programa sencillo podría ser el siguiente:

10 PRINT "HOLA MUNDO"

20 GOTO 10

La primera instrucción imprime en una línea de la pantalla el mensaje "HOLA MUNDO", y la segunda instrucción vuelve a la línea numerada como 10. El resultado es un programa que imprime el mensaje en pantalla continuamente, sin finalizar nunca. El utilizar números para identificar cada instrucción fue algo muy extendido en los diversos lenguajes BASIC de la época.

Pese a su sencillez, el BASIC no fue casi utilizado en el sector profesional debido esencialmente a su mayor lentitud frente al código ensamblador. Mientras que en ensamblador nuestro programa se traduce al código máquina correspondiente, en BASIC lo habitual era que nuestro programa no fuese ejecutado directamente por el procesador, sino por otro programa llamado intérprete. La tarea del intérprete es la de ir leyendo cada línea del fichero –o dirección de memoria– donde está nuestro programa, generar las instrucciones de código máquina equivalente, y pasárselas una a una al procesador en forma binaria. Evidentemente este proceso ralentiza la ejecución de un programa.

Hoy en día siguen existiendo dialectos avanzados inspirados por BASIC, como Visual Basic .NET, BlitzMax, o Monkey X, que mantienen del BASIC su sencillez, aunque incorporan paradigmas de programación de otros lenguajes más avanzados.



La revolución del C

La creación del Lenguaje C supuso todo un hito en la historia de los lenguajes de programación. Fue creado en 1972 en los laboratorios AT&T Bell, con el fin de usarlo para implementar el sistema operativo Unix. C es un lenguaje altamente eficiente, que se popularizó como lenguaje para el desarrollo de videojuegos durante la década de los 90. Frente al ensamblador, C se basa en el paradigma de la programación estructurada, que permite escribir un código mucho más ordenado. Básicamente, C divide el código en unos componentes llamados "funciones" que pueden ser utilizados en distintos puntos del programa.

El éxito del lenguaje C motivó su evolución, dando lugar a la aparición del llamado C++. Este nuevo código se popularizó como lenguaje de programación de videojuegos durante la década pasada, introduciendo un nuevo paradigma: la Programación orientada a objetos.



Programación Orientada a Objetos: C++ y Java

Visual C++ es uno de los entornos de programación en lenguaje C++ más utilizados. Se contempla en todas las herramientas de desarrollo de videojuegos.

De la misma forma que en C un programa se subdividía en funciones que realizan una tarea específica, este nuevo paradigma segmenta un programa en objetos, que serán cada una de las entidades de nuestro programa. En C++ cada objeto tiene sus propios datos y operaciones que permite realizar. Por ejemplo, habría un objeto para cada enemigo, otro para el jugador, otro para la cámara que visualiza la escena, etc.

El comportamiento de cada objeto se define en lo que se ha dado en llamar clase. A partir de una clase se pueden crear objetos. Es decir, el programador puede crear una clase "Enemy" que define el comportamiento de un enemigo, y luego crear tantos objetos Enemy como sea necesario a partir de la clase. Este paradigma de programación es el más utilizado hoy en día –no sólo en el mundo de los videojuegos– y C++ sigue siendo un lenguaje esencial para la industria.



Conocer el lenguaje C++ resulta crucial para afrontar el desarrollo de un videojuego en la actualidad



Herramientas de desarrollo asequibles junto con el uso de lenguajes C++, C# o Java –parecidos entre sí– han dado lugar al reciente estallido de juegos indie.

Siguiendo con el impacto del paradigma que ha supuesto C++, resulta ineludible mencionar el Lenguaje Java. Con una sintaxis inspirada en la de C++, Java resulta, sin embargo, un lenguaje mucho más sencillo. Por ejemplo, libera la memoria de objetos que ya no son necesarios en una escena automáticamente. El objetivo original de este lenguaje era que las aplicaciones programadas en Java pudiesen correr en cualquier dispositivo que tuviese una máquina virtual para este lenguaje. Una máquina virtual es, básicamente, un intérprete.

El desarrollo de juegos en Java ha llevado infinidad de juegos a móviles, incluso de géneros tan de PC como la estrategia, como con Demise of Nations.

Durante estos últimos años, Java ha sido extensamente utilizado como lenguaje de programación en dispositivos móviles y hoy es especialmente popular en el desarrollo de aplicaciones para la plataforma Android. A pesar de que nunca ha sido muy utilizado para desarrollar juegos en PC o Mac, Android cuenta con honrosos ejemplos de su potencial, como Minecraft. Aunque los juegos en Java no pueden competir (aún) con los desarrollos para PC en sofisticación técnica, cuentan con entornos 3D bastante realistas.

El lenguaje Java no es muy utilizado en PC, pero cuenta con éxitos de juegos que han llegado a los ordenadores. El caso más sonado es el de Minecraft.


Entornos de creación de videojuegos: Unity

Dentro del mundo amateur siempre han existido entornos que simplifican la creación de videojuegos. Algunos casos conocidos son el AMOS en Amiga, Div Games Studio en MS-DOS, o GameMaker en Windows. Estas soluciones pretenden simplificar el desarrollo de un juego, minimizando la necesidad de programar y ofreciendo un entorno visual desde el que diseñar y editar todos los elementos (gráficos, sonido, interacción, etc.).

GameMaker es uno de los entornos de desarrollo para aficionados más conocidos. Lo tienes en Steam, pero tampoco te libra de tener que programar.



Los juegos para móviles –como NFS Most Wanted– son cada vez más realistas gracias a la evolución de los lenguajes y las herramientas de desarrollo.

En el ámbito profesional, este tipo de entornos de desarrollo han existido dentro del concepto de motores gráficos, que pese a permitir su uso con versiones de aprendizaje limitan su explotación comercial requiriendo el pago de costosas licencias. El motor de Quake es uno de los ejemplos más conocidos, pero más recientemente, los UDK (Unreal) y Cryengine también están siendo muy utilizados.

El entorno Unity permite usar las mismas herramientas y lenguajes para juegos en diversas plataformas. Breach & Clear es de lo más espectacular para Android e iOS.

Otro hito importante ha sido la llegada de Unity, un motor multiplataforma que ofrece una versión comercial de bajo coste. Gracias a que ofrece soporte para un gran número de plataformas móviles, muchos estudios independientes han recurrido a Unity para dar vida a sus creaciones. Otras compañías, como Havok, se han unido al carro con casos como Project Anarchy, una herramienta de creación de juegos similar a Unity. En definitiva, nunca antes los desarrolladores han dispuesto de tantas herramientas ni tan potentes para desarrollar videojuegos. Además, si te decides en este campo, puedes partir de muchos programas gratuitos con los que practicar y adentrarse en el aprendizaje de la programación. ¡Es un gran momento para animarse a desarrollar juegos!




ESTRUCTURA DE PROGRAMACIÓN

En el paradigma de programación actual, el flujo de ejecución del programa es controlado mediante tres tipos de estructura: de iteración, de selección y de secuencia. La iteración permite pasar por una serie de instrucciones varias veces, mientras se cumpla una determinada condición. La selección permite ejecutar un bloque de instrucciones bajo tal condición. La secuencia implica que un bloque de instrucciones debe ser ejecutado en orden.

Las estructuras de iteración, selección y secuencia controlan todas las funciones que se ejecutan en un juego programado en lenguaje C.

Este paradigma permitió eliminar el uso de "GOTO", que se consideraba peligroso, ya que permitía realizar saltos de un punto cualquiera del programa a otro. La programación estructurada impone una jerarquía en la definición de estructuras. Si dentro de una estructura se abre otra, ésta última debe ser "cerrada" antes de que se cierre la estructura que la contiene. Cuando saltamos de un punto a otro del programa, siempre se respetará esta jerarquía de estructuras. Por ejemplo, al invocar a una función, saltaremos al bloque de código de la misma, se ejecutará respetando estos principios de iteración, selección, y secuencia, y volverá exactamente al punto donde se invocó.

Juegos actuales tan diferentes como Diablo III o el plataformas Mark of the Ninja comparten un mismo tipo de programación estructurada en "iteración, selección y secuencia". Mismos ingredientes, pero distinta fórmula.
PROGRAMACIÓN ORIENTADA A OBJETOS

La programación orientada a objetos se caracteriza por tres propiedades: encapsulación, polimorfismo y herencia.

    La encapsulación se refiere a que cada objeto encapsula o contiene todos sus datos y las operaciones que puede realizar.
    El polimorfismo es un concepto más abstracto y encierra una mayor dificultad de comprensión. Básicamente se refiere a que cuando realizamos una operación sobre un objeto, el resultado de dicha operación dependerá de la clase a la que pertenezca dicho objeto.
    La herencia determina una jerarquía y el modo en que los objetos interactúan entre sí, en función de su clase. Al definir una clase previamente, se determina el comportamiento de uno o varios objetos. La herencia indica que los objetos de una clase pueden heredar la funcionalidad de otra. Esto está relacionado con el polimorfismo, ya que es posible que una clase redefina operaciones de la clase heredada (en la que se basa) y, en tiempo de ejecución, se decidirá qué versión de la operación se utilizará.

La programación orientada a objetos permite la elaboración de los sofisticados juegos actuales sujetos a múltiples factores de interacción, física, gráficos, IA, etc.

Los enemigos a los que te enfrentas en un juego pueden compartir gran parte del código que rige su comportamiento (clase) y diferenciarse cuando entran en juego diversos factores como el poliformismo, o la herencia. Todos los objetos que puedes ver en un juego –y muchos más que no ves– están sujetos a unas normas de composición definidas en el código. Contienen otros y son contenidos en otros.


EL ENTORNO UNITY

Unity es un entorno de creación de videojuegos desarrollado por Unity Technologies, una compañía afincada en Dinamarca. Inicialmente estaba orientado al desarrollo de juegos en 3D, aunque desde la versión 4.3 soporta también la creación de juegos en 2D.

Como Unity permite trabajar sobre un entorno visual, podemos ver siempre el aspecto del juego y todos sus elementos en tiempo real.

Contiene un entorno visual desde el cual, arrastrando objetos con el ratón, podemos definir el escenario de juego. Las propiedades visuales, de colisiones y físicas de los elementos se editan desde el propio entorno, y la lógica de cada uno de ellos se puede programar utilizando los lenguajes C#, un lenguaje basado  en C++ creado por Microsoft; JavaScript, un sencillo lenguaje muy utilizado en la web hoy en día; o Boo, que es un lenguaje orientado a objetos inspirado, a su vez, en la sintaxis del lenguaje Python.




Javier-San-Juan-Cervera-U-tad-210x300.jpEl Experto Javier San Juan Cervera

Codirector Máster en Programación de videojuegos U-tad: http://www.u-tadpostgrados.com/programacion-videojuegos/?utm_campaign=EM&utm_content=articulo

    Javier San Juan Cervera ha trabajado como programador de videojuegos en los estudios Digital Jokers y Future World Games, así como desarrollador freelance de aplicaciones para plataformas iOS. También fue investigador en materia de Inteligencia Artificial en la Universidad Politécnica de Madrid.

    En la actualidad es profesor en U-tad, y Codirector del Máster en Programación de videojuegos en ese mismo centro junto a Jon Beltrán de Heredia, Fundador y CEO de Mouin.
http://www.u-tadpostgrados.com/programacion-videojuegos/?utm_campaign=EM&utm_content=articulo
#6
¿Estás pensando poner en marcha un proyecto digital pero todavía no sabes muy bien por dónde empezar o qué pasos tienes que dar? ¿Tienes experiencia en el mundo empresarial pero quieres conocer la idiosincrasia de los nuevos negocios digitales? O simplemente... ¿Quieres emprender y necesitas ayuda para llevar tu idea a buen puerto? Si has respondido "Sí" o incluso "Quizás" a alguna de estas preguntas, te recomendamos el "Máster en Emprendimiento Digital #MED", que ha puesto en marcha U-tad y que está especialmente orientado a nuevos emprendedores y cualquiera que quiera iniciar una aventura empresarial en el terreno del Digital Business.

http://www.u-tadpostgrados.com/med/?utm_campaign=EM&utm_content=articulo

El máster se centra en la aplicación de la filosofía Lean Startup, que apuesta por desarrollar una idea inicial de producto y la mejora continua de los mismos basándose en el feedback continuo que proporcionan los usuarios.  Además los alumnos que apuesten por el "Máster en Emprendimiento Digital #MED" descubrirán cómo emprender en digital a través de los siguientes módulos.

Design Thinking

Innovación Centrada en el Usuario y técnicas de Design Thinking para encontrar soluciones a problemas en todo tipo de ámbitos. Se propone a los alumnos diferentes espacios de trabajo para que puedan innovar en un área. El objetivo de este módulo es encontrar una idea para trabajar sobre ella durante el resto del programa.

Lean Startup

Lean Startup o ejecución de ideas. Se propone a los alumnos toda una metodología para crear el producto o servicio de forma incremental, obteniendo el feedback de los usuarios: Crear – Medir – Aprender. El objetivo de este módulo es definir un MVP: Minimum Viable Product.

Lean UX

En este módulo se aporta una visión actual del diseño web y mobile destacando su importancia para todo tipo de producto o servicio. Se trata Responsive Design, Flat Design, teoría del color, así como las diferentes plataformas que nos pueden ayudar para crear nuestro proyecto. Al finalizar este módulo el alumno cuenta con una primera versión online del proyecto.

Tecnología

Javier Burón aporta su conocimiento de las herramientas y metodologías más actuales como son agile o scrum. Además, se emprenderá un recorrido por las principales APIs del mercado para detectar cómo se pueden integrar en nuestro proyecto: Search as a Service, pasarelas de pago, adservers, email marketing, etc.

E-commerce

El núcleo de un proyecto digital. En este módulo se muestra cómo se crea un funnel de ventas y cómo funcionan los diferentes servicios de logística, así como cuáles son las herramientas tecnológicas para implantar las mejores tiendas.

Métricas

Tras la salida de un producto o servicio al mercado debemos realizar un seguimiento para conocer, de primera mano, cómo está funcionando y dónde es posible realizar mejoras. En este bloque se muestra analítica web y mobile así como a establecer KPIs. Con estos conocimientos los alumnos tendrán un completo cuadro de mandos que les permitirá tomar decisiones.

Social Media

Nos adentramos en las redes Sociales (twitter, Facebook, linkedIn...) En este bloque, Pepe Cerezo aplica su expertise en el área digital para mostrar cómo conseguir notoriedad, captar tráfico, generar fidelización y proporcionar soporte. Al finalizar este módulo, los alumnos dominarán cómo crear una estrategia de Social Media rentable.

Marketing Online

Las técnicas de marketing digital, SEo, SEM, así como conocer los sistemas interactivos dentro de un servicio que logre generar tráfico entre los usuarios es fundamental. Por ello, los alumnos, además de recibir información teórica, ponen en práctica sus conocimientos.

Administración/Legal

Conocer la tipología empresarial existente y cómo se constituye desde el inicio una corporación es fundamental para tener éxito. Por ello, en este bloque se profundiza en el tipo de contratos que deberán utilizarse para crear un equipo, cómo registrar una marca o cómo aplicar la ley de protección de datos y prevención de riesgos laborales.

Financiación

Para finalizar el Máster se analiza la viabilidad de un proyecto en inversión, fuentes de financiación y rentabilidad. Para ello, los alumnos crean un business plan y un executive summary. Además, se muestra cómo acceder a financiación y los requisitos de entrada a través de venture capital y valoraciones, de concursos de startups, aceleradoras, elevator pitch, etc.

Además al finalizar el programa, los proyectos más interesantes podrán desarrollarse en la incubadora de nuevos negocios del Centro de Emprendimiento de U-tad, lo cual añade un aliciente más. El máster está impartido por Aitor Grandes, fundador y CEO de 24 Symbols, la startup que está considerada como el Spotify de los libros electrónicos y que además, fue el proyecto ganador en 2012 de la competición Seedcamp, considerada como la principal aceleradora de startups de Europa.

Si estás interesado en montar tu propio negocio digital, te recomendamos que te descargues el folleto informativo del "Master en emprendimiento digital #MED" y descubras por ti mismo que puede hacer U-tad para ayudarte con tu idea emprendedora. ¡No te lo pierdas!

Fuente: http://www.muypymes.com/2014/07/29/emprendimiento-digital-todo-lo-que-necesitas-saber
#7
http://www.u-tad.com/notas_de_prensa/creatividad-y-diseno-el-tandem-perfecto-para-crear-una-app-android-de-exito/

Generar engagement es esencial para fomentar que el usuario utilice la aplicación a diario durante un largo periodo de tiempo

El sector de las Apps para móviles creará más de 4 millones de empleos en los próximos cuatro años

El sector de las aplicaciones para móviles ha abierto un mundo lleno de posibilidades y se ha convertido en uno de los campos punteros de la Unión Europea. Así lo confirma el último informe publicado por la Comisión Europea, que apunta que este ámbito generará 63.000 millones de euros y creará cerca de 5 millones de empleos de aquí a 2018.

Teniendo en cuenta estos datos y el impulso al que se ha visto sometido el mundo de las Apps móviles en los últimos años, U-tad, Centro de tecnología y Arte Digital, comparte unos sencillos pasos para aquellos profesionales que quieran dedicarse al desarrollo software y quieran crear su propia aplicación Android:

La idea: No es necesario reinventar la rueda pero sí que es preciso dejar volar la imaginación, ya que la idea es el elemento principal para llevar a cabo una App de éxito. El objetivo es diferenciarla de las demás de alguna manera, para ello, hay que seguir una de estas sencillas guías:


  • Hazla entretenida: Crear una App amena es vital para conseguir que el usuario quiera utilizarla en todo momento. De esta forma es posible convertirse en el creador de la próxima App de moda.
    Hazla útil: La necesidad se puede convertir en el mejor aliado. Dar respuesta a algo que a diario resulta tedioso, incómodo y aburrido, creando una aplicación que haga esa tarea más llevadera es una gran elección.

En ambos casos lo importante es generar engagement, de esta forma se consigue fomentar el uso diario de la aplicación durante un largo periodo de tiempo.


"Una vez la idea está clara, si has llegado a la conclusión de que tu App tiene sentido práctico y quieres sacarle rendimiento económico, entonces es hora de pensar un modelo de negocio", comenta Samuel Moreno López, Desarrollador de aplicaciones móviles y profesor de U-tad."Tendrás que decidir cuál es la forma de monetización que mejor se adapta a tu idea: suscripciones, pagos in App, servicios premium y freemium, publicidad o Apps de pago", añade.
El diseño: Una vez la idea está definida toca ponerla en marcha. El siguiente paso a seguir es la creación de la maqueta, con esta simulación es posible mostrarla de una forma sencilla y rápida. Además, es posible gracias a diversos servicios online como xiffe.com o fluidui.com. Por último, es importante a la hora de poner en marcha el diseño de la aplicación móvil para Android, tener en cuenta los patrones oficiales de diseño de cada plataforma.

U-tad imparte entre sus titulaciones el Máster en Programación de Apps para smartphones y tablets, que tiene como objetivo la especialización de los alumnos en el diseño, creación, programación y lanzamiento de aplicaciones, tanto para soportes móviles como para webs o redes sociales. Asimismo, se centra en la formación necesaria para incorporarse a este sector como experto en las principales tecnologías y frameworks para el desarrollo de Apps en las nuevas plataformas.

"La "democratización" de las aplicaciones es una realidad, cualquier empresa o incluso persona va a poder tener su propia aplicación" declara José María Cáceres, Director del Máster en Programación de Apps para smartphones y tablets. "Es por esta razón que es necesario la formación especifica en este ámbito para desarrollar aplicaciones sencillas, con costes de desarrollo bajos, pero que permitan a esas pequeñas empresas posicionar sus productos o servicios de la manera que lo permiten los dispositivos móviles", añade.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.