RSS

Programar es fácil

18 Jul

En muchas ocasiones al llegar a una entrevista de trabajo me reciben con un caluroso

“Sabe programar en …?”

Aún no entiendo porque no me preguntan

“Conoces la programación estructurada?”
“Has programado orientado a objetos?”

o mejor aún, ponerme un problema que deba de resolver con pseudocódigo. No entiendo que es un programador de Java, .Net, C, etc. etc. Porque la gente de recursos humanos nos entrevista con preguntas tan cerradas. Donde quedó toda la teoría?

Cuando salí de la carrera era bueno en Turbo Pascal y ensamblador… profesionalmente nunca los he programado. Me considero afortunado porque en cada empleo he aprendido un lenguaje nuevo o algo nuevo de un lenguaje que ya conocía.

Creo que programar es fácil, lo difícil en realidad es hacerse de un portafolios de ideas que nos permitan formular una solución factible para un problema real.

Hace poco me enteré de GILD, un sitio que hace pruebas para rankear a los programadores, me suscribí y en estos momentos estoy realizando la siguiente prueba. No me considero un “programador de Perl”, asi que vamos a intentar hacerlo con algo que desconocemos…

Primero que nada vemos que hay que leer un archivo, gogleemos “Perl leer un archivo linea a linea”, nos vamos aqui. Ya tenemos el esqueleto:


TEST = "test.txt";
open(TEST) or die("No se pudo abrir el archivo.");
foreach $line () {
chomp($line);
#Aqui vamos a procesar el archivo
}

Ahora me detengo a pensar como leo el parámetro de la línea de comando, Google “perl commandline args” aqui. Y ahora tenemos el siguiente código:

$num_args = $#ARGV + 1;
if ($num_args != 1) {
print "\nUtilice:\n\t passwordrecovery.pl file\n";
exit;
}
$fileInput=$ARGV[0];
open(fileInput) or die("Could not open log file.");
foreach $line () {
chomp($line);
#Aqui vamos a procesar el archivo
}

Muy bien! ya podemos leer del archivo pasado por línea de comando. Leamos la primera línea que tiene el password, inmediatamente despues de abrir el archivo agregaremos:

$cryptedPwd=;
chomp($cryptedPwd);

Y ahora vamos por partir la linea en palabras, Google “perl split string”, que nos lleva aquí. Nuestro script de perl debe de procesar el archivo así:

foreach () {
chomp($_);
@words = split(/[^a-zA-Z]/);
}

Ahora recorramos el arreglo de tokens, Google “perl array foreach”, aquí, ojo que el foreach lo tomamos “prestado” de cuando leímos línea por línea el archivo.

foreach () {
chomp($_);
@words = split(/[^a-zA-Z]/);
foreach (@words) {
print $_ . "\n";
}
}

Este código nos imrpime las “palabras” en el archivo, o no? Ok esta imprimiendo cadenas vacías, como filtramos solo los elementos que tienen caracteres alfabeticos? Google “perl if regexp”, aquí. Finalmente tenemos el siguiente script:

$num_args = $#ARGV + 1;
if ($num_args != 1) {
print "\nUtilice:\n\t passwordrecovery.pl file\n";
exit;
}

$fileInput=$ARGV[0];
open(fileInput) or die("Could not open log file.");

$cryptedPwd=;
chomp($cryptedPwd);

$maxLengthPwd=8;
$minLengthPwd=5;
@digits=[0, 2, 4, 8];

#Se quito $line para pasar a $_
foreach () {
chomp($_);

@words = split(/[^a-zA-Z]/);

foreach (@words) {
if ($_ =~ /[A-Za-z]/){
print $_ . "\n";
}
}
#print $_
}

Para los que como yo no conocen perl, hay que guardar el script en un archivo y ejecutarlo de la siguiente manera:
perl passwordrecovery.pl passrecovery-a.in
El archivo passrecovery-a.in lo obtuve de la pagina de GILD.

La idea de este post es recomendarles que no nos preocupemos tanto por ser una referencia andando de un lenguaje, más bien debemos prepararnos con temas teóricos de algoritmos, ejercitarnos con retos y mantenernos activos en la resolución de problemas (con esto quiero decir que si lo que haces ya no es un problema para tí, busca un nuevo problema). Como ingenieros tenemos la tarea de ser generadores de soluciones y no solo técnicos programadores. Debemos de ser personas preocupadas por ser parte de la solución y no solo implementarlas, ya que en los equipos de trabajo requerimos de resolver problemas no de traducir algoritmos.

P.D. Les dejo las siguientes páginas muy entretenidas para mantenerse “en forma” ya que como dije, programar es fácil.

hacker.org
projecteuler.net

 
Deja un comentario

Publicado por en julio 18, 2011 en Uncategorized

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: