Aprende programación






30 nov 2010

Envianos un audio para el podcast 100 de javaHispano


La próxima semana publicaremos el número 100 de javaHispano. Para dicho número, nos gustaría nos envieis audios de 1-2 minutos hablando, opinando, valorando o incluso criticando acerca del podcast. Puede quedar bastante bién.

Esta semana estoy preparando el podcast que consistirá en un recopilatorio de momentos interesantes del podcast. Anticiparos que durará 3-4 horas.

Podeis enviar vuestro audio a jorgesub arroba gmail punto com.

Mucho animo. Esperamos el tuyo.

Gracias y saludos,
Jorge Rubira

21 nov 2010

La neurociencia será un campo a tener en cuenta para los programadores - Opinión


Recientemente he visto un capítulo de Redes que me ha gustado mucho sobre el efecto del ejercicio en la mente. De hecho, la búsqueda de la eficiencia mental es un tema que me interesa mucho porque la programación, así como cualquier trabajo creativo, es una cuestión intelectual y mental.

Desde hace pocos años se está hablando de la neurociencia como una disciplina que se está investigando cada vez más en la que se están descubriendo cosas interesantes como las zonas que utilizamos ante diferentes estimulaciones o la posibilidad incluso de leer y plasmar en una pantalla lo que se está pensando (figuras sencillas como cuadrados o circulos, claramente).

A medida que este campo avance, los trabajos que sean plenamente creativos irán siendo más eficientes, minimizando en gran medida, casos de depresión que se presentan por un stress continuado ocasionado por las presiones y la carga de trabajo (no material).

Aquí teneis varios recursos, videos y audios que me han parecido interesantes:

El primero a destacar es este donde hacen pruebas con ratas en las que algunas hacen ejercicio y otras no.
http://www.ivoox.com/deporte-para-cerebro-mas-sano-redes-72-audios-mp3_rf_426045_1.html

El segundo que me parece interesante es este donde jovenes inventigadores hablan de su trabajo y cual es el objetivo en la actualidad (prioridades en el tratamiento de enfermedades y problemas mentales y fármacos).
http://www.youtube.com/watch?v=wb_KJ2MhmQo

Un tercer número, también sería otro capítulo de Redes:
http://www.ivoox.com/pon-forma-tu-cerebro-redes-69-audios-mp3_rf_403409_1.html

Un cuarto final es un tanto filosófico y un tanto introduccion y teórico. Pero digno para estar en esta lista:
http://www.ivoox.com/neurociencia-cognitiva-mente-cerebro-computacion-audios-mp3_rf_417961_1.html

Si conoceis algún audio o video sobre estos temas, se agradecerá vuestros links ya que es un tema que me interesa mucho.

Saludos y que los disfruteis.

5 nov 2010

Ley de Registro Civil, el hijo tendrá los apellidos de los padres ordenados alfabéticamente - Experimento práctico

Introducción:
Recientemente se ha publicado una noticia acerca de una modificación que se está fraguando en España en la Ley de Registro Civil en el que para igualar el hombre a la mujer el nombre de los apellidos se pondrán de manera ordenada alfabéticamente (en caso de no ponerse de acuerdo).
http://www.diariovasco.com/20101104/mas-actualidad/sociedad/apellidos-alfabetico-201011041307.html
http://www.meneame.net/story/llamazares-avisa-variable-alfabeto-puede-traer-consecuencias/1

Sin embargo, es curioso que ciertos políticos que han redactado la ley no se hayan dado cuenta de que a medida que pasen generaciones la probabilidad de tener los mismos apellidos será muy alta en el caso de aplicarse con habitualidad. Por ello, me ha parecido interesante realizar un algoritmo para comprobar a que velocidad, (en generaciones), perderiamos los apellidos que tenemos.

El algoritmo:
Aquí teneis el algoritmo. Es algo muy sencillo. Hay dos constantes para configurar el número de personas de muestra y el número de apellidos. Los apellidos vamos a tratarlos como enteros para generarlos aleatoriamente más facilmente. En cada generación, cada pareja genera dos nuevas personas y estas fallecen. Se guarda en una matriz cuantos apellidos tanto en el primer apellido como en el segundo hay de cada. Finalmente se visualiza el resultado en csv para poder hacer gráficas a través de un Excel:

import java.util.ArrayList;

public class Apellidos {

public static int PERSONAS_POR_GENERACION=1000;
public static int TOTAL_APELLIDOS=300;

private int ape1;
private int ape2;

public Apellidos(int ape1, int ape2){
this.ape1=ape1;
this.ape2=ape2;
}

public static void main(String arg[]){
int contApellidos[][]=new int[20][TOTAL_APELLIDOS];
ArrayList<Apellidos> personas=new ArrayList<Apellidos>();
//Se insertan apellidos aleatorios
for (int n=0;n<PERSONAS_POR_GENERACION;n++){
int nApe1=(int)(Math.random()*TOTAL_APELLIDOS);
int nApe2=(int)(Math.random()*TOTAL_APELLIDOS);
Apellidos nuevo=new Apellidos(nApe1, nApe2);
personas.add(nuevo);
}
//Cada pareja tienen dos hijos y cuando muere una generación (1000 personas)
for (int n=0;n<20;n++){
for (int m=0;m<PERSONAS_POR_GENERACION;m+=2){
Apellidos hombre=personas.get(m);
Apellidos mujer=personas.get(m+1);
for (int i=0;i<2;i++){
personas.add((int)(Math.random()*(personas.size()-1000))+1000,
new Apellidos(
Math.min(hombre.ape1, mujer.ape1),
Math.max(hombre.ape1, mujer.ape1)
)
);
}
//Contamos los apellidos de la gente que va a fallecer para así ver la linealidad de la generación inicial
contApellidos[n][hombre.ape1]++;
contApellidos[n][mujer.ape1]++;
}
for (int m=0;m<PERSONAS_POR_GENERACION;m++){
personas.remove(0);
}
}
//Visualización de la cantidad de apellidos para cada generacion
for (int m=0;m<TOTAL_APELLIDOS;m++){
for (int n=0;n<20;n++){
System.out.print(contApellidos[n][m] + ";");
}
System.out.println();
}
}
}


Resultados:
En la primera generación, claramente tendríamos todos los apellidos:


En la segunda generación se empizan a ver las primeras consecuencias en los últimos apellidos:


En la generación tercera:



En la generación cuarta:


Finalmente en la simulación, en la generación 12 ya eran todos los apellidos eran iguales y sigue una progresión de valor(generacion)=valor(generacion-1)*2 hasta que llega al 50% que va bajando el ritmo de crecimiento ya que se empiezan a juntar parejas con el mismo apellido. Ver gráfica:


Conclusión:
La desaparición de los apellidos se concentrarían en uno único de manera que en varias generaciones todos tendríamos el mismo apellido.

Conclusión 2:
Harían falta más matemáticos y estadísticos y personas de ciencias exactas ejerciendo como políticos. ;)

ACTUALIZACION: Dado el feedback recibido, aclarar que la ley tal y como define el primer link que pongo, se aplica en caso de discusión. Este sería el caso en el que se aplica de manera habitual. He modificado la noticia para aclarar este hecho.