Problema de Parada (o problema de Halting)

Vamos con un poco de teoría de la computación ¿Qué es el problema de paro, de parada o de Halting? Consiste en determinar si existe una máquina de Turing capaz de determinar si cualquier Máquina de Turing se va a detener o no. Dada una máquina de Turing M y una palabra w se determinará si M acabará en un número finito de pasos usando w como dato de entrada.

El problema es indecidible, según el propio Turing ninguna máquina de Turing puede resolverlo. Es decir, no puede existir un programa genérico que demuestre que todos los programas del mundo terminan, se puede hacer para un programa concreto pero no existe la solución general.

Existen varias demostraciones de por qué es indecidible, vamos a ver una demostración escrita en javascript.

Imaginemos que alguien escribe una función f que recibe como parámetros una función y sus argumentos, y que tiene un código capaz de comprobar si esta se detendrá o no.

var f = function (funcion, argumentos) { ... }; // Aquí iría un código correcto que supuestamente calcularía si la máquina para o no

Vamos a suponer que esa función está correcta, funciona y nos devuelve true si el programa termina, y false si caería en un bucle infinito. Entonces podríamos usarla como subrutina dentro de otra función más grande llamada g como la que viene a continuación:

var g = function (funcion) {
//Pasamos en el parámetro funcion la función y sus argumentos 
  if (f(funcion,funcion)) {
    while (true); //esto provoca un bucle infinito
  }
  else {
    return false;
  }
}

Esto vendría a decir que g(funcion) termina siempre y cuando funcion(funcion) nunca termina.

Entonces ¿qué ocurre si la pasásemos a la función g como parámetro su propio código? Es decir ¿qué pasa si g evalúa a g? Pues que llegamos a una contradicción: g(g) termina siempre y cuando g(g) nunca termina. Por tanto, al llevarnos a una paradoja dicho algoritmo no puede existir.

Anuncios

Manifesto polo Software Libre na Educación Galega.

Boas días, ides ter que desculpar a falta de movemento no blogue neste verán pero xa podo asegurarvos que o outono vai vir moi enérxico.

O motivo da publicación de hoxe é que fai uns días atopei este manifesto polas redes promovido por varias asociacións galegas de Software Libre, que dende o primeiro momento quixen apoiar. Sempre fun e sempre serei defensor do uso de software libre na administración e na educación, por motivos que xa mostrei neste artigo fai anos. E non so na administración e na educación galegas, penso que a lóxica e o sentido común dictan que toda a Unión Europea debería sumarse a isto. É sinxelo ver, despois do intento de boicot de Trump á chinesa Huawei, o problema tan grande que implica depender en Europa de software forncecido por empresas estadounidenses.

De seguido cópiovos o texto do mesmo:

Polo Software Libre na Educación Galega

O tecido social, asociativo e empresarial do software libre galego queremos amosar a nosa preocupación ante a decisión do Goberno galego de implantar software privativo no ensino público e o dispendio económico de 13,5 millóns de euros en licenzas de código pechado. Malia o publicado na prensa sobre a gratuidade da implantación de software ofimático, ambos acordos recentes, están claramente vinculados desde o punto de vista da planificación. Isto traerá consecuencias, dificultando a interoperabilidade dos sistemas e obstaculizando o uso de estándares abertos na Administración pública.

O convenio asinado entre a Conselleira de Educación, a directora da AMTEGA (Axencia para a Modernización Tecnolóxica de Galicia) e a presidenta de Microsoft España afecta ao tecido produtivo das TIC: incrementa a dependencia tecnolóxica dos futuros profesionais e mingua a súa capacidade de investigación, autoaprendizaxe e adaptación ás ferramentas do mercado, capacidade básica agardada en perfís profesionais tecnolóxicos. Como primeiro aspecto criticable, temos que dicir que o texto do convenio non é público, polo que non podemos deixar de lado preocupacións sobre o seu alcance, garantías e conveniencia. O alumnado de formación profesional informática será instruído nas plataformas privativas de Microsoft®. Isto provocará un efecto contaxio nas nosas empresas TIC converténdoas en consumidoras de tecnoloxía no canto de ser produtoras, por non falar da súa extensión ao ámbito directo das familias.

As empresas de software libre en Galicia son referentes no contexto TIC español. Isto débese en boa medida á capacidade de contar con profesionais cunha formación ampla e coas vantaxes que ofrece o código aberto. Esta tecnoloxía socialmente aberta permite que o alumnado poida investigar en profundidade as ferramentas informáticas innovando novos usos e funcionalidades. Ademais permítelle aos docentes propor metodoloxías innovadoras na aula, como a aprendizaxe baseada en retos ou proxectos. Esta forma de traballar logra recrear a forma de traballo das empresas, mentres que coas solucións privativas non é posíbel adestrarse en desenvolvemento.

O proceso de formación debe garantir que o alumnado acade pericias que posteriormente lle permitan adaptarse de xeito sinxelo á evolución das ferramentas do mercado, fomentar a súa capacidade de autoaprendizaxe para a vida real, polo que o argumento de incorporar no proceso formativo as versións máis novidosas do software privativo, é unha vía morta, antes ben, mingua a capacitación do alumnado nas destrezas altamente valoradas no tecido empresarial galego en xeral, e no sector TIC en particular.

Asemade da preocupación polo almacenamento ou explotación dos datos de perfís persoais dos nosos menores que poida chegar a facer unha multinacional estranxeira, os investimentos en ferramentas de software privativo representan unha lápida para o futuro do alumnado, xa que os desinvestimentos en servizos de software libre representan unha degradación da creación de emprego nas empresas galegas que no futuro poderán empregar ao actual alumnado. Polo contrario, os investimentos en software privativo deixan ás empresas autóctonas como revendedoras de produtos cunhas ínfimas marxes de negocio, repercutindo a maior parte do investimento nas multinacionais estranxeiras e non xerando riqueza local. O investimento en software privativo para a ensinanza aboca o alumnado de vocación tecnolóxica a unha migración forzada, e polo tanto, un apoio ao terríbel proceso de descapitalización que sofre Galicia, ademais de frear o desenvolvemento do tecido empresarial tecnolóxico local.

As asociacións Aberteo, AGASOL, Asociación Informática Amigus, Bricolabs, Comunidade o Zulo, Ghandalf, GPUL, Nova Escola Galega, Proxecto Trasno, Recuncho Maker e Xeopesca, instamos a Xunta de Galicia a desbotar o acordo asinado con Microsoft ao ser prexudicial para a sociedade galega. Ademais convidamos á Consellería de Educación e á AMTEGA a ter cantas reunións sexan necesarias para afortalar a implantación de tecnoloxías libres.

Se estades dacordo coa posición do manifesto podedes sumarvos a apoialo a través desta ligazón.

Cinco extensiones para GNOME muy útiles

Una de las cosas que han hecho que GNOME sea uno de los entornos de escritorio más populares para Linux es la posibilidad de instalar extensiones que nos permiten ampliar sus funcionalidades. Desde aquí os voy a recomendar 5:

Clipboard Manager: Una aplicación de gestión de portapapeles avanzada que te permitirá tener disponible varios elementos copiados o cortados a la vez para luego gestionarlos, similar al app GPaste.

Dash To Dock: Si eres un nostálgico de Unity o has migrado a Linux desde un equipo de Apple puedes usar esta extensión que agrega un dock a tu escritorio en el que podrás anclar las aplicaciones que más uses.

Easy Screencast: Una extensión que te permite grabar lo que pasa en tu escritorio de forma sencilla e intuitiva. Esto puedes hacerlo con un programa externo también, pero la ventaja de esta extensión es que es muy ligera.

Pomodoro Timer: Te permitirá organizar tu tiempo programando una serie de periodos de tiempo de actividad y de descanso en tu trabajo, de forma que puedas estar centrado al 100% en tu tarea sin preocuparte de mirar en el reloj cuánto tiempo llevas en ello.

