Publicado hace 12 años por CortoCircuito a ciencia-explicada.com

C&P: Herb Sutter, miembro de Microsoft y presidente del comité de estándares de C++ de la ISO anunció este viernes pasado que el resultado de las votaciones ha sido el de aprobar por unanimidad la actualización del lenguaje de programación C++, en un paquete de cambios que se viene llamando C++0X desde hace años de manera demasiado optimista: finalmente se llamará C++11.[...] aquí va un resumen de las novedades más importantes con respecto al último estándar de 2003: ...

Comentarios

berzasnon

¡Buenas noticias, chicos!

D

#2: ¿Así lo traducen?

heffeque

#45 Ciertamente... mucho mejor así: "Good neeews everyone!"

berzasnon

#45 Sí, tal que así.

D

#18 La cara trollface implica ironía o trollada simplemente, como bien entenderás lol

Ahora mismo como futuro Ing. Informático (al igual que los miles que hay por aquí) estoy trabajando en un proyecto a bajo nivel sobre el ia32, pero se muy bien que no me tengo que leer las mil y pico páginas que tiene su manual de Intel, sino que hago hincapié en cosas como el ISA y demás

PD: Viendo tu nick recuerdo los grandes momentos que me dió Haskell y Prolog (los estudié a la vez) en su época.

D

#34 Si, ya sabia que iba con ironia, pero aun asi me apetecia contestar, porque seguro que viene algun que otro despistado. Por cierto, hace unos anos (unos 10 o asi) obtuve los 'intel developer books', que intel los enviaba gratis a casa. 3 tomos (el primero tomo de introduccion, el segundo set de referencia instrucciones del microprocesador y el tercero no lo recuerdo y no lo tengo aqui ahora mismo) y luego un 4o tomo de optimizaciones del micro. Te lo digo porque quiza te interese. Aunque creo que al final ya no los enviaban. No aparece en la foto que ya tiene unos anos, pero si otros libros algo interesantes:

http://buscandoaborja.files.wordpress.com/2008/09/img_1430.jpg

