mamcx
Cita:
|
Empezado por mamcx
...Eso aplica también a los lenguajes? Dirías, con los datos expuestos, que es el caso?...
|
Si.
Revisa esta información:
Cita:
...The choice of programming language can have a profound effect on the occurrence of buffer overflows. As of 2008, among the most popular languages are C and its derivative, C++, with a vast body of software having been written in these languages. C provides no built-in protection against accessing or overwriting data in any part of memory; more specifically, it does not check that data written to a buffer is within the boundaries of that buffer. The standard C++ libraries provide many ways of safely buffering data, and C++'s Standard Template Library (STL) provides containers that can optionally perform bounds checking if the programmer explicitly calls for checks while accessing data. For example, a vector's member function at() performs a bounds check and throws an out_of_range exception if the bounds check fails. However, C++ behaves just like C if the bounds check is not explicitly called. Techniques to avoid buffer overflows also exist for C...
Tomado de : Buffer overflow
|
Es por lo tanto responsabilidad del programador que use C/C++
conocer todo lo anterior para programar de forma eficiente y segura en dichos lenguajes.
Cita:
|
Empezado por mamcx
...Así que, aparte de decirle al compilador algo que se puede automatizar -donde termina un bloque-...¿que ganancia da, aparte de algo estético o de pura costumbre?...Ahí es donde no me han dado ningún argumento...
|
Determinan visualmente los bloques de código,
algo que en términos prácticos es muy útil al momento de programar y depurar.
Cita:
|
Empezado por mamcx
...Estamos haciendo software con las mismas ideas de mas de 60 años...
|
Es correcto

, la evolución ha sido lenta en ese sentido pero aun así
el software es cada día más complejo y sofisticado que en el pasado.
Cita:
|
Empezado por mamcx
...Estamos haciendo software *olvidando* muchos de los avances en como hacer software, que se conocen desde hace mas de 50 años...
|
Quizás el programador promedio si, pero los programadores profesionales de grandes empresas a nivel mundial de desarrollo de software, energía, telecomunicaciones, finanzas y centros de investigación
no estaría tan seguro
Cita:
|
Empezado por mamcx
Te pregunto:
1- Sabes que es una función pura?
2- Sabes que se puede reemplazar, en su totalidad o parcialmente, sin detener el programa, o sea corriendo, aun cuando este soportando una enorme carga de trabajo, un programa, sin fallas ni downtime? Y eso es algo que se puede hace decadas. Lo hacen? Yo no. Y eso que se que existe, pero es que ninguna de las herramientas que uso pueden hacerlo!
3- Sabes que el bound checking, que C/C++ no tiene, fue inventado hace mas de 3 décadas? Están usando los programadores de C "computación avanzada"?
4- Sabes que no hay porque, en pleno siglo 21, preocuparse por un Null Exception, porque eso esta resuelto, hace décadas también?
5- Sabes que se puede verificar que un programa no tiene errores de acceso de memoria?
6- Y que es posible garantizar que no hay deadlocks?
7- Sabes que hay muchos GC mejores de lo que imaginas? Que pueden hacer código MAS rápido que los que usan memoria manual?
8- Saben que lo ultimo que implementa C# 4/5, Java 8, estaba disponible para gente en 1980? Pero porque desafortunadamente C/C++/JS/PHP "ganaron" en números, todo ese software escrito durante todo ese tiempo (y aun ahora) no goza de ninguno de los avances en la computación -para programadores-?
9- Saben cual es el estado del arte en nuestra área? Que tanto atrás o delante estamos, en herramientas y tecnología, con respecto a como eran las cosas hace 20 años?
|
La respuesta general a todas las preguntas es :
Si, sin embargo lo mismo se aplica a toda la tecnología en general,
supongo que el proceso de conocimiento e implementación del mismo es lento en términos generales independientemente del área de conocmiento en cuestión, es algo más humano que técnico
Cita:
|
Empezado por mamcx
...Hay otros lenguajes que si están *mas* cerca. Pero no son populares. Es muy difícil. No tienen los números de su lado, o son muy bizarros en su sintaxis, o simplemente es muy difícil que un programador haga un cambio a algo nuevo. En especial si niega o ni siquiera puede concebir que existe un mejor camino. En especial lo segundo*...
|
Estoy de acuerdo

, sin embargo esto esta ligado a la respuesta anterior.
Cita:
|
Empezado por mamcx
...¿Poniendo en su sana perspectiva lo de perfecto?...La respuesta pedante: Es NO. Combinar lenguajes no resuelve el problema...
|
Es correcto
Cita:
|
Empezado por mamcx
...No te alcanzas a imaginar cuan cerca puede estar esa meta de lo que ahora piensas...
|
Pregunto: ¿Te has puesto a pensar que con toda la base instalada de aplicaciones y conocimiento en C/C++ y sus lenguajes derivados no es aconsejable en términos prácticos el dar un salto brusco a los lenguajes que mencionas como más evolucionados?,
todo se resume a lo práctico versus a lo ideal, sin importar cuan poderoso sea Erlang para manejar la concurrencia (Por ejemplo)
si mi base instalada es de C#, seguirá siendo de C# o un derivado de este, con las excepciones del caso, lo mismo aplica a otros lenguajes 
En resumen: La fortaleza de C/C++ y sus derivados radica en sus extensas posibilidades de programación, no en su perfección de diseño, lo cual sumado a su gran base instalada, conocimiento acumulado y mejoras continuas hacen que estos lenguajes tengan asegurado un largo camino en el mundo de la computación del siglo 21.
Nelson.