Mostrando entradas con la etiqueta unix. Mostrar todas las entradas
Mostrando entradas con la etiqueta unix. Mostrar todas las entradas

jueves, octubre 13, 2011

RIP Dennis Ritchie

"Dennis MacAlistair Ritchie. 1941 - 2011"

El día de hoy revisando los Trending Topics de twitter y luego confirmando en la Wikipedia me entero que hace justamente tres días, el 9 de octubre del presente año, falleció uno de los programadores más conocidos y respetados de la historia de la computación y sus lenguajes, Dennis Ritchie.

No me alcanzaría este post para listar y describir el gran legado que Dennis Ritchie nos ha dejado a lo largo de su trayectoria como programador pero entre las más conocidas podría mencionar al lenguaje C y el sistema operativo Unix.

El lenguaje C es la base y la inspiración para la mayoría de lenguajes de programación de alto nivel de nuestra época como C++, Objective-C, C#, Java, PHP y muchos más.

Unix, por si no lo conocían, es un robusto y seguro sistema operativo con una gran trayectoria en el cual se encuentran basados otros populares como Linux, Solaris, FreeBSD, MacOSX, entre otros.

Los grandes aportes de Dennis Ritchie a la comunidad de programadores me hacen sentir mucha pena el hecho que me haya enterado hasta hoy de su fallecimiento y a diferencia de otro personaje que falleció recientemente, este no haya tenido la misma notoriedad y homenaje.

Para rendirle un humilde homenaje a Dennis les dejo una recreación del tweet de @johnfoster:


/* for Dennis Ritchie  */

#include <stdio.h>

int main(void)
{
    printf("Goodbye World");

}

viernes, agosto 07, 2009

12:34:56 7/8/9 y el tiempo...

123456789

Este viernes a las 12 del medio día, exactamente, a las 12:34:56 asistiremos por primera y única vez en el siglo a la secuencia perfecta de dígitos 12:34:56 7/8/9.

Estas secuencias... o mejor dicho, curiosidades de juegos de números, siempre me sacan una sonrisa, e inmediatamente me hacen pensar en el famoso bug del milenio, ¿recuerdan al infame Y2K bug? No fue tan malo como muchos creían, más que todo porque el error estaba asociado a como se muestra la informacion, y no con su funcionalidad interna. Al final, todo mundo sobrevivió ese problemita. Pero hay un problema similar y vigente llamado Y2K38, que afecta a los sistemas sistemas de la familia Unix, y este bug es mucho más difícil de resolver. Una solucion practica es migrar a un sistema operativo, que use una representación de tiempo de 64 bits, sin embargo el problema persiste en sistemas de 32 bits. ¿Y quien usa sistemas de 32 bits?... los dispositivos móviles y pequeños reproductores de música.


Bien, pero seamos realistas, al paso que va la industria, para el 2025 espero que ya todos tengamos más 64 bits, y los dispositivos moviles probablemente también vayan por ese camino. Asi que, por ese lado estamos moderadamente seguros. Pero... el verdadero problema, esta en el software.

El tiempo en la computadora/ordenador...

El tiempo, en las computadoras, es representado por el número de segundos que han transcurrido desde el Unix epoch, es decir desde: 00:00:00 UTC Enero 1 de 1970.
Ese numero de segundos transcurridos desde esa fecha se conoce como un "timestamp", bien, muchísimos programas usan timestamp para obtener la representación del tiempo y mostrarnos la fecha actual, la fecha de la ultima modificación de un archivo, etc etc etc, el asunto es que estos mismo programas asumen que el tamaño de ese campo NO cambia (siempre es de 32 bits), entonces un programa de 32 bits, migrado (que se ejecute en modo de compatibilidad) a un sistema de 64 bits, leerá el timestamp correcto (de 64 bits) de manera incorrecta (lo leeria como uno de 32 bits).... ¡Ooops!

