Está en la página 1de 52

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

INSTITUTO TECNOLOGICO DE TAPACHULA

LENGUAJE ENSAMBLADOR

LIC. NICOLAS CABRERA HIDALGO

11510226 - SWITMY MAYUMI ALVAREZ RUIZ

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Los ensambladores son programas que procesan los enunciados del programa origen en lenguaje ensamblador y los traducen en archivos en lenguaje mquina que son ejecutados por un microprocesador o un microcontrolador. Los ensambladores permiten que los programas origen se escriban y se editen en una computadora para generar un cdigo ejecutable en otra computadora. El archivo en lenguaje objeto ejecutable resultante se carga y se ejecuta en el sistema destino.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Estos lenguajes son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes mquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la mquina (las instrucciones no dependen del diseo del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras. Ventajas: El tiempo de formacin de los programadores es relativamente corto comparado con otros lenguajes. La escritura de programas se basa en reglas sintcticas similares a los lenguajes humanos. Nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas son ms fciles. Reduccin del coste de los programas. Transportabilidad.

Desventajas: Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la mquina que se explotan mucho mejor en lenguajes mquina y ensambladores. Aumento de la ocupacin de memoria. El tiempo de ejecucin de los programas es mucho mayor.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Un lenguaje de alto nivel permite al programador escribir las instrucciones de un programautilizando palabras o expresiones sintcticas muy similares al ingls. Por ejemplo, en C se pueden usar palabras tales como: case, if, for, while, etc. para construir con ellas instrucciones como: if( numero > 0 ) printf( "El nmero es positivo" ) que traducido al castellano viene a decir que: si numero es mayor que cero, entonces, escribir por pantalla el mensaje: "El nmero es positivo". sta es la razn por la que a estos lenguajes se les considera de alto nivel, porque se pueden utilizar palabras de muy fcil comprensin para el programador. En contraposicin, los lenguajes de bajo nivel son aquellos que estn ms cerca del "entendimiento" de la mquina. Otros lenguajes de alto nivel son: Ada, BASIC, COBOL, FORTRAN, Pascal, etc. Otra carcterstica importante de los lenguajes de alto nivel es que, para la mayora de las instrucciones de estos lenguajes, se necesitaran varias instrucciones en un lenguaje ensamblador para indicar lo mismo. De igual forma que, la mayora de las instrucciones de un lenguaje ensamblador, tambin agrupa a varias instrucciones de un lenguaje mquina.

Otra caracterstica importante de los lenguajes de alto nivel es que, para la mayora de las instrucciones de estos lenguajes, se necesitaran varias instrucciones en un lenguaje ensamblador para indicar lo mismo. De igual forma que, la mayora de las instrucciones de un lenguaje ensamblador, tambin agrupa a varias instrucciones de un lenguaje de mquina.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

VISUALES La programacin visual brinda los conocimientos necesarios para disear y desarrollar aplicaciones con un entorno visual amigable y fcil de utilizar para el usuario. Los lenguajes de programacin visual tienden a facilitar la tarea de los programadores, dado que con los primeros lenguajes de programacin crear una ventana era tarea de meses de desarrollo y de un equipo de trabajo.

Programacin Orientada a Objetos

Define los programas en trminos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o mtodos) e identidad (propiedad del objeto que lo diferencia del resto). La programacin orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. La tcnica de programacin orientada a objetos, se basa en fundamentos de diseo, tcnicas y metodologas unificadas (UML). Lenguajes visuales como Visual Basic.Net, Borland Delphi, incorporan una completa implementacin de la programacin orientada a objetos y permiten aprovechar al mximo toda la funcionalidad que ofrecen estos lenguajes para el desarrollo de aplicaciones de gestin.

Visual basic.NET Los compiladores de Visual Basic generan cdigo que requiere una o ms libreras de enlace dinmico para que funcione, conocidas comnmente como DLL (sigla en ingls de dynamic-link library); en algunos casos reside en el archivo llamado MSVBVMxy.DLL (siglas de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la versin) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime X.XX"). Estas bibliotecas DLL proveen las funciones bsicas implementadas en el lenguaje, conteniendo rutinas en cdigo ejecutable que son cargadas bajo demanda en tiempo de ejecucin. Adems de las esenciales, existe un gran nmero de bibliotecas del tipo DLL con variedad de funciones, tales como las que facilitan el acceso a la mayora de las funciones delsistema operativo o las que proveen medios para la integracin con otras aplicaciones. Dentro del mismo Entorno de desarrollo integrado (IDE) de Visual Basic se puede ejecutar el programa que est desarrollndose, es decir en modo intrprete (en realidad pseudo-compila el programa muy rpidamente y luego lo ejecuta, simulando la funcin de un intrprete puro). Desde ese entorno tambin se puede

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

generar el archivo en cdigo ejecutable (exe); ese programa as generado en disco puede luego ser ejecutado sin requerir del ambiente de programacin (incluso en modo stand alone), aunque s ser necesario que las libreras DLL requeridas por la aplicacin desarrollada se encuentren tambin instaladas en el sistema para posibilitar su ejecucin. El propio Visual Basic provee soporte para empaquetado y distribucin; es decir, permite generar un mdulo instalador que contiene al programa ejecutable y las bibliotecas DLL necesarias para su ejecucin. Con ese mdulo la aplicacin desarrollada se distribuye y puede ser instalada en cualquier equipo (que tenga un sistema operativo compatible). As como bibliotecas DLL, hay numerosas aplicaciones desarrolladas por terceros que permiten disponer de variadas y mltiples funciones, incluso mejoras para el propio Visual Basic; las hay tambin para el empaquetado y distribucin, y hasta para otorgar mayor funcionalidad al entorno de programacin (IDE).

Entorno de desarrollo Existe un nico entorno de desarrollo para Visual Basic, desarrollado por Microsoft: Microsoft Visual Basic x.0, correspondientes a versiones desde la 1.0 hasta la 6.0, (con respectivas diferencias entre versiones del lenguaje). El entorno de desarrollo es muy similar al de otros lenguajes. Realizando una instalacin tpica del producto, las caractersticas bsicas se presentan de la siguiente forma:

En la parte superior aparecen tres elementos, en este orden: la barra de ttulo donde figura el nombre del proyecto en curso y su estado (diseo o ejecucin); la barra de men con 13 opciones desplegables y una barra de herramientas; esta ltima se puede personalizar, posibilitando la inclusin de prcticamente la totalidad de los comandos del IDE. En la parte central, cubriendo la franja de mayor rea, se encuentra el espacio de trabajo. ste incluye y muestra las ventanas del proyecto, las vistas del cdigo fuente de los mdulos, los objetos y los controles que contienen las ventanas de la aplicacin y el panel de controles.

El panel de controles, que aunque es mvil normalmente est ubicado a la derecha, por defecto cuenta con los siguientes controles: PictureBox: Caja de imgenes Label: Etiqueta

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

TextBox: Caja de texto Frame: Marco CommandButton: Botn de comando CheckBox: Casilla de verificacin OptionButton: Botn de opcin ComboBox: Lista desplegable ListBox: Lista HScrollBar: Barra de desplazamiento horizontal VScrollBar: Barra de desplazamiento vertical Timer: Temporizador DriveListBox: Lista de unidades de disco DirListBox: Lista de directorios FileListBox: Lista de archivos Shape: Figura Line: Lnea Image: Imagen Data: Conexin a origen de datos OLE: Contenedor de documentos embebidos compatibles con Object Linking and Embedding

Adems de los listados, se pueden agregar todo tipo de controles de terceros, y hay una gran cantidad de ellos que se proveen con el propio Visual Basic 6.0. Los controles vienen embebidos dentro de archivos con extensin OCX.

Las ventanas de proyecto, aunque mviles, se encuentran en el panel lateral derecho y contienen dos vistas principales: El Explorador de proyectos, que muestra todos los elementos que componen el proyecto o grupos de proyectos (formularios, interfaz de controles, mdulos de cdigo, mdulos de clase, etc.) El Panel de propiedades, donde se muestran todos los atributos de los objetos, controles, formularios, informacin de mdulos clase, entre muchos otros. La Ventana inmediato, por defecto se encuentra en la parte inferior, aunque puede no estar visible (se presionan las teclas Ctrl+G, en ese caso, para mostrar la ventana). Esta ventana resulta una herramienta muy til a la hora de depurar el programa o bien para realizar pruebas rpidas, ya que permite imprimir mensajes de texto desde el cdigo y ejecutar sentencias ycomandos simples

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

