Betazeta Networks:BelelúBólidoCHWFayerWayerFW BrasilFerpleiLUPANiubieSaborizanteVeoVerdeWayerless MCUZimio Versión Movil

Temas Calientes

Puntero Nulo: El error de los mil millones de dólares

56

Sir Charles Antony Richard Hoare

Sir Charles Antony Richard Hoare

Sir Charles Antony Richard Hoare

Sir Charles Antony Richard Hoare

El británico Tony Hoare conocido por inventar el algoritmo Quicksort en 1960, dará una conferencia en el QCon de Londres llamada “Null References: The Billion Dollar Mistake“, donde asegura que desde la invención del puntero o referencia nula en 1965 para un lenguaje orientado a objetos (ALGOL W), esta ha causado dolores de cabeza a programadores en los innumerables errores, vulnerabilidades y fallos de sistema que probablemente han causado mil millones de dólares en daños en lo últimos 40 años.

Asegura que su objetivo principal era que todo manejo de referencias estuviera completamente seguro.

Si alguna vez has programado en un lenguaje orientado a objetos sabrás de que dolores de cabeza se trata, ¿Pero que sería de Java, C/C++ y Visual Basic sin punteros (nulos) bajo responsabilidad y uso adecuado por parte del programador?

Link: Null References, the Billion Dollar Mistake (Slashdot)

56 Comentarios

Puntero Nulo: El error de los mil millones de dólares

Páginas: 1 2
Ver Todos
Thumb up 0 Thumb down 0 avatar_MaLMaX MaLMaX dijo hace 3 años

NullPointerException y la ctm...

ajajaj el viejo se parece a don miguel xD le falta el puro "piercing" en el cuello...

saludos!

Responder
Thumb up 0 Thumb down 0 avatar_Ramzendo Ramzendo dijo hace 3 años

Disculpen mi ignorancia, pero creo que en JAVA no se utilizan los punteros de forma explicita como en C o C++
Asi que hay mejores formas de tratar las excepciones en Java.

Responder
Thumb up 0 Thumb down 0 avatar_Andrés Andrés dijo hace 3 años

la verdad que a mi me dio más que un dolor de cabeza tratar de entenderlos y creo que nunk termine de entenderlos por completo :P

Responder
Thumb up 0 Thumb down 0 avatar_livetnediser livetnediser dijo hace 3 años

Una de las razones para usar C son los punteros, con sus enormes ventajas y sus desventajas. Los punteros son la unica razon por la que me planteo usar C.
Razmendo, aunque en JAVA no se usan punteros como tales, tambien puede salir el error al usar una variable sin inicializar (sin valor).

Responder
Thumb up 0 Thumb down 0 avatar_ZEROmaverick ZEROmaverick dijo hace 3 años

si le temes a los punteros, es que eres muy chanta como informatico....

Responder
Thumb up 0 Thumb down 0 avatar_rockdrigo rockdrigo dijo hace 3 años

y siempre son errores re weones...

Responder
Thumb up 0 Thumb down 0 avatar_CLAUDIO CLAUDIO dijo hace 3 años

Nunca tuve problemas en puntero con c++ lastima que no e probado con otros leguajes

Responder
Thumb up 0 Thumb down 0 avatar_Ancelot Ancelot dijo hace 3 años

Jajjaja, NullPointerException....
Debes ser su mejor amigo o él te traicionará xD

Responder
Thumb up 0 Thumb down 0 avatar_JotaMachuca JotaMachuca dijo hace 3 años

Si los punteros son los primeros entes con inteligencia propia!!!

Cuantas veces no tenian todo ok y al final su mitico "null pointer assignement" o algo así....

Responder
Thumb up 0 Thumb down 0 avatar_Carlos Le Mare Carlos Le Mare dijo hace 3 años

@rex hauser

Abosultamente de acuerdo.... cuando mencionaron java (y no es que programe tanto en java tampoco) no podía acordarme de haber usado un puntero nulo... y claro, nunca he necesitado punteros en Java.... Poco me acuerdo de cuando programaba punteros en Pascal en la U. pero definitivamente era un tema el no equivocarse con los punteros.

Viva Java y su infame Garbage collector.

clemare
PD: Tampoco recojo la basura en mi casa.... :-)

Responder
Thumb up 0 Thumb down 0 avatar_mastermind mastermind dijo hace 3 años

Aunque Java maneje tremendamente bien los punteros, igul el NullPointerException es el error o la excepcion mas comun encontrada al programar en Java.

Responder
Thumb up 0 Thumb down 0 avatar_Pedro A. Pedro A. dijo hace 3 años

¿Pero que sería de Java sin punteros (nulos)?

Se usaría try catch

Con null
str = in.readLine();
if (str == null) break;


con try-catch

try {
    str = in.readLine();
} catch (EndOfFileException e {
    break;
}

Responder
Thumb up 0 Thumb down 0 avatar_null null dijo hace 3 años

´

Responder
Thumb up 0 Thumb down 0 avatar_M M dijo hace 3 años

Frases Célebres:

“La gestión manual de bloques de memoria en C es como hacer malabarismos con pastillas de jabón en la ducha de la prisión: todo diversión hasta que cometes un fallo”
– Un usuario anónimo de un foro Usenet

Pa los fans de Java:

“Java es lo más penoso que le ha ocurrido a la informática desde MS-DOS”
– Alan Kay

“Bien, Java podría ser un buen ejemplo de cómo debería ser un lenguaje de programación. Sin embargo, las aplicaciones Java son buenos ejemplos de cómo las aplicaciones no deberían ser”
– Pixadel

“Si Java dispusiera de un mecanismo real de recolección de basura, la mayoría de los programas deberían autoeliminarse al ser ejecutados”
– Robert Sewell

xD

Responder
Thumb up 0 Thumb down 0 avatar_Javier Javier dijo hace 3 años

Pero como no mencionan core dumped segmentation fault. Complicarse con los punteros en C no es algo que te vuelve incompetente, sino que natural. No hay excepciones ni avisos de que está pasando, nada de direcciones 0x0 y volas así, sino que apuntando a basura, apuntando a direcciones de memoria utilizadas, el lenguaje no te proteje en lo absoluto.

Pero bueno, de ahí C sea unos de los lenguajes más entretenidos para programar :P.

Responder
Thumb up 0 Thumb down 0 avatar_Celso Celso dijo hace 3 años

Son la raja los punteros hay que saber usarlos nomás.
Pero ya c, c++ es raro ver programas, la mayoría de los nuevos desarrollos son en java y c#.

Responder
Thumb up 0 Thumb down 0 avatar_inventionary inventionary dijo hace 3 años

Anteriormente los programadores (por ej. coboleros) trabajaban en "bases de datos" donde utilizaban para especificar que un campo no estaba seteado en la base de datos un 99999 (si era numérico) hoy con un preciado null que es mucho más acertado podemos definir que un campo no tiene un valor asociado.

Si uno programa de manera prolija y tiene en cuenta los posibles NullPointerException que pueden ocurrir en la ejecución de una aplicación no deberian aparecer esos errores.

Para los que no comprenden el significado de este NullPointerException doy un ejemplo:
Existe un cliente que tiene una dirección de la cual quiero obtener la calle. El día que quiera obtener la calle de ese cliente, pero nadie especificó cual era la dirección, me puedo encontrar (si no tomo los recaudos) con un NullPointerException.

Responder
Thumb up 0 Thumb down 0 avatar_null null dijo hace 3 años

null

Responder
Thumb up 0 Thumb down 0 avatar_Dario Dario dijo hace 3 años

No es por nada pero visual basic no tiene punteros nulos....... (pa que corrigan la noticia)

Responder
Thumb up 0 Thumb down 0 avatar_rex hauser rex hauser dijo hace 3 años

@Celso no es tan así. C y C++ son aun ampliamente utilizados en todo tipo de programas, sobre todo en componentes tipo core que requieren de rapidez y eso claramente no se obtiene desarrollando en Java y su byte code o en C# y su common language runtime (que en lo personal nunca le vi algún sentido). El lenguaje compilado por excelencia es C y sus hermanitos (no se me enojen los fortran, ada, pascal, delphi también los quiero). Si bien existen lenguajes que hacen la vida mas fácil hoy en día, creeme, que nadie haría un kernel, modulo, driver, game engine, whatever en Java. No es que odie Java o algo así, pero para que estamos con cosas... Java es para jueguitos de celular.

Responder
Thumb up 0 Thumb down 0 avatar_Nomad Nomad dijo hace 3 años

Pues, el error es de los programadores al no entender bien el uso de los apuntadores, cosa mas que basica para la programación en c/c++ principalmente.

Responder
Thumb up 0 Thumb down 0 avatar_Juan Juan dijo hace 3 años

Java es para jueguitos de celular ---> Wow !

Creo que son orientaciones distintas. Tampoco veo construir componentes de negocio typo EJB en C o C++. Por otro lado, rex hauser tiene razón (por ahora). Y en realidad, si, Java es para jueguitos de celular, aplicaciones móviles de todo tipo, portables, desarrollo de componentes de negocio, componentes web, mapeo Objetal-Relacional, plataformas distribuídas, etc. Sres. no a la guerra santa por favor.

Responder
Thumb up 0 Thumb down 0 avatar_alejandro alejandro dijo hace 3 años

La verdad siempre imagine que c++ era para desarrollos complejos, donde el contacto era muy cercano con las características del hw y que para los desarrolladores comunes y silvestres (aplicaciones de negocios), estaba java y c#. ¿Me equivoco?

en lo personal ocupo c# por el desarrollo rápido, aunque aún soy newbie.

Saludos

Responder
Thumb up 0 Thumb down 0 avatar_Alfredo Alfredo dijo hace 3 años

Jajajaaj y Clasico y Legendario Null Pointer Exception xD

Responder
Thumb up 0 Thumb down 0 avatar_Javier Javier dijo hace 3 años

@Celso: C Es raro si no juegas juegos con NVidia. Revisa que lo que es CUDA y te vas a dar cuenta que C es la base de muchos de estos juegos.

Responder
Thumb up 0 Thumb down 0 avatar_sergio sergio dijo hace 3 años

nunca me cayo en logica el puntero nulo, pero si era lógico para saber que no estaba direccionando algo.

Responder
Páginas: 1 2
Ver Todos

Deja tu Comentario

La opción de comentar está abierta a todos los usuarios, pero te pedimos por favor mantenerte dentro del tema del artículo y no publicar comentarios ofensivos o publicidad basura. Nos reservamos el derecho de eliminar cualquier comentario que no cumpla estas reglas.

Para que aparezca tu foto en vez del icono genérico en tu comentario, el email con el que comentas debe estar inscrito en Gravatar.