sábado, 25 de julio de 2009

CURIOSIDADES DE LA PROGRAMACION



Richard Stallman


ACA LES DEJO ALGUNAS CURIOSIDADES ACERCA DE LA PROGRAMACION.


1. Cuantos lenguajes de programación conoces? 10? 30? 50? Novato. Que te parece 1150 lenguajes diferentes de programación?. En la pagina http://99-bottles-of-beer.net/" target="_blank" rel="nofollow">http://99-bottles-of-beer.net/ muestran 1150 lenguajes diferentes haciendo una sola cosa: Un programa que imprime la canción “99 botellas de cerveza”. No conozco un listado mas grande de lenguajes.

2. Sabes cual es el lenguaje de programación mas difícil que existe? Tache si contestaste “Perl”. El lenguaje de programación mas difícil se llama Malbolge. Entre las peculiaridades de este lenguaje están:

1. En el 98, su programador lo lanzo al dominio publico.

2. Desde su aparición, se tardo mas de 2 años en aparecer su primer programador.

3. Porque digo “aparición”? Malbolge es un lenguaje de programación generado por un programa escrito en LISP, fue pues, generado por una máquina.

4. Cada instrucción es encriptada (le resta 33, le suma el puntero y le realiza mod 94) después de que se ejecuta. Por lo que cada instrucción es diferente cada vez que se ejecuta. Es altamente impredecible.

5. Crees que exagero? Esta seria la versión de hello world de Malbolge.