inmediatamente (slo sentencias que se puedan escribir en una sola lnea). Por ejemplo, de la aplicacin en curso, se puede consultar el valor de una variable o llamar a un mtodo declarado en el mdulo que se est depurando. Se puede ejecutar cdigo "al vuelo", por ejemplo con sentencias como: ? sqr(2) siendo el signo ? un reemplazo natural del comando Print en Basic, al ejecutar la sentencia se mostrara por pantalla el valor de la raz cuadrada de 2. Tambin se pueden usar variables del propio programa, o sentencias de cdigo tales como: Msgbox "Prueba de cuadro de mensaje de error.", vbCritical, "Ttulo del mensaje" A la hora de la depuracin puede ser til para consultar el valor de variables del programa, o el cdigo de error como: ? Err.Number Borland Delphi Delphi, es un Lenguaje de Programacin Orientado a Objetos basado en Pascal, ms concretamente en ObjectPascal, un Pascal Orientado a Objetos (OO), completamente comprometido con el modelo de objetos, comparable a Java. En torno a l, Borland ha comercializado su entorno de desarrollo denominado Borland Delphi: un ambiente visual de desarrollo, similar al de VisualBasic de Microsoft. Delphi proporciona una jerarqua de muy extensa de Clases de Objetos reusables y extensibles, con recursos de computacin visuales y de procesamiento. La clase base de todo el rbol jerrquico de herencia es la clase TObject, que es la clase de la cual derivarn en resto de las que componen la estructura jerrquica de clases de Delphi. TObject ofrece la funcionalidad mnima exigible a un objeto de Delphi. En la clase TObject se definen el constructor Create, el destructor Destroy y el mtodo Free. Adems ofrece tipos de datos de lo ms variopintos, desde los tpicos datos numricos (enteros y reales) y cadenas de caracteres cortas, a otros no tan usuales como son las fechas y las horas, vectores abiertos, vectores dinmicos, clases para representacin de listas, streams para manejo de ficheros, etc.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Un proyecto de aplicacin en Delphi tiene la extensin dpr: Delphi Project. Delphi permite descomponer las aplicaciones en pequeas unidades o mdulos relativamente independientes, y todo ello ser integrado gracias al fichero de proyecto. Permite desarrollar rpidamente aplicaciones soportadas por Bases de Datos, mediante la inclusin de Clases de acceso a diversos sistemas de BD. Adems, ofrece clases para el desarrollo de aplicaciones en Internet soportadas por TCP/IP. WEB Actualmente existen diferentes lenguajes de programacin para desarrollar en la web, estos han ido surgiendo debido a las tendencias y necesidades de las plataformas. En el presente artculo pretende mostrar las ventajas y desventajas de los lenguajes ms conocidos. Desde los inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estticos. A medida que paso el tiempo, las tecnologas fueron desarrollndose y surgieron nuevos problemas a dar solucin. Esto dio lugar a desarrollar lenguajes de programacin para la web dinmicos, que permitieran interactuar con los usuarios y utilizaran sistemas de Bases de Datos. Lenguaje HTML Desde el surgimiento de internet se han publicado sitios web gracias al lenguaje HTML. Es un lenguaje esttico para el desarrollo de sitios web (acrnimo en ingls de HyperText Markup Language, en espaol Lenguaje de Marcas Hipertextuales). Desarrollado por el World Wide Web Consortium (W3C). Los archivos pueden tener las extensiones (htm, html).

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Ventajas:

Sencillo que permite describir hipertexto. Texto presentado de forma estructurada y agradable. No necesita de grandes conocimientos cuando se cuenta con un editor de pginas web o WYSIWYG. Archivos pequeos. Despliegue rpido. Lenguaje de fcil aprendizaje. Lo admiten todos los exploradores. Desventajas:

Lenguaje esttico. La interpretacin de cada navegador puede ser diferente. Guarda muchas etiquetas que pueden convertirse en basura y dificultan la correccin. El diseo es ms lento. Las etiquetas son muy limitadas.

Lenguaje Javascript Este es un lenguaje interpretado, no requiere compilacin. Fue creado por Brendan Eich en la empresa Netscape Communications. Utilizado principalmente

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

en pginas web. Es similar a Java, aunque no es un lenguaje orientado a objetos, el mismo no dispone de herencias. La mayora de los navegadores en sus ltimas versiones interpretan cdigo Javascript. El cdigo Javascript puede ser integrado dentro de nuestras pginas web. Para evitar incompatibilidades el World Wide Web Consortium (W3C) diseo un estndar denominado DOM (en ingls Document Object Model, en su traduccin al espaol Modelo de Objetos del Documento).

Ventajas:

Lenguaje de scripting seguro y fiable. Los script tienen capacidades limitadas, por razones de seguridad. El cdigo Javascript se ejecuta en el cliente.

Desventajas:

Cdigo visible por cualquier usuario. El cdigo debe descargarse completamente. Puede poner en riesgo la seguridad del sitio, con el actual problema llamado XSS (significa en ingls Cross Site Scripting renombrado a XSS por su similitud con las hojas de estilo CSS). Lenguaje PHP Es un lenguaje de programacin utilizado para la creacin de sitio web. PHP es un acrnimo recursivo que significa PHP Hypertext Pre-processor, (inicialmente se llam Personal Home Page). Surgi en 1995, desarrollado por PHP Group.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

PHP es un lenguaje de script interpretado en el lado del servidor utilizado para la generacin de pginas web dinmicas, embebidas en pginas HTML y ejecutadas en el servidor. PHP no necesita ser compilado para ejecutarse. Para su funcionamiento necesita tener instalado Apache o IIS con las libreras de PHP. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl con algunas caractersticas especficas. Los archivos cuentan con la extensin(php).

Ventajas:

Facil de aprender. Se caracteriza por ser un lenguaje muy rpido. Soporta en cierta medida la orientacin a objeto. Clases y herencia. Es un lenguaje multiplataforma: Linux, Windows, entre otros. Capacidad de conexin con la mayora de los manejadores de base de datos: MysSQL, PostgreSQL, Oracle, MS SQL Server, entre otras.

Capacidad de expandir su potencial utilizando mdulos. Posee documentacin en su pgina oficial la cual incluye descripcin y ejemplos de cada una de sus funciones.

Es libre, por lo que se presenta como una alternativa de fcil acceso para todos.

Incluye gran cantidad de funciones. No requiere definicin de tipos de variables ni manejo detallado del bajo nivel.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Desventajas:

Se necesita instalar un servidor web. Todo el trabajo lo realiza el servidor y no delega al cliente. Por tanto puede ser ms ineficiente a medida que las solicitudes aumenten de nmero.

La legibilidad del cdigo puede verse afectada al mezclar sentencias HTML y PHP.

La programacin orientada a objetos es an muy deficiente para aplicaciones grandes.

Dificulta la modularizacin. Dificulta la organizacin por capas de la aplicacin.

Seguridad: PHP es un poderoso lenguaje e intrprete, ya sea incluido como parte de un servidor web en forma de mdulo o ejecutado como un binario CGI separado, es capaz de acceder a archivos, ejecutar comandos y abrir conexiones de red en el servidor. Estas propiedades hacen que cualquier cosa que sea ejecutada en un servidor web sea insegura por naturaleza. PHP est diseado especficamente para ser un lenguaje ms seguro para escribir programas CGI que Perl o C, y con la seleccin correcta de opciones de configuracin en tiempos de compilacin y ejecucin, y siguiendo algunas prcticas correctas de programacin.

Lenguaje ASP
Es una tecnologa del lado de servidor desarrollada por Microsoft para el desarrollo de sitio web dinmicos. ASP significa en ingls (Active Server Pages),

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

fue liberado por Microsoft en 1996. Las pginas web desarrolladas bajo este lenguaje es necesario tener instalado Internet Information Server (IIS). ASP no necesita ser compilado para ejecutarse. Existen varios lenguajes que se pueden utilizar para crear pginas ASP. El ms utilizado es VBScript, nativo de Microsoft. ASP se puede hacer tambin en Perl and Jscript (no JavaScript). El cdigo ASP puede ser insertado junto con el cdigo HTML. Los archivos cuentan con la extensin (asp).

Ventajas:

Usa Visual Basic Script, siendo fcil para los usuarios. Comunicacin ptima con SQL Server. Soporta el lenguaje JScript (Javascript de Microsoft).

Desventajas:

Cdigo desorganizado. Se necesita escribir mucho cdigo para realizar funciones sencillas. Tecnologa propietaria. Hospedaje de sitios web costosos.

Lenguaje ASP.NET

Este es un lenguaje comercializado por Microsoft, y usado por programadores para desarrollar entre otras funciones, sitios web. ASP.NET es el sucesor de la tecnologa ASP, fue lanzada al mercado mediante una estrategia de mercado denominada .NET. El ASP.NET fue desarrollado para resolver las limitantes que brindaba tu antecesor ASP. Creado para desarrollar web sencillas o grandes aplicaciones.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Para el desarrollo de ASP.NET se puede utilizar C#, VB.NET o J#. Los archivos cuentan con la extensin (aspx). Para su funcionamiento de las pginas se necesita tener instalado IIS con el Framework .Net. Microsft Windows 2003 incluye este framework, solo se necesitar instalarlo en versiones anteriores.

Ventajas:

Completamente orientado a objetos. Controles de usuario y personalizados. Divisin entre la capa de aplicacin o diseo y el cdigo. Facilita el mantenimiento de grandes aplicaciones. Incremento de velocidad de respuesta del servidor. Mayor velocidad. Mayor seguridad.

Desventajas:

Mayor consumo de recursos. Lenguaje JSP Es un lenguaje para la creacin de sitios web dinmicos, acrnimo de Java Server Pages. Est orientado a desarrollar pginas web en Java. JSP es un lenguaje multiplataforma. Creado para ejecutarse del lado del servidor. JSP fue desarrollado por Sun Microsystems. Comparte ventajas similares a las de ASP.NET, desarrollado para la creacin de aplicaciones web potentes. Posee un motor de pginas basado en los servlets de Java. Para su funcionamiento se necesita tener instalado un servidor Tomcat.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Caractersticas:

Cdigo separado de la lgica del programa. Las pginas son compiladas en la primera peticin. Permite separar la parte dinmica de la esttica en las pginas web. Los archivos se encuentran con la extensin (jsp). El cdigo JSP puede ser incrustado en cdigo HTML.

Elementos de JSP Los elementos que pueden ser insertados en las pginas JSP son los siguientes:

Cdigo: se puede incrustar cdigo Java. Directivas: permite controlar parmetros del servlet. Acciones: permite alterar el flujo normal de ejecucin de una pgina. Ventajas:

Ejecucin rpida del servlets. Crear pginas del lado del servidor. Multiplataforma. Cdigo bien estructurado. Integridad con los mdulos de Java. La parte dinmica est escrita en Java. Permite la utilizacin se servlets. Desventajas:

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Complejidad de aprendizaje.

Lenguaje Python Es un lenguaje de programacin creado en el ao 1990 por Guido van Rossum, es el sucesor del lenguaje de programacin ABC. Python es comparado

habitualmente con Perl. Los usuarios lo consideran como un lenguaje ms limpio para programar. Permite la creacin de todo tipo de programas incluyendo los sitios web. Su cdigo no necesita ser compilado, por lo que se llama que el cdigo es interpretado. Es un lenguaje de programacin multiparadigma, lo cual fuerza a que los programadores adopten por un estilo de programacin particular:

Programacin orientada a objetos. Programacin estructurada. Programacin funcional. Programacin orientada a aspectos.

Ventajas:

Libre y fuente abierta. Lenguaje de propsito general. Gran cantidad de funciones y libreras.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Sencillo y rpido de programar. Multiplataforma. Licencia de cdigo abierto (Opensource). Orientado a Objetos. Portable.

Desventajas:

Lentitud por ser un lenguaje interpretado.

Lenguaje Ruby Es un lenguaje interpretado de muy alto nivel y orientado a objetos. Desarrollado en el 1993 por el programador japons Yukihiro Matz Matsumoto. Su sintaxis est inspirada en Phyton, Perl. Es distribuido bajo licencia de software libre (Opensource). Ruby es un lenguaje dinmico para una programacin orientada a objetos rpida y sencilla. Para los que deseen iniciarse en este lenguaje pueden encontrar un tutorial interactivo de ruby. Se encuentra tambin a disposicin de estos usuarios un sitio con informaciones y cursos en espaol.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Caractersticas:

Existe diferencia entre maysculas y minsculas. Mltiples expresiones por lneas, separadas por punto y coma ;. Dispone de manejo de excepciones. Ruby puede cargar libreras de extensiones dinmicamente si el (Sistema Operativo) lo permite.

Porttil.

Ventajas:

Permite desarrollar soluciones a bajo Costo. Software libre. Multiplataforma.

Perl Perl permite resolver los problemas fciles fcilmente, y resolver tambin problemas difciles. Es rpido hacer una pequea aplicacin Web. Las ventajas principales son el que se trata de un lenguaje muy maduro, que lleva mucho tiempo funcionando, y que tiene cientos de bibliotecas operativas y listas para ser usadas.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

En Perl es ms fcil que en otros lenguajes hacer algo inentendible y obscuro. Por otra parte, si uno tiene paciencia puede encontrar el 90% del trabajo que tena que hacer ya hecho por otra persona, y el cdigo que tiene que escribir es slo el 10% ms trivial. Perl debe ser usado precompilado va ModPerl o el impacto en procesador es muy alto.

MOVILES Lenguaje C Propiedades

Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros. Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo. Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado").

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Carencias

Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm. Soporte para programacin orientada a objetos, aunque la implementacin original de C++ fue un preprocesador que traduca cdigo fuente de C++ a C. Funciones anidadas, aunque GCC tiene esta caracterstica como extensin. Soporte nativo para programacin multihilo.

