¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Mecánica Cuántica en Perl

por Uriel Lizama

La ciencia avanza, y junto con ella, Perl. Vamos a ver en este tutorial como podemos aplicar un poco de mecánica cuántica en Perl, y los usos prácticos que le podemos dar a este nuevo conocimiento.

Un poco acerca de la materia

La interpretación básica de la mecánica cuántica, o física cuántica para algunos, dice que todas las partículas existen como un discontinuo infinito de probabilidades hasta el momento en que son observadas.

Por ejemplo, una partícula que es observada en un estado A, B ó C, puede considerarse que tiene un estado inicial en cual simultáneamente tiene A, B y C. De ésta manera podemos decir que tiene una superposición de todos los estados, y hasta el momento en que es observada es que elige alguno de ellos.

En este momento se está haciendo un desarrollo que se encuentra muy avanzado, en donde se busca la creación de qubits. Los qubits serán bits de información que contienen tanto el 1 como 0.

¿Mecánica Cuántica en Perl?

Damian Conway desarrolló un módulo al que llamó Quantum::Superpositions. Éste módulo simula partículas cuánticas en superposición.

El módulo agrega dos nuevos operadores a Perl: any() y all(). Estos dos operadores nos ayudarán a crear nuestras variables cuánticas.

NOTA: A partir de este momento llamaremos variable cuántica a las variables inicializadas con el módulo.

Por ejemplo, vamos a crear una variable cuántica con 3 números distintos:

use Quantum::Superpositions;

my $i_cuantica = any(2,4,6);
En este momento nuestra variable $i_cuantica es una variable cuyos posibles valores son 2,4 y 6, todo depende del observador.

Entonces podemos hacer lo siguiente:

if($i_cuantica == 6){
    print "Seis";
}
Veremos que se despliega Seis en nuestra pantalla, pues al momento de hacer el if la variable $i_cuantica tomó el valor de 6, o por lo menos la simulación.

Pero que tal si hacemos lo siguiente:

if($i_cuantica == 2*2){
    print "Verdadero";
}
Entonces nos dará Verdadero, pues nuestra variable cuántica también tiene un valor de 4.

Pero que pasa si hacemos nuestra variable cuántica con all:

my $all_cuantica = all(2,4,6);
En ese momento los ifs anteriores serán falsos pues no cumple con TODAS las equivalencias. Lo que sería verdadero sería lo siguiente:
if($all_cuantica == any(2,4,6)){
    print "Verdadero";
}
Esto es porque $all_cuantica es una variable cuyo valor es igual a TODOS los valores, y un valor any() es equivalente a CUALQUIERA de sus valores. Por lo que las dos terminan siendo iguales, pero su funcionamiento es distinto.

¿Tu mente no logra comprender esto? Ummm... la magia de la mecánica cuántica.

Ejemplo Práctico

Podemos usar nuestras variables cuánticas para muchas cosas. A continuación pongo un ejemplo básico de lo que podrías lograr usando las variables cuánticas.

Digamos que tienes un listado de personas como el siguiente:


my %Personas = (
                'Uriel' => { Nacionalidad => 'Mexicana', Edad => 21 },
                'Esteban' => { Nacionalidad => 'Argentina', Edad => 23 },
                'Pepe' => { Nacionalidad => 'Mexicana', Edad => 16 },
                'Julio' => { Nacionalidad => 'Española', Edad => 25 }
               );

Y digamos que quieres los nombres de las personas de nacionalidad Mexicana o Española que tengan una edad de 21 ó 25 años.

Entonces podemos hacer nuestra variable cuántica de la siguiente manera:


my $admitidos = all(Nacionalidad=>any('Mexicana','Española'),Edad=>any(21,25));

Y después hacemos nuestro loop por todas las personas:
while(my ($key,$val) = each %Personas ){

    if($admitidos eq any(%{$val})){
        print $key,"\n";
    }
}
Lo cual desplegará de manera correcta:

Julio
Uriel

En este ejemplo puedes modificar la variable cuántica dependiendo del filtro que deseas poner.

Últimas Palabras

En el tutorial echamos un vistazo rápido al módulo Quantum::Superpositions, para más detalles acerca de lo que puedes lograr con el módulo, te recomiendo que leas su documentación:
http://search.cpan.org/search?query=Quantum%3A%3ASuperpositions&mode=all

Si no sabes que es la mecánica cuántica, te recomiendo que veas la película What the Bleep Do we Know?. Un excelente documental que te muestra las bases de la mecánica cuántica y algunas sorpresas más:
What the Bleep Do We Know!?

¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License