La situación es interesante, pero NO es fatal. Ya que no se ve realista seguir usando software de 32 bits en el 2038... al menos para mi, no lo es... pero el ciclo de vida de un software, puede durar mucho más de lo que esperamos y tal vez, alguien se verá en el problema de brindar soporte a aplicaciones antiguas (Legacy Applications)... Aquellos que lo hagan, no estarán en problemas por brindar soporte a una aplicación caducada, estarán en problemas por trabajar en empresas (o con empresas) que necesite "mantener viva" una Legacy Aplication para seguir funcionado.


Otros afectados por la falta de visión, o por el limite de un numero entero sin signo, es Twitter, que aparte de que ayer fue atacado (junto con FaceBook y LiveJournal) con una denegación de servicio, le llega el apocalipsis (otra vez) el 29 de Octubre de 2009. ¿Cuando tendremos que preocuparnos por otro infame bug de tiempo?, usando un timestamp de 64bits (con signo), hasta Diciembre 4 del año 292,277,026,596 ... para esa fecha, ya no tendremos preocupaciones.
La mayoria de defectos relacionados con el tiempo (timestamp, date bugs, etc) han sido de caracter cosmetico, y una vez aparentes, pues se pueden resolver bastante rapido.

Estas irregularidades me recuerdan dos cosas:
  1. Como le gusta exagerar a la gente los problemas
  2. Como nos gusta usar cualquier excusa para divertirnos un rato
Me voy a celebrar "12:34:56 7/8/9", apuro el paso y entrego más artículos la otra semana, siento haber dejado tirado el blog, pero estamos apretados con la Tesis, y bueno, hay prioridades, más adelante les cuento como sale todo eso. Saludos!



Si quieren leer más sobre "el tiempo" en los sistemas Unix, pueden encontrar más información aquí.

12:34:56 7/8/9 y el tiempo...

123456789

Este viernes a las 12 del medio día, exactamente, a las 12:34:56 asistiremos por primera y única vez en el siglo a la secuencia perfecta de dígitos 12:34:56 7/8/9.

Estas secuencias... o mejor dicho, curiosidades de juegos de números, siempre me sacan una sonrisa, e inmediatamente me hacen pensar en el famoso bug del milenio, ¿recuerdan al infame Y2K bug? No fue tan malo como muchos creían, más que todo porque el error estaba asociado a como se muestra la informacion, y no con su funcionalidad interna. Al final, todo mundo sobrevivió ese problemita. Pero hay un problema similar y vigente llamado Y2K38, que afecta a los sistemas sistemas de la familia Unix, y este bug es mucho más difícil de resolver. Una solucion practica es migrar a un sistema operativo, que use una representación de tiempo de 64 bits, sin embargo el problema persiste en sistemas de 32 bits. ¿Y quien usa sistemas de 32 bits?... los dispositivos móviles y pequeños reproductores de música.


Bien, pero seamos realistas, al paso que va la industria, para el 2025 espero que ya todos tengamos más 64 bits, y los dispositivos moviles probablemente también vayan por ese camino. Asi que, por ese lado estamos moderadamente seguros. Pero... el verdadero problema, esta en el software.

El tiempo en la computadora/ordenador...

El tiempo, en las computadoras, es representado por el número de segundos que han transcurrido desde el Unix epoch, es decir desde: 00:00:00 UTC Enero 1 de 1970.
Ese numero de segundos transcurridos desde esa fecha se conoce como un "timestamp", bien, muchísimos programas usan timestamp para obtener la representación del tiempo y mostrarnos la fecha actual, la fecha de la ultima modificación de un archivo, etc etc etc, el asunto es que estos mismo programas asumen que el tamaño de ese campo NO cambia (siempre es de 32 bits), entonces un programa de 32 bits, migrado (que se ejecute en modo de compatibilidad) a un sistema de 64 bits, leerá el timestamp correcto (de 64 bits) de manera incorrecta (lo leeria como uno de 32 bits).... ¡Ooops!