Aunque la lista de las caractersticas tiles de las que carece C es larga, este factor ha sido importante para su aceptacin, porque escribir rpidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solucin ms natural para cada plataforma. sta es la causa de que a menudo C sea ms eficiente que otros lenguajes. Tpicamente, slo la programacin cuidadosa en lenguaje ensamblador produce un cdigo ms rpido, pues da control total sobre la mquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia. En algunos casos, una caracterstica inexistente puede aproximarse. Por ejemplo, la implementacin original de C++ consista en un preprocesador que traduca cdigo fuente C++ a C. La mayora de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la funcin. Mediante el paso de este puntero como un argumento de funcin, esta funcionalidad puede desempearse en C. Por ejemplo, en C++ se puede escribir: stack.push(val); Mientras que en C se podra escribir: push(stack, (val); Donde el argumento stack es un puntero a una struct equivalente al puntero this de C++, que es un puntero a un objeto. Java

Lenguaje simple
Java posee una curva de aprendizaje muy rpida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarn que Java es ms sencillo, ya que se han eliminado ciertas caractersticas, como los punteros. Debido a su semejanza con C y C++, y dado

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

que la mayora de la gente los conoce aunque sea de forma elemental, resulta muy fcil aprender Java. Los programadores experimentados en C++ pueden migrar muy rpidamente a Java y ser productivos en poco tiempo. Orientado a objetos Java fue diseado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los mtodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programacin orientada a objetos, especialmente en entornos cada vez ms complejos y basados en red. Distribuido Java proporciona una coleccin de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando as la creacin de aplicaciones distribuidas. Interpretado y compilado a la vez Java es compilado, en la medida en que su cdigo fuente se transforma en una especie de cdigo mquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier mquina a la cual se hayan portado el intrprete y el sistema de ejecucin en tiempo real (run-time). Robusto Java fue diseado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilacin y en tiempo de ejecucin. Sus caractersticas de memoria liberan a los programadores de una familia entera de errores (la aritmtica de punteros), ya que se ha prescindido por completo los punteros, y la recoleccin de basura elimina la necesidad de liberacin explcita de memoria. Seguro Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustara ejecutar en su ordenador programas con acceso total a su

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

sistema, procedentes de fuentes desconocidas. As que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecucin en tiempo real. Indiferente a la arquitectura Java est diseado para soportar aplicaciones que sern ejecutadas en los ms variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecucin tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseado para transportar el cdigo eficientemente a mltiples plataformas hardware y software. El resto de problemas los soluciona el intrprete de Java. Portable La indiferencia a la arquitectura representa slo una parte de su portabilidad. Adems, Java especifica los tamaos de sus tipos de datos bsicos y el comportamiento de sus operadores aritmticos, de manera que los programas son iguales en todas las plataformas. Estas dos ltimas caractersticas se conocen como la Mquina Virtual Java(JVM). Alto rendimiento Multihebra Hoy en da ya se ven como terriblemente limitadas las aplicaciones que slo pueden ejecutar una accin a la vez. Java soporta sincronizacin de mltiples hilos de ejecucin (multithreading) a nivel de lenguaje, especialmente tiles en la creacin de aplicaciones de red distribuidas. As, mientras un hilo se encarga de la comunicacin, otro puede interactuar con el usuario mientras otro presenta una animacin en pantalla y otro realiza clculos. Dinmico El lenguaje Java y su sistema de ejecucin en tiempo real son dinmicos en la fase de enlazado. Las clases slo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos mdulos de cdigo bajo demanda, procedente de fuentes muy variadas, incluso desde la Red. Produce applets Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets. Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito ntegramente en Java.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Por su parte, las applets son pequeos programas que aparecen embebidos en las pginas Web, como aparecen los grficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imgenes, establecer conexiones de red, presentar mens y cuadros de dilogo para luego emprender acciones, etc. Visual basic Los compiladores de Visual Basic generan cdigo que requiere una o ms libreras de enlace dinmico para que funcione, conocidas comnmente como DLL (sigla en ingls de dynamic-link library); en algunos casos reside en el archivo llamado MSVBVMxy.DLL (siglas de "MicroSoft Visual Basic Virtual Machine x.y", donde x.y es la versin) y en otros en VBRUNXXX.DLL ("Visual Basic Runtime X.XX"). Estas bibliotecas DLL proveen las funciones bsicas implementadas en el lenguaje, conteniendo rutinas en cdigo ejecutable que son cargadas bajo demanda en tiempo de ejecucin. Adems de las esenciales, existe un gran nmero de bibliotecas del tipo DLL con variedad de funciones, tales como las que facilitan el acceso a la mayora de las funciones delsistema operativo o las que proveen medios para la integracin con otras aplicaciones. Dentro del mismo Entorno de desarrollo integrado (IDE) de Visual Basic se puede ejecutar el programa que est desarrollndose, es decir en modo intrprete (en realidad pseudo-compila el programa muy rpidamente y luego lo ejecuta, simulando la funcin de un intrprete puro). Desde ese entorno tambin se puede generar el archivo en cdigo ejecutable (exe); ese programa as generado en disco puede luego ser ejecutado sin requerir del ambiente de programacin (incluso en modo stand alone), aunque s ser necesario que las libreras DLL requeridas por la aplicacin desarrollada se encuentren tambin instaladas en el sistema para posibilitar su ejecucin. El propio Visual Basic provee soporte para empaquetado y distribucin; es decir, permite generar un mdulo instalador que contiene al programa ejecutable y las bibliotecas DLL necesarias para su ejecucin. Con ese mdulo la aplicacin desarrollada se distribuye y puede ser instalada en cualquier equipo (que tenga un sistema operativo compatible). As como bibliotecas DLL, hay numerosas aplicaciones desarrolladas por terceros que permiten disponer de variadas y mltiples funciones, incluso mejoras para el propio Visual Basic; las hay tambin para el empaquetado y distribucin, y hasta para otorgar mayor funcionalidad al entorno de programacin (IDE).

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Entorno de desarrollo Existe un nico entorno de desarrollo para Visual Basic, desarrollado por Microsoft: Microsoft Visual Basic x.0, correspondientes a versiones desde la 1.0 hasta la 6.0, (con respectivas diferencias entre versiones del lenguaje). El entorno de desarrollo es muy similar al de otros lenguajes. Realizando una instalacin tpica del producto, las caractersticas bsicas se presentan de la siguiente forma:

En la parte superior aparecen tres elementos, en este orden: la barra de ttulo donde figura el nombre del proyecto en curso y su estado (diseo o ejecucin); la barra de men con 13 opciones desplegables y una barra de herramientas; esta ltima se puede personalizar, posibilitando la inclusin de prcticamente la totalidad de los comandos del IDE. En la parte central, cubriendo la franja de mayor rea, se encuentra el espacio de trabajo. ste incluye y muestra las ventanas del proyecto, las vistas del cdigo fuente de los mdulos, los objetos y los controles que contienen las ventanas de la aplicacin y el panel de controles.

El panel de controles, que aunque es mvil normalmente est ubicado a la derecha, por defecto cuenta con los siguientes controles: PictureBox: Caja de imgenes Label: Etiqueta TextBox: Caja de texto Frame: Marco CommandButton: Botn de comando CheckBox: Casilla de verificacin OptionButton: Botn de opcin ComboBox: Lista desplegable ListBox: Lista HScrollBar: Barra de desplazamiento horizontal VScrollBar: Barra de desplazamiento vertical Timer: Temporizador DriveListBox: Lista de unidades de disco DirListBox: Lista de directorios FileListBox: Lista de archivos Shape: Figura

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Line: Lnea Image: Imagen Data: Conexin a origen de datos OLE: Contenedor de documentos embebidos compatibles con Object Linking and Embedding

Adems de los listados, se pueden agregar todo tipo de controles de terceros, y hay una gran cantidad de ellos que se proveen con el propio Visual Basic 6.0. Los controles vienen embebidos dentro de archivos con extensin OCX. Las ventanas de proyecto, aunque mviles, se encuentran en el panel lateral derecho y contienen dos vistas principales: El Explorador de proyectos, que muestra todos los elementos que componen el proyecto o grupos de proyectos (formularios, interfaz de controles, mdulos de cdigo, mdulos de clase, etc.) El Panel de propiedades, donde se muestran todos los atributos de los objetos, controles, formularios, informacin de mdulos clase, entre muchos otros. La Ventana inmediato, por defecto se encuentra en la parte inferior, aunque puede no estar visible (se presionan las teclas Ctrl+G, en ese caso, para mostrar la ventana). Esta ventana resulta una herramienta muy til a la hora de depurar el programa o bien para realizar pruebas rpidas, ya que permite imprimir mensajes de texto desde el cdigo y ejecutar sentencias ycomandos simples inmediatamente (slo sentencias que se puedan escribir en una sola lnea). Por ejemplo, de la aplicacin en curso, se puede consultar el valor de una variable o llamar a un mtodo declarado en el mdulo que se est depurando. Se puede ejecutar cdigo "al vuelo", por ejemplo con sentencias como: ? sqr(2)

siendo el signo ? un reemplazo natural del comando Print en Basic, al ejecutar la sentencia se mostrara por pantalla el valor de la raz cuadrada de 2.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Tambin se pueden usar variables del propio programa, o sentencias de cdigo tales como: Msgbox "Prueba de cuadro de mensaje de error.", vbCritical, "Ttulo del mensaje" A la hora de la depuracin puede ser til para consultar el valor de variables del programa, o el cdigo de error como: ? Err.Number WML El lenguaje WML (Wireless Markup Language) constituye la base para la creacin de contenidos visualizables desde un terminal WAP (un terminal dotado con un micro-navegador WAP). Est basado en el XML, por lo que aquellos que posean ya conocimientos de este lenguaje no tendrn dificultad en aprender WML. Las pginas WML slo permiten introducir texto y grficos, debido a las propias capacidades de los terminales mviles. Por otra parte, los micro-navegadores de los terminales tambin soportan un lenguaje de script, llamado WMLScript, que permite manipular datos y dotar de cierta interactividad a la pgina WML. Por otra parte, los grficos que pueden ser introducidos en una pgina WML debern tener un formato especial, denominado WBMP. Este formato slo permite imgenes en blanco y negro. Las pginas WML podrn ser ubicadas en cualquier servidor web convencional, siempre que ste haya sido correctamente configurado para servirlas. Por tanto, antes de "colgar" cualquier pgina WML en nuestro espacio de hosting tendremos que consultar con el ISP que nos lo ofrece para saber si tienen preparada dicha configuracin.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Java script Las siguientes caractersticas son comunes a todas las implementaciones que se ajustan al estndar ECMAScript, a menos que especifique explcitamente en caso contrario.

Imperativo y estructurado JavaScript soporta gran parte de la estructura de programacin de C (por ejemplo, sentencias if, bucles for, sentencias switch, etc.). Con un salvedad, en parte: en C, el mbito de las variables alcanza al bloque en el cual fueron definidas; sin embargo en JavaScript esto no es soportado, puesto que el mbito de las variables es el de la funcin en la cual fueron declaradas. Esto cambia con la versin de JavaScript 1.7, ya que soporta block scoping por medio de la palabra clave let. Como en C, JavaScript hace distincin entre expresiones y sentencias. Una diferencia sintctica con respecto a C es la insercin automtica de punto y coma, es decir, en JavaScript los puntos y coma que finalizan una sentencia pueden ser omitidos. Dinmico Tipado dinmico Como en la mayora de lenguajes de scripting, el tipo est asociado al valor, no a la variable. Por ejemplo, una variable x en un momento dado puede estar ligada a un nmero y ms adelante, religada a una cadena. JavaScript soporta varias formas de comprobar el tipo de un objeto, incluyendo duck typing. Una forma de saberlo es por medio de la palabra clave typeof. Objetual JavaScript esta formado casi en su totalidad por objetos. Los objetos en JavaScript son arrays asociativos, mejorados con la inclusin de prototipos (ver ms adelante). Los nombres de las propiedades de los objetos son claves de tipo cadena: obj.x = 10 y obj['x'] = 10 son equivalentes, siendo la notacin con punto azcar sintctico. Las propiedades y sus valores pueden ser creados, cambiados o eliminados en tiempo de ejecucin. La mayora de propiedades de un objeto (y aquellas que son incluidas por la cadena de la herencia prototpica) pueden ser enumeradas a por medio de la instruccin de bucle for... in. JavaScript tiene un pequeo nmero de objetos predefinidos como son Function y Date.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Evaluacin en tiempo de ejecucin JavaScript incluye la funcin eval que permite evaluar expresiones como expresadas como cadenas en tiempo de ejecucin. Por ello se recomienda que eval sea utilizado con precaucin y que se opte por utilizar la funcin JSON.parse() en la medida de lo posible, pues resulta mucho ms segura. Funcional Funciones de primera clase A las funciones se les suele llamar ciudadanos de primera clase; son objetos en s mismos. Como tal, poseen propiedades y mtodos, como .call() y .bind(). Una funcin anidada es una funcin definida dentro de otra. Esta es creada cada vez que la funcin externa es invocada. Adems, cada funcin creada forma una clausura; es el resultado de evaluar un mbito conteniendo en una o ms variables dependientes de otro mbito externo, incluyendo constantes, variables locales y argumentos de la funcin externa llamante. El resultado de la evaluacin de dicha clausura forma parte del estado interno de cada objeto funcin, incluso despus de que la funcin exterior concluya su evaluacin. Prototpico Prototipos JavaScript usa prototipos en vez de clases para el uso de herencia. Es posible llegar a emular muchas de las caractersticas que proporcionan las clases en lenguajes orientados a objetos tradicionales por medio de prototipos en JavaScript. Funciones como constructores de objetos Las funciones tambin se comportan como constructores. Prefijar una llamada a la funcin con la palabra clave new crear una nueva instancia de un prototipo, que heredan propiedades y mtodos del constructor (incluidas las propiedades del prototipo de Object).21 ECMAScript 5 ofrece el mtodo Object.create, permitiendo la creacin explcita de una instancia sin tener que heredar automticamente del prototipo de Object (en entornos antiguos puede aparecer el prototipo del objeto creado como null). La propiedad prototype del constructor determina el objeto usado para el prototipo interno de los nuevos objetos creados. Se pueden aadir nuevos mtodos modificando el prototipo del objeto usado como constructor. Constructores predefinidos en JavaScript, como Array u Object, tambin

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

tienen prototipos que pueden ser modificados. Aunque esto sea posible se considera una mala prctica modificar el prototipo de Object ya que la mayora de los objetos en Javascript heredan los mtodos y propiedades del objeto prototype, objetos los cuales pueden esperar que estos no hayan sido modificados.

Otras caractersticas
Entorno de ejecucin JavaScript normalmente depende del entorno en el que se ejecute (por ejemplo, en un navegador web) para ofrecer objetos y mtodos por los que los scripts pueden interactuar con el "mundo exterior". De hecho, depende del entorno para ser capaz de proporcionar la capacidad de incluir o importar scripts (por ejemplo, en HTML por medio del tag <script>). (Esto no es una caracterstica del lenguaje per se, pero es comn en la mayora de las implementaciones de JavaScript.) Funciones variadicas Un nmero indefinido de parmetros pueden ser pasados a la funcin. La funcin puede acceder a ellos a travs de los parmetros o tambin a travs del objeto local arguments. Lasfunciones variadicas tambin pueden ser creadas usando el mtodo .apply(). Funciones como mtodos A diferencia de muchos lenguajes orientados a objetos, no hay distincin entre la definicin de funcin y la definicin de mtodo. Ms bien, la distincin se produce durante la llamada a la funcin; una funcin puede ser llamada como un mtodo. Cuando una funcin es llamada como un mtodo de un objeto, la palabra clave this, que es una variable local a la funcin, representa al objeto que invoc dicha funcin. Arrays y la definicin literal de objetos Al igual que muchos lenguajes de script, arrays y objetos (arrays asociativos en otros idiomas) pueden ser creados con una sintaxis abreviada. De hecho, estos literales forman la base del formato de datos JSON.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Expresiones regulares JavaScript tambin soporta expresiones regulares de una manera similar a Perl, que proporcionan una sintaxis concisa y poderosa para la manipulacin de texto que es ms sofisticado que las funciones incorporadas a los objetos de tipo string.

WP8: se programa con la excelente herramienta Visual Studio, o al menos a m me parece excelente. Normalmente vas a programar con C++ o C# dependiendo un poco de lo que quieres hacer y de tus gustos. Yo recomiendo C++ para videojuegos y C# para programas de gestin, pero es una idea solamente. C# es un grandsimo lenguaje, lstima que Microsoft no lo potencie como debiera, y ahora se haya cargado las libreras XNA, obligando a usar las bibliotecas de W8/WP8.
La versin de Visual Studio Express es gratuita y puedes empezar a hacer tus pinitos con dicha herramienta.

Android: En Android pasa algo similar, tenemos el C++ y sobre todo el Java sobre el entorno Eclipse, muy popular hoy en da. En general se programa en Java tanto juegos como aplicaciones. Yo sin embargo prefiero C++ por dos razones: porque existen libreras grficas escritas en C++ (Cocos2d-x) y porque C++ es infinitamente ms rpido que Java. El problema de C++ es que es ms exigente que Java para programar, pero ese es el precio que hay que pagar para hacer cosas eficientes. Por qu Windows, o Unix, o Linux, o los juegos comerciales, o bases de datos, NO estn escritos en Java? Porque saben que este lenguaje simplemente no da la talla. Estn escritos en C/C++ que es lo que se llama un lenguaje eficiente. Si tienes problemas para programar en este lenguaje o te da miedo eso es normal, a m tambin me pasa, pero el esfuerzo merece la pena.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

iOS: Apple, al tener el control de todo lo que hace dispone de unas herramientas y lenguajes muy definidos. El entorno de trabajo se llama Xcode, y el lenguaje de desarrollo Objective C, que es un derivado del C orientado a objetos (como ocurre con el C++, pero ojo son distintos). Es gratuito y puedes bajrtelo y empezar a hacer tus pinitos enseguida con el emulador de iOS (iPhone, iPad). Para ejecutar directamente en un telfono o tablet necesitas la licencia de programador y en consecuencia apoquinar 80 euros al ao. Antes de poner el grito en el cielo recordad que Microsoft hace lo mismo. Y antes de decidiros por Android, pensad bien si el tema econmico es suficiente para decantaros por una plataforma u otra. Y otra cosa: recuerda que necesitas un Mac para programar.

El lenguaje ensamblador, o assembler (assembly language en ingls), es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico de cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que idealmente son porttiles. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Esto est en contraste con los lenguajes de alto nivel, en los cuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. Particularmente, la mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y son llamados macro ensambladores. Fue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) an cuentan con el ensamblador como la nica manera de ser manipulados.

