Cita:
Empezado por nlsgarcia
mamcx,
Con buenas prácticas de diseño y programación
|
Eso aplica también a los lenguajes? Dirías, con los datos expuestos, que es el caso?
Cita:
Empezado por nlsgarcia
En toda tu exposición te has basado en el hecho de que si un lenguaje deriva de C/C++ tiene fallas de base..
|
Mmmm... el debate surgió en parte de que tener limitadores es mejor que no, y entonces puse como los que usan la familia C no son superiores, y de hecho, tienen fallas en su implementación. No quise dar a entender que todos en lo absoluto de sus descendientes son malos, solo expuse que los mas comunes comparten ese problema.
Luego se mezclo que es culpa de nosotros no saber que esos delimitadores traen errores, entonces hay puse ejemplos donde es culpa de los compiladores/sintax los errores. Pero eso fue mezclar 2 cosas diferentes, aunque conectadas...
En donde si quise dar a entender que están todos los de la familia C, es en que los marcadores (de bloque) que usan no aportan mucho al programador, que tener que usarlos es algo que se expone como un problema común en varias guías sobre los mismos (que se olvidan, que hay que estar seguro de cerrar y abrir donde es, etc), y que en ciertos lenguajes tienen problemas importantes. Eso si es mas universal.
Asi que, aparte de decirle al compilador algo que se puede automatizar -donde termina un bloque- (y que personalmente he implementado, y no es tan difícil), que ganancia da, aparte de algo estético o de pura costumbre? Ahí es donde no me han dado ningún argumento, solo el decir: Es que X es muy bueno, mire como todo el mundo lo usa e igual tenemos Google Chrome.
Es claro ahora? Ademas expuse que el caso de Go & Rust esta mucho mejor pensado el asunto.
Cita:
Empezado por nlsgarcia
(sobre el erp)
..
¿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?.
|
Exacto! No es culpa del usuario!. Eso es lo que debato. Ahora bien: Porque no pensar LO MISMO con respecto a un lenguaje? En este caso, el usuario somos nosotros!
Cita:
Empezado por nlsgarcia
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.... son cada vez más complejos, potentes y seguros
|
La computación ha avanzado. La forma de hacerlo? Ni de locos. Estamos haciendo software con las mismas ideas de mas de 60 años...
FALSO.
Estamos haciendo software *olvidando* muchos de los avances en como hacer software, que se conocen desde hace mas de 50 años.
Te pregunto:
- Sabes que es una función pura?
- 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!
- 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"?
- Sabes que no hay porque, en pleno siglo 21, preocuparse por un Null Exception, porque eso esta resuelto, hace décadas también?
- Sabes que se puede verificar que un programa no tiene errores de acceso de memoria?
- Y que es posible garantizar que no hay deadlocks?
- Sabes que hay muchos GC mejores de lo que imaginas? Que pueden hacer código MAS rápido que los que usan memoria manual?
- 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-?
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?
Cita:
Empezado por nlsgarcia
¿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
|
Poniendo en su sana perspectiva lo de perfecto? No te alcanzas a imaginar cuan cerca puede estar esa meta de lo que ahora piensas*.
* La respuesta pedante: Es NO. Combinar lenguajes no resuelve el problema. Sin embargo, por poner un ejemplo: Alguna vez has pensado porque puedes tener un valor NULL en cualquier momento? Y que tal si te dijera que es posible nunca, jamas, tener un NULL inesperado? Yo antes ni siquiera se me ocurriría tal cosa.
Asi aunque no es posible en su totalidad esa meta, ni C, C++, C#, Java, Python, Ruby, Delphi, Lua, y muchos otros lenguajes mas comunes son un ejemplo de que tan lejos se ha llegado, osea, hace varios años ya. Se podria decir que cada uno ha recibido solo un "pedazo" de esos avances, unos mas que otros.
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*.
* Por poner un ejemplo: Cuantos programadores VB se pasan a Pascal al darse cuenta lo mejor que es?
Naaaaa... miren cuanto software en VB esta hecho, y no le veo problemas.... Ademas si me esfuerzo mas, trabajo mas y escribo mas código hago lo mismo...