What Ronronia wants no son unos zapatos, o un bolso de Sonia Rykiel... sino un maquinarro con 12Gb de RAM y un Core i7 2700k

pero como de momento no lo puede tener, ella se divierte así:


sábado, 18 de septiembre de 2010

Informática para todos: ¿qué es un programa?

Empiezo lo que espero será una serie de posts que pretenden explicar sin palabras técnicas algunos conceptos de informática elementales que a veces empleamos con mucha alegría sin darnos cuenta de que no todo el mundo se hace a la idea de lo que estamos diciendo. El banco de pruebas para asegurarme de que estos posts son comprensibles para todos, sin necesidad de conocimientos previos, iba a ser mi madre, pero como buena mujer de acción es culo de mal asiento y cuando llevaba dos minutos tratando de explicarle esto mismo que os voy a contar -preguntó ella- se me había aburrido y estaba en la cocina dedicándose a alguna actividad frenética y cambiando de tema. Hoy toca ¿qué es un programa?. A ver qué tal se me da. Si veis que os aburro mucho, hacéis como mi madre, os ponéis con otra cosa ¿sí? ¿hacemos trato?. Empiezo:

Un programa es una secuencia de instrucciones, de órdenes escritas una detrás de otra: mueve el contenido de la caja roja a la verde. Cuando termines, mueve el contenido de esas diez cajas azules a la verde, hasta que acabes con las diez o hasta que a la verde no le quepa más. Si han quedado cajas azules sin verter a la verde, llévalas al trastero, etc, etc.

Los programas se escriben usando un editor de programas que es como el word pero en lugar de hacer documentos .doc los hace de otros tipos distintos. Es decir, el programador abre una especie de word y comienza a escribir.

Los programas se escriben en lenguajes de programación y habréis oído hablar de muchos (COBOL, Pascal, C, Fortran, entre ellos). Al igual que nosotros podemos escribir una carta en inglés, en francés, en español o en eslovaco y eso es únicamente el lenguaje en el que nos expresamos pero las ideas, los conceptos son únicos, un programa lo podemos escribir en pseucódigo, con nuestras propias palabras, y entonces el resultado final es el algoritmo, la esencia del programa.

Un poco de paciencia, un par de definiciones más y ahora vienen los ejemplos. Los tipos de órdenes de los que se compone cualquier algoritmo por complejísimo que sea son sorprendentemente sólo tres:
- Asignación de datos: mover letras y/o números de un lado para otro.
- Condicional: si pasa esto, haz esto otro pero en caso contrario, haz lo siguiente
- Iteración: repetir hasta que se de una condición.

Voy a usar COBOL para los ejemplos porque, aunque es denostado por algunos informáticos, es muy claro en sus expresiones, muy intuitivo.

Asignación de datos:


En Pseudocódigo (lenguaje normal pero tratando de dar instrucciones cortas):
     Mueve el contenido de la caja roja a la caja verde

Programa: en COBOL, p.ej., eso se "diría":
     MOVE CAJA-ROJA TO CAJA-VERDE.

(MOVE en inglés significa MUEVE, TO en inglés significa A, así que si hubiera un Cobol en español se escribiría MUEVE CAJA-ROJA A CAJA-VERDE, y todo sería más sencillo para muchos ¿no creeis? pero más difícil para toooodo el resto)

Condicional:

Pseudocódigo:
si eres menor de 18 años,
    no puedes votar
pero, en caso contrario,
    sí puedes votar

Programa: COBOL:
IF EDAD LESS THAN 18
    DISPLAY ‘NO PUEDES VOTAR, ERES MENOR DE EDAD’
ELSE
    DISPLAY ‘ADELANTE, EMITE TU VOTO’
END-IF

Donde DISPLAY significa MUESTRA y va seguido de lo que queremos que muestre, que es un texto y para indicar que es un texto lo ponemos entre comillas. Son reglas de escritura en ese lenguaje, como “el sujeto y el verbo concuerdan” es una regla del castellano, nada más, pero la esencia sigue siendo la que muestra el pseudocódigo.

Iteración:

Escribe los números del 1 al 10

Pseudocódigo: mueve 1 a n
     Escribe n hasta que n sea mayor que 10

Programa: COBOL

MOVE 1 TO N
PERFORM UNTIL N GREATER 10
    DISPLAY N
    ADD 1 TO N
END-PERFORM

Donde PERFORM UNTIL significa HAZ HASTA QUE en inglés, GREATER significa MAYOR QUE y DISPLAY significa MUESTRA y ADD significa suma, así que en nuestro cobol español particular sería

MUEVE 1 A N
HAZ HASTA QUE N MAYOR QUE 10
   MUESTRA N
   SUMA 1 A N
FIN-HAZ

Las líneas END-xxx se usan para indicar que ahí acaba la lista de lo que hay que hacer, en este caso 10 veces.

Los lenguajes de programación muchas veces agrupan gran cantidad de pseudocódigo (hacen muchas cosas) en una orden muy simple. De la misma forma que
     Suma 1 a N
Esconde una asignación de dato que es
     Mueve N+1 a N
en los lenguajes actuales se encuentran órdenes que podemos escribir y que hacen cosas complejas:
     Saca por pantalla el texto “Adelante, puedes emitir tu voto” en Verde y parpadeando
     Multiplica N por 4, réstale 3 al resultado, lo que salga divídelo por M yeso que has obtenido elévalo al cuadrado y el resultado total lo mueves a N.

Así que al final, el trabajo de un programador no es tan misterioso ni tan arcano. Intenta entender muy bien primero lo que quiere hacer. Escribe el algoritmo en pseudocódigo (o al menos lo tiene claro en su cabeza), es decir, escribe lo que hay que hacer en palabras normales y en forma de instrucciones una tras otra. Si hay varios lenguajes de programación a su disposición y que domina, elige el que mejor se adapta a lo que quiere hacer. Si sólo dispone de uno, lo exprime para conseguir hacer lo que hay que hacer. Abre un editor de programas (ese “word” propio de un lenguaje de programación concreto) y escribe en ese lenguaje de programación, usando las palabras y gramática propias de ese lenguaje y siguiendo las reglas del mismo, el programa propiamente dicho.

Es como pedirle a un chino que haga algo complejo cuyo funcionamiento desconoce: aprendes chino, divides la tarea compleja en muchas otras más simples, y le vas diciendo órdenes de una en una... en chino. Le digo la primera orden y cuando ha terminado la siguiente. En un momento dado compruebo si cierta condición se da y si es cierta le doy una orden y si no otra. En otro momento le diré que haga cierta cosa hasta que yo le diga que pare: apila ladrillos hasta que te diga que pares, o hasta que el montón supere los 20 cms. Es un poco como una obra gigantesca tipo puente de Millau, que Norman Foster sabría lo que quería desde el principio pero al final el trabajador que coloca esta o esta otra pieza o este encofrado, sólo sabe en cada instante concreto que tiene que cumplir con la instrucción que le acaban de dar.

Un lenguaje de programación es tal porque luego hay un intérprete que traduce ese “chino” que tú has escrito a esa cosa extraña y misteriosa (ahora sí, en estos tiempos lo es incluso para los profesionales) que son los ceros y unos con los que se habla a lo profundo de un ordenador. El intérprete es el COMPILADOR y decirle al intérprete que traduzca es COMPILAR el programa. Los compiladores suelen incluir un validador del programa, un corrector “gramatical” que te dice qué errores has cometido al escribirlo. Es decir, le doy al botón de compilar y eso me devuelve un informe que viene a decir:
     Ok, todo correcto
O
     Cachico bolo, que me has escrito PERFROM en lugar de PERFORM.