CARACTERISTICAS

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

PROGRAMA ENSAMBLADOR Tpicamente, un programa ensamblador (assembler en ingls) moderno crea cdigo objeto traduciendo instrucciones mnemnicas de lenguaje ensamblador en opcodes, y resolviendo losnombres simblicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simblicas es una caracterstica clave del lenguaje ensamblador, evitando tediosos clculos y actualizaciones manuales de las direcciones despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades de macros para realizar sustitucin textual - ej. generar cortas secuencias de instrucciones como expansin en lnea en vez de llamar a subrutinas. Los ensambladores son generalmente ms simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los aos 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, as como tambin para el x86 (-64), optimizan la planificacin de instrucciones para explotar la segmentacin del CPU eficientemente. En los compiladores para lenguajes de alto nivel, son el ltimo paso antes de generar el cdigo ejecutable

Numero de pasos Tpicamente, un programa ensamblador (assembler en ingls) moderno crea cdigo objeto traduciendo instrucciones mnemnicas de lenguaje ensamblador en opcodes, y resolviendo losnombres simblicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simblicas es una caracterstica clave del lenguaje ensamblador, evitando tediosos clculos y actualizaciones manuales de las direcciones despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades de macros para realizar sustitucin textual - ej. generar cortas secuencias de instrucciones como expansin en lnea en vez de llamar a subrutinas. Los ensambladores son generalmente ms simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los aos 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, as como tambin para el x86 (-64), optimizan la planificacin de instrucciones para explotar la segmentacin del CPU eficientemente.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

En los compiladores para lenguajes de alto nivel, son el ltimo paso antes de generar el cdigo ejecutable

Ensambladores de alto nivel Los ms sofisticados ensambladores de alto nivel proporcionan abstracciones del lenguaje tales como:

