Ver Mensaje Individual
  #37  
Antiguo 15-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
...Los buffer overflow son una de los problemas que estos tienen. Son un vector de ataque, causan crash, son jodidos de depurar y todo eso. ¿Como se arregla?...
Con buenas prácticas de diseño y programación aunado a extensas pruebas y seguimiento de la implementación, en resumen: Es responsabilidad del programador si este usa un lenguaje que no implementa internamente chequeo de límites de memoria el hacer todas las pruebas necesarias que validen el buen funcionamiento del software construido. C/C++ son herramientas muy poderosas para la programación, no implica que sean perfectas, pero ciertamente han probado ser sumamente efectivas y eficientes para el desarrollo de software desde su creación hasta el presente.

Cita:
Empezado por mamcx
...¿Supuestamente? No, TIENEN fallas de base. Que se controlan, como dices, con disciplina...
En toda tu exposición te has basado en el hecho de que si un lenguaje deriva de C/C++ tiene fallas de base, Pregunto:

1- ¿C# tiene problemas de Buffer Overflow? , creo que no si simplemente se usa código gestionado.

2- ¿Java y D tiene problemas de Buffer Overflow? , creo que los lenguajes modernos derivados de C/C++ se han construido sobre las lecciones aprendidas de sus antecesores, luego hablar que todos ellos tienen problemas de base por compartir un ancestro común creo que no es una apreciación muy justa con dichos lenguajes.

Cita:
Empezado por mamcx
...Examples of such languages (que no tienen ese problema de base) include Ada (podria reemplazar a C/C++, sino fuera porque pailas, son mas populares), Eiffel, Lisp, Modula-2, Smalltalk, OCaml and such C-derivatives as Cyclone, Rust and D (todos estos, podrian reemplazar C/C++)...
Pregunto: Cyclone, Rust y D son derivados modernos de C/C++ y todos ellos usan las llaves {} como delimitadores de bloque, es decir que según tu exposición estos lenguajes tienen irremediablemente un problema de base, luego ¿Como pueden reemplazar a C/C++ si tienen tal problema de base?. La respuesta es que el uso de las llaves {} no implica un problema de base, si así fuera todos los derivados de C/C++ ya hubieran hecho algo al respecto.

Cita:
Empezado por mamcx
...En su momento, aparte de C/C++, ¿que opción hay para hacer un OS?...
Es correcto , pero hoy en día Microsoft esta desarrollando un nuevo SO llamado Midori y este se construye sobre un lenguaje derivado de C#, que a su vez es derivado de C/C++ que es M#, Pregunto : ¿Por que se siguen usando derivados de C/C++ si tienen tantos problemas de base?, la respuesta es que son versiones mejoradas de sus antecesores, cada vez más potentes, especializadas y seguras, y por lo tanto mas confiables.

Cita:
Empezado por mamcx
...Hay un ERP que es el mas usado y es muy potente. Sin embargo, Si se le meten decimales hay que estar muy seguros de poner "." y no ",". Si se pone ",", la vaina se jode y corrompe todo. Si se mete un null entre una cadena en el proceso de importacion de datos, se rompe la seguridad del sistema. Se puede hacer injección de SQL...
Pregunto: ¿Todo lo anterior no es responsabilidad del programador?, ¿No se puede verificar el uso de punto o coma como separador de decimales?, ¿No se puede verificar en un String si este tiene caracteres Null para evitar riesgos de seguridad?.

Un programador debe conocer las fortalezas y debilidades del lenguaje que usa para hacer un mejor uso de el y construir software de calidad.

Si aceptamos la tesis de que todo lenguaje derivado de C/C++ tiene problemas de base entonces deberemos aceptar que la computación poco ha avanzado desde la aparición de C/C++ y es un hecho que ha sido todo lo contrario, los sistemas son cada vez más complejos, potentes y seguros no necesariamente perfectos, sin embargo el factor humano siempre esta presente en ellos y la complejidad creciente de los sistemas hace cada vez mas necesaria una mayor disciplina en el desarrollo de software de calidad.

Pregunto: ¿Si uniéramos las mejores características de todos los lenguajes actuales y se hiciera un lenguaje perfecto en todo sentido se eliminarían por completo las fallas de software, es decir: Los sistemas serían a prueba de fallas, eficientes, seguros y cumplirían a cabalidad las metas para los que fueron concebidos?

Nelson.

Última edición por nlsgarcia fecha: 15-05-2014 a las 23:01:10.
Responder Con Cita