Si ha sido Ok, todo correcto, obtienes un ejecutable, como puedan serlo los famosos .EXE de Windows, que les pretas y hacen cosas. ¿Qué cosas? Lo que les ha dicho que hagan el programa inicial que alguien escribió. Así que ya sabéis que lo que llamamos programas, comoel WORD, el PHOTOSHOP, el WINDOWS MEDIA, son en realidad ejecutables obtenidos mediante compilación de los verdaderos programas que están “debajo”.

Sé que ya os tengo fritos, pero no me aguanto: ¿qué es CRACKEAR un programa? Es usar un compilador “a la inversa” para a partir del ejecutable .EXE obtener el código, el programa escrito con sus órdenes en “chino”, entrar a editarlo con el “word” particular para ese “chino” y allí buscar la instrucción que dice: si no me has metido un nº de registro legal y correcto, no funciono (o funciono como una versión de pruebas) y ¡¡¡borrarla!!!.
Vuelves a compilar y el .EXE resultante funciona como el de pago pero sin pagar.

Hasta aquí he llegado hoy. No sé que tal habrá ido la cosa, si alguno habréis llegado hasta aquí o si os habéis dormido antes. Dudo que haya conseguido mi objetivo, pero entonces será porque no me supe explicar bien, no porque el asunto sea realmente complicado. ¿Qué decís? ¿Lo conseguí? ¿Me s’entiende? :-)

4 comentarios:

un-angel dijo...

Flipo contigo: ¿no deberías estar contemplando de cerca a las cabras montesas, en el caso de que haya alguna por ahí?...
De todos modos, te diré que me he enterado de muchísimo más de lo que me suelo enterar en estos casos. Lo que me parece increíble es que a partir de fundamentos tan sencillos pueda llegar a hacerse cosas tan complicadas en las que, de hecho, ni siquiera se intuye ese armazón que hay detrás...Y ya si pienso que todo en el fondo está siendo traducido en "unos" y "ceros", entonces ya sí que me quedo atónito...
Un beso, fue interesante. Casi lo fue tanto discurrir de donde sacaste el tiempo AHORA para hacer semejante post, jajaja.
Lo dicho, un besote, guapa.

Ronronia Adramelek dijo...

Enlatados, cariño, los dejé enlatados antes de salir, porque me daba horror que perdieras la costumbre de leerme y ya no lo hicieras más :-))))

¿Has visto que ya tengo eñes? En Francia las leyes sobre el uso de internet son más normalitas, y aquí en Chamonix hay conexión en todas partes. Por cierto que en el McDonalds aquí hay wifi gratis y en uno nuevo que han puesto en Zaragoza en Puerto Venecia también hay wifi gratis. ¿Hay wifi grátis en todos los McDonalds? Lo miraré.

theodore dijo...

Carambita, me encanta mucho cómo lo explicas!!!! Eso no quiere decir que lo haya entendido del todo, o sí, pero debo repasarlo, que no garantiza que lo tenga claro y nítido, o sí, pero luego se me olvidará, o no.

En cualquier caso no será culpa tuya :-D

McDonalds con wi-fi? Es que los quieren transformar en slow-foods o algo?

BesososeB

Ronronia Adramelek dijo...

@Theodore: ¡¡¡Merci beaucoup de ton commentaire!!! :-)) Decididamente aquí por la France (y por la Suiza tb, hoy ha tocado vuelta al lagazo Lemans) los McDonalds tienen wifi gratuita, que de hecho escribo desde uno, pero comprobado también que noooooooo se van a dedicar al slow food. Podrían si quisieran porque esta zona de los Alpes franceses es pionera en comida y construcción bio, y encuentras leche, pan y huevos ecológicos en el super de casi cualquier pueblín y a bastante buen precio.

Related Posts Plugin for WordPress, Blogger...
 
What Ronronia wants © 2008 Template by Exotic Mommie Illustration by Dapina