Estructuras de control avanzadas Declaraciones e invocaciones de procedimientos/funciones de alto nivel Tipos de datos abstractos de alto nivel, incluyendo las estructuras/records, uniones, clases, y conjuntos Procesamiento de macros sofisticado (aunque est disponible en los ensambladores ordinarios desde finales 1960 para el IBM/360, entre otras mquinas) Caractersticas de programacin orientada a objetos

Uso del termino Note que, en el uso profesional normal, el trmino ensamblador es frecuentemente usado tanto para referirse al lenguaje ensamblador como tambin al programa ensamblador (que convierte elcdigo fuente escrito en el lenguaje ensamblador a cdigo objeto que luego ser enlazado para producir lenguaje de mquina). Las dos expresiones siguientes utilizan el trmino "ensamblador":

"El CP/CMS fue escrito en ensamblador del IBM S/360" "El ASM-H fue un ensamblador del S/370 ampliamente usado"

La primera se refiere al lenguaje y la segundo se refiere al programa.

LENGUAJE El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de mquina de la CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra. Cadaarquitectura de microprocesador tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa. Los microprocesadores difieren en el tipo y nmero de operaciones que soportan; tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos de datos en memoria. Aunque la mayora de los

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia. Instrucciones de CPU La mayora de las CPU tienen ms o menos los mismos grupos de instrucciones, aunque no necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden realizar varan de una CPU a otra. Una CPU particular puede tener instrucciones que no tenga otro y viceversa. Los primeros microprocesadores de 8 bits no tenan operaciones para multiplicar o dividir nmeros, por ejemplo, y haba que hacer subrutinas para realizar esas operaciones. Otras CPU puede que no tengan operaciones de punto flotante y habra que hacer o conseguir bibliotecas que realicen esas operaciones. Las instrucciones de la CPU pueden agruparse, de acuerdo a su funcionalidad, en: Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura de la CPU, en los sistemas muy viejos tambin de 12, 18, 24, 36 y 48 bits) Estas son operaciones realizadas por la Unidad aritmtico lgica de la CPU

Operaciones aritmticas. Como suma, resta, multiplicacin, divisin, mdulo, cambio de signo Operaciones booleanas. Operaciones lgicas bit a bit como AND, OR, XOR, NOT Operaciones de bits. Como desplazamiento y rotaciones de bits (hacia la derecha o hacia la izquierda, a travs del bit del acarreo o sin l) Comparaciones

Operaciones de mover datos: Entre los registros y la memoria: Aunque la instruccin se llama "mover", en la CPU, "mover datos" significa en realidad copiar datos, desde un origen a un destino, sin que el dato desaparezca del origen. Se pueden mover valores:

desde un registro a otro desde un registro a un lugar de la memoria desde un lugar de la memoria a un registro desde un lugar a otro de la memoria un valor inmediato a un registro

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

un valor inmediato a un lugar de memoria

Operaciones de stack:

PUSH (escribe datos hacia el tope del stack) POP (lee datos desde el tope del stack)

Operaciones de entrada/salida: Son operaciones que mueven datos de un registro, desde y hacia un puerto; o de la memoria, desde y hacia un puerto

INPUT Lectura desde un puerto de entrada OUTPUT Escritura hacia un puerto de salida

Operaciones para el control del flujo del programa: Llamadas y retornos de subrutinas Llamadas y retornos de interrupciones Saltos condicionales de acuerdo al resultado de la comparaciones Saltos incondicionales

Operaciones con nmeros reales: El estndar para las operaciones con nmeros reales en las CPU est definido por el IEEE 754. Una CPU puede tener operaciones de punto flotante con nmeros reales mediante el coprocesador numrico (si lo hay), como las siguientes: Operaciones aritmticas. Suma, resta, multiplicacin, divisin, cambio de signo, valor absoluto, parte entera Operaciones trascendentales Operaciones trigonomtricas. Seno, coseno, tangente, arcotangente Operaciones con logaritmos, potencias y races Otras

El lenguaje ensamblador tiene mnemnicos para cada una de las instrucciones de la CPU en adicin a otros mnemnicos a ser procesados por el programa ensamblador (como por ejemplo macros y otras sentencias en tiempo de ensamblado).

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Ensamblado La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa ensamblador, y la traduccin inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de mquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina ms extenso a fin de proveer la funcionalidad necesaria y simplificar la programacin. Por ejemplo, para un cdigo mquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstruccin al grupo "haga si menor que", y "si = 0" sobre el resultado de la condicin anterior. Los Ensambladores ms completos tambin proveen un rico lenguaje de macros que se utiliza para generar cdigo ms complejo y secuencias de datos. Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de mnemnicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador para la arquitectura x86, se puede expresar la instruccin para mover 5 al registro AL de la siguiente manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresara al revs: MOV 5, AL. Ambos lenguajes ensambladores haran exactamente lo mismo, solo que est expresado de manera diferente. El primero usa la sintaxis de Intel, mientras que el segundo usa la sintaxis de AT&T El uso del ensamblador no resuelve definitivamente el problema de cmo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas ms referentes a su estructura bsica de funcionamiento.

Ejemplo Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de rdenes ejecutables por un microprocesador. Por ejemplo, en el lenguaje ensamblador para un procesador x86: La sentencia
MOV AL, 061h

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Asigna el valor hexadecimal 61 (97 decimal) al registro "AL". El programa ensamblador lee la sentencia equivalente binario en lenguaje de mquina Binario: 10110000 01100001 (hexadecimal: B061) de arriba y produce su

El mnemnico MOV es un cdigo de operacin u "opcode". El opcode es seguido por una lista de argumentos o parmetros, completando una tpica instruccin de ensamblador. En el ejemplo,AL es un registro de 8 bits del procesador, al cual se le asignar el valor hexadecimal 61 especificado. El cdigo de mquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instruccin MOV y el cdigo del registro hacia donde se va a mover el dato:

En el segundo byte se especifica el nmero 61h, escrito en binario como 01100001, que se asignar al registro AL, quedando la sentencia ejecutable como: 10110000 01100001 La cual puede ser entendida y ejecutada directamente por el procesador.

DISEO DEL LENGUAJE Elementos bsicos Hay un grado grande de diversidad en la manera en que los autores de los ensambladores categorizan las sentencias y en la nomenclatura que usan. En particular, algunos describen cualquier cosa como pseudo-operacin (pseudo-Op), con excepcin del mnemnico de mquina o del mnemnico extendido. Un tpico lenguaje ensamblador consiste en 3 tipos de sentencias de instruccin que son usadas para definir las operaciones del programa:

Mnemnicos de opcode

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Secciones de datos Directivas de ensamblador

Mnemnicos de opcode y mnemnicos extendidos A diferencia de las instrucciones (sentencias) de los lenguajes de alto nivel, instrucciones en el lenguaje ensamblador son generalmente muy simples. Generalmente, una mnemnico es un nombre simblico para una sola instruccin en lenguaje de mquina ejecutable (un opcode), y hay por lo menos un mnemnico de opcode definido para cada instruccin en lenguaje de mquina. Cada instruccin consiste tpicamente en una operacin u opcode ms cero o ms operandos. La mayora de las instrucciones refieren a un solo valor, o a un par de valores. Los operandos pueden ser inmediatos (tpicamente valores de un byte, codificados en la propia instruccin), registros especificados en la instruccin, implcitos o las direcciones de los datos localizados en otra parte de la memoria. Esto est determinado por la arquitectura subyacente del procesador, el ensamblador simplemente refleja cmo trabaja esta arquitectura. Los mnemnicos extendidos son frecuentemente usados para especificar una combinacin de un opcode con un operando especfico, ej, el ensamblador del System/360 usa a B como un mnemnico extendido para el BC con una mscara de 15 y NOP al BC con una mscara de 0. Los mnemnicos extendidos son frecuentemente usados para soportar usos especializados de instrucciones, a menudo para propsitos no obvios con respecto al nombre de la instruccin. Por ejemplo, muchos CPU no tienen una instruccin explcita de NOP (No Operacin), pero tienen instrucciones que puedan ser usadas para tal propsito. En el CPU 8086, la instruccin XCHG AX,AX (intercambia el registro AX consigo mismo) es usada para el NOP, con NOP siendo un pseudo-opcode para codificar la instruccin XCHG AX,AX. Algunos desensambladores reconocen esto y decodificarn la instruccin XCHG AX,AX como NOP. Similarmente, los ensambladores de IBM para el System/360 usan los mnemnicos extendidos NOP y NOPR con las mscaras cero para BC y BCR. Algunos ensambladores tambin soportan simples macroinstrucciones incorporadas que generan dos o ms instrucciones de mquina. Por ejemplo, con algunos ensambladores para el Z80, la instruccin
LD HL, BC

