Logo de Torre de Babel
Portada Libros Artículos Perfil Scholar

C++0x : El futuro del lenguaje C++

Hace pocas semanas que el C++ Standards Committee, grupo de trabajo encargado del estándar C++, publicó el borrador final de la nueva versión de este estándar, conocido informalmente como C++0x. Se espera que el documento pase de borrador a final en unos meses y que, posiblemente para 2011, tengamos la esperada renovación de uno de los lenguajes de programación más importantes desde hace décadas.

Hay que pensar que el actual estándar de C++ data de 1998 (si bien con algunos cambios puntuales introducidos en 2003), lo que nos da una idea de la lentitud con la que se mueven los organismos de estandarización. Esto provoca que C++ esté, respecto a lenguajes como Java o C#, realmente retrasado y que ciertos fabricantes hayan decidido, en estos años, implementar sus propias extensiones para hacer más fácil tareas como la programación concurrente o la adopción del paradigma de programación basado en eventos. El inconveniente, lógicamente, es que dichas extensiones no pueden trasladarse a otros compiladores ni sistemas, de ahí la importancia de que este nuevo estándar se consolide lo más rápidamente posible.

C++0x incorpora nuevas palabras clave y una renovada biblioteca de plantillas y clases. Será posible, por ejemplo, implementar la concurrencia haciendo uso std::thread, sin necesidad de recurrir a extensiones de un fabricante ni librerías externas. Se habla de mejoras en la comprobación de tipos de datos, contenedores (colecciones) ampliados como las tablas hash, un tratamiento más claro de la copia de valores/referencias que tantos quebraderos de cabeza da a los principiantes en este lenguaje, inicialización uniforme de variables sin importar su tipo (incluyendo matrices y colecciones), conversiones simplificadas entre tipos de datos, etc.

Para los más "atrevidos" está disponible el borrador oficial, que documenta de manera detallada cada una de las características del lenguaje (son más de 1.300 páginas). Si solamente quieres tener una visión general, una presentación del propio Bjarne Stroustrup puede ser un buen comienzo.

Algunas de las características de este nuevo estándar ya están parcialmente implementadas en algunos compiladores, como es el caso de GCC 4.5, disponible desde hace apenas un mes, por lo que además de informarnos también podemos ir probando muchas de las novedades y preparándonos para ese futuro C++ ¿2011?


Publicado el 24/5/2010

Píldora histórica (4)

Hasta el año 1956 el término bite (morder/masticar) se usaba para hacer referencia a la cantidad de bits que un ordenador era capaz de procesar a la vez, no existiendo un estándar al respecto. Había computadores que trabajaban con 6, 7, 8, 9 e incluso 10 bits como longitud de palabra. En dicho año, durante el desarrollo del proyecto IBM STRETCH, Werner Buchholz destacó las ventajas que para el proyecto tendría el uso de "bites" de 8 bits, usando en su informe el término byte que, desde entonces, está inseparablemente vinculado a la idea de 8 bits.


Publicado el 21/5/2010

Propiedades auto-implementadas en Visual Basic 2010

Los componentes software cuentan genéricamente con tres categorías de miembros: propiedades, métodos y eventos, siguiendo un modelo patentado por Ivar Wold. En Visual Basic la implementación de propiedades se efectúa mediante la escritura de los habituales getters y setters, como se hace por ejemplo en Java, pero con una sintaxis simplificada como se aprecia en el siguiente ejemplo:


Property Telefono As String
  Get 
     Return miTelefono
  End Get

  Set(ByVal nuevoTelefono As String)
     miTelefono = nuevoTelefono
  End Set
End Property

Obviamente el código introducido en los métodos de lectura y asignación de la propiedad pueden ser más complejos, llevando a cabo operaciones que tengan un efecto en el estado del objeto en lugar de limitarse a guardar/devolver el contenido de una variable. Sin embargo, en una gran mayoría de las ocasiones lo único que se hace es eso: devolver el valor actual de la propiedad y modificarlo, no necesitándose más.

Cabría preguntarse, en estos casos, por qué no se prescinde de la estructura anterior y se implementa la propiedad como una simple variable pública:


Public Telefono As String

El problema es que los mecanismos de instrospección no tratan las variables públicas como propiedades, por lo que no sería posible, por ejemplo, vincular la variable directamente a un origen de datos, algo que sí puede hacerse con una propiedad. Ésta es la razón de que en Visual Basic 2010 se agreguen al lenguaje las propiedades auto-implementadas. Se trata, sencillamente, de agregar la palabra Property delante de lo que sería una declaración de variable habitual:


Property Telefono As String

Esta línea de código generaría el efecto equivalente a las 8 líneas del ejemplo inicial, con la única diferencia de que la variable privada en la que se mantendría el valor no se llamaría miTelefono sino _Telefono. A pesar de no haberse declarado explícitamente, el resto del código del componente puede acceder a dicha variable como a cualquier otra.

En caso de que la variable deba tomar un valor inicial, éste puede asignarse directamente en la propia declaración de la propiedad, con la sintaxis siguiente:


Property Telefono As String = "999-99-99-99"

Esta novedad de Visual Basic 2010, al igual que la continuación implícita de línea a la que se dedicó una entrada en marzo, no aportan nada revolucionario al lenguaje, pero hacen que sea más cómoda la escritura de código, algo que siempre es de agradecer.


Publicado el 20/5/2010

Herramientas para programar shaders (I) - Shader Maker

Las entregas de los meses previos, en dos series llamadas Tipos de shaders y Lenguajes para programar shaders, han servido para establecer el contexto en el que se utilizan los shaders, ofreciendo una visión general de esta tecnología y los conceptos teóricos fundamentales para comprenderla. El objetivo de esta nueva serie es complementar a las anteriores, haciendo una evaluación de algunas herramientas que pueden utilizarse para la programación de shaders y sirve de antesala a las entregas finales en las que se brindarán algunos ejemplos prácticos.

Cada tipo de trabajo requiere sus herramientas específicas, no siendo en este sentido una excepción el desarrollo de shaders. Un diseñador web precisará un editor de XHTML/CSS, un programador OpenGL un entorno de desarrollo C/C++ y, análogamente, un creador de shaders necesitará una herramienta específica para este fin.

Es cierto que podrían utilizarse DirectX, OpenGL o incluso O3D para implementar shaders, pero la visualización de los efectos requiere la escritura de una cantidad importante de código adicional que nada tiene que ver con el shader en sí, especialmente si se quiere tener la posibilidad de probarlos sobre distintas geometrías, con diversas luces y con la capacidad para rotar, hacer zoom, mover las luces, etc.

Existen multitud de herramientas específicas para el diseño de shaders, procedentes tanto de los fabricantes de hardware como de terceras partes. La mayor parte de ellas son gratuitas. Shader Maker es una herramienta desarrollada por el CGC (Computer Graphics Clausthal), un grupo de investigación de la University of Clausthal (Alemania), desde cuyo sitio web puede descargarse gratuitamente. Para poder utilizarla es necesario tener instalados unos controladores de vídeo con soporte para OpenGL actualizados, especialmente si se quiere utilizar la programación de geometry shaders. El programa no necesita instalación, basta con extraer los archivos en un directorio y ejecutarlo, incluye todo lo necesario salvo los citados controladores que serán específicos para cada hardware.

Entorno de desarrollo de ShaderMaker

Como puede apreciarse en la figura superior, el programa consta de dos ventanas independientes: una en la que se visualiza la escena, con numerosos controles que permiten ajustar la geometría a mostrar, iluminación, materiales, etc., y otra (derecha) en la que se edita el código de los diferentes tipos de shaders. Éstos deberán escribirse en OGLSL, al ser una herramienta específica para OpenGL.

Junto con la herramienta se entregan algunos shaders de ejemplo, como el GS que aparece en la figura anterior y que genera dígitos de siete segmentos a partir de la geometría original. La textura pétrea la aplica un PS. Desarrollar un shader es tan fácil como escribir el código, o modificar uno de los existentes, y pulsar el botón de compilación. El resultado aparece de inmediato en la ventana de visualización.

Una vez que los shaders creados con Shader Maker producen el efecto deseado, no hay más que tomar el código e importarlo en el proyecto OpenGL donde se deseen utilizar. Para ello se recurriría al procedimiento descrito en la entrada dedicada a OGLSL publicada en el mes de marzo.


Publicado el 17/5/2010

Píldora histórica (3)

La almirante norteamericana Grace Murray Hopper, reconocida por ser la primera en programar el ordenador Mark I, promover el uso de compiladores y, en particular, del lenguaje COBOL, dejó en la historia una frase memorable: Me satisface que la historia reconozca al primero en inventar algo, pero me interesa más la primera persona que lo haga funcionar.


Publicado el 14/5/2010

Guía práctica Visual Basic 2010

Portada del libro

Microsoft acaba de presentar Visual Studio 2010, una nueva versión del que posiblemente sea el entorno de desarrollo más potente que podamos encontrar. Como es habitual, además de renovar la plataforma .NET, que lleva a su versión 4, y el propio entorno de desarrollo, también se han actualizado los lenguajes de programación que éste incorpora.

Este libro es una actualización de un título ya clásico (apareció por primera vez para la Visual Basic 4, en el año 1996), en el que se incluyen las novedades más interesantes incorporadas al lenguaje Visual Basic, el entorno de trabajo y los servicios de la plataforma .NET, tratándose, por ejemplo, el diseño de interfaces y creación de gráficos 2D y 3D con WPF o la generación de páginas ASP.NET dinámicamente a partir de una base de datos.

Se trata, no obstante, de un libro de reducido tamaño en una colección dirigida a un nivel básico/medio, dirigido a aquellos que quieren iniciarse en el desarrollo de aplicaciones .NET con Visual Basic más que a usuarios ya experimentados en este lenguaje/entorno de desarrollo. Como es habitual, en la sección Libros puedes encontrar todos los detalles sobre éstos y los demás libros que he publicado hasta el momento, incluyendo imágenes de sus portadas y el índice completo de contenidos.


Publicado el 11/5/2010

Histórico
Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web