Está en la página 1de 3

GUIA BASICA DE PROGRAMACION 1 Qu es un algoritmo?

2 Modelos computacionales 3 Programas: Algoritmos para ser ejecutados por un ordenador 4 Qu instrucciones ejecuta un ordenador? 4.1 Lenguaje de mquina 4.2 Lenguaje ensamblador 5 Programacin para seres humanos 5.1 Lenguajes de alto nivel 5.2 Traductores e intrpretes 5.3 Lenguajes interpretados vs. lenguajes compilados

Qu es un algoritmo?
Si se consulta en la Wikipedia la definicin de algoritmo, se entiende que ste es un conjunto finito de instrucciones que se deben seguir para resolver un problema. No obstante, desde el punto de vista de la programacin de ordenadores, la definicin del algoritmo como la especificacin de una serie de pasos, es incompleta. Debe observarse que los ordenadores son equipos que tienen limitaciones fsicas en cuanto a capacidad de almacenamiento y procesamiento. Por consiguiente debemos refinar un poco ms nuestra definicin de algoritmo para hacerla aplicable de manera efectiva en el mbito de la informtica. Definicin: Un algoritmo se entiende como una sucesin finita de pasos que debe cumplir las siguientes especificaciones: Cada paso del algoritmo debe estar bien definido: Esto significa que la definicin de un paso debe ser suficientemente clara, para que una persona pueda entenderla y realizarla. Si bien no se puede dar un criterio determinstico para decidir si un paso est bien definido, debemos apelar al sentido comn para decidir que un paso est especificado sin ambigedades. Un algoritmo debe tener un principio y un fin: Un programa es un algoritmo escrito con un objetivo: conseguir un resultado. No tiene sentido crear un programa que espere ~ segundos (infinitos segundos) y luego escriba en pantalla "Hola Mundo!", del mismo modo que un algoritmo debe tener un principio bien definido (tampoco tiene sentido el algoritmo "haz nada, y luego escribe Hola Mundo!")

Modelos computacionales
Un modelo computacional es un modelo matemtico en las ciencias de la computacin que requiere extensos recursos computacionales para estudiar el comportamiento de un sistema complejo por medio de la simulacin por computadora. El sistema bajo estudio es a menudo un sistema complejo no lineal para el cual las soluciones analticas simples e intuitivas no estn fcilmente disponibles. En lugar de derivar una solucin analtica matemtica para el problema, la experimentacin es hecha con el modelo cambiando los parmetros del sistema en la computadora, y se estudian las diferencias en el resultado de los experimentos. Las teoras de la operacin del modelo se pueden derivar/deducir de estos experimentos de computacionales. Ejemplos de modelos de computacionales comunes son modelos de el pronstico del tiempo, modelos del Earth Simulator, modelos de simulador de vuelo, modelos de plegamiento molecular de protenas, y modelos de red neuronal.

Programas: Algoritmos para ser ejecutados por un ordenador


Un ordenador o computadora est, desde que se enciende hasta que se apaga totalmente, ejecutando un algoritmo. Por lo general, estos algoritmos, escritos para que los entienda una mquina, terminan siendo vagos y confusos para la mayora de quienes no han estudiado programacin. Una mquina no puede entender "escribe Hola Mundo!" porque no sabe lo que es "escribe" ni lo que es una letra o un espacio, ni lo que es una pantalla. En cambio, puede entender "mov eax, 0x23afb31" (escribir en la direccin de memoria eax el nmero 0x23afb31), aunque nosotros no. Un ordenador es solo un circuito electrnico, no funciona a base de magia ni nada por el estilo. Debido a lo dificil que es escribir en lenguaje mquina, e incluso en ensamblador, se crearon diferentes lenguajes de programacin, ms o menos parecidos al ingls actual y a cmo se redacta un algoritmo. Estos lenguajes proveen de cosas tan complejas para una mquina como los bucles for. Los compiladores se encargan de traducir esos ficheros al lenguaje ensamblador que corresponda, el ensamblador de traducirlos a lenguaje mquina y el enlazador de juntar todo ese cdigo mquina en un solo archivo, el programa. Y el microprocesador, se encarga de ir encendiendo o apagando transistores segn lo que le diga el cdigo mquina. Es facil entender el lenguaje de alto nivel en comparacion al lenguaje maquina pero de la evolucion surgieron.

