Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
Osea que estas de acuerdo con:
No sé qué le estaban preguntando para contestar eso. Evidentemente no tiene sentido ni tiene nada que ver con lo que estamos hablando.

Última edición por Casimiro Noteví fecha: 15-05-2014 a las 23:25:46.
Responder Con Cita
  #2  
Antiguo 15-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 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
  #3  
Antiguo 16-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
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 Ver Mensaje
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 Ver Mensaje
(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 Ver Mensaje
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 Ver Mensaje
¿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...
__________________
El malabarista.

Última edición por mamcx fecha: 16-05-2014 a las 04:52:59.
Responder Con Cita
  #4  
Antiguo 16-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 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
  #5  
Antiguo 16-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Unos consejos para los interesados en programar (bien)
Responder Con Cita
  #6  
Antiguo 16-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Esta buena la serie!

En resumen? Este es de LOCOS. Ayuda bastante ir aprendiendo sobre la marcha no solo como resolver el problema que se tenga al frente, sino el estado del arte y buenas practicas que en mucho caso ya esta "resuelto", aunque resuelto significa: Este es el lio, y no tenemos una respuesta perfecta pero ahi te damos algunas ideas.

Cuando se es novato, se esta mas enfocado en escoger esta o cual herramienta/libreria y en como hacer X que resulta interesante o es lo que esta de moda. Eso es muy bueno, pero tambien hay que aprender lo demas.
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 17-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
mamcx,

Cita:
Empezado por mamcx
...Ayuda bastante ir aprendiendo sobre la marcha no solo como resolver el problema que se tenga al frente, sino el estado del arte y buenas practicas...
Es correcto

Cita:
Empezado por mamcx
...Cuando se es novato, se esta mas enfocado en escoger esta o cual herramienta/librería y en como hacer X que resulta interesante o es lo que esta de moda...
Depende de la formación recibida

Cita:
Empezado por mamcx
...¿En resumen? Este es de LOCOS...


Nelson.
Responder Con Cita
  #8  
Antiguo 16-05-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No sé qué le estaban preguntando para contestar eso. Evidentemente no tiene sentido ni tiene nada que ver con lo que estamos hablando.
A proposito: La cita es del "Unix haters handbook". Una recolección de expertos en unix acerca de todos los lios de diseño de este. Esa cita es famosa por expresar la mentalidad común de la gente de *nix de despreciar al usuario por cometer errores, aun cuando defenderse de los tales requiere una serie de bizarros conocimientos del porque las cosas son como son. Es una de las lecturas recomendadas para todo programador.
__________________
El malabarista.

Última edición por mamcx fecha: 16-05-2014 a las 05:23:04.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que me recomiendan? D-MO PHP 2 08-12-2005 14:50:28
Que me recomiendan ? Sundance Gráficos 2 06-08-2005 06:36:31
Me recomiendan un tutorial? marceloalegre C++ Builder 5 09-06-2005 08:56:23
Me recomiendan Web Sites? marceloalegre SQL 2 18-05-2005 23:19:57
Sistema en Red, Que me recomiendan.. BlueSteel Varios 6 01-03-2005 17:46:09


La franja horaria es GMT +2. Ahora son las 08:48:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi