viernes, agosto 24, 2012

Cuando no se usan esas chulísimas metodologías de desarrollo...





Según el propio Linus, el kernel se está complicando cada vez más. En mi opinión como ingeniero informático de primera esto se debe a los siguientes motivos:
  • No se están siguiendo las mejores prácticas de gestión de proyectos establecidas por el SWEBOK [wikipedia.org], con etapas claramente diferenciadas: definición de requisitos, análisis, diseño, construcción, pruebas, etc.
  • ¡No hay ni un solo diagrama UML!
  • Se están empeñando en usar C frente a lenguajes de mayor nivel como Modula-2, respaldado por todas las universidades del mundo.
  • Entre los colaboradores del kernel hay mucho intrusismo, gente de FP, sin título, físicos, matemáticos, industriales. Ello irremediablemente conduce a un código con errores, que no ha sido firmado ni respaldado por el correspondiente colegio de informáticos.
  • Falta un SDK para Windows, cuando en la Universidad casi todas las aulas son Windows.
  • Falta claramente un análisis de riesgos, y una metodología más orientada hacia la verificación de sistemas, lo que conduciría al aseguramiento de la calidad y a la reducción del Time To Market. Esto os lo puede corroborar cualquier consultor de McKinsey o Accenture.

jueves, agosto 23, 2012

Opinión Alan Cox sobre threads

Mi opinión es muy próxima a la suya, pero él es Alan Cox, yo soy... nadie en comparación


A Computer is a state machine. Threads are for people who can't program state machines.
Alan Cox

Y no es el único gurú que tiene opiniones parecidas...


If you think you need threads then your processes are too fat 
Rob Pike



Esto no significa que se esté en contra del proceso simultáneo. En absoluto.

Ni siquiera del proceso simultáneo apropiativo.

Y obviamente no del proceso simultáneo distribuido.


¡¡¡AUPA   EEEEERRRRLAAAAAANNNNNNGGGG!!!


Paralelismo sí, pero en condiciones


¿Porqué podemos querer ejecución paralela?


¿Para que las cosas vayan más rápido?
Rara vez. Y en esos casos, estas limitado al número de procesadores reales.

¿Para hacer la lógica del programa más sencilla?
Entonces Alan Cox tiene razón.

¿Por seguridad?
Entonces las hebras es lo peor, porque te aumenta la inseguridad.


Si lo queremos para escalar horizontalmente (distribuyendo), para simplificar la lógica del programa (en algunos casos de forma radical), o por seguridad, lo mejor son procesos.


Una buena opción es separarlos con un middleware, más que una opción, es una obligación.


Pero podemos combinar esto, con un sistema orientado a procesos de forma que maximicemos al máximo los beneficios de ejecutar en paralelo, CON PROCESOS.



¡¡¡AUPA   EEEEERRRRLAAAAAANNNNNNGGGG!!!



¿Para qué no queremos threads?

O dicho de otra forma, dónde los threads aportan poco.


Para que el usuario no se quede esperando mientras ha pedido algo.



¿Funcionará más rápido?  NO
¿Funcionará más seguro? NO
¿Tendrá una lógica más sencilla? NO

¿entonces, "paqué"?



Yo era uno de esos ingenuos que pensaba que las hebras eran una chulada, la solución a los males del mundo. Y los semáforos, regiones críticas y mutex, nuestra gran ayuda. Eso sí, muy lejos del alto nivel del "rendezvous" de ADA.

Pero la vida real me puso en su sitio. Todos esos mecanismos para evitar problemas con la concurrencia y memoria compartida, destruían la concurrencia al mismo tiempo que complican enormemente el código haciéndolo inmantenible e intocable.

Los errores de la concurrencia apropiativa con memoria compartida, son difíciles de encontrar y pueden pasar en cualquier momento.

En este sentido, estoy compartiendo la opinión de Joe Amstrong y Martin Ordesky (citada en sus respectivos libros de sus respectivos lenguajes de programación)


lunes, agosto 13, 2012

Para mi con hielo y refrigerarse bebiendo líquidos muy calientes


Yo sufí el siguiente comentario con prácticamente los mismos argumentos...


http://amazings.es/2012/08/13/para-mi-con-hielo-por-favor/



Debido a la ola de calor que nos azota estos días, es probable que haya proliferado por todo el país la típica conversación de café de las once de la mañana acerca de la rabiosa, en todos los sentidos, actualidad meteorológica. Dada esta circunstancia, y conforme el número de interlocutores crece, la probabilidad de que alguien afirme en algún momento que lo mejor para combatir el calor es una bebida caliente tiende asintóticamente a uno.
¿Bebida caliente? ¿Con la que está cayendo? El sentido común nos dice que nos echemos las manos a la cabeza inmediatamente. Pero también sabemos que a menudo el sentido común yerra estrepitosamente. Así que parémonos un momento a considerar los argumentos que se ofrecen a favor de dicha afirmación. A saber, suele aducirse una o más de las siguientes razones:
  1. La bebida caliente aumenta la sudoración, que es el principal mecanismo por el cual nuestro cuerpo regula el exceso de temperatura.
  2. En el momento de la ingesta, se pasa más calor, pero a la larga es más efectivo el alivio.
  3. Los árabes, incluidos los beduinos en el desierto, los indios, etc., han tomado té hirviendo durante siglos para combatir el calor; (y esta es mi parte preferida) miles de millones de personas no pueden estar equivocadas.
En primer lugar, lo que resulta indudable de esta cuestión es que si ingerimos cierta cantidad de líquido a una temperatura superior a la de nuestro organismo, se va a producir una transferencia de calor en el sentido líquido->cuerpo, y nuestra temperatura corporal va a aumentar. A partir de ahí, es rigurosamente cierto que —si nuestro sistema termorregulador funciona correctamente— va a aumentar la sudoración. Pero esto se da, precisamente, porque el exceso de temperatura es mayor, tenemos más calor y la necesidad de regulación apremia. Ahora bien, algo más caliente se enfriará más rápido, pero esto no quiere decir que se enfríe antes.
El segundo argumento apela únicamente a la sensación que se produce por contraste. Resulta tan válido como pillarse los dedos con una puerta repetidamente con la excusa de que al parar produce placer. Allá cada cual con sus fetichismos.
El último punto, como ya he comentado, es mi preferido por la falacia tan grande y tan repetida que supone. “Millones de personas a través de la historia no pueden estar equivocadas“. Tenemos tantos contraejemplos que refutan esta afirmación… Sin embargo, es divertido seguir escuchándola aún hoy en día. Por otro lado, creo que es importante realizar un par de observaciones adicionales. No puede olvidarse el hecho de que, en el desierto o en países donde las condiciones sanitarias no son las mejores, la única forma de beber agua de forma segura es hirviéndola. Además, un beduino en mitad del desierto no tiene forma de enfriar una bebida, así que es estúpido pensar que “opta” por el té caliente por obtener algún tipo de beneficio.
La única forma efectiva de combatir el calor es hidratarse para que nuestro cuerpo tenga algo que sudar. Y todo parece indicar que la ingesta de líquidos fríos ayudará a nuestro cuerpo a regular la temperatura. Pero ¿realmente se producirá así una reducción de la temperatura o nuestro metabolismo se acelerará, produciendo energía, para calentar ese líquido? Llegados a este punto, echaremos mano de la literatura científica en busca de evidencias. No es complicado encontrar un puñado de resultados en PubMed con la cadena “drink temperature” [1234]. En dichos estudios, efectivamente, se concluye que las bebidas frías ayudan a modular la temperatura corporal, con especial significación cuando se trata de entornos húmedos y cálidos. Y no solo eso, sino que además parece ser que el rendimiento deportivo aumenta.
Así que, este veranito, mi café que sea con hielo. Gracias.