Refresh WiFi Connections: Realmente solo es útil para usuarios con portátil que cambien bastante de ubicación, si ese es tu caso puede que te interese esta extensión que refresca las conexiones inalámbricas a tu alcance para que se conecte de forma automática, sin tener que hacerlo manualmente.

Nginx en Debian: los comandos más básicos

Vamos a darle un ojo a los comandos más básicos del servidor Nginx para sistemas operativos Debian:

Arrancar Nginx:

Para iniciar Nginx puede ser uno de estos dos comandos, dependiendo de si el gestor de servicios es systemd o sysvinit:

$ sudo systemctl start nginx #systemd
$ sudo service nginx start   #sysvinit

Reiniciar Nginx:

En caso de que necesites reiniciar Nginx sería alguno de estos dos

$ sudo systemctl restart nginx #systemd
$ sudo service nginx restart   #sysvinit

Parar Nginx:

Para detener Nginx:

$ sudo systemctl stop nginx #systemd
$ sudo service nginx stop   #sysvinit

Habilitar arranque en el inicio:

Si queremos que Nginx arranque automáticamente al iniciar el sistema operativo entonces hay que utilizar este:

$ sudo systemctl enable nginx #systemd
$ sudo service nginx enable   #sysvinit

Comprobar la configuración:

Si has hecho cambios en la configuración de Nginx este comando te dirá si la configuración es correcta:

$ sudo nginx -t

Reiniciar una descargar desde el punto en que se cortó con cURL en Linux

Si ya vimos como descargar uno y también varios ficheros en Linux mediante cURL vamos con otra funcionalidad interesante ¿cómo hacemos para reiniciar una descarga que se ha interrumpido?

Basta con invocar el comando para descargar pero añadiendo “-C – ” (es decir, -C, un espacio, un guión y otro espacio, sin las comillas).

Entonces, si así es como comenzamos una descarga:

curl -O http://dominio.com/fichero.tar.gz

Así sería cómo la reiniciaríamos desde el punto en que se cortó:

curl -C - -O http://dominio.com/fichero.tar.gz

Usar cURL en Linux para bajar varios ficheros con un mismo comando.

Si hace unos meses veíamos cómo nos podemos servir de cURL en Linux para descargar un fichero desde una URL hoy vamos a expandir un poco esta entrada: ¿podemos descargar varios ficheros a la vez con el mismo comando? Pues sí.

La sintaxis es muy simple. Recordemos primero ¿Cómo descargamos un fichero con cURL?

curl -O http://dominio.com/fichero.tar.gz

Recordado esto ¿cómo descargamos varios? Pues muy simple, añadimos más url precedidas del parámetro -O tal que así:

curl -O http://dominio.com/fichero.tar.gz -O http://dominio.com/ficheroB.tar.gz -O http://dominio.com/ficheroC.tar.gz

Plantilla para control horario semanal en LibreOffice Calc

Mientras la prensa apaniaguada sigue creando una polémica totalmente prefabricada y ficticia por la obligatoriedad de registrar las horas trabajadas en los centros laborales yo os ofrezco una solución rápida y barata. Existen múltiples soluciones informatizadas, como sistemas basados en apps en la nube, sistemas RFID o sistemas de fichaje con reconocimiento de huella dactilar.

Pero si no quieres invertir en ninguno de estos sistemas puedes llevar el control a través de una hoja de cálculo. La siguiente es una plantilla que puedes descargar para hacerlo con la suite ofimática libre y gratuita LibreOffice Calc. Bastaría con ir actualizando semana a semana. Esta diseñada para jornada partida, para jornada intensiva bastaría con no usar las columnas de la tarde o eliminarlas. Calcula las horas trabajadas de mañana, de tarde, el total diario y finalmente suma el total semanal.

Desde este enlace puedes descargar la plantilla para LibreOffice Calc, formato ODS, comprimida en un fichero zip.