La situación es interesante, pero NO es fatal. Ya que no se ve realista seguir usando software de 32 bits en el 2038... al menos para mi, no lo es... pero el ciclo de vida de un software, puede durar mucho más de lo que esperamos y tal vez, alguien se verá en el problema de brindar soporte a aplicaciones antiguas (Legacy Applications)... Aquellos que lo hagan, no estarán en problemas por brindar soporte a una aplicación caducada, estarán en problemas por trabajar en empresas (o con empresas) que necesite "mantener viva" una Legacy Aplication para seguir funcionado.


Otros afectados por la falta de visión, o por el limite de un numero entero sin signo, es Twitter, que aparte de que ayer fue atacado (junto con FaceBook y LiveJournal) con una denegación de servicio, le llega el apocalipsis (otra vez) el 29 de Octubre de 2009. ¿Cuando tendremos que preocuparnos por otro infame bug de tiempo?, usando un timestamp de 64bits (con signo), hasta Diciembre 4 del año 292,277,026,596 ... para esa fecha, ya no tendremos preocupaciones.
La mayoria de defectos relacionados con el tiempo (timestamp, date bugs, etc) han sido de caracter cosmetico, y una vez aparentes, pues se pueden resolver bastante rapido.

Estas irregularidades me recuerdan dos cosas:
  1. Como le gusta exagerar a la gente los problemas
  2. Como nos gusta usar cualquier excusa para divertirnos un rato
Me voy a celebrar "12:34:56 7/8/9", apuro el paso y entrego más artículos la otra semana, siento haber dejado tirado el blog, pero estamos apretados con la Tesis, y bueno, hay prioridades, más adelante les cuento como sale todo eso. Saludos!



Si quieren leer más sobre "el tiempo" en los sistemas Unix, pueden encontrar más información aquí.

viernes, noviembre 21, 2008

¿Qué es un Flop? (y un PetaFlop)

En las ciencias computacionales un FLOP (o flops o flop/s) es un acrónimo que significa:
"FLoating point Operations Per Second" u Operaciones de punto(o coma) flotante por segundo.
Los FLOPS son una medida de rendimiento de una computadora, especialmente en el campo científico, en donde se utiliza mucho las operaciones con datos de tipo flotante, para realizar simulaciones precisas y obtener resultados fidedignos. Podemos equiparar esta medida de rendimiento con los conocidos MIPS (Millones de instrucciones por segundo), que es la medida de rendimiento mas usual en las computadoras de escritorio.

Bien, sabemos que un flop es una medida de rendimiento, y "peta" significa 10^15 , asi que ahora sabemos que un petaflop simplemente significa que una computadora puede realizar 1,000,000,000,000,000 operaciones de punto flotante. ¿Bastantes verdad?

Lo importante de conocer este tipo de medidas, es que nos ayuda a tener un indicador del progreso de la capacidad de procesamiento en las ciencias computacionales. De manera que ahora, las supercomputadoras que logran romper la barrera de velocidad del petaflop, se encargaran de llevarnos a nuevos reinos de profundidad conocimiento y cambios muy profundos en la ciencia. Recientemente (lunes 17) un par de computadoras de IBM y Cray lograron romper la barrera que mencione, llegando a velocidades exorbitantes de 1.105 y 1.059 petaflops.

"Plegamiento de Proteínas"

"Si, si, que bueno que sean rápidas" - dirían algunos, pero esto no se trata solo de velocidad, se trata de una capacidad de computo que permite:
  • Simulaciones de fenómenos naturales altamente precisas (huracanes, terremotos, maremotos, impactos de asteroides)
  • Desdoblamiento de cadenas de ADN
  • Plegamiento de proteínas
  • Simulación de explosiones nucleares
  • etc...
"Simulación de fenómenos naturales: Huracanes"