1: (=<`:9876Z4321UT.-Q+*)M‘&%$H”!~}|Bzy?=|{z]KwZY44Eq0/{mlk**

2: hKs_dG5[m_BA{?-Y;;Vb’rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<


3. Existe también la versión de 99 bottles of beer para este lenguaje. El propio creador del lenguaje no creía que esto fuera posible. Solo por curiosidad, velo. Es impresionante. Link http://www.99-bottles-of-beer.net/language-malbolge-995.html

4. Alguien planteo crear un convertidor de Brainfuck a Malbolge. Brainfuck probablemente es el segundo lenguaje mas complicado que existe. Y esta, la idea mas masoquista que se me puede ocurrir. Casi como programar en java Linkhttp://www.lscheffer.com/bf2malbolge.html

5. El primer lenguaje de programación no fue en una computadora. Los primeros lenguajes de programación, o mas específicamente lenguajes de dominio especifico fueron los telares o los pianos del siglo 19. Linkhttp://en.wikipedia.org/wiki/Domain-specific_programming_language

6. Existe un lenguaje de programación basado en las obras de Shakespeare. Usa palabras reservadas como Juliet, Romeo y Ophelia. Link http://shakespearelang.sourceforge.net/

7. Has oído hablar del “Spaghetti code”? Si crees que PHP es el rey en ese campo, no conoces el lenguaje Spaghetti. Linkhttp://www.esolangs.org/wiki/Spaghetti

TIPICAS FRASES DE LOS PROGRAMADORES

Esto va dedicado a todos los programadores y a los que trabajan con programadores.

Comentarios hechos por programadores cuando sus programas no funcionan:

1. ¡Qué extraño!…

2. Pues ayer funcionaba.

3. ¿Esto cómo es posible?

4. ¿Se ha actualizado el sistema operativo?

5. Tendrás el ejecutable incorrecto.

6. Vaya, eso es simplemente es una mejora.

7. Por supuesto, solo tengo que arreglar esos fallitos.

8. ¿Todavía no lo he arreglado?

9. Alguien ha tenido que cambiar mi código.

10. Eso es un problema de configuración.

Y la última:

¡Un usuario inteligente nunca haría eso!

¿Qué programador no ha dicho alguna de estas alguna vez?

LEYES DE LOS PROGRAMADORES

* Ley fundamental de Murphy

Si algo puede ir mal en un programa, podemos apostar a que irá mal.

* Teorema de Patrick

Si un programa anda bien de primera, seguro que se ha empleado el algoritmo y (posiblemente) la computadora equivocada.

* Constante de Skinner

Es la cantidad de líneas de programa tales que:

a) agregadas a las líneas de nuestro programa, impiden que entre en memoria, y

b) quitadas de nuestro programa, no permiten que funcione de la forma que se había previsto en un principio.

* Postulados de los lenguajes naturales

La pericia en el arte de programar es directamente proporcional al numero de insultos que el programador profiere durante el desarrollo del programa, e inversamente proporcional al cuadrado de la distancia que recorre desde la computadora hasta la cafetera más cercana para "despejar la mente".

* Ley de Flaple sobre la perversidad de los programas concluidos

Todo programa, prescindiendo de su propósito, estructura y configuración, será concluído de la forma más insospechada y confusa posible, por razones completamente oscuras.

* Axioma de Allen

Cuando todo falla, es el momento de consultar el manual, que naturalmente no se tiene idea de donde puede estar oculto.

* Principio de las subrutinas dispersas

Al depurar un programa, la accesibilidad de una subrutina critica para su funcionamiento, es inversamente proporcional al numero de veces que dicha subrutina desfila por delante de los ojos del programador, cuando la busca en el listado del programa.

* Corolario de compensación

La estructura de un programa puede considerarse un éxito si no mas del 50% de las líneas originales deben modificarse para obtener cierto parecido con el resultado deseado al momento de especificarlo.

* Ley de Gumperson

La probabilidad de que ocurra un determinado error de ejecución es inversamente proporcional a su importancia y al deseo por parte del programador de que suceda.

* Postulado del material pedido

Los diskettes vírgenes necesarios para respaldar el programa de ayer, deben adquirirse no mas tarde de mañana al mediodía.

* Definición de Twiligth-Zone-programming

Por definición, cuando un programador programa en el dominio de lo desconocido, no sabe lo que se va a encontrar cuando ejecute el programa.

* Regla de Ketterin

Cuando un programa no funciona, es por una razón distinta de la que el programador cree que provoca que no funcione.

* Factor de futilidad

Ningún programa es nunca un completo fracaso: puede servir siempre como un mal ejemplo.

* Teorema de Anderson-Bermudas

La posibilidad de que un programa se pierda es inversamente proporcional a la cantidad de copias disponibles del programa.

Corolario: Nunca se pierde un programa del que el programador tenga respaldo.

Acotación 1: Claro, suponiendo que las unidades de cinta sean inmunes a Murphy y no fallen.

Conclusión: Nunca ningún programa está a salvo.

* Principio de gravitación selectiva de Newton-Hindenburg

Cuando un teclado cae al suelo, inevitablemente aterriza por donde el daño puede ser mayor.

* Postulados del calculo mental

a) Si puede cometerse un error en los cálculos, desde luego que ocurrirá, y de tal forma que haya que rehacer todas las operaciones.

b) Todos los valores de las constantes terminan siendo variables.

c) En todo calculo, el valor que se creía mas correcto es el causante de todos los errores.

d) El punto decimal se las ingenia para colocarse por su cuenta en el peor sitio.

* Postulados sobre la vida útil de los programas

a) Cualquier programa, al estrenarse, resulta obsoleto.

b) Si un programa sirve, deberá ser modificado.

c) Todo programa tiende a crecer hasta ocupar toda la memoria disponible.

d) La complejidad de un programa irá creciendo hasta sobrepasar la capacidad del programador de entenderlo.

* Teorema de Guzman-Rojas

Si existiese un lenguaje de programación idéntico al castellano se deduciría que los programadores no saben escribir en castellano.

* Leyes de Troutman

a) Si la prueba de un sistema nuevo funciona perfectamente, todos los intentos subsecuentes de utilización del sistema fracasarán.

b) Ante la mejor rutina de validación y consistencia siempre se opondrá algún ingenioso idiota capaz de filtrarle datos inválidos e inconsistentes.

* Leyes de Miro

a) La mejor forma de complicar las cosas es programar un problema simple.

b) El mayor esfuerzo en la programación reside en las infinitas modificaciones que deben realizarse a Programas Standard de Aplicación Universal.

c) Todo programa, al ser protegido, produce como efecto automático la imposibilidad de leer o listar la copia no protegida. Como efecto secundario produce la desaparición de todo listado anterior de respaldo.

d) Todo borrado involuntario o accidental de un disco comienza siempre por los datos de mayor valor.

e) Todo listado de programas guardado en una carpeta de respaldo es siempre una versión anterior a la que se halla en uso.

f) El usuario es más inteligente que el programador, pues siempre encuentra lo que le falta a un listado de información producido por la computadora.

g) Si una demostración sale bien, se deberá revisar cuidadosa y minuciosamente el programa hasta hallar la falla y así eliminarla.

* Ley de Tussman

No hay nada tan inevitable, como un error cuando es su hora.

* Primera ley de Golub sobre la informática

Los proyectos con objetivos difusos, van bien para evitar el compromiso de tener que estimar los costos.

* Segunda ley de Golub sobre la informática

Un proyecto planificado sin precisión tarda tres veces más en acabarse de lo que se espera, un proyecto planificado cuidadosamente tarda el doble de lo previsto.

* Tercera ley de Golub sobre la informática

El esfuerzo requerido para corregir el curso de un proyecto se incrementa geométricamente en función del tiempo transcurrido.

* Cuarta ley de Golub sobre la informática

Los equipos de proyectos odian hacer informes semanales sobre la evolución del proyecto porque padecen claramente la falta de avances.

* Primera ley de la programación

Cualquier programa, cuando funciona, es obsoleto.

* Segunda ley de la programación

Todos los programas cuestan más y tardan más tiempo de lo esperado.

* Tercera ley de la programación

Si un programa es útil, te lo harán cambiar.

* Cuarta ley de la programación

Si un programa no sirve para nada, te lo harán documentar.

* Quinta ley de la programación

Cualquier programa se va extendiendo hasta ocupar toda la memoria disponible.

* Sexta ley de la programación

El valor de un programa, es inversamente proporcional al peso de los listados que fabrica.

* Séptima ley de la programación

La complejidad de un programa va creciendo hasta que sobrepasa la capacidad del programador que lo tiene que mantener.

* Ley de Brook

Añadir más mano de obra a un proyecto de software que va retrasado, lo retrasa todavía más.

* Ley de Biondi

Si tu proyecto no funciona, repásate la parte que te parecía que no era importante.

* Ley de Keops

Nunca se ha hecho nada según las previsiones, o dentro del presupuesto.

* Regla noventa-noventa de la elaboración de proyectos

El primer 90% del trabajo, se hace en el 90% del tiempo, y el último 10%en el otro 90%

* Ley de Sevaried

La principal causa de los problemas son las soluciones.

* Segunda Ley de Weinberg

Si los constructores edificasen edificios de la misma manera que los programadores programan programas, la llegada del primer picagaitas, destruiría la civilización.

* Ley de Solve

Los problemas complejos tienen soluciones simples, comprensibles y equivocadas.

* Ley de Smith

Ningún problema verdadero tiene solución.

* Segunda Ley de Perlsweig

Cualquier cosa que está sucediendo a nuestro entorno, llegará hasta aquí.

* Axioma de Robert

Sólo existen los errores.

* Corolario de Berman para el axioma de Robert

El error de un hombre es el dato de otro.

* Quinta Ley de la Fiabilidad

Equivocarse es humano, pero para complicar las cosas es necesaria una computadora.

* Guía de Murphy de cara a la ciencia moderna

Si es verde y se mueve se trata de biología; si huele mal, de química; y si no funciona, de física o informática.

* Sexto postulado sobre la programación de Troutman

La blasfemia es el único lenguaje que de verdad conocen todos los programadores.

* Primera ley de Gilb sobre las computadoras

Las computadoras son poco seguras, pero las personas lo son menos.

* Segunda ley de Gilb sobre las computadoras

Cualquier sistema que dependa de la precisión humana, es impreciso.

* Tercera ley de Gilb sobre las computadoras

Los errores no detectables son infinitos, mientras que los detectables son, por definición, finitos.

* Cuarta ley de Gilb sobre las computadoras

Las inversiones para mejorar la precisión de un sistema, crecerán hasta que sean superiores al probable coste de los errores, o hasta que alguien proponga hacer algo útil.

* Ley de Bit sobre el estado actual de la electrónica

Si lo entiendes, ya es obsoleto.

No hay comentarios: