Término BUG en programación.

DEBUG


Todos en mas de alguna vez hemos utilizado el termino de BUG (Bicho) en la programación. y todos entendemos que se refiere a algún error de programación y desde aquí es donde nace la otra palabra mas utilizada DEBUG o DEBUGGING que es el proceso que realizamos para localizar y eliminar un error en nuestra programación.

¿Pero de donde nace esta palabra o este concepto?



En 1945, el MARK II  sufrio un fallo en uno de los miles de relés electromagnético.

Cuando se investigó, se encontró una polilla que había provocado que este relé quedase abierto.
Este incidente es conocido como el origen de la palabra BUG para describir un error en un sistema informático.

Dejemos la historia y ahora la programación.

Que se puede hacer cuando comenzamos un DEBUG.


  1. Break : Marca una ubicación de un punto de control. Linea en donde situaremos el corte.
  2. Step : Ejecutamos el programa linea alinea, al menos que indiquemos lo contrario. Este puede ser tanto hacia adelante o atrás
  3. Finish Debugger : Damos termino al proceso de debug.
  4. Pausa : Su nombre lo indica detenemos momentáneamente el debug.
  5. Continue : Saltamos al siguiente break Point.
  6. Apply code changes : Esta herramienta del debug es la que mas me gusta ya que me permite realizar cambios en caliente


Errores o Bugs más comunes. 

A la hora de programar o realizar manutenciones a aplicacion ni que conoces lo mas importante es saber leer errores. Pero antes es saber cuales son los mas comunes esto es en cualquier lenguaje de programación y/o tecnología.

  1. División por CERO : No es mentira es mas común de lo que se cree. 
  2. Ciclo infinito : En este caso es muy importante que en la empresa se tengan normas de programación. Por ejemplo los famosos IF o FOR anidados. Rotundamente prohibidos.  
  3. Desbordamiento (Overflow) : Cuando asignamos un valor a una variable con una capacidad inferior. Es este caso es muy importante que conozcas tu datos y el lenguaje que utilizas.
  4. Subdesbordamiento (Underflow) : Lo contrario a Overflow. Asignamos a una variable un valor inferior al permitido. Por ejemplo : byte Numérico Entero con signo -128 a 127 y le asignamos un -130.
  1. Exceder el tamaño del array : Cuando nos salimos de la capasidad del indice del array. Si tengo una array de largo 5 no le puedo agregar un valor en el indice 8. 
  2. Utilizar una variable no inicializada: Jajaja tengo muchas historias con este error. En java seria el NullPointerException. (Como un compañero de trabajo diría "El Típico NullPointerException")
  3. Acceder a memoria no permitida. (Access violation).
  4. Perdida de memoria (Memory leak) : Perdida de memoria. Es muy común en algunos lenguajes me toco vivir lo con apache-tomcat 6 (Garbage collector). Esto es cuando se pierden referencias a posesiones de memoria . Un mal que no se lo deseo a nadie. puedes realizar análisis con jmap -dump:file=heap.hprof <pid> y luego con un plugin de eclipse para analizar. https://dzone.com/articles/how-to-find-and-fix-memory-leaks-in-your-java-appl
  5. Buffer overflow : En Java y tomcat 6 muy común. Aqui una explicacion muy buena https://www.welivesecurity.com/la-es/2014/11/05/como-funcionan-buffer-overflow/
  6. Deadlock : En Oracle me tope con algunos de estos errores. Al principio no entendía nada. Luego con la ayuda de un amigo me explico los bloqueos de datos. Se da principalmente cuando dos procesos intentan acceder a una posición de memoria. https://www.jasoft.org/Blog/post/191;Que-es-un-deadlock-o-interbloqueo.aspx
Bueno eso tenia que contar. Saludos






Estaba un poco aburrido y decidí aprender ruby.


Ruby - Manual del Programador (Users)


Así como esta en el titulo del aburrimiento decidí aprender a programar en Ruby. Ademas que necesitaba un lenguaje interpretado como PHP o Ruby. El tema es que de PHP hay mucha información y personas que ya lo programan asi que por suerte me encontré este libro el cual me estoy devorando. A mi sorpresa me resulto muy simple de leer y para nada de aburrido. Partiendo de la base que ya sabes de programación o has programado en algún lenguaje.

Si quieres aprender Ruby desde cero, te recomiendo este libro. En cuanto a los ejemplos son muy prácticos lo que ayuda bastante.

En cuanto a lo que a mi me interesa Ruby on Rails. (Desarrollo de aplicaciones WEB).
Rails suena bastante bien al punto buscar en google Ruby and Rails V/S Spring



La verdad es que esperaba menos de Ruby on Rails me resulto bastante grato encontrar una alternativa tan buena en el papel. Ahora se tendría que ver en la programación que tal se comportar. 

Ahora la misma comparación contra PHP este se ve bastante superior. Pero estamos hablando de PHP. Que con los años y mejoras que se le han echo. Quien podría decir otra cosa.