Evento Using std::cpp 2013

Hasta el año 2015, momento del nacimiento de Sngular, el nombre de "s|Software" era "Medianet Software"

A finales de noviembre del pasado año y organizado por la Universidad Carlos III de Madrid tuvo lugar el primer evento using std::cpp. Este evento de un solo día trató de un encuentro de desarrolladores sobre el lenguaje C++ aprovechando la reciente salida del nuevo estándar del lenguaje llamado C++ 11, añadiendo nueva funcionalidad a este versátil lenguaje de programación. Este nuevo estándar está siendo incorporado poco a poco por los fabricantes de compiladores y se espera que en poco tiempo los compiladores más utilizados lo implementen completamente.

Aunque el evento se concentró en un único día, la verdad que la agenda del evento fue bastante completa y con ponentes bastante diversos, contando con la participación de personas pertenecientes al comité español de estandarización del lenguaje C++, o con colaboradores de las ampliamente conocidas librerías Boost. Este texto pretende presentar lo visto en esa jornada a la que asistí, si alguien tiene alguna duda o está interesado en ampliar información sobre algunas de las ponencias, podréis consultarme, ya que el objetivo de este texto no pretende entrar en profundidad en cada presentación. En la página web del evento se pueden encontrar todas las presentaciones y vídeos de las mismas.

La presentación que inauguró la jornada, que termino siendo una de las más completas, fue hecha por J. Daniel García y se titulaba C++11: Simplificando la vida del programador. Se trató de una visión general sobre múltiples añadidos al lenguaje con el nuevo estándar. Daniel nos explicó que el comité de estandarización se trata de un grupo formado por una centena voluntarios provenientes de diferentes ámbitos. El comité se organiza en diferentes grupos de trabajos para tomar y sacar adelante decisiones sobre que se añade en las próximas revisiones del estándar. Daniel mismo es el presidente del comité español de estandarización. Posteriormente Daniel nos presentó las novedades introducidas por el nuevo estándar, de las cuales me gustaría resaltar dos:

  1. La nueva semántica de movimiento.
  2. La concurrencia.

La semántica de movimiento nos permite mover objetos, evitando así copias costosas de objetos grandes. Para hacer uso del mismo haría falta definir un nuevo constructor de movimiento y un nuevo operador de asignación de movimiento.

Respecto a la concurrencia cabe decir que, anteriormente a este nuevo estándar la programación concurrente se conseguía mediante el uso de librerías de terceros como Boost. Sobe estas mismas librerías (Boost) está basada gran parte de la concurrencia añadida al estándar.

Aquí podéis encontrar la presentación y aquí un video sobre la misma.

Sobre Boost trataba la siguiente charla que nos brindó uno de los dos únicos colaboradores españoles a las famosas librerías, Joaquín Mª López Muñoz. La biblioteca boost y boost::multi_index nos presentó este gran conjunto de librerías open source. Sobre el conjunto de librerías (Hoy se compone de cerca de 120 librerías) cabría destacar las siguientes: Asio, Bind, FileSystem, Function, Graph, Interprocess, Random, Regex, SmartPtr y Thread, aunque muchas de ellas ya forman parte del lenguaje estándar en pequeña o gran medida.

Respecto a la librería que desarrolla y mantiene Joaquín cabe decir que se trata de una librería en la que, con un lenguaje propio, basado en el uso de templates, podemos declarar contenedores indexados por diferentes criterios. Esto nos facilitara el trabajo sobre contenedores en los que, búsquedas sobre diferentes índices sean necesarias. Joaquín presentó un ejemplo de uso en el que a pesar de una complicación debido al uso masivo de templates, resulto bastante instructivo. Podréis comprobarlo vosotros mismos en la presentación y/o en el video.

La siguiente presentación en la lista era la presentación C++ y las finanzas cuantitativas. La cual no tuvo lugar, pero aun así se puede ver la presentación

Tras una pausa para un café, en la que surgieron interesantes charlaras con algunos de los asistentes, nos dirigimos al siguiente bloque de presentaciones encabezado por Freeing C++ developers with a coding standard. En la que Richard Corden no explico como a través de análisis estáticos de código, el producto desarrollado por su empresa (Programming Research), es capaz de detectar posibles fallos en el código, sugerirnos o incluso forzarnos a utilizar ciertas pautas de estilo recogidas en un conjunto de reglas que podemos consultar de forma gratuita. Estas coding standards se llama High integrity C++ donde podremos consultar todas las reglas que nos proponen con ejemplos y explicaciones sobre código. Aquí podéis consultar la presentación, el video y el codingstandard.

