Si, pero prehistóricos solos por el año en que fueron diseñados. Mirad ésta gráfica (bastante conocida por Internet).
Fortran, un lenguaje diseñado para ser usado en tarjetas perforadas datado en el año 1954, se sigue usando a día de hoy.
Cobol, del 1959 es, sorprendentemente, el lenguaje más usado con diferencia. Se calcula que durante el 2005 el 75% de los datos generados por negocios eran procesados por programas escritos en este lenguaje.
Y Lisp, mi favorito, del 1958. No han tenido que cambiar ni una sola linea del estándar para incluir técnicas "modernas" como programación orientada a objeto.
Luego hay otros lenguajes, como Forth (1965), que a pesar de que hoy en día ya no se usan, tienen bastantes cosas que enseñaros. Pero de eso ya hablaremos otro día.
Mostrando entradas con la etiqueta lenguajes. Mostrar todas las entradas
Mostrando entradas con la etiqueta lenguajes. Mostrar todas las entradas
lunes, septiembre 24, 2007
sábado, septiembre 22, 2007
C++ y las tres bes: bonito bodrio y... bacalo (Capítulo I)
He estado varios meses sin actualizar el blog por falta de tiempo pero ya vuelvo al pie del cañón. Vuelvo para hacer pública mi opinión acerca de un lenguaje que prometió el oro y el moro pero que acabó convirtiéndose en un estorbo. Si, me refiero a C++.
Con la gran explosión de lenguajes que estamos viviendo en estos últimos años (Ruby, Lua, Python, etc...) se va haciendo cada vez más patente los grandes defectos de C++. El principal, desde mi punto de vista, y el que más me putea es el conocido como name mangling.
¿Que qué carajo es eso? Empecemos con la explicación para C. Cuando compilas tu programa el compilador de C no usa los nombres de las funciones que elijes porque el programa que se encarga de linkar necesita información extra. Así que el compilador retoca un poco los nombres. En C ésto, el mangling scheme, es algo definido en el estándar, da igual el compilador que uses, da igual el lenguaje que uses que al ser estándar todos se entienden entre sí.
Ahora vamos con el C++ que funciona igual excepto un pequeño y desastroso detalle... no hay un estándar, no entiendo porqué pero no lo hay. Cada compilador gcc, msvc, etc... usa un formato diferente para nombrar las funciones durante la compilación, con lo que todos son incompatibles entre si.
¿Como nos afecta esto? Intentad hacer una DLL en C++ y veréis que bonito resultado. Observad como todos los nuevos lenguajes tienen soporte directo para usar llamadas a C pero no a C++ Linkar archivos .obj de diferentes compiladores juntos y observad que bonito error aparece en vuestras pantallas.
Con la gran explosión de lenguajes que estamos viviendo en estos últimos años (Ruby, Lua, Python, etc...) se va haciendo cada vez más patente los grandes defectos de C++. El principal, desde mi punto de vista, y el que más me putea es el conocido como name mangling.
¿Que qué carajo es eso? Empecemos con la explicación para C. Cuando compilas tu programa el compilador de C no usa los nombres de las funciones que elijes porque el programa que se encarga de linkar necesita información extra. Así que el compilador retoca un poco los nombres. En C ésto, el mangling scheme, es algo definido en el estándar, da igual el compilador que uses, da igual el lenguaje que uses que al ser estándar todos se entienden entre sí.
Ahora vamos con el C++ que funciona igual excepto un pequeño y desastroso detalle... no hay un estándar, no entiendo porqué pero no lo hay. Cada compilador gcc, msvc, etc... usa un formato diferente para nombrar las funciones durante la compilación, con lo que todos son incompatibles entre si.
¿Como nos afecta esto? Intentad hacer una DLL en C++ y veréis que bonito resultado. Observad como todos los nuevos lenguajes tienen soporte directo para usar llamadas a C pero no a C++ Linkar archivos .obj de diferentes compiladores juntos y observad que bonito error aparece en vuestras pantallas.
Etiquetas:
c++,
lenguajes,
name mangling,
programación
Suscribirse a:
Entradas (Atom)