Programación: La psicología de las computadoras

En un post anterior te mostramos porque todo el mundo debería de saber programar y es que todos nos vemos íntimamente relacionados con la programación, sea como usuario, como administrador, como programador propiamente, pero en definitiva es algo que va a estar más conectado con nuestras vidas con el pasar de los años.

En este artículo, quiero compartir con ustedes unos cuantos conceptos sobre lo que he ido descubriendo de programación a lo largo de estos años. No pretendo ser sumamente técnico, ya explicaré por qué más adelante. Pero lo que si pretendo es hacer que vean el mundo con mis ojos, y si les gusta cómo se ve, pues que se adentren un poco en él.

Programación: La psicología de las computadoras

Primero atacaré el punto más simple de todos antes de entrar en detalles.

¿Por qué no voy a hacer un post técnico?

La tecnología siempre está cambiando, y si yo el día de hoy escribo algo, en el caso de que el post sea bien recibido, pues tendré que estar siempre actualizando la información. En los lenguajes más comunes de hoy, lo único seguro es el cambio. Con esto me refiero (y los programadores me podrán dar la razón) los frameworks siempre están creciendo y modificándose desde sus núcleos, esto es así porque los errores surgen, algunos pueden ser considerados simples bugs, mientras que otros pueden llegar a ser vulnerabilidades.  Esta es la razón por la cual escribir un post sobre un lenguaje específico, hoy por hoy, me garantizaría tal vez unos cuantos meses de utilidad, en el mejor de los casos uno o dos años, pero esa no es la idea

Relacionado:  Aumentar las ventas con emails automáticos en woocommerce

La electricidad es importante

Aquellos que hayan investigado un poco sobre los lenguajes más bajos de programación de software sabrán que todo se remonta a la electricidad. Antiguamente la programación se realizaba a nivel de hardware, esto quiere decir que aquellos antiguos relojes, calculadoras, y otros muchos dispositivos, podían cumplir su destino mediante programación por hardware.

El problema

Cambiar programación de hardware es costoso, y complicado  (al menos eso me han contado  ). Es por esto que surgieron los procesadores, que en realidad abstraen esa capa de hardware para entregarnos unos cuantos comandos para poder realizar todo aquello que era posible mediante hardware, solo que ahora en la capa de software.

Los procesadores

Los procesadores de hoy en día, tienen un número limitado de funciones, llamadas instrucciones en muchos libros. Estas permiten realizar las funciones más básicas que puede ejecutar el hardware, y movilizar la información a través de la memoria del equipo.

Registers

Los registros son un espacio en el que el procesador almacena información para poder realizar trabajos en el núcleo, dependiendo de la arquitectura pueden tener un distinto tamaño y orden, pero en forma simple, su función es almacenar datos que le indican al procesador uno de los siguientes tipos de trabajo: mover data, aritmética y lógica, y control de flujo. Todo puede resumirse en estos tipos de funcionalidades.

Binario

Los procesadores trabajan a nivel binario, esto quiere decir que solo entienden de s y 1s  . Un dato curioso aquí  ¿recuerdan los permisos de GNU/Linux? pues, ¿alguna vez se han preguntado cómo realmente reconoce el procesador esos permisos? Simple  binario. En el nivel más bajo, un procesador entenderá los permisos como una sucesión de 0s y 1s, y ese es el motivo por el cual el octal que formamos tiene los valores para ejecución, 2 para lectura y 4 para escritura. Para los que saben leer binario, entenderán que:

Relacionado:  Todo el mundo debería de saber programar

111100101111

Ponen los permisos de lectura, escritura y ejecución para el grupo otros mientras que pone ejecución y lectura para el grupo grupo y solo lectura para el dueño del archivo. Para los más curiosos, los últimos tres 1s activan el setguid, setuid y el sticky bit. Si no saben qué es esto del binario, pues se los dejo de tarea 😉 pero también lo puedo explicar en otro lugar si es necesario.

Cuando la curiosidad llama…

Pues si me han seguido hasta aquí, entonces ya su curiosidad debería empezar a preguntar bastantes cosas, la primera que quiero responder (y tal vez la única que me permita este post porque ya estoy escribiendo bastante) es: ¿si las llamadas son las mismas, por qué los programas son tan diferentes?

La psicología

La programación es el arte de aprender a leer mentes  Quiero empezar este apartado con una cita que leí hace un buen tiempo, Edsger Dijkstra dijo:

Si la depuración es el proceso de eliminar errores, entonces la programación debe ser el proceso de introducirlos

Y es que no encuentro una mejor forma de explicar todo esto  ¿por qué programar es el arte de introducir errores? se preguntará más de uno en este momento. La respuesta es simple, porque nuestras mentes son humanas, y los humanos cometemos errores  está en nuestra naturaleza, y estará por todo el tiempo en el que el hombre exista en el planeta.