genera las instrucciones


LD L, C LD H, B.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

LD HL, BC es un pseudo-opcode, que en este caso simula ser una instruccin de 16 bits, cuando se expande se producen dos instrucciones de 8 bits que equivalen a la simulada de 16 bits. Secciones de datos Hay instrucciones usadas para definir elementos de datos para manejar datos y variables. Definen el tipo de dato, la longitud y la alineacin de los datos. Estas instrucciones tambin pueden definir si los datos estn disponibles para programas exteriores (programas ensamblados separadamente) o solamente para el programa en el cual la seccin de datos est definida. Algunos ensambladores clasifican estas instruccin

Directivas del ensamblador Los directivas del ensamblador, tambin llamadas los pseudo opcodes, pseudo-operaciones o pseudo-ops, son instrucciones que son ejecutadas por un ensamblador en el tiempo de ensamblado, no por un CPU en el tiempo de ejecucin. Pueden hacer al ensamblado del programa dependiente de parmetros entrados por un programador, de modo que un programa pueda ser ensamblado de diferentes maneras, quizs para diversos aplicaciones. Tambin pueden ser usadas para manipular la presentacin de un programa para hacerlo ms fcil leer y mantener. Por ejemplo, las directivas pudieran ser usadas para reservar reas de almacenamiento y opcionalmente su para asignar su contenido inicial. Los nombres de las directivas a menudo comienzan con un punto para distinguirlas de las instrucciones de mquina. Los ensambladores simblicos le permiten a los programadores asociar nombres arbitrarios (etiquetas o smbolos) a posiciones de memoria. Usualmente, cada constante y variable tiene un nombre para que las instrucciones pueden referir a esas ubicaciones por nombre, as promoviendo el cdigo autodocumentado. En el cdigo ejecutable, el nombre de cada subprograma es asociado a su punto de entrada, as que cualquier llamada a un subprograma puede usar su nombre. Dentro de subprogramas, a los destinos GOTO se le dan etiquetas. Algunos ensambladores soportan smbolos locales que son lxicamente distintos de los smbolos normales (ej, el uso de "10$" como un destino GOTO).

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

La mayora de los ensambladores proporcionan un manejo flexible de smbolos, permitiendo a los programadores manejar diversos espacios de nombres, calcular automticamente offsets dentro de estructuras de datos, y asignar etiquetas que refieren a valores literales o al resultado de clculos simples realizados por el ensamblador. Las etiquetas tambin pueden ser usadas para inicializar constantes y variables con direcciones relocalizables. Los lenguajes ensambladores, como la mayora de los otros lenguajes de computador, permiten que comentarios sean aadidos al cdigo fuente, que son ignorados por el programa ensamblador. El buen uso de los comentarios es an ms importante con cdigo ensamblador que con lenguajes de alto nivel, pues el significado y el propsito de una secuencia de instrucciones es ms duro de descifrar a partir del cdigo en s mismo. El uso sabio de estas facilidades puede simplificar grandemente los problemas de codificar y mantener el cdigo de bajo nivel. El cdigo fuente de lenguaje ensamblador crudo generado por compiladores o desensambladores - cdigo sin ningn comentario, ni smbolos con algn sentido, ni definiciones de datos - es muy difcil de leer cuando deben hacerse cambios. Macros Muchos ensambladores soportan macros predefinidos, y otras soportan macros definidos (y repetidamente redefinibles) por el programador que implican secuencias de lneas del texto en las cuales las variables y las constantes estn empotradas. Esta secuencia de lneas de texto puede incluir opcodes o directivas. Una vez un macro ha sido definido, su nombre puede ser usado en lugar de un mnemnico. Cuando el ensamblador procesa tal sentencia, reemplaza la sentencia por las lneas del texto asociadas a ese macro, entonces las procesa como si hubieran existido en el archivo del cdigo fuente original (incluyendo, en algunos ensambladores, la expansin de cualquier macro que exista en el texto de reemplazo). Puesto que las macros pueden tener nombres "cortos" pero se expanden a varias o de hecho muchas lneas de cdigo, pueden ser usados para hacer que los programas en lenguaje ensamblador parezcan ser mucho ms cortos, requiriendo menos lneas de cdigo fuente, como sucede con los lenguajes de alto nivel. Tambin pueden ser usados para aadir niveles de estructura ms altos a los programas ensamblador, opcionalmente introducen cdigo de depuracin empotrado va parmetros y otras caractersticas similares.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Muchos ensambladores tienen macros incorporados (o predefinidos) para las llamadas de sistema y otras secuencias especiales de cdigo, tales como la generacin y el almacenamiento de los datos realizados a travs de avanzadas operaciones bitwise y booleanas usadas en juegos, software de seguridad, gestin de datos, y criptografa. Los macro ensambladores a menudo permiten a los macros tomar parmetros. Algunos ensambladores incluyen lenguajes macro muy sofisticados, incorporando elementos de lenguajes de alto nivel tales como parmetros opcionales, variables simblicas, condiciones, manipulaciones de strings operaciones aritmticas, todos usables durante la ejecucin de un macro dado, y permitiendo a los macros guardar el contexto o intercambiar informacin. As un macro puede generar un gran nmero de instrucciones o definiciones de datos en lenguaje ensamblador, basadas en los argumentos del macro. Esto pudiera ser usado para generar, por ejemplo, estructuras de datos de estilo de records o bucles "desenrrollados", o podra generar algoritmos enteros basados en parmetros complejos. Una organizacin, usando lenguaje ensamblador, que ha sido fuertemente extendido usando tal suite de macros, puede ser considerada que se est trabajando en un lenguaje de alto nivel, puesto que tales programadores no estn trabajando con los elementos conceptuales de ms bajo nivel del computador. Las macros fueron usados para adaptar sistemas de software de gran escala para clientes especficos en la era del mainframe, y tambin fueron usados por el personal del cliente para satisfacer las necesidades de sus patrones haciendo versiones especficas de los sistemas operativos del fabricante. Esto fue hecho, por ejemplo, por los programadores de sistema que trabajaban con el Conversational Monitor System / Virtual Machine (CMS/VM) de IBM y con los addons "real time transaction processing" de IBM, CICS, Customer Information Control System, y ACP/TPF, el airline/financial system que comenz en los aos 1970 y todava corre con muchos sistemas de reservaciones computarizados (CRS) y sistemas de tarjeta de crdito de hoy. Uso actual Siempre ha habido debates sobre la utilidad y el desempeo del lenguaje ensamblador relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene nichos especficos donde es importante (ver abajo). Pero, en general, los modernos compiladores de optimizacin para traducir lenguajes de alto nivel en cdigo que puede correr tan rpidamente como el lenguaje ensamblador escrito a mano, a pesar de los contraejemplos que pueden ser encontrados. La complejidad de los procesadores modernos y del subsistema de memoria hace la optimizacin efectiva cada vez ms difcil para los compiladores, as como para los

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

programadores en ensamblador. Adicionalmente, y para la consternacin de los amantes de la eficiencia, el desempeo cada vez mayor del procesador ha significado que la mayora de los CPU estn desocupados la mayor parte del tiempo, con retardos causados por embotellamientos predecibles tales como operaciones de entrada/salida y paginacin de memoria. Esto ha hecho que la velocidad de ejecucin cruda del cdigo no sea un problema para muchos programadores. Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje ensamblador. Por ejemplo cuando:

