17 diciembre 2006

25 Killer Apps of All Time

Las 25 aplicaciones más importantes de la historia de la informática. Según el autor que ha hecho eso, seguro que cada uno haría su propia lista.

Creo que han exagerado un poco poniendo 3 navegadores en la lista: Netscape, Explorer y Firefox. Además pone 'Apps' pero han incluido el MacOS X que tengo entendido que es un sistema operativo. Si incluimos sistemas operativos yo añadiría BSD y Linux.

mmmmm..... está el Mathematica.... ufff.... que miedo....

16 diciembre 2006

Quine

La programación tienes cosas muy extrañas, pero la metaprogramación más aún.

La metaprogramación consiste en crear programar que cuando se ejecuten creen otros programas. Por ejemplo, tu puedes escribir una página PHP que cuando la ejecuta el servidor crea una web con un trozo de código Javascript, eso es metaprogramación muy básica.

Pero a lo que vamos hoy, algunos programadores cuando se aburren, se ponen a escribir programas que al ejecutarse, muestran por pantalla su propio código fuente. Pero ojo, muestran el código fuente sin abrir el fichero y leerlo, tiene que estar el código fuente implícito dentro del programa. Esto es lo que se conoce como quine en honor a Willard Van Orman Quine.

En la Wikipedia se pueden encontrar ejemplos que quines en muchos lenguajes. Yo por más que miro los quine de C, no consigo entender su funcionamiento.

Por otra parte, el de Basic es el más sencillo:


10 LIST


Pero creo que eso es trampa también.

12 diciembre 2006

HQ9+

He encontrado un nuevo lenguaje de programación HQ9+. No es tan conocido como el C o el Java, pero tiene una sintaxis muy sencilla y para cierto tipo de tareas es el lenguaje más rápido que existe. Su creador, después de años de investigaciones, estudiando todos los ejercicios que les ponen a los estudiantes de programación en 1º, ideó un lenguaje para hacerles la vida más fácil.

HQ9+ tiene 4 instrucciones:
H Imprime el mensaje "Hello, World!"
Q Imprime el código fuente del programa
9 Imprime la letra de "99 Bottles of Beer on the Wall".
+ Incrementa uno al acumulador

Lo del 99 Bottles ese, viene que ser como nuestra canción recursiva de "un elefante se balanceaba...".

Por si alguien se lo pregunta: efectivamente, la instrucción + no sirve para nada.

Hay un intérprete online de este lenguaje aquí.

Como se puede ver, facilita mucho los inicios en la programación.

06 diciembre 2006

El zoo de las bases de numeracion

Del blog matemático Tio Petros: El zoo de las bases de numeracion.

Todos (los informáticas) conocen las bases de numeración 2, 8, 10 y 16 ¿no? Pues este artículo viene a explicar bases curiosas como: 1/10, raiz cuadrada de 10, 2i, la base maya, etc.

¿Curioso pero inutil?

05 diciembre 2006

INTERCAL

He visto una noticia en barrapunto sobre lenguajes extraños y me he acordado de INTERCAL, así que voy a hablar un poco de él.

Es un lenguaje inventado por un loco, un lenguaje creado para locos, un lenguaje que genera locos. Una frikada más de la informática.

Las características básicas del lenguaje son:

- Es un puto caos
- Cuesta muchísimo tiempo programar cualquier cosa por sencilla que sea
- En vez de la instrucción GOTO # para indicar que hay que saltar hacia la instrucción #, tiene COME FROM #, que indica que cuando se ejecute la linea # se tiene que ejecutar lo que viene después del COME FROM.
- Hay que poner PLEASE en el programa cada pocas lineas porque si no el compilador lo considera una falta de respeto y da errores.
- Pero no hay que poner demasiados porque si no nos considera unos pesados y también falla la compilación.

En el manual oficial de INTERCAL, que es un festival de humor, viene a decir (lo pone con otras palabras):

INTERCAL es un lenguaje muy sencillo, con muy pocas instrucciones, por tanto es de esperar que sea un lenguaje ideal para los novatos que están aprendiendo a programar. Sorprendentemente, es un lenguaje ideal para conseguir que los que están aprendiendo a programar se planteen estudiar otra cosa.

El Hello World en INTERCAL, obtenido de la wikipedia:


DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #234
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #214
PLEASE READ OUT ,1
PLEASE GIVE UP

04 diciembre 2006

Boost C++ Libraries

Todo el mundo sabe que C++ es como C pero orientado a objetos. Pero aparte de eso, C tiene una librería estándar muy muy simple, mientras que C++ incluye un montón de objetos como los flujos y la clase string y además tiene la librería de plantillas: la STL.

La STL es una librería de plantillas que incluye cosas tan útiles como las pilas, colas, diccionarios o conjuntos. Además de diversos algoritmos para trabajar con estos tipos de datos.

Hoy voy a hablar de Boost. Boost es una librería con montones de clases nuevas para C++, incluye más funciones matemáticas, grafos, soporte para concurrencia... etc.

Lo bueno que tiene Boost frente a las otras muchas librerías que se han creado para C++ es que será estándar algún día. La próxima versión del lenguaje C++ que se suele llamar C++0X incluirá bastantes clases de la librería Boost por lo que C++ contrará con una librería estándar mucho más amplia, aunque no tanto como la de Java o .Net.

Como curiosidad, el nuevo C++ se llama de momento C++0X, el 0X es por el año en que se publicará, se espera que sea en esta década pero no se sabe que año (por eso la X), los más puestos en el tema dicen que apurarán al máximo para sacarla y que X = 9.