Qu instrucciones ejecuta un ordenador?


Lenguaje de mquina
Cada tipo de microprocesador contiene un conjunto de instrucciones que realizan ciertas operaciones sobre una o ms palabras de bits; las instrucciones van tambin codificadas en bits. No queremos hacer aqu una discusin sobre arquitectura de ordenadores, por lo que con esto debe valer por ahora. Se entiende que escribir slo con dos teclas, el 0 y el 1, es incmodo. Histricamente, a la hora de disear un algoritmo para que el ordenador ejecutara, se escriba mediante unas etiquetas memotcnicas; ste fue el origen del lenguaje ensamblador. Por ejemplo quizs en una cierta arquitectura la instruccin de borrado de memoria (Memory Clear, en ingls) corresponda al cdigo 010. Pronto surgieron programas que lean, siguiendo el ejemplo, MC, y lo sustituan por 010.

Lenguaje ensamblador
El cdigo mquina tena dos grandes inconvenientes para los programadores: las instrucciones eran difciles de recordar, ya que no guardaban relacin con la operacin que se est realizando. puede haber, y de hecho hay, diferencias entre las instrucciones de un procesador a otro. Todo esto ha llevado a "poner nombre" a las instrucciones de cdigo mquina de manera que a una secuencia concreta de bits que realiza una operacin se le pone un nombre sencillo que identifique la operacin. Esta traduccin a un lenguaje ms sencillo para las personas resulta en una mayor comodidad para el programador, adems el proceso de traduccin inverso de lenguaje ensamblador a cdigo mquina puede ser realizado por un sencillo programa.

Programacin para seres humanos


Lenguajes de alto nivel
Sobre este lenguaje ensamblador inicial se fueron construyendo otros lenguajes de programacin de

ms alto nivel; esto significa que ocultan ciertos aspectos de manera que el programador no se ha de preocupar sobre si en la mquina que quiere que se ejecute el algoritmo el MC corresponde a la instruccin 101 o 010. Se produce, por tanto, una abstraccin de datos, muy deseable para poder utilizar el trabajo de otros para avanzar un paso ms en vez de tener que "reinventar la rueda", como se suele decir. Estos textos en los que se codifican los algoritmos son los cdigos fuente; siguen las reglas sintcticas de un determinado lenguaje de programacin. Existen numerosos lenguajes de programacin, y se utiliza uno u otro segn sus caractersticas se adecen ms o menos a la resolucin de nuestro problema.

Traductores e intrpretes
Tras la escritura del algoritmo, un compilador o un intrprete (otros programas) transformarn el texto en cdigo mquina que el procesador es capaz de ejecutar. Toda esta abstraccin permite resolver problemas alejados de sumar nmeros binarios, como pueden ser la consulta de esta misma enciclopedia o jugar a un videojuego en 3D.

Lenguajes interpretados vs. lenguajes compilados


Los lenguajes interpretados nacen como respuesta a la dificultad de manejo de los compilados. Un lenguaje compilado es slo apto para un sistema operativo o formato de ejecutable (en GNU/Linux y Unix System V es ELF, en Windows o incluso en BSD es muy diferente), y es tedioso de manejar: para comprobar bugs o errores el computador debe: Compilar cada uno de los ficheros de cdigo. Ensamblarlos en ficheros objeto. Enlazar los ficheros objeto. Volverlos a ensamblar.

Todo eso no es gran derroche de recursos para un ordenador medio actualmente, pero dura sus 10 o 15 segundos. En cambio, con un lenguaje interpretado, el programa intrprete analiza el fichero de cdigo y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. Otra de las ventajas de los lenguajes interpretados es que son multiplataforma: un programa en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows). Con que haya diferentes versiones del intrprete en cada uno de esos ordenadores, especficamente compilados para ellos, basta. Sus desventajas: Consume muchos recursos de memoria, sobre todo RAM. Se depende del intrprete: si no tienes instalado el intrprete que corresponda, no podrs ejecutar el programa. Ejemplos de lenguajes interpretados son PHP, Perl, Python, Tcl/Tk, BASIC, LISP (en algunas de sus versiones)...

También podría gustarte