Considero que para cualquier chico/a con orientación o gusto por las matematicas, el lenguaje o el conocimiento abstracto, tener nociones de programación puede ser una importante herramienta conceptual en su proceso de adquisición del conocimiento. La programación es un conocimiento activo, asi como el software es información viva. Su interes reside en que se puede hacer cosas muy concretas con él. Un lenguaje de acciones, que produce y modifica el mundo que lo rodea. Un conocimiento que provee un modelo que brinda analogias con muchas otras cuestiones de la vida.
Cualquier sugerencia,critica o ayuda con su redacción, es bienvenida.
Una computadora es una maquina que ejecuta órdenes una por una y cada tanto recibe interrupciones desde sus periféricos.
Algunas ordenes le indican que lea información desde sus perifericos.
Otras que entrege informacion a través de sus periféricos.
Con otras almacena y lee información permanente de su disco duro (otro periferico) y transitoria en su memoria;
Puede tambien modificar (procesar) la información con algunas instrucciones.
Las ordenes o instrucciones son una forma más de información, denominadas programas o software, que habitualmente residen en la memoria de la computadora, y que en la mayoría de los casos son puestas alli leyendolas del disco duro.
Las instrucciones se van ejecutando secuencialmente al compas de un reloj interno, habitualmente relacionado con la capacidad de velocidad del procesador, hasta que una interrupcion hace cambiar el programa en ejecución.
Periféricos son los elementos o dispositivos que se conectan a una computadora, como placas de video y monitores, teclado, placas de red, impresoras, puertas usb, etc...
La computadora siempre se encuentra ejecutando un programa, aunque aparentemente no haga nada, siempre esta haciendo algo, aunque esto sea inutil.
Cuando alguien apreta una tecla, mueve el raton o cualquier otra acción sobrela computadora se interrumpe el programa que esta esta ejecutando y se ejecuta otro que lee los datos que llegan del dispositivo interruptor. Procesada la interrupcion el computador continua ejecutando sus programas eventualmente afectado por los datos recibidos.
El programa principal que se ejecuta y controla todas estas operaciones básicas se llama Sistema Operativo. Dos sistemas operativos muy conocidos son GNU/Linux y Windows, siendo el primero libre, es decir que se puede inspeccionar el codigo fuente y se posee la libertad de modificarlo y distribuirlo y siendo el segundo cerrado, ni modificable, ni distribuible y se debe pagar un derecho o licencia por su uso.
Para realizar estas cosas las computadoras tienen:
Uno o mas procesadores
memoria (RAM), de determinado tamaño, que se borra al apagar la maquina
memoria (ROM), que nunca se borra y que tiene los programas necesarios para arrancar la computadora
perifericos: discos duros con su respectiva capacidad, teclado, pantalla, impresora, placa de red, modem, etc.. Se toman como tales a los aparatos externos y a las placas o dispositivos internos de la PC que los controlan.
Cables o conectores (bus) que interconectan los perifericos, la memoria y el procesador y permiten que los datos vayan de uno a otro
uno o mas controladores de interrupciones que decide a que periferco va a escuchar la computadora en cada momento.
La información permanente de los discos duros se organiza en archivos.
Los archivos son secuencias ordenadas de bits. (unos y ceros)
Podemos agrupar los bits de a 8. Estos grupos se denominan bytes. Hay 2^8 = 256 diferentes posibles bytes.
Cada uno de estos bytes puede representar una letra, numero u otro simbolo especial, o en general caracteres, según el código ASCII.
Por lo tanto podemos decir que los archivos son secuencias de caracteres .
En un disco duro se suelen agrupar los archivos en directorios. En un directorio se pueden apuntar varios arhivos u otros subdirectorios. Puede haber uno o varios directorios raices. En gnu/linux, o Unix en general, se usa un solo directorio raiz y se montan los discos en algun directorio como un subdirectorio mas. En DOS y Windows a cada disco se le asigna una letra o nombre, aunque en las ultmas versiones de Windows ya se intenta simular un solo arbol en el entorno grafico al menos.
Los directorios entonces aparecen conteniendo archivos, y existen uno o varios arboles de directorios por maquina.
Es cierto que las computadoras solo hacen lo que se les instruye. El tema es que hay formas de instruirlas en que no sabemos cual es el resultado de las mismas.
Son un conjunto de instrucciones, como una receta de cocina, escritos en un leguaje que la computadora puede ejecutar.
Para ejecutar un programa, se hace click en el raton sobre su icono, o se escribe el nombre del programa en un cuadro especial o su nombre en una terminal de texto.
Usaremos el metodo de la terminal de texto para ejecutar programas. En DOS o Windows esta terminal es bastante primitiva, utilizando para interactuar un programa denominado command.com. En Gnu/Linux se trabaja con una terminal muy sofisticada interactuando con un programa denominado bash
Tanto bash como command.com se encargan de cargar el programa deseado en la memoria de la maquina y lograr que se ejecute.
Los humanos escribimos programas en lenguajes que comprendemos, generalmente estos programas se guardan en archivos, usando un programa editor de texto.
Podemos usar en DOS/Windows el programa Edit o Emacs, en gnu/linux usaremos pico, nano o emacs.
Se han inventado muchos lenguajes para dar ordenes a una computadora:
C, basic, pascal, lisp, perl, bash, sed, awk, expresiones regulares, etc.
Otros programas como los compiladores y los interpretes traducen estos Codigos Fuente en Codigos ejecutables que cada Computador entiende.
Uno de los principales problemas que tiene el sistema operativo Windows, es que su dueño no quiere que veamos ni usemos, los códigos fuentes de sus programas. Para ganar dinero restringe nuestra libertad y posibilidad de aprender, por eso usamos GNU/Linux.
Usaremos perl y le pediremos al perl que interprete el programa deseado encargandose este ultimo de ejecutar nuestras instrucciones.
Entonteces pondremos en nuestra terminal:
perl archivo_con_nuestro_programa
por ejemplo:
perl programa.pl
Le daremos al archivo con nuestro programa una extension .pl para indicar que es un programa perl. (no es necesario, pero si conveniente)
¿Porque Perl?
porque puede ser muy simple para aprender, pero puede ser muy sofisticado, es la navaja suiza de la computacion.
Porque funciona en muchisimos sistemas operativos, desde una PC con DOS 3.0 hasta el mas moderno gnu/linux 2.5
Porque es libre. Http://www.gnu.org
http://www.hipatia.infoPodemos leer todos los programas que usamos, cambiarlos y adaptarlos, no dependemos ni siquiera de su creador para usarlo, en definitiva, usandolo somos libres, no esclavos
Porque posee buenas interfaces graficas como TK o GnomePerl, o la misma web.
Es excelente para manipular textos, bases de datos, paginas web, armar estructuras complejas de datos, calculos simbolicos y numericos, trabajar con codigos genéticos, etc.
No es tan eficiente como el c, pero es mucho mas rápido y simple programar en Perl, como dijo alguien: “no me interesa ahorrarle trabajo a la computadora, me interesa ahorrarmelo yo.”
Hay muchas formas de hacer lo mismo, (lema del Perl) todas validas, tanto la del principiante como la del experto. Es un lenguaje de computadora que prefiere sentirse humano, es diagonal en el sentido que se pueden encontrar atajos. Esta pensado para hacer faciles los trabajos faciles sin hacer imposibles los dificiles. En el nicho ecologico de los lenguajes, Perl se ubica entres los lenguajes de script y los compilados, cubriendo un amplio espectro, evolucionando en forma permanente ocupando nuevos nichos dia tras dia.
Existe una vigorosa comunidad de desarrolladores de Perl, constituida en una cultura con varios subculturas. No impone criterios de diseño, ni cierra puertas. Se puede programar funcionalmente, con objetos, estructuradamente, etc..
Perl ayuda a conseguir las tres cualidades fundamentales del buen programador: pereza (quieren lograr sus fines con poco trabajo) , impaciencia (quieren hacerlo rapido) y orgullo (quieren hacerlo bien).
En el anexo se explica como instalar y usar perl en tu computadora.
print “Hola Mundo\n”;
o
print 1;
Son instrucciones para imprimir: una el texto Hola Mundo y otra el numero 1.
print 1+2;
imprime 3.
Por ahora solo usaremos la instrucción print para que el programa entrege información.
Algunos detalles:
Toda orden en perl debe terminar en ; para que el programa sepa cuando termina una y empieza la otra. Los programas perl son una lista o secuencia de ordenes que se van ejecutando una a una. No empieza una hasta que termina la anterior.
Los textos deben ir entre comillas para que el programa sepa donde empieza y termina cada texto y no los confunda con un comando del perl como print. Los numeros no requieren comillas.
\n es como una letra mas, simplemente indica cuando debe cambiar el renglon . Es como el aparte en un punto y aparte.
Los programas no siempre hacen lo mismo. Seria bastante tedioso hacer un programa nuevo cada vez que se quiera sumar dos numeros diferentes. Por eso se inventaron las variables.
Perl tiene pocos pero importantes tipos de variables. En este trabajo solo usaremos las denominadas variables escalares, para nosotros variables
print $a;
Indica a la computadora que imprima lo que contiene la variable $a. Toda variable escalar tiene que ser escrita con $ al comienzo. Asi el programa sabe que es una variable y no una instrucción, un número o un texto fijo.
$a=5;
es una instrucción que indica al programa que a partir de ese momento $a vale 5, Le asigna 5 a la variable $a.
$a=$b.$c
indica que $a es la concatenacion de las variables $b y $c, asi:
$b=”Hola”;
$c=”Diego”;
$d=” “;
$a=$b.$d.$c.”\n”;
print $a;
Imprimira Hola Diego y cambiara de renglon.
$a= “Hola”;
$b=1;
print $b +5;
print “ “.$a.” “.$b.”\n”;
Imprimira 6 Hola 1 y cambiara de renglon.
Asi como en un lenguaje humano natural hay verbos, proposiciones, y otros organizados en sujeto, predicado y demas en las frases, los lenguajes de computadora tienen su sintaxis. Hemos visto hasta ahora los siguientes elementos lexicos constitutivos:
los numeros y los textos
las variables para almacenarlos: escalares,
las operaciones: suma (+) y concatenacion (.)
las instrucciones: print
Operaciones
Otras operaciones son +, -, *, /
$a=sqrt 5;
coloca la raiz cuadrada de 5 en $a.
sqrt es una funcion del perl , otro tipo de instrucción que calcula la raiz cuadrada..
$b=sqrt $a;
coloca en $b la raiz de $a.
print 3 + 4 + $a * (sqrt $b + 3) + 5/3;
hace lo que tiene que hacer
Como le damos datos a un programa desde afuera del mismo?
escribimos
print “Ingrese: ”;
$a=<>;
print “Ud ingreso “.$a.”\n”;
en el archivo programa.pl
y ejecutamos el programa.
El programa se quedara esperando el ingreso del dato.
Cuando demos ENTER el dato ingresara y el programa lo tomará
Se destaca entonces el operador “diamante” para el ingreso de datos al programa.
Este operador captura toda una linea.
Para tener una vision completa de un program necesitamos un elemento mas:
¿Como toma decisiones un programa?
if ($a >1){
print “A es mayor que uno\n”;
}else{
print “A es menor o igual que uno\n”;
}
operadores para tomar decisiones hay muchos.
> el valor es mayor
>= el valor es mayor o igual
< el valor es menor
<= el valor es menor o igual
== el valor es igual
!= el valor es diferente
gt el texto esta despues en el alfabeto
ge el texto esta despues o en el mismo lugar en el alfabeto
lt el texto esta antes en el alfabeto
le el texto esta antes o en el mismo lugar en el alfabeto
eq el texto es igual
ne el texto es diferente
Ciclos:
foreach $a (1,2,45,”diego”,9){
print $a.”\n”;
}
ejecuta el comando print una vez por cada elemento en la lista, asignadole a $a el elemento de la lista
Si ponemos (2..8) ejecutara la secuencia de numeros 2,3,4,5,6,7,8
$a=5;
while($a<20){
print“$a \n”;
$a++;
}
El ciclo while repite las instrucciones en el bloque mientras se cumple la condicion.
Vemos dos cosas nuevas:
se puede poner una variable adentro de las comillas del texto, y es reemplazada por su valor.
Dos signos + repetidos luego de una variable le aumentan su valor en uno, es lo mismo que poner: $a=$a+1;
Notese que introducimos las instrucciones if else foreach y while, los operadores de control, y los { } que constituyen bloques que encierran codigo que se ejecuta solo cuando las instrucciones de control lo deseen.
Es decir que debemos hacer mas compleja la idea de lista ordenada de instrucciones. Las instrucciones se van ejecutando una a tras de otra, pero las sentencias de control a veces
cambian el orden o la secuencia a ejecutar.
Se puede redirigir la salida de un programa hacia un archivo ejecutando de esta manera:
perl archivo.pl >pepito
En vez de imprimir en la pantalla graba los resultados en el archivo pepito
perl archivo.pl < entrada
toma los datos del archivo entrada.
perl archivo1.pl < opa | perl archivo2.pl > juan
archivo1 lee los datos del archivo opa, los envia al programa archivo2.pl y este los guarda en juan.
Tenemos entonces tres operadores del programa command.com o bash > < |, se llaman operadores de redireccion y permiten a tus programas leer y guardar datos de archivos.
Un paso mas
Con estos elementos se puede hacer muchas cosas, todo, diria alguien.
Es cuestion de acomodar los elementos dados, de las formas que a uno se le ocurra.
Si falta algo siempre se puede buscar.
Un programa interesante es el perl – logo.
Logo es un programa para enseñar a programar a niños, es un lenguaje en que se indica a una tortuga como moverse, y esta tortuga va dejando una estela en la pantalla, con lo que dibuja.
Se encuentra en cpan en la seccion de scripts.
En el sitio http://www.cpan.org se encuentra muchisima informacion sobre perl.
Existen exelentes libros como el del camello: “Programing Perl ” del creador del lenguaje: Larry Wall, Tom Christiansen y Randal Schwartz, o “Perl Cookbook“ de Tom Christiansen y Nathan Torkington. con cientos de ejemplos. Perl contiene abundante documentacion que se puede consultar, con el programa perldoc
perldoc perl
da una primera guia.
Instalacion en gnu/linux:
No es necesario, en general Perl viene preinstalado
Hay muchos editores a disposicion.
En particular usando Ututo http://www.ututo.org se puede utilizar Perl sin instalar nada en la PC.
En Windows:
En el Disco compacto Software libre para Windows, producido en la UNSa, se encuentran varias versiones de perl incluso algunas que funcionan en XT.
Para maquinas nuevas se puede usar ActivePerl, que solo se encuentra en la version del Disco Compacto disponible exclusivamente en la UNSa, (Active Perl es gratis pero no libre) pero que puede bajarse de internet del sitio:
http://www.activestate.com/Products/ActivePerl
y tiene un ejemplo denominado widget que muestra una interfaz grafica con PerlTk.
Las otras versiones de Perl se pueden tomar de la version del Disco disponible para cualquiera. Comoun Perl5 sin restricciones e incluso una vesion de Perl3 que funciona en los viejos PC y XT, con un solo archivo ejecutable.
Como editores se puede usar cualquiera, pero en particular:
Emacs:
http://www.gnu.org/software/emacs/windows/ntemacs.html
Luego de instalar se recomienda poner en el escritorio el acceso directo.
Se recomienda configurar el MSDOS en Windows para que se abra como una ventana mas del Windows.
Asi se podrá tener una ventana DOS y otra con el programa de edicion.
No toda la funcionalidad de Perl puede ser encontada en Windows, en principio porque windows no tiene todas las capacidades de un sistema multiusuario, multitarea, orientado a redes.