lunes, junio 11, 2007

Nuevo C++

Pues en estos momentos se esta diseñando lo que sería el nuevo estándar de uno de los lenguajes mas usados del mundo. Hace poco vi aqui la descripción de algunos de los nuevos features por puño y letra del mismo Stroustrup.

Me parecen muy bacanas algunas de las cosas que se tienen planeadas. Y a modo de repetición mencionare (o parafraseare?) las que a mi mas me gustaron :P

1: template <> using Vec = vector <>>;
2: Vec v = { 2.3, 1.2, 6.7, 4.5 };
3: sort(v);
4: for(auto p = v.begin(); p!=v.end(); ++p)
5: cout << *p << endl;

Que es lo nuevo?
1. El using, es una especie de typedef pero permite tener definidas algunas cosas dentro de la definición del template, ahi utilizan el allocator "My_Alloc" pero permiten que uno defina el tipo T.
2. Asignamos el vector con una lista de elementos. Esto solo se podía con los "agregados" (i.e arreglos y estructuras)
3. Usualmente habría que definir un montón de cosas para hacer las cosas asi tan campantes. Pues esto ilustra el mayor cambio en el estándar, se llaman "Concepts". Según Stroustrup es:

Basically, a concept is the type of a type; it specifies the properties required of a type.


Algo parecido a las jerarquía de clases de haskell? tal vez. Eso fue lo que me pareció.

4. Esto es lo que mas me llamó la atención... hay un blog que me dejo marcado respecto a a forma de pensar respecto a los lenguajes de programación.
hablaba de:
Rule #2: Dynamic typing with optional static types.

Pues esto esta lejos de ser tipado dinámico, pero el auto es para seleccionar el tipo dependiendo de lo que devuelva la expresión (supongo en tiempo de ejecución). Lo cual resulta mas corto que:
for (Vec <> ::const_iterator p = v.begin(); p!=v.end(); ++p)
cout << *p <<>

y Además mas apto para programación genérica.
Dentro del otro tipo de cosas que piensan agregar es:

*Garbage collection opcional.
*Hash Maps
*ReEx

Y depronto una librería de sockets y una de hilos :)
Todo esto sin perder compatibilidad con el estándar anterior (C++98) y sin aumentar el overhead.

PD: si jaime, use el formato (copiado del source de geekorito) para el código, gracias :)

6 comentarios:

febuiles dijo...

Por dios, un marquee.

A-R-D-E en el infierno.

diegoeche dijo...

no hay ningun marquee...

esa vejez si no

diegoeche dijo...

the blink tag to be the worst thing I've ever done for the Internet"

Geekorito Staff dijo...

Ja ja ja fresco diego que pa eso estamos
Mmm bacano lo del nuevo C++, aunque lo del garbahge colector tiene sabor a café...
Saludos

diegoeche dijo...

porque java tiene garbage collector?

y c#, python, ruby, Perl, y un monton de funcionales?

febuiles dijo...

Un blink, si, que pena :(

Geekorito staff: No sabe a Java, sabe a cualquier lenguaje de programación en los ultimos 17 años :D