Basta con leer las especificaciones de una de las supercomputadoras de las que les estoy hablando, la Oak Ridge's Jaguar: con 182,000 procesadores AMD quad-core Opterons de 2.3 gigahertz y 362 terabytes de memoria RAM (eso es 362,000 GB de memoria RAM). Es necesario aclarar que la Jaguar esta formada por una agrupación de varias computadoras con recursos compartidos, que ejecuta un "sabor" de Unix llamado: UNICOS/lc.

"Oak Ridge's Jaguar"

Así que, al tener computadoras mucho mas potentes, pues los científicos pueden modelar problemas mas complejos y - probablemente - encontrarles solución. Y es mas, algunos científicos creen que el cerebro humano tiene un poder de procesamiento de 10 petaflops... ¿parece que nos estamos acercando no?

Para obtener más informacion sobre la Oak Ridge's Jaguar haga click aquí.
Y para ver la lista de las Mejores 500 supercomputadoras de este año, haz click aquí.

¿Crees que algún día se podría simular un cerebro humano con todo y sus emociones?

¿Qué es un Flop? (y un PetaFlop)

En las ciencias computacionales un FLOP (o flops o flop/s) es un acrónimo que significa:
"FLoating point Operations Per Second" u Operaciones de punto(o coma) flotante por segundo.
Los FLOPS son una medida de rendimiento de una computadora, especialmente en el campo científico, en donde se utiliza mucho las operaciones con datos de tipo flotante, para realizar simulaciones precisas y obtener resultados fidedignos. Podemos equiparar esta medida de rendimiento con los conocidos MIPS (Millones de instrucciones por segundo), que es la medida de rendimiento mas usual en las computadoras de escritorio.

Bien, sabemos que un flop es una medida de rendimiento, y "peta" significa 10^15 , asi que ahora sabemos que un petaflop simplemente significa que una computadora puede realizar 1,000,000,000,000,000 operaciones de punto flotante. ¿Bastantes verdad?

Lo importante de conocer este tipo de medidas, es que nos ayuda a tener un indicador del progreso de la capacidad de procesamiento en las ciencias computacionales. De manera que ahora, las supercomputadoras que logran romper la barrera de velocidad del petaflop, se encargaran de llevarnos a nuevos reinos de profundidad conocimiento y cambios muy profundos en la ciencia. Recientemente (lunes 17) un par de computadoras de IBM y Cray lograron romper la barrera que mencione, llegando a velocidades exorbitantes de 1.105 y 1.059 petaflops.

"Plegamiento de Proteínas"

"Si, si, que bueno que sean rápidas" - dirían algunos, pero esto no se trata solo de velocidad, se trata de una capacidad de computo que permite:
  • Simulaciones de fenómenos naturales altamente precisas (huracanes, terremotos, maremotos, impactos de asteroides)
  • Desdoblamiento de cadenas de ADN
  • Plegamiento de proteínas
  • Simulación de explosiones nucleares
  • etc...
"Simulación de fenómenos naturales: Huracanes"

Basta con leer las especificaciones de una de las supercomputadoras de las que les estoy hablando, la Oak Ridge's Jaguar: con 182,000 procesadores AMD quad-core Opterons de 2.3 gigahertz y 362 terabytes de memoria RAM (eso es 362,000 GB de memoria RAM). Es necesario aclarar que la Jaguar esta formada por una agrupación de varias computadoras con recursos compartidos, que ejecuta un "sabor" de Unix llamado: UNICOS/lc.

"Oak Ridge's Jaguar"

Así que, al tener computadoras mucho mas potentes, pues los científicos pueden modelar problemas mas complejos y - probablemente - encontrarles solución. Y es mas, algunos científicos creen que el cerebro humano tiene un poder de procesamiento de 10 petaflops... ¿parece que nos estamos acercando no?

Para obtener más informacion sobre la Oak Ridge's Jaguar haga click aquí.
Y para ver la lista de las Mejores 500 supercomputadoras de este año, haz click aquí.

¿Crees que algún día se podría simular un cerebro humano con todo y sus emociones?

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...