Ver Mensaje Individual
  #40  
Antiguo 16-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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.

Última edición por nlsgarcia fecha: 16-05-2014 a las 09:18:56.
Responder Con Cita