Hokuto7 wrote:Parece interesante el lenguaje Rust.¿Que os parece el lenguaje Go?
Hola Hokuto7,
He mirado un poco mas el manual de Rust, es un lenguaje moderno y compilado, lo que implica que la velocidad de ejecucion de los programas es muy alta (como en C/C++), todavia en mi opinion no se puede considerar Rust el sucesor de C++, por varias razones:
- Por empezar no es un lenguaje adapto para quien quiere aprender a programar o quien tiene poca experiencia de programacion.
- Su sintaxis es bastante distinta da C++, con lo cual lo pone como lenguaje diferente y no sucesor.
- Tiene un control mas restricto en la sintaxis, eso permite evitar algunos errores (especialmente de memory management) respecto a C++, pero su gramatica es mas compleja, de hecho tiene bastantes palabras claves y operadores que se pueden combinar entre ellos, un ejemplo de un simple programa en C++ (sin OOP):
void main(int argc, char *argv) {
int32_t value;
value = find_max(10, 20);
printf("max value is: %d\n", value);
return 0;
}
int32_t find_max(int32_t x, int32_t y) {
int32_t max = x;
if(max < y) {
max = y;
}
return max;
}
eso es el mismo programa en Rust:
fn main() {
let mut value: i32 = find_max(10, 20);
println!("max value is: {value}", value);
}
fn find_max(x: i32, y: i32) -> i32 {
let mut max: i32 = x;
if max < y {
max = y;
}
max;
}
Como puedes ver, la sintaxis gramatical de Rust es muy distinta a C/C++ y en varias cosas mas complejas, por ejemplo Rust obliga a inicializar siempre todas las variables (que se declaran con let), que de un lado es bueno porque evita errores de "undefined value" de variables no inicializadas correctamente cuando usadas, pero de otro obliga a escribir cierto tipo de sintaxis mas compleja, otro ejemplo es que las variables son immutables por default, esto significa que no se puede asignar otro valor fuera de la inicializacion, para hacerlo se debe declarar la variable como "mutable" con la palabra clave mut.
Luego en la definicion de la funcion, indicar el tipo de retorno es menos intuitivo que en C/C++ (se debe indicar la flecha "->" y el tipo), ademas el tipo de retorno puede ser implicito indicando como ultima istruccion el valor da devolver, si este valor es una struct la sintaxis es mas compleja aun.
En definitiva es un lenguaje moderno y interesante, aunque personalmente me gusta mas la sintaxis de C/C++ y su capacidad de poder gestionar cosas mas libremente.
Si el lenguaje lo quieres usar para programar juegos, puede ir bien para hacer juegos pequenos y prototipos, todavia el ecosistema de C++ (especialmente para librerias, frameworks etc.. para juegos) es huge respecto a Rust, asi que de momento almenos, si quieres seguir con la programacion de juegos con otros lenguajes, te recomiendo seguir con C++.
Hokuto7 wrote:Lo que no entiendo de c++ es que se sigue actualizando y añadiendo nuevas funcionalidades pero no modernizan la sintaxis,¿acaso no pueden hacerlo?
Lo standard va implementando nuevas features al lenguaje, en los aspecto que consideran oportunos, esto ya es modernizar, por ejemplo basta comparar las features del C++98 (1998) con el C++17 (2017).
Hokuto7 wrote:¿No se podria crear un lenguaje moderno,compatible con c++?
Crear un lenguaje moderno compatible no tiene sentido, la compatibilidad se hace actualizando/modernizando lo que ya hay, crear un nuevo lenguaje, significa hacerlo incompatible y de hecho seria un nuevo lenguaje, un poco como Rust no puede ser el sucesor de C++ (almenos en mi opnion) porque los lenguajes no son compatibles, la sintaxis es muy distinta.