Es requerido un ejecutable binario independiente (stand-alone), es decir uno que deba ejecutarse sin recursos a componentes de tiempo de ejecucin o a bibliotecas asociadas con un lenguaje de alto nivel; sta es quizs la situacin ms comn. Son programas empotrados que solo almacenan una pequea cantidad de memoria y el dispositivo est dirigido para hacer tareas para un simple propsito. Ejemplos consisten en telfonos, sistemas de combustible e ignicin para automviles, sistemas de control del aire acondicionado, sistemas de seguridad, y sensores Interactuando directamente con el hardware, por ejemplo en drivers de dispositivo y manejadores de interrupcin usando instrucciones especficas del procesador no explotadas o disponibles por el compilador. Un ejemplo comn es la instruccin de rotacin bitwise en el ncleo de muchos algoritmos de cifrado creando funciones vectorizadas para programas en lenguajes de alto nivel como C. En el lenguaje de alto nivel esto es a veces ayudado por funciones intrnsecas del compilador que mapean directamente a los mnemnicos del SIMD, pero sin embargo resulta en una conversin de ensamblador de uno a uno para un procesador de vector asociado Es requerida la optimizacin extrema, ej, en un bucle interno en un algoritmo intensivo en el uso del procesador. Los programadores de juegos toman ventaja de las habilidades de las caractersticas del hardware en los sistemas, permitiendo a los juegos correr ms rpidamente. Tambin las grandes simulaciones cientficas requieren algoritmos altamente optimizados, ej,lgebra lineal con BLAS o la transformada de coseno discreta (ej, la versin SIMD en ensamblador del x264, (una biblioteca para codificar streams de video) Un sistema con severas limitaciones de recursos (ej, un sistema empotrado) debe ser codificado a mano para maximizar el uso de los limitados recursos; pero esto est llegando a ser menos comn a medida que el precio del procesador decrece y el desempeo mejora

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

No existe ningn lenguaje de alto nivel, en un procesador nuevo o especializado, por ejemplo Escribiendo programas de tiempo real que necesitan sincronizacin y respuestas precisas, tales como sistemas de navegacin de vuelo, y equipo mdico. Por ejemplo, en un sistema fly-by-wire (vuelo por mandos elctricos), la telemetra debe ser interpretada y hay que actuar dentro de limitaciones estrictas de tiempo. Tales sistemas deben eliminar fuentes de retrasos impredecibles, que pueden ser creados por (algunos) lenguajes interpretados, recoleccin de basura automtica, operaciones de paginacin, o multitarea preventiva. Sin embargo, algunos lenguajes de alto nivel incorporan componentes de tiempo de ejecucin e interfaces de sistema operativo que pueden introducir tales retrasos. Elegir el ensamblador o lenguajes de bajo nivel para tales sistemas da a los programadores mayor visibilidad y control sobre el proceso de los detalles Es requerido control total sobre el ambiente, en situaciones de seguridad extremadamente alta donde nada puede darse por sentado. Se escriben virus de computadora, bootloaders, ciertos drivers de dispositivo, u otros elementos muy cerca del hardware o al sistema operativo de bajo nivel Se escriben simuladores del conjunto de instrucciones para monitoreo, trazado y depuracin de errores donde la sobrecarga adicional es mantenida al mnimo Se hace ingeniera inversa en binarios existentes que pueden o no haber sido escritos originalmente en un lenguaje de alto nivel, por ejemplo al crackear la proteccin anticopia del software propietario. Se hace ingeniera inversa y modificacin de video juegos (tambin denominado ROM hacking), que es posible por medio de varios mtodos. El ms ampliamente implementado es alterando el cdigo del programa a nivel de lenguaje ensamblador Se escribe cdigo automodificable, algo para lo que el lenguaje ensamblador se presta bien Se escriben juegos y otros softwares para calculadoras grficas17 Se escribe software compilador que genera cdigo ensamblador, y por lo tanto los desarrolladores deben ser programadores de lenguaje ensamblador Se escriben algoritmos criptogrficos que siempre deben tomar estrictamente el mismo tiempo para ejecutar, previniendo ataques de tiempo

Sin embargo, el lenguaje ensamblador es todava enseado en la mayora de los programas de ciencias de la computacin e ingeniera electrnica. Aunque hoy en da, pocos programadores trabajan regularmente con el lenguaje ensamblador como una herramienta, los conceptos fundamentales continan siendo muy

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

importantes. Tales tpicos fundamentales, como aritmtica binaria, asignacin de memoria, procesamiento del stack, codificacin de conjunto de caracteres, procesamiento de interrupciones, y diseo de compiladores, seran duros de estudiar en detalle sin la comprensin de cmo el computador opera a nivel del hardware. Puesto que el comportamiento del computador es fundamentalmente definido por su conjunto de instrucciones, la manera lgica de aprender tales conceptos es estudiar un lenguaje ensamblador. La mayora de los computadores modernos tienen un conjunto de instrucciones similares. Por lo tanto, estudiar un solo lenguaje ensamblador es suficiente para aprender: i) los conceptos bsicos; ii) reconocer situaciones donde el uso de lenguaje ensamblador puede ser apropiado; y iii) ver cmo el cdigo ejecutable eficiente puede ser creado por los lenguajes de alto nivel Aplicaciones tpicas El lenguaje ensamblador hard-coded es tpicamente usado en el ROM de arranque del sistema (BIOS en los sistemas compatible IBM PC). Este cdigo de bajo nivel es usado, entre otras cosas, para inicializar y probar el hardware del sistema antes de cargar el sistema operativo, y est almacenado en el ROM. Una vez que ha tomado lugar un cierto nivel de inicializacin del hardware, la ejecucin se transfiere a otro cdigo, tpicamente escrito en lenguajes de alto nivel; pero el cdigo corriendo inmediatamente despus de que es aplicada la energa usualmente est escrito en lenguaje ensamblador. Lo mismo es cierto para los boot loaders. Muchos compiladores traducen lenguajes de alto nivel a lenguaje ensamblador primero, antes de la compilacin completa, permitiendo que el cdigo en ensamblador sea visto para propsitos dedepuracin y optimizacin. Lenguajes de relativo bajo nivel, como C, con frecuencia proveen sintaxis especial para empotrar lenguaje ensamblador en cada plataforma de hardware. El cdigoportable del sistema entonces puede usar estos componentes especficos a un procesador a travs de una interface uniforme. El lenguaje ensamblador tambin es valioso en ingeniera inversa, puesto que muchos programas solamente son distribuidos en una forma de cdigo de mquina. El cdigo de mquina es usualmente fcil de trasladar hacia lenguaje ensamblador para luego ser cuidadosamente examinado en esta forma, pero es muy difcil de trasladar hacia un lenguaje de alto nivel. Herramientas como Interactive Disassembler, hacen uso extenso del desensamblador para tales propsitos. Un nicho que hace uso del lenguaje ensamblador es el demoscene. Ciertas competiciones requieren a los concursantes restringir sus creaciones a un muy

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

pequeo tamao (ej, 256 bytes, 1 KB, 4 KB 64 KB), y el lenguaje ensamblador es el lenguaje de preferencia para alcanzar este objetivo. 19 Cuando los recursos son una preocupacin, es una necesidad la codificacin en ensamblador, especialmente en sistemas constreidos por el procesamiento del CPU, como los primeros modelos del Amiga, y el Commodore 64. El cdigo optimizado en ensamblador es escrito "a mano" por los programadores en un intento de minimizar el nmero de ciclos de CPU usados. Las limitaciones del CPU son tan grandes que cada ciclo cuenta. Usar tales mtodos ha habilitado, a sistemas como el Commodore 64, para producir grficos en 3D en tiempo real con efectos avanzados, una hazaa que puede ser considerada improbable o incluso imposible para un sistema con un procesador de 0.99 MHz.

EJEMPLOS Ejemplo para la arquitectura x86 El siguiente es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS).

Ejemplo para el computador virtual (POCA) Una seleccin de instrucciones para una computadora virtual con las correspondientes direcciones de memoria en las que se ubicarn las instrucciones. Estas direcciones NO son estticas. Cada instruccin se acompaa del cdigo en lenguaje ensamblador generado (cdigo objeto) que coincide con la arquitectura de computador virtual, o conjunto de instrucciones ISA.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Ejemplo para el C Intel 8051 Cdigo en lenguaje ensamblador para C Intel 80C51:

Ejemplo para el Microchip PIC16F84 Cdigo en lenguaje ensamblador para el microcontrolador 16F84 de Microchip:

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

Ventajas y desventajas del Lenguaje Ensamblador Ventajas 1. .- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas rpido. 2. Eficiencia de tamao .- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto nivel 3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al mximo los recursos de la mquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite

Desventajas Tiempo de programacin .- Como es un lenguaje de bajo nivel requiere ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin. Programas fuente grandes .- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos ms instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. Peligro de afectar recursos inesperadamente .- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la mquina, programar en este lenguaje lo ms comn que pueda pasar es que la mquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. Falta de portabilidad.- Porque para cada mquina existe un lenguaje ensamblador;

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

los lenguajes de alto nivel fueron creados para facilitar el proceso de programacin y a la misma ves le da al programador ciertas libertades para ser creativo. Gracias a estos programas las posibilidades son infinitas y solo estn limitadas a la creatividad del programador.

LENGUAJE INTERFAZ: LENGUAJES DE ALTO NIVEL Y LENGUAJE ENSAMBLADOR

http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguajeensamblador.shtml http://tiposdelenguajesdeprogramacion.blogspot.mx/p/tipos-de-lenguajes-de-altonivel.html http://tsistemaspa.wordpress.com/lenguaje-de-programacion/lenguaje-de-altonivel/ http://tejedoresdelweb.com/w/Lenguajes_programaci%C3%B3n_web http://es.wikipedia.org/wiki/Lenguaje_ensamblador

También podría gustarte