Tools
Definición: Un algoritmo se entiende como una sucesión finita de pasos que debe cumplir las siguientes especificaciones:
▪ Cada paso del algoritmo debe estar bien definido: Esto significa que la definición de un paso debe ser suficientementeclara, para que una persona pueda entenderla y realizarla. Si bien no se puede dar un criterio determinístico para decidir si un paso está bien definido, debemos apelar al sentido común para decidir que un paso está especificado sin ambigüedades.
▪ 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 unprograma 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!")
Luego, un ordenador o computadora está, desde que se enciende hasta que se apaga totalmente, ejecutando un algoritmo. Por lo general, estosalgoritmos, escritos para que los entienda una máquina, terminan siendo vagos y confusos para la mayoría de quienes no han estudiado programación. Una máquina 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 dirección de memoria eax el número 0x23afb31),aunque nosotros no. Un ordenador es solo un circuito electrónico, no funciona a base de magia ni nada por el estilo.
Debido a lo dificil que es escribir en lenguaje máquina, e incluso en ensamblador, se crearon diferentes lenguajes de programación, más o menos parecidos al inglés actual y a cómo se redacta un algoritmo. Estos lenguajes proveen de cosas tan complejas para una máquina comolos bucles for. Los compiladores se encargan de traducir esos ficheros al lenguaje ensamblador que corresponda, el ensamblador de traducirlos a lenguaje máquina y el enlazador de juntar todo ese código máquina en un solo archivo, el programa. Y el microprocesador, se encarga de ir encendiendo o apagando transistores según lo que le diga el código máquina. Es facil entender el lenguaje de altonivel en comparacion al lenguaje maquina pero de la evolucion surgieron.
Tomando en cuenta el lenguaje de maquina, cada tipo de microprocesador contiene un conjunto de instrucciones que realizan ciertas operaciones sobre una o más palabras de bits; las instrucciones van también codificadas en bits. No queremos hacer aquí una discusión sobre arquitectura de ordenadores, por lo que con estodebe valer por ahora.
Se entiende que escribir sólo con dos teclas, el 0 y el 1, es incómodo. Históricamente, a la hora de diseñar un algoritmo para que el ordenador ejecutara, se escribía mediante unas etiquetas mnemotécnicas; éste fue el origen del lenguaje ensamblador. Por ejemplo quizás en una cierta arquitectura la instrucción de borrado de memoria (Memory Clear, en inglés) correspondaal código 010. Pronto surgieron programas que leían, siguiendo el ejemplo, MC, y lo sustituían por 010.
El código máquina tenía dos grandes inconvenientes para los programadores:
- El primero es que se trata de unas instrucciones difíciles de recordar ya que no guardan relación con la operación que se está realizando.
- El segundo inconveniente es que puede haber, y de hecho hay,...
Regístrate para leer el documento completo.