|
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.
Temas - ecarisio
Páginas: [1]
1
« en: Martes 28 de Octubre de 2014, 04:48 »
http://www.muypymes.com/2014/09/26/se-buscan-3-millones-de-programadores-de-appsLas apps son un fenómeno relativamente reciente, pero disruptivo. Desde su nacimiento en 2008, en breve tiempo han ido cambiando radicalmente la forma en que la gente se comunica, juega, compra y disfruta de servicios. Por su increíble potencial transformador, representan una de las claves de la revolución digital que está afectando a industrias enteras, como los medios de comunicación, el transporte, la educación, la automoción y la salud. Las aplicaciones móviles hacen posibles nuevas, sencillas y potentes maneras de conectar a las empresas con sus clientes, a los artistas con los fans, los profesores con los estudiantes, los pacientes con los médicos, los pasajeros con los taxistas. Pero su impacto disruptivo no se limita a las industrias tradicionales, ya que las apps han redefinido completamente las reglas de sectores nativos digitales como los videojuegos (con el auge de los juegos para dispositivos móviles que han abierto nuevas posibilidades para estudios grandes y pequeños) y el e-commerce para el cual el m-commerce (mobile commerce) representa un canal cada día más importante. La clave de este éxito reside en la alta penetración de dispositivos móviles (smartphones y tablet) en la cual España es líder en Europa, así como de las smart TV, además en la extrema sencillez para encontrar y descargar apps a través de las tiendas de aplicaciones, como Google Play o App Store de Apple. Sin embargo, un aspecto fundamental de la revolución de las apps, reside en el hecho de que generan trabajo. En un entorno global de crisis y de desempleo, las apps se han convertido en una actividad que al día de hoy proporciona empleo directo a casi dos millones de profesionales en toda Europa, un millón de los cuales desarrolladores. Y las previsiones hablan de crecimiento, hasta tres millones de empleos en desarrollo y cinco millones de empleos indirectos en 2018. Los perfiles involucrados son varios, desde desarrolladores, testers, diseñadores, expertos en interfaces y en interacción de usuario, pero también perfiles en marketing, ventas, desarrollo de negocio, recursos humanos, etc. En concreto, las oportunidades para los profesionales se perfilan a lo largo de 3 líneas: - Dentro de grandes empresas independientes de desarrollo – como de videojuegos, por ejemplo – que se dedican principalmente al desarrollo de apps y su comercialización en las tiendas de aplicaciones, bien bajo pago o con modelos de revenue alternativos, como publicidad o compras in-app.
- En departamento de desarrollo de apps “in-house” de empresas – como los bancos – que no se dedican principalmente al negocio de apps, pero para las cuales las aplicaciones representan un canal paralelo para ofrecer sus servicios.
- En el desarrollo de apps para terceros. A esta actividad se dedican hoy mismo el 42% de los profesionales y es la más prometedora, ya que está permitiendo la creación de nuevas empresas y startup para satisfacer la alta demanda de desarrollo de apps que proviene de empresas de todos los sectores económicos.
2
« en: Lunes 20 de Octubre de 2014, 14:12 »
http://www.muycomputerpro.com/2014/10/09/nuevos-lenguajes-de-programacion-para-antiguas-preguntas¿Por qué es necesario usar un semáforo para que un barbero atienda bien a sus clientes? Y, ¿Cómo pueden unos filósofos sentados frente a unos platos de fideos morirse de hambre? Estas preguntas a primera vista pueden parecer sin sentido, pero ocuparon las mentes de los primeros computer scientist en la segunda mitad del siglo XX. Uno de ellos en particular (el holandés Edsger Wybe Dijkstra) formuló una serie de problemas en forma de ejercicios prácticos para ilustrar las cuestiones ligadas a la sincronización de múltiples procesos activos al mismo tiempo y a la comunicación entre ellos. Así nacieron el problema del barbero durmiente y el problema de la cena de los filósofos. En el primer problema, hay que gestionar la cola de clientes que esperan sentarse en el sillón para ser afeitados por un barbero, que se duerme cuando no tiene clientes. En el segundo problema, el recurso compartido son los palillos chinos que cada filósofo sentado a una mesa tiene a su derecha y a izquierda y que comparte con los demás filósofos para poder comer su plato de fideos. Ambas situaciones se ven afectadas por los problemas críticos de la programación concurrente y de los modernos sistemas operativos multitasking: - Race condition: situación en la cual múltiples procesos se encuentran en condición de competición para la utilización de un mismo recurso. Por ejemplo, cuando todos nuestros filósofos intentan a tomar el mismo palillo a la vez. O cuando dos clientes de nuestro barbero intentan ocupar la misma silla de la sala de espera.
Deadlock: situación de bloqueo permanente que surge cuando dos o más procesos necesitan de recursos ocupados por los demás para avanzar. Por ejemplo, cuando nuestros filósofos toman al mismo tiempo los palillos a sus derechas y se quedan esperando eternamente a que alguien libere los a sus izquierdas. O cuando nuestro barbero acaba con un cliente y al mismo tiempo llega el cliente siguiente: el barbero se duerme eternamente creyendo que no hay más clientes y el cliente se queda esperando eternamente a que el barbero acabe con un cliente que no existe. Starvation: situación similar al deadlock, pero en la cual uno o más procesos están esperando recursos ocupados por otros procesos que no se encuentran necesariamente parados. Por ejemplo, cuando no se distribuyen de forma homogénea los turnos entre los filósofos o los clientes del barbero, de forma que antes o después algún proceso se “muera de hambre” (o le crezca una barba muy larga).
Para solucionar estas situaciones anómalas, se han ideado a diferentes técnicas: - Mutex, o algoritmos de exclusión mutua, que se usan en programación concurrente para evitar que más de un proceso a la vez ingreses en secciones críticas.
Semáforos, variables especiales utilizadas para restringir o permitir el acceso de un proceso a recursos compartidos. Según el valor que asumen permiten a más o menos procesos utilizar el recurso de forma simultánea. Aging, una técnica de scheduling que gradualmente incrementa la prioridad de un proceso basándose en cantidad de tiempo que lleva esperando en la cola.
Aunque los problemas de la programación concurrente y las técnicas para solucionarlos puedan parecer antiguos, recientemente han vuelto de actualidad debido a la necesidad de la nueva era de la computación, como la escalabilidad en el procesamiento de importantes cantidades de datos. Para ello, han surgido nuevos lenguajes de programación, como y GO. Scala, acrónimo de scalable language, fue introducido en 2003 y permite manejar programas pequeños o aplicaciones a muy gran escala, optimizando el código para trabajar con la concurrencia. Go, lenguaje de programación inicialmente desarrollado por Google en 2007, es un lenguaje diseñado de forma particular para el cloud y la concurrencia.
3
« en: Miércoles 8 de Octubre de 2014, 11:21 »
http://www.muycomputer.com/2014/10/07/unity-la-democratizacion-del-desarrollo-de-videojuegosUnity parece ser la “canción del verano” de la industria de videojuegos. Pero su popularidad no es casual: además de presentar unas características únicas, su auge se enmarca en las tendencias actuales de la industria de desarrollo del videojuego, así como de la industria digital en general. Una herramienta poderosa y multiplataforma Unity constituye un ecosistema de desarrollo de juegos: un poderoso motor de renderizado totalmente integrado con un conjunto completo de herramientas intuitivas y flujos de trabajo rápido para crear contenido 3D interactivos. Actualmente Unity es un entorno amigable para programadores, artistas y diseñadores que facilita llegar a diferentes plataformas (PC, Mac, Linux, iOS, Android, BlackBerry, PlayStation, Xbox, Wii, Wii U, Web…) sin obligar a programar el juego específicamente para cada una de ellas. La herramienta para Indie, hecha por Indie Lo que ahora es el más popular motor de juegos en el mundo (el 45% de los desarrolladores utilizan Unity como herramienta de desarrollo principal o secundaria), los desarrolladores registrados superarán los 3 millones en 2014 y los juegos creados con este motor llegan a 600 millones de jugadores (empezó desde un equipo de desarrolladores Indie, que se dieron cuenta de las limitaciones para desarrolladores independiente para acceder a herramientas tecnológicas de calidad y a un coste accesible) .Lo que querían David Helgason y su equipo, era desarrollar una tecnología accesible que abriera grandes oportunidades para el colectivo Indie. La democratización de la tecnología El éxito de Unity se enmarca en una tendencia global de democratización de la tecnología. Tal como sucedió en el cine, donde el video digital y el software de edición hicieron caer los costes de producción de decenas de miles de dólares a unos pocos miles, ahora, en la industria del videojuego, los modelos de distribución digital y herramientas como Unity, permiten que pequeños equipos de personas puedan realizar productos de calidad y comercializarlos a nivel internacional. Y esto posibilita el crecimiento y el desarrollo de la industria. Unity, la democratización del desarrollo de videojuegos El auge de los Indie La popularidad de Unity se explica por el auge del desarrollo independiente. Estudios pequeños, con bajos presupuestos y que eligen el modelo de distribución online al no ser directamente apoyados por los grandes publisher. Esta tendencia se refleja también en España: un estudio realizado por DEV, la Asociación Española de Empresas Productoras y Desarrolladoras de Videojuegos y Software de Entretenimiento, coloca a la mayoría de las empresas de desarrollo de videojuegos en España en el ámbito Indie: el 60% de las empresas tienen consideración de microempresas (menos de 10 empleados), un 68% del total tiene menos de 5 años de vida, y la distribución digital supone el 78% de los ingresos del sector. Una puerta de entrada a los grandes fabricantes de consolas El carácter universal de Unity es debido al hecho de que esta herramienta no representa solamente la “emancipación” de los desarrolladores, sino también un puente hacia la industria tradicional y los grandes fabricantes. Estas mismas empresas están proponiendo Unity como puerta de entrada de los Indie a sus plataformas: Nintendo ofrece gratuitamente Unity 3D Pro en los kits de desarrollo de Wii U y recientemente Sony ha anunciado que hará lo mismo para los desarrolladores con licencia PlayStation. Esto se enmarca en las estrategias de acercamiento de los grandes fabricantes a los Indies, comoXbox LIVE Indie Games y elID@Xbox de Microsoft y losPlayStation Awards de Sony. Aprender a programar videojuegos Herramientas como Unity representan una contribución importante a la industria de desarrollo de videojuegos, pero no son las únicas. Ser programador de videojuegos significa dominar diferentes entornos de desarrollo y lenguajes. Por esto, es fundamental contar con una formación completa e impartida por profesionales de la industria, como el Máster en Programación de videojuegosque ofrece U-tad, el Centro Universitario de Tecnología y Arte Digital. Este programa cubre todo el conocimiento esencial para un programador de videojuegos, proporcionando al alumno todo lo necesario para acceder al mundo profesional del desarrollo en este ámbito.
4
« en: Lunes 22 de Septiembre de 2014, 09:44 »
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
5
« en: Lunes 22 de Septiembre de 2014, 09:35 »
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
6
« en: Lunes 15 de Septiembre de 2014, 16:50 »
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.
7
« en: Jueves 11 de Septiembre de 2014, 13:43 »
http://www.micromania.es/taller/fundamentos-en-la-programacion-de-videojuegosLa 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! Taller programación - U-tad 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. Código máquina - Programación ¿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
8
« en: Jueves 11 de Septiembre de 2014, 13:25 »
http://blogthinkbig.com/desarrollar-software/La revolución digital que estamos experimentado en nuestras vidas, mediante apps y servicios de Internet, se basa en el fondo en software que crean los desarrolladores. Pero, ¿qué es desarrollar software y qué es un desarrollador de software? En realidad, es una de las profesiones peor comprendidas históricamente por el mundo empresarial, e incluso, en algunas ocasiones por las propias universidades de informática, pues tienden a pensar que un desarrollador de software es un trabajador de bajo nivel que se puede subcontratar y reemplazar a bajo coste. Se entiende como el “obrero de la automatización” que trabaja a las órdenes de un analista, de un arquitecto software o de un product manager que especifica al desarrollador lo que tiene que hacer. Desarrollar software es un actividad de altísimo nivel, que requiere tener un cerebro potente, creativo y con mucho conocimiento tecnológico para poder manejar tanto la complejidad del hardware como la del propio software. Por ello, hacer buen software, entenderlo y ser capaz de crearlo no está al alcance de cualquier persona. Desarrollar software se puede entender, en primera instancia y de forma muy simple, como escribir las instrucciones en un programa o código para que la máquina, el hardware, las ejecute a lo largo del tiempo. En el fondo, un computador es una máquina matemática que ejecuta algoritmos o programas; incluso cualquier algoritmo se puede abstraer y analizar teóricamente mediante la máquina de Touring. A pesar de esa naturaleza matemática, y por tanto exacta, en la práctica, desde que el hardware supera en capacidad de cómputo al cerebro consciente, desarrollar software se ha vuelto una tarea muy compleja e incierta para los humanos. Como ejemplos sencillos de la potencia de cómputo, un simple servidor web apache en un portátil con 2 CPU es capaz de procesar 1000 TPS – transacciones por segundo – con facilidad. Google procesa en su buscador más de 44.000 búsquedas cada segundo. Y la potencia de cómputo no para de crecer. Cada 18-24 meses se dobla la capacidad de cómputo, tal como se recoge en la Ley de Moore. Que la potencia de cómputo sea tan elevada dificulta que el cerebro humano prediga el comportamiento de un sistema o aplicación. El estado de ejecución de un software a lo largo del tiempo, cuando se ejecuta en un hardware tan y cada vez más potente, es muy difícil de predecir, sobre todo cuando hay varios algoritmos o programas ejecutándose en paralelo, manejando muchas interacciones con los usuarios o con un gran volumen de datos. Si además el software ha sido creado por varios desarrolladores, el nivel de incertidumbre aumenta. Es muy difícil calcular el estado en el que está el conjunto software + hardware. Arduino, hardware y software de código librePor eso, acompañando al desarrollo de software, se hacen siempre test para comprobar que las instrucciones que se le han dado a la máquina generan el compartimento deseado. A la vez, esta incertidumbre y complejidad está en la raíz de que el software tenga bugs o fallos, introducidos por lo humanos que desarrollan el software y el hardware. Esta situación es conocida desde los años 70 cuando el potencial del hardware creció exponencialmente y desarrollar software se convirtió en un endeavour impredecible. Hubo muchos proyectos software que fallaron y se hablaba entonces de Software Crisis. Toda esta complejidad e incertidumbre inherente al desarrollo de software ha hecho que se entienda cada vez más como una serie de ciclos rápidos y continuos de intention-synthesis-realization-feedback, similar al de otras disciplinas creativas como la pintura, la escritura o la composición musical, donde su proceso de creación se caracteriza por ciclos continuos de síntesis hasta que la “obra” emerge. Si el pintor pinta hasta que emerge una obra que le gusta, el desarrollador programa un software hasta que funciona y además le gusta, porque también existe un tipo de “belleza” o elegancia en la forma de escribir código y en la forma en que las diferentes partes del software interaccionan en ejecución. De todas esas disciplinas creativas la composición musical es la que más parecido tiene con el desarrollo de software.desarrollar software Un desarrollador de software se puede ver como un compositor musical; se podría decir que es un compositor de software. Primero escribe el código o programa que quiere que se ejecute en la máquina. Ese código y sus instrucciones escritas en un lenguaje de programación (C, Java, JavaScript, Python…) serían el equivalente al pentagrama. En segundo lugar, el desarrollador le dice a la máquina (vía el sistema operativo) que ejecute el programa que acaba de escribir. Este paso sería equivalente a tocar en un instrumento las notas musicales del pentagrama. El instrumento para un desarrollador de software sería el computador con el sistema operativo y las herramientas de desarrollo (también software). En tercer lugar observa el resultado de su ejecución para ver si el software programado se comporta como desea, hace un test (escucha la música recién compuesta). Si el resultado no es el esperado se inicia de nuevo el ciclo intention-synthesis-realization-feedback, y así hasta que obtiene el resultado esperado. En su día a día un desarrollador de software ejecuta estos ciclos varias veces por hora. Tanto la música como el software tienen raíces en las matemáticas y ambas tienen ejecución temporal. La principal diferencia es que mientras la música se percibe en el cerebro mediante el sentido del oído, el software es un intangible que en su ejecución y composición no tiene materialización física, sólo se puede observar mediante el análisis mental. Al igual que hay partituras bien o mal compuestas, hay código que está bien o mal escrito. Al igual que la música tiene armonía o base musical que proporciona consistencia e integridad en su ejecución, un software también tiene una base transversal sobre la cual se ejecuta. Es lo que se suele llamar arquitectura del software, especialmente relevante cuando hay varios desarrolladores trabajando sobre el mismo sistema o app. Cuando hay varios desarrolladores de software el proceso de desarrollo de software se parece a una interpretación de Jazz, donde cada músico/desarrollador compone una parte de la melodía sobre una base armónica, creada por otro el arquitecto o compositor de la armonía. Controlar este proceso creativo es muy difícil y suele fallar cuando se intentan aplicar técnicas predictivas con diseños y especificaciones a priori. En su lugar, la industria ha reconocido en los últimos 15 años que hay que gestionar el desarrollo de software de una forma adaptativa y hacerlo emerger. Esta visión del software y de los desarrolladores pretende ayudar a entender y valorar el trabajo que hacen los desarrolladores de software. Diría que es un trabajo fundamental para el desarrollo de una sociedad digital y para las transformaciones digitales que se están acometiendo en muchas empresas, como es el caso de Telefónica. Esta importancia de los desarrolladores la conocen muy bien las compañías del mundo de Internet que luchan por tener los mejores desarrolladores de software del mundo. Es el caso de Telefónica I+D, donde llevamos años atrayendo desarrolladores con talento, tanto nacionales como internacionales, para ayudar a la compañía a a ser competitiva en el mundo digital. Como parte de este proceso de captación de talento, este año lanzamos en colaboración con la U-TAD, un Máster de Desarrollo de Softaware Avanzando, donde formar desarrolladores de muy alto nivel.
Páginas: [1]
|
|
|