Por cierto, es bastante divertido (aunque tedioso) escribir directivas 'enviadas directamente' al micro, no hablo de asm, sino de codigo maquina (a la derecha ponia 'comentarios' en asm para clarificar. De todas formas lo de leerse estandares, hay algunos que son bastante mas 'asumibles que otros', lo malo es que a veces hay cosas algo abstractas o mas bien escuetas que hacen que a uno no le quede del todo claro algunos detalles, pero para eso siempre estan los rationales

Exactamente y si no es mucha indiscrecion que proyecto a bajo nivel estas haciendo sobre ia32?

CortoCircuito

#12 Se intentó, pero quedó pendiente para la siguiente actualización... Que por ahora informamente se llama C1x:

http://en.wikipedia.org/wiki/C1X

¡¡Esperemos que no acabe siendo C2X!!

D

#12 Bueno, tienes los pthreads... eso es bastante estándar, aunque sea C lol

s

#12 desconozco si en la versión definitiva han quitado las threads, pero en el borrador anterior al que hace referencia el artículo sí se hablan explícitamente de ellas en la sección 30 página 1130. De todas formas siempre puedes usar la librería boost/thread soportada por la gran mayoría de compiladores de C++.

Estos cambios suponen un tremendo paso hacia adelante en C++ y en el mundo de la programación. Aparte de estandarizar elementos ya utilizandos en otros lenguajes como las funciones lambda anónimas o las listas de inicialización en los constructores, otros elementos como el std::move, que "roba" el contenido interno de la variable a otra y las referencias rvalue, suponen elementos que flexibilizan la programación e mejoran el rendimiento de la aplicación final.

¿Cuales pueden ser las consecuencias directas?
Que probablemente todo el nuevo software que se implemente usando C++11 será más rápido y más mantenible que en el viejo C++.

h

#12 Página 1130 del estándar: Thread support library, define clases para hilos y semáforos entre otras. Esta versión de C++ define un montón de cosas muy útiles y añadidos de la librería Boost.

D

Esto me ha recordado un gran sketch de Splunge:

D

#32 entiendo el problema de los recolectores 'típicos', llevo años viendo picos de CPU cada X tiempo cuando paso profilers a aplicaciones de Java, pero no creo que pase lo mismo en todos los lenguajes, por lo que no podemos generalizar a decir que los recolectores hacen tal cosa.
Habrá cuáles sí y otros que no, pero poner un callback en la destrucción de los objetos para liberar memoria (simplificándolo muchisimo, no os enfadéis :P) no es ámbito exclusivo de C++.

Por cierto, cómo van a afectar al rendimiento todas estas nuevas características?

D

#c-32" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/1342887/order/32">#32 Cada método de recolección tiene sus ventajas y sus inconvenientes y además son muy situacionales.

Los punteros inteligentes se consideran muy lentos en la asignación y de hecho no se utilizan en ningún lenguaje como base de su recolector de basura. Son una herramienta para usar en determinadas situaciones, nada mas.

#33 El metodo mas usual es el mark and sweep (java, c#, etc) que es el que produce el efecto stop the world. Otros lenguajes/frameworks usan el conteo de referencias, que según situaciones puede llegar a ser bastante costoso.

i

#32 En Java se puede forzar a que se ejecute el recolector, así que si sabes cuándo se va a producir una situación de estas puedes forzar la ejecución del recolector.
Lo que sí estaría bien sería una opción de la JVM que permitiera desactivar la ejecución automática del recolector para que el programador pudiera controlar exactamente cuando se ejecuta éste.

D

Y que a mí me tiren abajo las noticias que me tiran...

Ehorus

Ver en la misma frase microsoft, estandares e ISO... es que me entra un escalofrio por la espalda...

alekis

Perfecto. Ahora a por Java!! Hay que matarlo cueste lo que cueste

P

Me parece muy bien. Ahora sólo falta que eliminen los punteros y otras características innecesarias (headers, templates, etc), que cada archivo sea una clase, que compile a bytecode para hacer que funcione sobre una máquina virtual multiplataforma con garbage collector y listo, queda un lenguaje muy original

j

#c-28" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/1342887/order/28">#28 Eso conllevaría desaprovechar recursos y ser más lento; para eso ya tienes muchos lenguajes.

#35 yep, pero luego ejecutará rápido. Para todos aquellos que criticáis a C++ comparándolo con lenguajes como Java o Python... haced un juego como el Crysis en ellos, pls. O un motor físico como Bullet, que te mueva cientos de miles de objetos en unos minutos. O un pathtracer montecarlo. O un software de anális de ingeniería...

Cada lenguaje es para lo que es. ¿Quieres un lenguaje rápido y fácil de programar? LUA, Ruby, Python. ¿rápido en ejecutar o que aproveche bien recursos muy limitados? C, C++, C#. ¿Fácil de mantener y programar? Java. No hay nada como elegir la mejor herramienta para cada trabajo..

j

#c-51" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/1342887/order/51">#51 Bueno, C# lo puse como rápido en ejecutar, no es que quisiera dar a entender que tiene más en común con C++ que eso... de todos modos, ya no me acordaba de que era interpretado, así que gracias por la aclaración

#50 Hombre, pues más que C++ de largo lol ¿Cuál consideras fácil de mantener? Quizás Java cueste más que otros lenguajes interpretados (no lo sé, nunca he hecho nada grande con ellos), pero es que esos ya son bastante más lentos que Java todavía...

#58 Poner size_t es una tontería, pero poner std::map< std::string, std::pair< unsigned int, unsigned int > >::const_iterator es un poco cansino, por ejemplo...

PD: Oops, me ganó #60

D

#50 "¿Fácil de mantener y programar? Java."
Me atraganto!

P

#50 Debí poner la etiqueta "ironic"

D

No hablen en clave.

D

#6 Vamos, que parte de todo lo que puedes hacer en otros lenguajes como Python, ahora lo podrás hacer en C++ solo que de una forma más horrorosa y con una sintaxis horrible.

d

Muy interesente la noticia, muy lamentable meneame

D

#15 ¿me explicas tu comentario? ¿por qué dices que meneame muy lamentable?

d

#42 Léete cualquiera de los comentarios abteriores al mio y dime que no son lamentables.

D

#26 Discrepo:


El Chuck Norris de los lenguajes es CL usando sbcl y por supuesto bajo slime.

D

Umm lo de los constructores se soluciona usando

constructor::constructor( double loqsea)

Por poner un ejemplo

D

At good times, green sleves!

D

#8 Greensleeves was all my joy...

RaiderDK

Que recuerdos cuando programaba en C++.......despues me metí en la droga, Java .Net PHP he acabado en Python, pero almenos me rio porque Python me recuerda a los caballeros de la mesa cuadrada y la vida de Brian de vez en cuando.

D

#38 aix.... the magic of python! y qué sintaxis e! no se por qué no lo venden como poesia!

D

Well done! Release it!

D

¿Y no suena un poco gore eso de Herb Sutter, miembro de Microsoft ?

D

Como se entere R2D2 se va a liar parda.

D

#26 Por lo que leo en la wikipedia, los smart pointers se pueden implementar simplemente con conteo de referencias, por lo que la gestión es automática, pero no hay un recolector de basura.

hey_jou

podrá correr bien al fin crysis en mi ordenador?

D

Mi novia está muy satisfecha

D

#11 Uno de los dos, tenemos un problema.

MiRtH

¿Seguirá sin haber garbage collector?

CortoCircuito

#20 "¿Seguirá sin haber garbage collector?"

¡Error! C++ con smart pointers es el Chuck Norris de los lenguajes: no necesita garbage collector. Eso quedapara los lenguajes basura.

http://lmgtfy.com/?q=smart+pointers

D

#23 ejem, de la primera línea del enlace que pones:

" while providing additional features, such as automatic garbage collection or bounds checking"

Claro que tiene recolector de basura, no sé que querrán decir con lo de automático (todos lo son, no? aparte de manuales...).


El Chuck Norris de los lenguajes es Ruby

Linnk

#20 ¿Lo dices en serio?. Quiero decir, ¡¿LO DICES EN SERIO?!

Penetrator

#20 Afortunadamente sí, seguirá sin haber garbage collector.

#54 y #56: por lo que tengo entendido no es más que dejar que el compilador detecte el tipo en tiempo de compilación, con lo que no hay ninguna penalización en tiempo de ejecución. Por ejemplo, si escribes algo así:

for (auto it = lista.begin (); it != lista.end (); ++it)

el compilador puede deducir el tipo de la variable it a partir del valor de retorno de la función lista.begin (), con lo que el programador se ahorra tener que ponerlo.

S

#57, ya hay que ser un poco vago para no querer especificar un int, size_t, etc... y querer escribir de igual modo auto. Que más dará especificar el tipo de variable en vez de darle trabajo extra al compilador.

PD: Si, yo también me alegro de la ausencia del recolector de basura en C++.

CortoCircuito

#58 A lo que #57 se refiere no es a size_t o int's precisamente... en C++ con plantillas te puedes encontrar mostrencos como:

for (std::multimap >::const_iterator it = ...)

que quedarían:

for (auto it = ...)

Y eso sin contar con que en realidad si es una plantilla genérica, puede que ni sepas los tipos de los que estás hablando, así que "auto" es de las cosas más útiles que han podido crear!

Penetrator

#60 Cualquiera que programe con la STL sin usar typedefs se merece tener que picar a mano semejantes churros de código cada vez que declare una variable.

J

#20 Para qué quieres que el sistema te administre la memoria, teniendo el poder de administrarla tu

Larga vida a C++

D

Por fin funciones lambda.

jmasinmas

NOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
C++ es el lenguaje del infierno, estoy seguro de ello

D

¡Frikis!

o

Si siguen añadiento features y subiendo el nivel de abstracción con suerte podrá ser una versión cutre de Python en 2019...

N

No sé por qué pero esta noticia hace sentirme viejo.

D

Los tipos autodetectados: me recuerda los tipos variantes de delphi, con lo que implica de penalización de memoria y perfomance. Tal vez sea otro el mecanismo, lo ignoro.

D

#54

si, eso es a lo que me sonaba, en Delphi, cuando tienes que usar una clase "extraña" (que no sabemos ni que coño devuelve) de algún paquete comercial, lo asignas a una variable de tipo variant, haces el create y a otra cosa mariposa. Siempre me ha parecido una gran cagada.

D

Hoy es un gran día para los amigos del C++0X. Si supiera alguien lo que es...

EGraf

pufff, que atrasados estos de Microsoft, todavía siguen en C++, a este paso nunca van a llegar a AAA

D

¿entonces ya puedo tocarme por las noches in quedarme ciego?