9 de diciembre de 2016

MuyComputerPRO

Nuevos lenguajes de programación para antiguas preguntas

Nuevos lenguajes de programación para antiguas preguntas

Nuevos lenguajes de programación para antiguas preguntas
octubre 09
15:59 2014

barberia

¿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.

Máster Telefónica en Desarrollo de Software Avanzado

La necesidad para los programadores actuales de tener una base sólida los paradigmas clásicos de la programación y al mismo tiempo conocer y saber manejar los nuevos lenguajes de programación ha llevado a U-tad, el Centro Universitario de Tecnología y Arte Digital, en colaboración con Telefónica I+D, a proponer el Máster Telefónica en Desarrollo de Software Avanzado.

El “Máster Telefónica en desarrollo de software avanzado” tiene una duración de 600 horas y es 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.

Su objetivo no es otro que el de dar respuesta a las necesidades de grandes compañías para encontrar perfiles profesionales con habilidades y competencias técnicas de alto nivel de especialización en desarrollo y dirección de proyectos de software avanzado, en un contexto de mercado laboral en el que no resulta fácil encontrar este tipo de perfiles.

Este programa está dirigido a licenciados en Matemáticas, Física e Ingenieros técnicos y superiores en Informática y Telecomunicaciones, entre otros, que quieran especializarse tanto en tecnologías software para la nueva industria digital como en programación de software de alta calidad. Al finalizar, los alumnos tendrán las competencias técnicas y profesionales necesarias para trabajar en una telco digital, como Telefónica, en otras empresas, en startups o en sus propios proyectos tecnológicos innovadores.

El programa ha sido diseñado conjuntamente por Telefónica I+D y U-tad. Telefónica I+D se encarga de la dirección del Máster, de la configuración del claustro de profesores y de la organización de las prácticas, además de incorporar a los alumnos en su bolsa de empleo. De hecho son los propios profesores del máster los que se encargan de realizar las entrevistas de acceso a Telefónica I+D, por lo que cursar este máster puede ser una buena idea para conocer de cerca los requisitos y la forma de trabajar de este tipo de empresas. Si estás interesado en conocer más de este programa, puedes descargarte aquí el folleto informativo.

Imagen: Shutterstock

About Author

Redacción

Redacción

Articulos relacionados

Suscríbete gratis a MCPRO

La mejor información sobre tecnología para profesionales IT en su correo electrónico cada semana. Recibe gratis nuestra newsletter con actualidad, especiales, la opinión de los mejores expertos y mucho más.

¡Suscripción completada con éxito!