EDICIóN GENERAL
184 meneos
2542 clics
Llega C++ 17: Entrevista con Herb Sutter [ENG]

Llega C++ 17: Entrevista con Herb Sutter [ENG]

El mes pasado, el comité ISO C++ aprobó formalmente la nueva norma C++17, después de que el trabajo sobre la misma finalizara en abril de 2017. Hemos aprovechado la oportunidad para hablar con Herb Sutter, que ha estado involucrado durante muchos años en las actividades del comité ISO C++ y que en realidad es su organizador. P: ¿Cuáles son los principales aspectos destacados de este nuevo estándar? ¿Cuáles de las características de C++17 deberían entusiasmar a los desarrolladores?

| etiquetas: herb sutter , c++ , c++ 17 , entrevista
Por lo que he visto por encima Las cambios más importantes son en la STD más que en él núcleo del luenguaje.
Yo ya lo uso.
#1 stackoverflow.com/questions/38060436/what-are-the-new-features-in-c17
Visual Studio 2017.4 Lo implementa en buena parte, pero GCC también.
Profesionalmente, sólo he programado en ANSI C++ dos veces en toda mi vida, una vez para hacer un CGI en un servidor, y otra para implementar un plugin NPAPI. Todo lo demás han sido lenguajes visuales o javascript.
#2 No he tocado el C++ desde que acabe la carrera.
Trabajando he tocado C, PHP, JS, Java y C# pero C++ no he tenido la ocasión.
#4 Yo he trabajado varios años con Visual C++, pero con las MFCs, no tiene nada que ver con el C++ estándar.
#8 pero nada de nada...
cuando veo código VIsual C++ MFC ...flipo en colores... es chino mandarin.

Modern C++ es otra cosa muy distinta (y mucho mejor, claro)
Llega Pxx 76: Entrevista con Jose Garcia.
Los conceps no entraron en c++17 verdad?
#6 No. Pero están en el primer borrador de C++20.
#10 Espero que de C++20 no pase porque tiene muy buena pinta.
Me sigue alucinando lo fresco que se siente Golang siendo un lenguaje tan sumamente sencillo. Cada vez que veo las "nuevas características" en Python, Ruby, Javascript, o C++ se me pone la piel de gallina.
#9 Golang es una basura, no tiene genéricos.
#16 Pregunta ignorante: ¿Qué son genéricos?
#24 son una especie de templates que tienen c#y java. Permiten por ejemplo crear una List<> una vez y luego la instancias con List<int> o List<string> List<lo_que_sea>.
A diferencia de los templates de c++, los generics no sé resuelven en tiempo de compilación, por lo que no son exactamente lo mismo y hay cosas que se pueden hacer con unos y no con los otros.
#30 Al resolverse en tiempo de ejecución son lentos y pueden dar fallos en runtme.

Por eso, en Go, son tan reacios a incluirlos. Uno de los objetivos de Go es generar código de calidad.
#24 Es una forma abstracta de declarar un tipo. Un genérico puede adoptar cualquier forma.

class MyClass<T> {
val variable: T
}

Si instancias MyClass, la variable T puede adoptar cualquier forma (Int, String, Bool, o incluso un objeto custom)
#24 Los genéricos (generics o templates en inglés) son una forma de generar código en tiempo de compilación. En C se hacía (y se hace) mediante macros. Si en C se define algo como:

#define MY_MACRO(x) call_to_my_special_function(x, x+1)

todas las apariciones de MY_MACRO son resueltas por el preprocesador de C sustituyendo dicho valor por su contenido (call_to…). El problema de esto es que el compilador no tiene ni idea del símbolo MY_MACRO, ya que es…   » ver todo el comentario
#32 creo que me has citado mal, tanto en el número como en lo que dices que he dicho.
#35 Pues igual sí, disculpa.
#include <stdio.h>
void main(){
printf("he llegado, versión 17");
}
#11 prueba mejor así, que la noticia es de C++17 no de C
#include <iostream>
int main()
{
std::cout << "he llegado, versión 17";
return 0;
}
#12 #11 No estaría de mas añadir el cambio de linea, ademas de comenzar con mayúscula y el punto final.

