-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2007-01-20 a las 13:38 +0100, csalinux escribió:
Aunque con Pascal no se va a ningún sitio hoy en día, me temo. No está de moda. El lenguaje en sí es bueno, pero siendo minoritario, el compilador avanza lento. Pero sigue existiendo y avanzando. Bueno, también está el Lazarus, que imita al Delphi de Borland, y que usa Pascal como lenguaje.
Pero te digo una cosa: si los programadores trabajaran en Pascal en vez de en C, se verían menos agujeros de seguridad, sobre todo de esos de desbordamiento de variables que sobreescriben otra del sistema y ejecutas código root. El C es un lenguaje muy potente que no pone cortapisas, porque es el programador quien debe saber lo que está haciendo y no equivocarse. Y pasa lo que pasa.
Con C++ no pasa eso, ¿no?
Eso tengo entendido. Se supone que sé C++, pero la realidad es que casi no lo he usado. El C sí. El C++ puede usar un tipado más fuerte, pero también puedes usar las construcciones del C. Uno que sepa realmente C++ podría comentarlo. Que se yo... a mi, por ejemplo, no me gusta nada la manera del C++ de sacar mensajes por pantalla. En cambio, la manera antigua con printf es muy práctica: tienes un string, tal como "Los %d gatos pesan %f kilos". Los % marcan sitios que se van a substituir por el valor de las variables que se ponen a continuación. El printf() tiene dos trampas fundamentales: Si tienes tres porcientos pero sólo le das dos variables, la función tratará de leer la tercera variable de donde no hay, con resultados imprevisibles pero en principio no catastróficos. Es un error, pero el compilador no lo detecta (la función no tiene definidos el número de variables ni su tipo). La otra trampa es que el tipo de variable que se espera viene dado por el caracter que sigue al porciento, pero el compilador tampoco verifica que realmente le hayas dado esa variable. Si le dices que será un puntero pero en realidad le pasas un entero, va a leer los datos de no se sabe donde. Si ese entero el usuario lo puede escribir (es un dato entrado), pues ya tienes una manera de leer memoria no autorizada. Y hay otra función correspondiente para leer datos, más peligrosa todavía. Sin embargo, ¿porqué nos gusta a los progamadores? Pues, por ejemplo, porque con cambiar ese string por "The %d cats weight %f kilograms" ya lo he traducido al inglés, en una patada. Es más, ese string se puede leer de un fichero de texto externo al programa, teniendo uno para cada idioma. No se hace exactamente así, pero en linux la tradución de programas a varios idiomas usa el truco de cambiar esos strings mediante una librería y una serie de ficheros que hasta el usuario puede crear o cambiar Luego es util. ¿Se puede en C++? Pues no lo sé... algo habrá. Pero de la manera que me enseñaron C++ a mí, no se como: cout << "Los " << numerodegatos << " gatos pesan " << numerodekilos << " kilos\n" (el problema para traducir es que son tres strings o frases separadas, inconexas, en vez de una. Se rompe el contexto). O usan printf directamente, que es lo que yo hacía. - -- Saludos Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFFsjRntTMYHG2NR9URAtwNAJ4mysIVAxSYmJgBGEnGQiTbKkhPdwCeJ0Fz QyHLv95kgt5RDgBGV2cPmaI= =1OSW -----END PGP SIGNATURE-----