Documente Academic
Documente Profesional
Documente Cultură
Con la llegada de las computadoras desaparecen las secuencias de posiciones de llaves mecnicas que deban desconectarse para obtener una accin determinada, una clave conectada era un 1 y una llave desconectada era un 0. Una sucesin de llaves en cualquiera de sus dos posiciones de ina una secuencia de ceros y unos !por ejemplo" 0100011010011101...# que vena a representar una instruccin o un conjunto de instrucciones !programa# para el ordenador !o computador# en el que se estaba trabajando. $ esta primera orma de especi icar programas para una computadora se la denomina lenguaje mquina o cdigo mquina. La necesidad de recordar secuencias de programacin para las acciones usuales llev a denominarlas con nombres ciles de memori%ar y asociar" $&& !sumar#, 'U( !restar#, )UL !multiplicar#, C$LL !ejecutar subrutina#, etc. $ esta secuencia de posiciones se le denomin *instrucciones*, y a este conjunto de instrucciones se le llam lenguaje ensamblador. +osteriormente aparecieron di erentes lenguajes de programacin, los cuales reciben su denominacin porque tienen una estructura sintctica similar a los lenguajes escritos por los ,umanos.
Concepto
Un lenguaje de programacin es un lenguaje que puede ser utili%ado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de smbolos y reglas sintcticas y semnticas que de inen su estructura y el signi icado de sus elementos y e-presiones. $unque muc,as veces se usa lenguaje de programacin y lenguaje in ormtico como si uesen sinnimos, no tiene por qu. ser as, ya que los lenguajes in ormticos engloban a los lenguajes de programacin y a otros ms, como, por ejemplo, el /0)L !lenguaje para el marcado de pginas 1eb#. Un lenguaje de programacin permite a uno o ms programadores especi icar de manera precisa" sobre qu. datos una computadora debe operar, cmo deben ser estos almacenados, transmitidos y qu. acciones debe tomar bajo una variada gama de circunstancias. 0odo esto, a trav.s de un lenguaje que intenta estar relativamente pr-imo al lenguaje ,umano o natural, tal como sucede con el lenguaje L.-ico. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador puedan tener un conjunto com2n de instrucciones que puedan ser comprendidas entre ellos para reali%ar la construccin del programa de orma colaborativa. Los procesadores usados en las computadoras son capaces de entender y actuar seg2n lo indican programas escritos en un lenguaje ijo llamado lenguaje de mquina. 0odo programa escrito en otro lenguaje puede ser ejecutado de dos maneras"
)ediante un programa que va adaptando las instrucciones con orme son encontradas. $ este proceso se lo llama interpretar y a los programas que lo ,acen se los conoce como int.rpretes. 0raduciendo este programa al programa equivalente escrito en lenguaje de mquina. $ ese proceso se lo llama compilar y al traductor se lo conoce como compilador.
Los lenguajes de programacin se determinan seg2n el nivel de abstraccin, 'eg2n la orma de ejecucin y 'eg2n el paradigma de programacin que poseen cada uno de ellos y esos pueden ser"
Lenguajes interpretados
'e puede tambi.n utili%ar una alternativa di erente de los compiladores para traducir lenguajes de alto nivel. 3n ve% de traducir el programa uente y grabar en orma permanente el cdigo objeto que se produce durante la corrida de compilacin para utili%arlo en una corrida de produccin utura, el programador slo carga el programa uente en la computadora junto con los datos que se van a procesar. $ continuacin, un programa int.rprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa uente en lenguaje de mquina con orme vaya siendo necesario durante el proceso de los datos. 7o se graba el cdigo objeto para utili%arlo posteriormente.
La siguiente ve% que se utilice una instruccin, se le debe interpretar otra ve% y traducir a lenguaje mquina. +or ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada ve% que se ejecute el ciclo, lo cual ,ace que el programa sea ms lento en tiempo de ejecucin !porque se va revisando el cdigo en tiempo de ejecucin# pero ms rpido en tiempo de dise=o !porque no se tiene que estar compilando a cada momento el cdigo completo#. 3l int.rprete elimina la necesidad de reali%ar una corrida de compilacin despu.s de cada modi icacin del programa cuando se quiere agregar unciones o corregir errores> pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con muc,a mayor rapide% que uno que se debe interpretar a cada paso durante una corrida de produccin por ejemplo ?0@ABCDED?EF1?01@BD
+rogramacin
'e conoce como programacin de computadores a la implementacin de un algoritmo en un determinado lenguaje de programacin, con ormando un programa. )ientras que un algoritmo se ejecuta en una mquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una mquina real, que s tiene esas limitaciones. 3l lenguaje de programacin puede ser de alto nivel, medio nivel o bajo nivel, en uncin del grado de abstraccin.
+rogramas y algoritmos
Un algoritmo es una secuencia no ambigua, inita y ordenada de instrucciones que ,an de seguirse para resolver un problema. Un programa normalmente implementa !traduce a un lenguaje de programacin concreto# un algoritmo. 7tese que es la secuencia de instrucciones en s la que debe ser inita, no el n2mero de pasos reali%ados como la ejecucin de ellas. Los programas suelen subdividirse en partes menores !mdulos#, de modo que la complejidad algortmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. 'eg2n 7iIlaus Jirt, un programa est ormado por algoritmos y estructura de datos.
'e ,an propuesto diversas t.cnicas de programacin, cuyo objetivo es mejorar tanto el proceso de creacin de so t1are como su mantenimiento. 3ntre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos.
Compilacin
3l programa escrito en un lenguaje de programacin !comprensible por el ser ,umano, aunque se suelen corresponder con lenguajes ormales descritos por gramticas independientes del conte-to# no es inmediatamente ejecutado en una computadora. La opcin ms com2n es compilar el programa, aunque tambi.n puede ser ejecutado mediante un int.rprete in ormtico 3l cdigo uente del programa se debe someter a un proceso de trans ormacin para convertirse en lenguaje mquina, interpretable por el procesador. $ este proceso se le llama compilacin. 7ormalmente la creacin de un programa ejecutable !un tpico.e-e para )icroso t Jindo1s# conlleva dos pasos. 3l primer paso se llama compilacin !propiamente dic,o# y traduce el cdigo uente escrito en un lenguaje de programacin almacenado en un arc,ivo a cdigo en bajo nivel, !normalmente en cdigo objeto no directamente al lenguaje mquina#. 3l segundo paso se llama enla%ado !del ingl.s link o linker# se junta el cdigo de bajo nivel generado de todos los ic,eros que se ,an mandado compilar y se a=ade el cdigo de las unciones que ,ay en las bibliotecas del compilador para que el ejecutable pueda comunicarse con el sistemas operativo y traduce el cdigo objeto a cdigo mquina. 3stos dos pasos se pueden mandar ,acer por separado, almacenando el resultado de la ase de compilacin en arc,ivos objetos !un tpico.obj para )icroso t Jindo1s,.o para Uni-#, para enla%arlos posteriormente, o crear directamente el ejecutable con lo que la ase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes !generalmente C, CGG y $sm#, que se podran compilar de orma independiente y enla%ar juntas para ormar un 2nico ejecutable.
F. 8eali%ar el anlisis de los requisitos del programa. &ebe quedar claro cmo debe reali%ar el programa las cosas que debe ,acer. Las pruebas que comprueben la valide% del programa se pueden especi icar en esta ase. D. &ise=ar la arquitectura del programa. 'e debe descomponer el programa en partes de complejidad abordable. @. 4mplementar el programa. Consiste en reali%ar un dise=o detallado, especi icando completamente todo el uncionamiento del programa, tras lo cual la codi icacin debera resultar inmediata. E. 4mplantar !instalar# el programa. Consiste en poner el programa en uncionamiento junto con los componentes que pueda necesitar !bases de datos, redes de comunicaciones, etc.# La 4ngeniera del 'o t1are se centra en los pasos de plani icacin y dise=o del programa, mientras que antiguamente !programacin artesanal# la reali%acin de un programa consista 2nicamente en escribir el cdigo.
6bjetivos de la programacin
La programacin de ordenadores debe perseguir tres objetivos undamentales"
Correccin" un programa es correcto si ,ace lo que debe ,acer. +ara determinar si un programa ,ace lo que debe es muy importante especi icar claramente qu. debe ,acer el programa antes de desarrollarlo y una ve% acabado compararlo con lo que realmente ,ace. Claridad" es muy importante que el programa sea lo ms claro y legible posible para mejorar el mantenimiento del so t1are. Cuando se acaba de escribir el cdigo del programa, se deben buscar errores y corregirlos. )s concretamente, cuando el programa est concluido, es necesario ,acerle ampliaciones o modi icaciones, seg2n la demanda de los usuarios, esta labor puede ser llevada acabo por el mismo programador que implement el programa o por otros. 3 iciencia" debe consumir la menor cantidad de recursos posible. 7ormalmente al ,ablar de e iciencia se suele ,acer re erencia al consumo de tiempo yKo memoria.
La e iciencia y la claridad de un programa pueden ser objetivos contrapuestos" se puede conseguir mayor claridad sacri icando parte de la e iciencia o viceversa. +ero ,ay que tener en cuenta que el tiempo del programador es caro, y que ,oy en da el precio de los ordenadores es ra%onable y cada ve% son ms baratos.
Un ordenador o computadora est, desde que se enciende ,asta que se apaga totalmente, ejecutando un algoritmo. +or lo general, estos algoritmos son vagos y con usos para que los entienda una mquina. Una mquina no puede entender *escribe /ola )undoL* porque no sabe lo que es *escribe* ni lo que es una letra o un espacio, ni lo que es una pantalla. 3n cambio, puede entender *mov ea-, 0-?Fa bF1* !escribir en la direccin de memoria ea- el n2mero 0-?Fa bF1#, aunque nosotros no. Un ordenador es solo un circuito electrnico, no unciona a base de magia ni nada por el estilo. &ebido a lo di icil que es escribir en lenguaje mquina, e incluso en ensamblador, se crearon di erentes lenguajes de programacin, ms o menos parecidos al ingl.s actual y a cmo se redacta un algoritmo. 3stos lenguajes proveen de cosas tan complejas para una mquina como los bucles or. Los compiladores se encargan de traducir esos ic,eros al lenguaje ensamblador que corresponda, el ensamblador de traducirlos a lenguaje mquina y el enla%ador de juntar todo ese cdigo mquina en un solo arc,ivo, el programa. M el microprocesador, de ir encendiendo o apagando transistores seg2n lo que le diga el cdigo mquina.
Lenguaje ensamblador
3l cdigo mquina tena dos grandes inconvenientes para los programadores" Q 3l primero es que se trata de unas instrucciones di ciles de recordar ya que no guardan relacin con la operacin que se est reali%ando. Q 3l segundo inconveniente es que puede y de ,ec,o ,ay di erencias entre las instrucciones de un procesador a otro. 0odo esto ,a llevado a *poner nombre* a las instrucciones de cdigo mquina de manera que a una secuencia concreta de bits que reali%a una operacin se le pone un nombre sencillo que identi ique la operacin. 3sta 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 reali%ado por un sencillo programa.
Traductores e intrpretes
0ras la escritura del algoritmo, un compilador o un int.rprete !otros programas# trans ormarn el te-to en cdigo mquina que el procesador es capa% de ejecutar. 0oda esta abstraccin permite resolver problemas alejados de sumar n2meros binarios, como pueden ser la consulta de esta misma enciclopedia o jugar a un videojuego en F&.
Compilar cada uno de los ic,eros de cdigo. 3nsamblarlos en ic,eros objeto. 3nla%ar los ic,eros objeto. <olverlos a ensamblar.
0odo eso no es gran derroc,e de recursos para un ordenador medio actualmente, pero dura sus 10 o 1@ segundos. 3n cambio, con un lenguaje interpretado, el programa int.rprete anali%a el ic,ero de cdigo y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. 6tra de las ventajas de los lenguajes interpretados es que son multiplata orma" un programa en +erl, por ejemplo, no debe ser compilado dos veces !una para Uni- y otra para Jindo1s#. Con que ,aya di erentes versiones del int.rprete en cada uno de esos ordenadores, espec icamente compilados para ellos, basta. 'us desventajas"
Consume muc,os recursos de memoria, sobre todo 8$). 'e depende del int.rprete" si no tienes instalado el int.rprete que corresponda, no podrs ejecutar el programa.
3n programas ms grandes, esto es muc,simo ms lioso. $,ora conocemos la ejecucin de los algoritmos. 'in embargo, un programa se compone tanto de algoritmos como de una estructura de datos sobre los que operar.
tal modo que el subprograma que captura los errores genere un registro de datos que describa el error generado yKo en qu. subprograma se gener el error para posteriormente corregirlo. +ara acilitar la correccin de estos errores se ,ace uso de los comentarios agregados en el cdigo uente.
/e aqu nuestro programa. Como cabe pensar, un procesador no tiene la instruccin *4mprime por pantalla*> esto es una llamada a otra porcin de cdigo que, gracias a la abstraccin, nosotros o no ,emos escrito, o ,emos escrito una sla ve%> a partir de lo cual podemos imprimir todo el te-to que queramos en la pantalla. Las posiciones de memoria $ y ( son <ariables. 'i queremos leerlas o escribirlas, podemos ,acerlo. 0picamente, e-istirn datos que no pensamos modi icar> no querremos que el usuario tenga que introducirlos cada ve%, pues son de naturale%a ms constante que otros !como puede ser el valor +i para calcular el permetro o rea de un crculo#. +ara evitar modi icarlos por error, podemos pedir al sistema variables especiales, que no puedan ser reescritas. 'on las Constantes. Un ejemplo"
(omentario) *ste programa calcula el rea de un c+rculo
(onstante ,' - 3.1415/265 0ariable # 0ariable #esultado $eer n%mero y guardar en # (alcular ,' 1 2# 1 #3 y guardar en #esultado 'mprimir #esultado
3l uso de variables y constantes se asemeja al uso que se les da en el lgebra o en otras ramas matemticas. 7tese tambi.n la clara separacin entre estructuras de datos y algoritmos. 'eg2n los lenguajes, esto puede ser o no obligatorio, pero es recomedable en aras de una mayor claridad del trabajo.
#omentarios
3l 2til concepto del comentario" son lneas de te-to que el compilador o el int.rprete no consideran como parte del cdigo, con lo cual no estn sujetas a restricciones de sinta-is y sirven para aclarar partes de cdigo en posteriores lecturas y, en general, para anotar cualquier cosa que el programador considere oportuno. Uno como programador debe tener como prioridad documentar nuestro cdigo uente ya que al momento de depurar nos a,orrar muc,o tiempo de analisis para su correccin o estudio. Los programadores pro esionales tienen la buena costumbre de documentar sus programas con encabe%ados de te-to!encabe%ados de comentarios# en donde describen la uncin que va a reali%ar dic,o programa, la ec,a de creacin, el nombre del autor y en algunos casos las ec,as de revisin y el nombre del revisor. +or lo general algunos programas requieren ,acer uso de llamadas a subprogramas dentro de una misma aplicacin por lo que cada subprograma debera estar documentado, describiendo la uncin que reali%an cada uno de estos subprogramas dentro de la aplicacin.
'4 *$&*
9ale 58 no 9ale 58
6tra sentencia de control son las de tipo 'J40C/ C$'3. 3n este tipo de sentencias se especi ica la variable a comparar y una lista de valores con lo que comparar. $quel que sea el verdadero, se ejecutar"
&:'6(7 ( &* 5) ,#'N6 8 ( &* 1) ,#'N6 8
9ale 58 9ale 18
6tras ,erramientas imprescindibles del control de la ejecucin de nuestro cdigo son los (UCL3' o C4CL6'. Consisten en un m.todo que permite repetir un tro%o de cdigo varias veces. /ay bsicamente dos tipos" Q (ucle 568" 3l bucle 568 consiste en una sentencia que engloba un grupo de instrucciones y tiene una variable cuyo valor se va modi icando en cada vuelta.
4;# -5 6; 15 Especificamos en este caso que A variar desde 0 hasta 10, con lo que repetiremos el bucle ,#'N6 8*stamos en el bucle8 10 veces. N*<6 Con esto cerramos el bucle e indicamos el final del bloque de instrucciones que se repiten
Q (ucle J/4L3" 3l bucle J/4L3 consiste en un bucle en el que el cdigo se repite ,asta que se cumpla alguna condicin booleana !es decir, una e-presin que d. como resultado verdadero o also#. /ay variaciones, como el 83+3$0...U704L, que se di erencia en el momento de comprobar si se ,ace verdadera o no la condicin.
:7'$* =>2"123 ?; aqu se comprueba - @1 #$% ?;N* el bucle el cdi"o. Aqu especificamos la expresin que evaluamos !ncrementamos el valor de A hasta que sea i"ual a Como en el &'(, necesitamos especificar donde acaba
structuras de datos
creo a como entero
creo b como entero creo suma como entero a9? b91 suma 9 a G b imprimir suma 3structura de una aplicacin Cualquier programa que se realice debe de llevar una estructura para disminuir la tarea de depuracin ya que esta labor lleva ms tiempo del estimado. 'i eres principiante en el rea de programacin debes de inir el programa a reali%ar, documentar cada uno de los pasos que reali%as en tu programa, debes de considerar alg2n metodo de captura de errores, etc. 3n este subcaptulo abarcaremos el cmo estructurar una aplicacin para e icientar o disminuir el tiempo en depuracin, as como locali%ar ms rpidamente los errores. +uedes buscar en 4nternet el concepto *pseudocdigo*, que no es ms que la escritura de un algoritmo en un lenguaje ms cercano al natural. 3s decir, la orden en lenguaje Havascript que repetira el proceso de quitar suciedad a=adiendo agua y jabn mientras se rota sera la siguiente"
Aunction Arotar2cuanto3B 9ar 9eces - 5C Aor 29eces - 5C suciedad - 5! 9eces - cuanto C 9eces@@3B suciedad - suciedad D 2agua @ jabn3C E E
3n primer lugar, es muy recomendable ,acer un esquema sobre el papel con toda clase de datos que se vayan a utili%ar.
+rograma !computacin#
Un programa, o tambin llamado programa informtico, programa de computacin o programa de ordenador, es simplemente un conjunto de instrucciones para una computadora.1 Las computadoras necesitan de los programas para funcionar, un programa no !ace nada a menos "ue sus instrucciones sean ejecutadas por el procesador.? Un programa se puede referir tanto a un programa ejecutable como a su cdigo uente, el cual es trans ormado en un ejecutable cuando es compilado.
Teneralmente el cdigo uente de los programas es escrito por pro esionales conocidos como programadores. 3l cdigo uente es escrito en un lenguaje de programacin que sigue uno de los siguientes dos paradigmas" imperativo o declarativo. 3l cdigo uente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta el programa instruccin por instruccin, ,asta que el programa termina.
&e acuerdo a sus unciones, los programas pueden ser clasi icados en so t1are de sistema y so t1are de aplicacin. +ueden ejecutarse muc,os programas de orma simultnea en un mismo ordenador, a lo cual se le llama multitarea.
+rogramacin
La programacin es un proceso el cual consiste en escribir o editar el cdigo uente. 3ditar el cdigo uente signi ica poner a prueba, anali%ar y rede inir. La persona que tiene la ,abilidad para programar se le llama programador o desarrollador de so t1are. Usualmente, al gran proceso de programacin se le llama desarrollo de soft$are. 3l t.rmino ingenier%a de soft$are se est volviendo popular, re iri.ndose a la ingeniera como disciplina.
lista de sus subQobjetivos, etc.tera. 'i al tratar de buscar una solucin, una ruta de subQ objetivos alla, entonces tal subQobjetivo se descarta y sistemticamente se prueba otra ruta. La orma en la cual es programa se crea puede ser por medio de te-to o de orma visual. 3n un lenguaje de programacin visual, los elementos son manipulados gr icamente en ve% de especi icarse por medio de te-to.
$lgunos programas estn empotrados en el ,ard1are. Una computadora con arquitectura de programas almacenados requiere un programa inicial almacenado en su 86) para arrancar. 3l proceso de arranque es para identi icar e iniciali%ar todos los aspectos del sistema, desde los registros del procesador, controladores de dispositivos ,asta el contenido de la memoria 8$).E 'eguido del proceso de iniciali%acin, este programa inicial carga al sistema operativo e iniciali%a al contador de programa para empe%ar las operaciones normales. 4ndependiente de la computadora, un dispositivo de ,ard1are podra tener irm1are empotrado para el control de sus operaciones. 3l irm1are se utili%a cuando se espera que el programa cambie en raras ocasiones o nunca, o cuando el programa no debe perderse cuando ,aya ausencia de energa. A
Los programas ,istoricamente se cargaron manualmente al procesador central mediante interruptores. Una instruccin era representada por una con iguracin de estado abierto o
cerrado de los interruptores. &espu.s de establecer la con iguracin, se ejecutaba un botn de ejecucin. 3ste proceso era repetitivo. 0ambi.n, ,istoricamente los programas se cargaban manualmente mediante una cinta de papel o tarjetas per oradas. &espu.s de que el programa se cargaba, la direccin de inicio se estableca mediante interruptores y el botn de ejecucin se presionaba.B
jecucin simultnea
)uc,os programas pueden correr simultneamente en la misma computadora, a lo cual se le conoce como multitarea y puede lograrse a trav.s de mecanismos de so t1are o de ,ard1are. Los sistemas operativos modernos pueden correr varios programas a trav.s del plani icador de procesos U un mecanismo de so t1are para conmutar con recuencia la cantidad de procesos del procesador de modo que los usuarios puedan interactuar con cada programa mientras estos estn corriendo.C 0ambi.n se puede lograr la multitarea por medio del ,ard1are> las computadoras modernas que usan varios procesadores o procesadores con varios n2cleos pueden correr muc,os programas a la ve%. 10
Categoras uncionales
Los programas se pueden categori%ar seg2n lneas uncionales. 3stas categoras uncionales son so t1are de sistema y so t1are de aplicacin. 3l so t1are de sistema incluye al sistema operativo el cual acopla el ,ard1are con el so t1are de aplicacin.11 3l propsito del sistema operativo es proveer un ambiente en el cual el so t1are de aplicacin se ejecuta de una manera conveniente y e iciente. 11 $dems del sistema operativo, el so t1are de sistema incluye programas utilitarios que ayudan a manejar y con igurar la computadora. 'i un programa no es so t1are de sistema entonces es so t1are de aplicacin. 3l middle1are tambi.n es un so t1are de aplicacin que acopla el so t1are de sistema con la inter a% de usuario. 0ambi.n son so t1are de aplicacin los programas
utilitarios que ayudan a los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.
Lenguaje ensamblador
Lenguaje de mquina del 4ntel B0BB. 3l cdigo de mquina se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el cdigo, en a%ul.
3l lenguaje ensamblador es un tipo de lenguaje de bajo nivel utili%ado para escribir programas in ormticos, y constituye la representacin ms directa del cdigo mquina espec ico para cada arquitectura de computadoras legible por un programador. 5ue usado ampliamente en el pasado para el desarrollo de so t1are, pero actualmente slo se utili%a en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del ,ard1are o se pretenden rendimientos inusuales de los equipos.
$ pesar de perder rendimiento en un proceso de compilacin, en la actualidad la mayora de las computadoras son su icientemente rpidas. 3l lenguaje ensamblador no es portable. +rogramar en lenguaje ensamblador lleva muc,o tiempo. Los programas ,ec,os en lenguaje ensamblador son generalmente ms rpdos. $l programar cuidadosamente en lenguaje ensamblador se pueden crear programas de @ a 10 veces ms rpidos que con lenguajes de alto nivel. Los programas ,ec,os en lenguaje ensamblador generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contraparte en lenguaje de alto nivel. Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles de ormar en un lenguaje de alto nivel.
3nsambladores
Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a cdigos operativos, e interpretando los nombres simblicos para direcciones de memoria y otras entidades. 3l uso de re erencias simblicas es una caracterstica bsica de los
ensambladores, evitando tediosos clculos y direccionamiento manual despu.s de cada modi icacin del programa. La mayora de los ensambladores tambi.n incluyen acilidades para crear macros, a in de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utili%ar subrutinas.1 Los ensambladores son por lo general ms ciles de programar que los compiladores de lenguajes de alto nivel, y ,an estado disponibles desde la d.cada de 1C@0. Los ensambladores modernos, especialmente para arquitecturas basadas en 84'C, como por ejemplo )4+', '+$8C y +$Q84'C optimi%an las instrucciones para e-plotar al m-imo la e iciencia de segmentacin? del C+U. Los ensambladores de alto nivel o recen posibilidades de abstraccin que incluyen"
Control avan%ado de estructuras. +rocedimientos de alto nivel, declaracin de unciones. 0ipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos. 'o isticado procesamiento de macros.
Lenguaje
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al lujo de rdenes ejecutables que pueden ser cargadas en la memoria de una computadora. +or ejemplo, un procesador -BE puede ejecutar la siguiente instruccin binaria como se e-presa en cdigo de mquina"
3l mnemnico *mov* es un cdigo de operacin u *opcode*, elegido por los dise=adores de la coleccin de instrucciones para abreviar *move* !mover#. 3l opcode es seguido por una lista de argumentos o parmetros, completando una instruccin de ensamblador tpica. La trans ormacin del lenguaje ensamblador en cdigo mquina la reali%a un programa ensamblador, y la traduccin inversa la puede e ectuar un desensamblador. $ di erencia de los lenguajes de alto nivel, aqu ,ay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de mquina. 'in embargo, en algunos casos, un ensamblador puede proveer *pseudo instrucciones* que se e-panden en un cdigo de mquina ms e-tenso a in de proveer la uncionalidad necesaria. +or ejemplo,
para un cdigo mquina condicional como *si V mayor o igual que* , un ensamblador puede utili%ar una pseudoinstruccin al grupo *,aga si menor que* , y *si 9 0* sobre el resultado de la condicin anterior. Los ensambladores ms completos tambi.n proveen un rico lenguaje de macros que se utili%a para generar cdigo ms complejo y secuencias de datos. Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador. Los ordenadores di ieren en el tipo y n2mero de operaciones que soportan> tambi.n pueden tener di erente cantidad de registros, y distinta representacin de los tipos de datos en memoria. $unque la mayora de las computadoras son capaces de cumplir esencialmente las mismas unciones, la orma en que lo ,acen di iere, y los respectivos lenguajes ensambladores re lejan tal di erencia. +ueden e-istir m2ltiples conjuntos de mnemnicos o sint-is de lenguaje ensamblador para un mismo conjunto de instrucciones, instanciados tpicamente en di erentes programas ensamblador. 3n estos casos, la alternativa ms popular es la provista por los abricantes, y usada en los manuales del programa.
8egistros espec icos para operaciones aritm.ticas, direccionamiento o control de unciones. +osiciones de memoria espec icas !offset#. )odos de direccionamiento usados para interpretar operandos.
Las operaciones ms complejas se reali%an combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de lujo. Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluye"
mover llenar un registro con un valor constante mover datos de una posicin de memoria a un registro o viceversa escribir y leer datos de dispositivos computar sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro reali%ar operaciones binarias, incluyendo operaciones lgicas !$7&K68KV68K760# comparar valores entre registros !mayor, menor, igual# a ectar el lujo del programa saltar a otra posicin en el programa y ejecutar instrucciones all saltar si se cumplen ciertas condiciones !45#
saltar a otra posicin, pero guardar el punto de salida para retornar !C$LL, llamada a subrutinas#
$lgunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instruccin compleja ,ace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo"
salvar varios registros en la pila de una sola ve% mover grandes bloques de memoria operaciones aritm.ticas complejas o de punto lotante !seno, coseno, ra% cuadrada #
3l nivel de lenguaje ensamblador tiene aspectos importantes de los niveles de microarquitectura, en los cuales se encuentra !4'$ y sistema operativo# estos dos se utili%an para la traduccin en lugar de la interpretacin. $lgunas caractersticas del lenguaje se describen a continuacin Los programas que sirven para traducir alg2n programa para el usuario se llama traductores, el lenguaje en que esta escrito el programa original se llama lenguaje uente, el lenguaje original que sea modi icado se llama lenguaje objeto. 'e usa la traduccin cuando se cuenta con un procesador !ya sea ,ard1are o un interprete# para el lenguaje objeto pero no para el lenguaje uente, 'i la traduccin se reali%a correctamente, la ejecucin del programa traducido dar e-actamente los mismos resultados que ,abra dado la ejecucin del programa uente. /ay dos di erencias entre traduccin e interpretacin, en la traduccin no se ejecuta directamente el programa original, en el lenguaje uente se convierte en un programa equivalente llamado programa objeto o programa binario ejecutable y este unciona solo cuando se ,a acabado la traduccin. 3l cdigo mquina, un simple patrn de bits, es ,ec,o legible reempla%ando valores crudos por smbolos denominados mnemnicos. 'e invent para acilitar la tarea de los primeros programadores que ,asta ese momento tenan que escribir directamente en cdigo binario. 4nicialmente el cdigo de ceros y unos !el programa# deba introducirse en una tarjeta per orada. La posicin ocupada por cada punto equivala a un *1* o a un *0* seg2n ,ubiera o no una per oracin. Lo cual supona una orma casi id.ntica en la que ,oy se escriben los datos binaros en soportes tales como los C&s y &<&s. )ientras que una computadora reconoce la instruccin de mquina 4$QF?
15115555 51155551
para los programadores de microprocesadores -BE es muc,o ms cil reconocer dic,a instruccin empleando lenguaje ensamblador "
mo9b 5G61!Ial
!que signi ica mover el valor ,e-adecimal E1 !CA decimal# al registro RalR.#
Cada instruccin de la mquina se trans orma en una 2nica instruccin en cdigo simblico. +ero adems, para mejorar la legibilidad del programa, el cdigo simblico introduce instrucciones adicionales, que no corresponden a ninguna instruccin de la mquina y que proporcionan in ormacin. 'e llaman *pseudoinstrucciones*. 3l cdigo simblico puede parecer de di cil acceso, pero es ms cil de recordar e interpretar que el binario o el ,e-adecimal. Los lenguajes simblicos no resuelven de initivamente el problema de cmo programar un ordenador de la manera ms sencilla posible. +ara utili%arlos, ,ay que conocer a ondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muc,as cosas ms. $dems, el lenguaje ensamblador est muy ligado al microprocesador para que sea posible escribir programas independientes de la mquina en que van a ejecutarse. 3ste cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es preciso traducirlo previamente. +ero la traduccin es un proceso mecnico y repetitivo, que se presta a su reali%acin por un programa de ordenador. Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores !*assembler*, en ingl.s#, porque son capaces de ensamblar el programa traducido a partir de varias pie%as, procedimientos o subrutinas a cdigo binario !*1* y *0*# que entiende el procesador.