La siguiente el turno era C++ para software de control de tráfico aéreo. De José Manuel Caicoya que trabaja para Indra en el desarrollo de un sistema de control aéreo. José nos presentó como utilizaban C++ en el proyecto que estaban empezando a implantar en aeropuertos. Este proyecto de alto riesgo que interacciona con muchos otros sistemas como pueden ser radares, comunicaciones etc… Es utilizado por los controladores aéreos.

Cabe destacar que utilizaron C++ como lenguaje debido a su orientación objetos, y ciertos requisitos de implantación como son el uso de máquinas Linux, sin necesidad de tecnología web, el uso intensivo de STL y Boost y el uso de memoria dinámica a través de smartPointes. Aquí podéis ver la presentación completa.

Luis Guerrero de Microsoft nos presentó: "Haciendo la concurrencia fácil: Microsoft Parallel Patterns Library (PPL)", nos introdujo de una forma fácil y sencilla al uso de la librería de Microsoft PPL para crear programas y secciones de código concurrente. De todo lo que presento me pareció bastante interesante la presencia de algoritmos concurrentes. Estos algoritmos proporcionados por la propia librería, como son la existencia de un bucle for y funciones de ordenación concurrentes entre otras cosas, facilitan el trabajo a la hora de paralelizar. La librería también nos provee de contenedores preparados para el acceso concurrente. El único detalle "negativo" es que no es multiplataforma, por lo que si nuestro proyecto exige otra plataforma que no sea de Microsoft no podremos hacer uso de esta librería. Está disponible el código fuente utilizado y podéis ver la presentación y su video.

El siguiente turno era para la gente de Biicode con Biicode: Una nueva forma de reusar codigo fuente. Biicode se trata de una plataforma para desarrolladores donde podemos compartir código con otros usuarios aumentando nuestra productividad, incluso sin necesidad de otros usuarios, podremos compartir el mismo código entre diferentes proyectos, sin necesidad de empaquetarlo. Su principal baza, es que al realizar el análisis de las dependencias del código que estamos escribiendo es capaz de descarga de la plataforma aquellas partes de otros proyectos que necesitemos.. Personalmente a mí me pareció una idea bastante innovadora. Se puede acceder a la presentación y al video.

La siguiente presentación era de Miguel Angel, un compañero del proyecto en el que trabajo yo con otros "Medianos" para ISBAN. En C++ en riesgos financieros Miguel Ángel nos explicó a nivel teórico que es eso de riesgo financiero y como se está utilizando en nuestro proyecto en concreto. Miguel comento que la elección del lenguaje C++ es debida al gran número de cálculos y a una necesidad de eficiencia. También existía una necesidad de modelar elementos bastante complejos, como son los sistemas financieros, para lo cual la orientación a objetos de C++ era útil. Si queréis aprender más sobre esto, aquí os dejo la presentación y el video correspondiente.

Raul Huertas Diaz era el encargado de introducirnos a la Programación asíncrona en C++

Para lo cual se abordó un problema complejo, como es la programación de procesos servidores, desde distintas políticas. En un primer momento se programó de una forma síncrona, pasando luego a aplicar una soluciona asíncrona y por ultimo a la utilización de corrutinas. Para la implementación del ejemplo utilizo una librería de Boost llamada Asio y para la programación de la concurrencia utilizo una Coroutine, librería también pertenecientes a Boost. Esta fue, sin duda la charla con más código de toda la jornada y que podréis encontrar aquí y su video.

Para cerrar la jornada, J. Daniel García retomo la palabra para explicarnos lo que el comité de estandarización está preparando para el siguiente estándar C++14, que será lanzado en el próximo año. C++14: ¿Qué hay de nuevo? Esta nueva revisión añade un par de nuevas funcionalidades. Pero se centra en la corrección de errores y completar características ya existentes. Poco más cabe decir sobre esta presentación ya que creo que habla por sí sola. Presentación y video

A modo de conclusión y para terminar este texto creo que este tipo de eventos favorece a la evolución y expansión de C++. El evento reunión gente diversa y que utilizan el lenguaje para diferentes ámbitos, lo que creo que hace este tipo de eventos muy interesante. Espero que haya nuevas ediciones ya que ofrece la oportunidad de conocer la experiencia de otras personas con el lenguaje y ayuda a que este gran lenguaje de programación sea más conocido y se le encuentren, aun mas aplicaciones.

Últimos posts