También falta el return en ese código c.
#17 Yo no me meto en los requisitos. Me limito a reimplementar el código original en C++ :-D
#12 te falta el std::endl :troll:
#26 ya he dicho que era una refactorización. Ahora abre un ticket sí quieres cambiar la.funcionalidad :-P
#12 Que frikada de conversación jajja.. bueeno vale me apunto.. mejor: using namespace std; así solo tienes que poner cout << "texto" << endl;
#27 Nunca hagas eso. using namespace es el demonio. Para algo estan los namespace, para saber a cual pertenece cada clase y función.
#47 Te lo compro, era por la broma.. hecho de menos el c++ ya que últimamente solo me salen trabajos en páginas web.
#11 wtf has usado C :-D
Espero que no sea absorvida junto con C++18 por C++elula.

Ya me voy, ya.
#13 el diccionario ya ha sido absorbido :troll: (no he podido evitarlo, lo siento, yo tb me voy)
#14 omg, no me di cuenta. Maldito dedo salchicha... xD
En mi curro aún se usa C++98 :foreveralone:. El dia que pueda usar C++17 creo que ya estaré cerca de la jubilación :troll:.
#20 Bueno, C++98 es más que C++17 :troll:
#20 Me pareces excesivamente optimista, quizás en después de 2 o 3 reencarnaciones puedas usarlo. xD
#20 ¿que compilador usas?
porque yo ya voy a saco con los proyectos viejos que mantengo y meto todo en C++11 ...más que nada, por joder...
hay gente que ve un "auto i;" y flipa en colores ;)
#39 Si por mi fuera usaría gcc-7 o clang-6 pero el código tiene que poder compilarse en versiones antiguas como gcc-4.8 como mínimo y no se si también gcc-4.6...

La verdad es que C++ plus STL está creciendo tanto que ponerse al día es bastante complicado (comparado con C por ejemplo).
#44 gcc 4.6 ???
¿pero que es?¿para una placa ARM?

con 4.8 puedes habilitar el soporte C++11 con -std=gnu++11 y probar...
gcc.gnu.org/gcc-4.8/cxx0x_status.html
Coincido en que las mejoras que mas se notan y se usan en el dia a dia son las que ayudan a escribir un codigo mas sencillo y menos propenso a errores (ranged for loops, auto, lambdas, constructores en miembros de clase...).
Si por ahi va a ir evolucionando el lenguaje, bienvenido sea (por ejemplo lo de poder declarar variables dentro de un switch)
He aquí un resumen de novedades que está bastante bien -> www.viva64.com/en/b/0533/#ID0EXCAC
Jodo, pues para mí esto está desparramando cosa fina, cada vez veo el código más abstracto y menos legible.
#28 creo que la cosa es todo lo contrario ... cada vez código más compacto, legible y mantenible...
solo por despreocuparte de la gestión de memoria etc ...vale la pena
Me resulta especialmente curioso cómo el todopoderoso C++ lleva ya unos cuantos años absorbiendo características de D y haciéndolas pasar como propias sin apenas dar crédito.

Por ejemplo, lo que en C++ llaman concepts, en D llevan años usando con el nombre de restricciones (constraints). Y no son otra cosa que limitar las posibles instanciaciones de las plantillas (por ejemplo, que una plantilla sólo se pueda instanciar con…   » ver todo el comentario
#34 Todo eso puede estar en D pero también en C#. Ignoro quien es pionero en qué, simplemente en C++ son mucho más conservadores a la hora de implementar nuevas funciones (y está Boost para testear muchas de ellas).
#36 si ...casi parece que sea boost el que suministre las nuevas funciones a C++
#41 negativo sin querer...
#34 no creo que sea así ...se adapta a los tiempos e implementa nuevas funciones de todos los lenguajes

menéame