viernes, 5 de diciembre de 2008

LENGUAJE DE PROGRAMACION

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico de una máquina.

Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).

Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:

  • Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
  • Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador.

    Clasificación de los lenguajes de programación

    Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:

  • Según el nivel de abstracción
  • Según la forma de ejecución
  • Según el paradigma de programación que poseen cada uno de ellos

Según su nivel de abstracción

Lenguajes de Máquina

Artículo principal: Lenguaje de máquina

Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

Lenguajes de bajo nivel

Artículo principal: Lenguaje de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa.

Lenguajes de medio nivel

Artículo principal: Lenguaje de medio nivel

Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel

Artículo principal: Lenguaje de alto nivel

Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.

Según la forma de ejecución

Lenguajes compilados

Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una compilación antes de ejecutar las instrucciones de un problema.

Lenguajes interpretados [editar]

Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos.

Lenguajes interpretados

Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos.

PROGRAMACIÓN MODULAR

La programación estructurada es una técnica de diseño de programas que comenzó a ponerse en

práctica a principios de los años 70. Su utilización tiene como objetivo paliar algunas deficiencias:

1. Los programas que están constituidos por un único bloque, más o menos grande, de código, dependiendo de la complejidad y tamaño de la aplicación, por ejemplo 5000 ó 6000 líneas de código sin comentar, sin documentar y sin estructurar, esto es, sin hacer uso de un sólo submódulo, son programas pocos legibles, difíciles de depurar y modificar y poco reutilizables.

2. Un problema complejo no puede solucionarse de una sola vez y con un único algoritmo; además, existen operaciones que se repiten una y otra vez a lo largo del programa, de tal manera que es necesario el mismo bloque de código pero con diferentes datos. Con el fin de dar solución a los puntos anteriores se introdujo la programación estructurada. Su objetivo primordial es resolver un problema, más o menos complejo, dividiéndolo en otros más sencillos, que ligados convenientemente, nos den la solución del problema original.

Cada subproblema se representará mediante uno o varios módulos según su complejidad. La idea es que estos módulos sean independientes, es decir, que se puedan modificar o reemplazar sin afectar al resto del programa o que puedan ser reutilizados en otros programas. Supongamos el siguiente ejemplo. “Un profesor quiere crear un programa para gestionar la notas de sus alumnos. Quiere que dicho programa le permita realizar tareas tales como asignar notas, cambiar notas, ver las notas según las distintas calificaciones, etc.” Un posible división del problema en módulos sería: Esta subdivisión nos permitiría, fácilmente, cambiar la forma de visualizar a los alumnos, reutilizar el módulo “Visualizar” en otro programa y sobre todo es mucho más fácil de comprobar su funcionamiento.


El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 ( datos binarios).

El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda procesarlo.

El ensamblador fue el primer lenguaje de programación utilizado. Es muy similar al lenguaje máquina, pero los desarrolladores pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje máquina que depende estrictamente del tipo de procesador utilizado (cada tipo de procesador puede tener su propio lenguaje máquina). Así, un programa desarrollado para un equipo no puede ser portado a otro tipo de equipo. El término "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un código ensamblador en otro tipo de equipo, ¡a veces será necesario volver a escribir todo el programa!

Por lo tanto, un lenguaje de programación tiene varias ventajas:

  • es mucho más fácil de comprender que un lenguaje máquina:
  • permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos.
    Lenguaje Principal área de aplicación Compilado/interpretado
    ADA Tiempo real Lenguaje compilado
    BASIC Programación para fines educativos Lenguaje interpretado
    C Programación de sistema Lenguaje compilado
    C++ Programación de sistema orientado a objeto Lenguaje compilado
    Cobol Administración Lenguaje compilado
    Fortran Cálculo Lenguaje compilado
    Java Programación orientada a Internet Lenguaje intermediario
    MATLAB Cálculos matemáticos Lenguaje interpretado
    Cálculos matemáticos Cálculos matemáticos Lenguaje interpretado
    LISP Inteligencia artificial Lenguaje intermediario
    Pascal Educación Lenguaje compilado
    PHP Desarrollo de sitios web dinámicos Lenguaje interpretado
    Inteligencia artificial Inteligencia artificial Lenguaje interpretado
    Perl Procesamiento de cadenas de caracteres Lenguaje interpretado

    programación como termino se utiliza para designar la creacion de programas a pequeña escala, el desarrollo de sistemas complejos se denomina ingenieria de software.

    Una computadora es totalmente inutil si no dispone de un programa capaz de procesar información.

    Para que se realize dicho procesamiento de información habra sido necesario construir un ordenador (hardware), pensar y crear un programa (software) y ejecutar dicho programa o aplicacion en el computador.
    La ultima de estas fases es la que realiza el usuario, las anteriores son realizadas por tecnicos que construyen el hardware y por programadores que desarrollan el software.

    programación e ingenieria de software son complementarias entre si. Para el desarrollo de grandes sistemas informaticos se divide el trabajo en tareas que diversos programadores desarrollaran. Al terminar se unen las piezas como en un puzzle para completar el sistema en si. Asi programación tambien se aplica para el desarrollo de grandes sistemas en las ingenierias de software.

    Lenguajes de Programación

    Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno.

    John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí.

    ¿Cómo es que describimos un programa como números? Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios.

    La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode) . Por ejemplo, una calculadora programable simple podría asignar los opcodes :

    1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.

    Supongamos que queremos realizar la operación 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podríamos "escribir" el programa de la siguiente forma:

    Localidad Opcode Significado Comentario 0 5 5 En esta localidad, tenemos el primer número de la fórmula 1 3 * En esta localidad, tenemos el opcode que representa la multiplicación. 2 3 3 En esta localidad, tenemos el segundo número de la fórmula 3 1 + En esta localidad, tenemos el opcode que representa la suma. 4 2 2 En esta localidad, tenemos el último número de la fórmula

    Podemos ver que con esta representación, es simple expresar las operaciones de las que es capaz el hardware (en este caso, nuestra calculadora imaginaria), en la memoria.

    La descripción y uso de los opcodes es lo que llamamos lenguaje de máquina . Es decir, la lista de códigos que la máquina va a interpretar como instrucciones, describe las capacidades de programación que tenemos de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere del programador que conozca el funcionamiento de la máquina al más bajo nivel.

    los lenguajes más primitivos fueron los lenguajes de máquina. Esto, ya que el hardware se desarrolló antes del software, y además cualquier software finalmente tiene que expresarse en el lenguaje que maneja el hardware.

    La programación en esos momentos era sumamente tediosa, pues el programador tenía que "bajarse" al nivel de la máquina y decirle, paso a pasito, cada punto de la tarea que tenía que realizar. Además, debía expresarlo en forma numérica; y por supuesto, este proceso era propenso a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que recordar que en estos momentos, simplemente aún no existía alternativa.

    El primer gran avance que se dio, como ya se comentó, fue la abstracción dada por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras herramientas automáticas para generar el código máquina. Esto redujo los errores triviales, como podía ser el número que correspondía a una operación, que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de él.

    Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el aumento de poder del hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho de Física, Química y otras ramas similares, pero no de Computación, y por supuesto, les era sumamente complicado trabajar con lenguaje Ensamblador en vez de fórmulas. Así, nació el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracción posible, y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o intérpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora.

    Hay que notar la existencia de lenguajes que combinan características de los de alto nivel y los de bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programación de alto nivel, y la facilidad de usar librerías que también son características de alto nivel; sin embargo, fue diseñado con muy pocas instrucciones, las cuales son sumamente sencillas, fáciles de traducir al lenguaje de la máquina; y requiere de un entendimiento apropiado de cómo funciona la máquina, el uso de la memoria, etcétera. Por ello, muchas personas consideramos a lenguajes como C (que fue diseñado para hacer sistemas operativos), lenguajes de nivel medio.

    Java

    El lenguaje de programación Java, fue diseñado por la compañía Sun Microsystems Inc, con el propósito de crear un lenguaje que pudiera funcionar en redes computacionales heterogéneas ( redes de computadoras formadas por más de un tipo de computadora, ya sean PC, MAC's, estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier máquina o plataforma. El lenguaje fue diseñado con las siguientes características en mente:

    Java puede funcionar como una aplicación sola o como un "applet", que es un pequeño programa hecho en Java. Los applets de Java se pueden "pegar" a una página de Web (HTML), y con esto puedes tener un programa que cualquier persona que tenga un browser compatible podrá usar.

    Nota:Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el servidor mientras que un programa en Java se ejecuta en la máquina del usuario.

    Java funciona de la siguiente manera: El compilador de Java deja el programa en un Pseudo-código (no es código maquinal) y luego el intérprete de Java ejecuta el programa (lo que se conoce como el "Java Virtual Machine"). Por eso Java es multiplataforma, existe un intérprete para cada máquina diferente. Nota: El código maquinal es el código binario que la computadora entiende y puede ejecutar.

    Para entender bien como funciona un applet de Java vean el siguiente ejemplo:

    Ejemplo de tutorial de Java:

    En Java hay tres tipos de comentarios:

    // comentarios para una sola línea

    /* comentarios de una o

    más líneas

    */

    /** comentario de documentación, de una o más líneas

    */

    Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.

    En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.

    Identificadores

    Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.

    En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.

    • Crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE (nuevo)

      Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE. Crear un nuevo proyecto y desmarcar la opción Create Main Class en la segunda ventana que aparece y finalizar. Implementar todas las clases necesarias para el proyecto con todas sus funcionalidades. Por una cuestión de buenas prácticas de programación crearemos un nuevo paquete para mantener las formas visuales separadas del código de nuestras clases, por lo tanto el tercer paso es crear un nuevo paquete. En las carpetas del proyecto damos click derecho en Source Packages, en new seleccionamos la opción Java Package, le damos un nombre y finalizamos. (En formato PDF).

      Publicado: Jue Dic 04 2008 | 0 visitas | Calificar | Comentar | Abrir en otra ventana
  • Apuntes de fundamentos de programación unidad 1 (nuevo)

    La orientación a objetos es una forma de hacer frente a la comprensión y solución de problemas, usando modelos organizados a partir de conceptos del mundo real. Su pieza fundamental es el objeto, el cual combina en una sóla entidad, los datos que lo identifican y su comportamiento. En particular, nosotros utilizaremos la orientación a objetos para analizar, diseñar e implementar programas de computadora, es decir, vamos a efectuar programación orientada a objetos. Entonces, lo primero que tenemos que aprender si queremos hacer programas orientados a objetos, es el concepto de lo que es un objeto. Objeto: es “algo” que tiene sentido en el contexto de una aplicación. A nosotros nos servirá para 2 propósitos : (1) nos ayudarán a entender el mundo real cuando analicemos un problema, y (2) nos proporcionan una base –modelo- para su implementación en una computadora. Los objetos pueden ser de 2 tipos : Concretos o Conceptuales. (En formato PDF).

    Publicado: Mie Nov 26 2008 | 27 visitas | Calificar | Comentar | Abrir en otra ventana
  • Apuntes de fundamentos de programación unidad 4 (nuevo)

    10 de 10 estrellas (1 voto)

    Dentro de este tema veremos algunos conceptos y definiciones que nos ayudarán a situarnos en el entorno de aprendizaje de la escritura de programas de computadora. La clasificación del software en 2 tipos : software de sistemas y software de aplicaciones, nos ayudarán en cuanto a la dirección de nuestros esfuerzos al construir programas. Si deseamos dedicarnos a resolver problemas empresariales de tipo administrativo, control de procesos donde intervengan personas, materiales, dinero, reportes estadísticos, manejo de bases de datos, sistemas en el web, entre otros, claramente habremos seleccionado el dedicarnos a escribir programas de aplicaciones. Si nos vamos por el camino de escribir programas para procesos industriales, manejo y codificación-decodificación de video, programación de autómatas industriales, robótica, editores, compiladores, sistemas operativos, hojas de cálculo, procesadores de texto, entre otros, habremos tomado el sendero de la programación de sistemas. Los conceptos de programa, programación y de lenguaje de programación, son requeridos con el fin de conocer de manera formal los objetos –programa y lenguaje de programación- y las metodologías –programación-, involucrados en el contexto de la escritura de programas de computadora. En otras palabras, cuando escribimos programas que serán ejecutados en una computadora, el conocimiento formal de programa, programación y lenguaje de programación nos ayudarán a posicionarnos de manera firme sobre una plataforma que nos permita orientar nuestros esfuerzos de manera clara, hacia la construcción del programa -¿qué vamos a efectuar?-, qué herramientas formales- programación- usaremos para el desarrollo del programa – análisis y diseño-, y qué lenguaje de programación seleccionaremos para efectuar la implementación del programa. El concepto de programación es aplicado en todas las etapas del desarrollo de un programa, incluyendo la implementación – codificación-, pruebas y mantenimiento. (En formato PDF).

    Publicado: Mie Nov 26 2008 | 22 visitas | Calificar | Comentar | Abrir en otra ventana
  • Videojuegos (parte 1) (nuevo)

    Este documento busca mostrar el mundo de los videojuegos, los géneros que existen, su evolución y el estado del arte en el cual se encuentran actualmente. Presenta muchas capturas de distintos videojuegos tanto PC como para consola. Compresión de datos, redes neuronales, encriptación, trazado de rayos... la informática tiene muy diversos temas en su espectro como disciplina, pero quizás ninguno tenga tantos adeptos con los videojuegos, esos increíbles mundos virtuales que nos divierten a tantas personas. En este fantástico white paper que les brindamos este mes en Peiper vamos a ver un rápido “pantallazo” de los géneros de videojuegos, los aspectos que se tienen en cuenta a la hora de desarrollar un videojuego y las tecnologías que podrían llegar a implementarse en el mercado de consumo masivo en el futuro. (En formato PDF).

    Publicado: Mie Nov 26 2008 | 289 visitas | Calificar | Comentar | Abrir en otra ventana
  • Controlabilidad de sistemas lineales (nuevo)

    Concepto general de contabilidad. Definición de controlabilidad del estado. Teorema 5-1. Observabilidad de sistemas lineales. Definición de Observabilidad. Teoremas Invariantes sobre contabilidad y observabilidad. Los conceptos de controlabilidad y observabilidad presentados primero por Kalman juegan un papel importante en los aspectos teórico y práctico, del control moderno. Las condiciones sobre controlabilidad y observabilidad gobiernan la existencia de una solución de un problema de control óptimo. Esto parece ser la diferencia básica entre la teoría de control óptimo y la teoría clásica de control. Esto En esta última, las técnicas de diseño son dominadas por métodos de prueba y error, por lo que dado un conjunto de especificaciones de diseño, el diseñador desconoce en el inicio si existe solución. Por otro lado, la teoría de control óptimo para la mayor parte de los problemas, cuenta con criterios para determinar desde el inicio si la solución de diseño existe o no para los parámetros del sistema y los objetivos del diseño.

    Publicado: Jue Nov 20 2008 | 33 visitas | Calificar | Comentar | Abrir en otra ventana
  • Controlabilidad y observabilidad de sistemas lineales (nuevo)

    Controlabilidad de sistemas lineales. Observabilidad de sistemas lineales. Programa de control on/off. Los conceptos de controlabilidad y observabilidad presentados primero por Kalman juegan un papel importante en los aspectos teórico y práctico, del control moderno. Las condiciones sobre controlabilidad y observabilidad gobiernan la existencia de una solución de un problema de control óptimo.

    Publicado: Jue Nov 20 2008 | 31 visitas | Calificar | Comentar | Abrir en otra ventana
  • Generación de código en C# para un reconocedor sintactico ascendente (nuevo)

    El tema de programación de reconocedores ascendentes SLR en lo referente a su enseñanza, requiere de procesos que hechos manualmente –en el pintarrón- consumen una gran cantidad de tiempo del curso de Programación de Sistemas. Algunos de estos procesos son : generación de la colección canónica de items, el autómata que muestra los estados, sus cambios y reducciones, además de la construcción de la tabla de reconocimiento. El software didáctico presentado denominado RA-SLR, automatiza y describe la generación de los procesos antes mencionados, agregando las características de simulación del reconocedor ascendente y de generación de código de 4 clases propuestas por R.A. Francisco, usadas para construir aplicaciones en C#, que hagan un análisis sintactico ascendente de una entrada previamente analizada por un analizador léxico. Este material forma parte de 3 softwares didácticos : SP-PS1 para la generación de código Objec! tPascal, C++ y C# para analizadores léxicos, RD-NRP para la generación de código C# para analizadores sintacticos descendentes no recursivos predictivos y el RA-SLR que se describe en este trabajo. Todos los softwares se basan en las clases propuestas por R.A. Francisco. (En formato PDF).

    Publicado: Jue Nov 20 2008 | 32 visitas | Calificar | Comentar | Abrir en otra ventana
  • Visual FoxPro 9,0 y Sql Server 2005 (nuevo)

    Programación de VISUAL FOX PRO (VFP) y SQL SERVER 2005, tecnologia cliente-servidor y programación en capas. En este diseño de capas se puede observar claramente que no existe una relación directa entre la capa interfaz y la capa de datos, para que dicha relación exista tiene que transitar a través de una capa de negocios seguidamente de una capa conexión, esta última se comunica mediante los SP (Stored Procedures) a la data. Ejemplos de código que van en diferentes capas: La capa interfaz está basada en clases visuales de la VFP, la de negocios en clase no visuales de VFP y para esta capa de tipo "custom", la de conexión también utilizara una clase no visual VFP de tipo "session" y la de data será un SqlServer que puede ser 2000 o 2005. Cabe resaltar que cualquiera de las capas puede ser reemplazada por el tipo que Uds. crean conveniente. (En formato PDF).

    Publicado: Mie Nov 12 2008 | 45 visitas | Calificar | Comentar | Abrir en otra ventana
  • Configuration Manager Database (CMDB) (nuevo)

    CMDB (Configuration Manager Database). Programas CMDB # Errores al conceptualizar una CMDB. ¿Se necesita realmente una CMDB?. La importancia del manejo de la configuración informática que se tiene. Metas de una CMDB. Los datos son la clave de todo. Evolución de las CMDB. Contenido de una CMDB. Relaciones entre las Cis. Desventajas de una CMDBs.

    Publicado: Vie Nov 07 2008 | 53 visitas | Calificar | Comentar | Abrir en otra ventana
  • Investigación sobre PowerBuilder y Toad (nuevo)

    PowerBuilder. Desventajas y Ventajas de PowerBuilder. Requerimientos del sistema para usar PowerBuilder. Licencia de uso de PowerBuilder. Diferencias fundamentales entre las ediciones de PowerBuilder. Costo de licencias de PowerBuilder en El Salvador. Instalación de PowerBuilder. Compatibilidad de PowerBuilder. Ejemplo de una aplicación inicial creada paso a paso en PowerBuilder. Toad. Desventajas y Ventajas de Toad. Requerimientos del sistema para utilizar Toad. Licencia de uso de Toad.

    Publicado: Vie Nov 07 2008 | 48 visitas | Calificar | Comentar | Abrir en otra ventana
  • SAIL (Sistema automatizado informativo de libros) (nuevo)

    Especificación de los métodos utilizados para la confección de SAIL. Ciclo del Diseño con ER/Studio. El entorno visual de programación Visual Basic 6.0. ASP como Herramienta de programación para la Web. Estructura del Sistema Propuesto. Puesta a Punto del Sitio Web (WEBSAIL). El Problema que se presenta es que en determinadas auditorias (en el almacén de libros de texto de la Universidad de Pinar del Río) es muy engorroso saber la cantidad de libros en existencia en almacén, en calidad de préstamos y trasladados, lo que ocasiona que muchos libros prestados no retornen a su destino inicial, propiciando pérdidas incalculables de material de estudio, por lo que nuestro objeto de análisis es el libro. Lograr el control de los libros del almacén que efectúa préstamos a los estudiantes a partir de la implementación de un sistema que sea capaz de dar respuesta oportuna ante cualquier solicitud.

    Publicado: Vie Nov 07 2008 | 52 visitas | Calificar | Comentar | Abrir en otra ventana
  • Sistema de control de matrículas para una Institución educativa (nuevo)

    Estudio de factibilidad. Diagrama de flujo de información (utilizando el diagrama de bloques PEPSU). Diccionario de datos del sistema de control de matrículas para una Institución educativa. Diseño de pantallas - pantalla de inicio. Explicación de las pantallas, generación de reportes y Contraseña de usuarios. Etapa de programación y prueba. Implantación del sistema. Este documento presenta el análisis y diseño de un sistema para control de matrículas de una institución educativa. El enfoque es detallar el sistema y no presentar un marco teórico de lo que es cada uno de los temas presentados. Para el desarrollo de este diseño se han utilizado conocimientos que pueden ser encontrados en libros o en internet, pero más que una explicación de cada uno de estos tópicos, se detalla una propuesta concreta de un sistema que se quiere poner en marcha.

    Publicado: Vie Nov 07 2008 | 52 visitas | Calificar | Comentar | Abrir en otra ventana
  • Aplicación de metodología ágil de almacenes de datos (nuevo)

    4 de 10 estrellas (1 voto)

    Aplicación de metodología ágil de almacenes de datos basada en el proceso unificado de desarrollo. Cada día la información es fundamental e indispensable en la toma de dediciones por parte de la gerencia de cualquier empresa. Los almacenes de datos se han convertido en piezas claves en el entorno empresarial. Este trabajo tiene como objetivo exponer La Metodología Ágil de Desarrollo de Almacenes de Datos basada en el Proceso Unificado de Desarrollo (RUP) elaborada por Ambler W. Scott. El enfoque serial tradicional para la creación de un almacén de datos, donde semanas o meses de modelación son necesarios antes de que comience el proceso de desarrollo es insuficiente para satisfacer las demandas en un ambiente de negocios dinámico como ocurre en estos tiempos. Los cambios en los requerimientos demandan un enfoque de alta colaboración evolutivo y flexible, el Proceso Unificado de Desarrollo (RUP) define tal enfoque.

    Publicado: Lun Oct 27 2008 | 71 visitas | Calificar | Comentar | Abrir en otra ventana
  • Tratamiento de cadenas de caracteres

    Tratamiento. Declaracion de una variable tipo cadena. Declaración en Type. Asignaciones. Longitud. Cadenas. Los datos tipo char o string permiten la manipulación de datos no numéricos. Una cadena de caracteres (string) es una serie de caracteres cuya longitud puede variar de 0 a 255 caracteres. (En formato PPT).

    Publicado: Vie Oct 24 2008 | 76 visitas | Calificar | Comentar | Abrir en otra ventana
  • El Lenguaje de Programación COBOL

    Historia del Lenguaje de Programación Cobol. Sintáxis del lenguaje. Características. Programa ejemplo. (En formato PPT).

    Publicado: Jue Oct 23 2008 | 1410 visitas | Calificar | Comentar | Abrir en otra ventana
  • Programa DEBUG

    Comandos de Debug. Significado de Bug. Este programa puede ejecutarse desde la línea de comandos de DOS, permite visualizar la memoria, introducir programas en ella y rastrear su ejecución. Una característica de Debug es que despliega todo el código del programa y los datos en formato hexadecimal. (En formato PPT).

    Publicado: Jue Oct 23 2008 | 73 visitas | Calificar | Comentar | Abrir en otra ventana
  • Programación estructurada

    Funciones. Turbo Pascal. Sintaxis. Funciones predefinidas en Turbo Pascal. Funciones ordinarias. Puesta a punto de programas. Problema resuelto. (En formato PPT).

    Publicado: Jue Oct 23 2008 | 73 visitas | Calificar | Comentar | Abrir en otra ventana
  • Programación modular: procedimientos y funciones

    Programación estructurada. Programación modular. Diseño descendente. Módulos. Procedimientos. Transferencia de información. Parámetros de entrada y salida. Parámetros actuales y formales. Valor y variable. Regla de sintaxis. (En formato PPT).

    Publicado: Jue Oct 23 2008 | 84 visitas | Calificar | Comentar | Abrir en otra ventana
  • Programación de bajo nivel - Lenguaje C

    Ecriba un programa que solicite por teclado una serie de números enteros, los almacene en un array y posteriormente escriba por pantalla todos los números introducidos en el orden ingresado, indicando además cual es el mayor y el menor.

    Publicado: Mie Oct 22 2008 | 1303 visitas | Calificar | Comentar | Abrir en otra ventana
  • La discursividad del creador en la interfaz gráfica del software educativo

    Este trabajo devela una aproximación teórica del proceso de creación de la interfaz gráfica por el diseñador y de la relaciones que se establecen entre los eslabones que lo conforman. La comunicación por la imagen, engañosamente transparente e inocente, es una suerte de arena de tensión y confrontación de sentidos y significados entre creador y cocreador, quienes ponen en función de la misma un conjunto de códigos mediadores que de no compartirse podría resultar en incomunicación. En la comunicación visual se refunda la teoría del reflejo a partir de la dialéctica del par semiótico denotación / connotación. Lo denotativo es todo cuanto es reproducible de la realidad y es condición sine qua non para que se produzca el acto de mostrar. Concede valor gnoseológico a la imagen como fuente de conocimiento de la realidad objetiva para ambos sujetos que se involucran en la comunicación. Lo denotativo constituye un primer nivel de codificación (física) de la realidad y refiere los elementos que de forma perceptiva se advierten en la imagen. Encierra para el creador el replanteo del código visual, arbitrariamente establecido como resultado de convenciones sociales. Ello connota la iconicidad a través de categorías plásticas que reproducen algunas condiciones de la percepción de los objetos de la realidad y entraña un valor referencial con respecto al mundo objetivo o a mundos posibles.

    Publicado: Mar Oct 21 2008 | 80 visitas | Calificar | Comentar | Abrir en otra ventana
  • Apuntes de fundamentos de programación

    Este trabajo describe la implementación de una clase en C# para alumnos y/o profesores de fundamentos de programación. Se incluyen ejemplos en ambiente Windows usando el lenguaje C#. (En formato PDF).

    Publicado: Mie Oct 15 2008 | 1688 visitas | Calificar | Comentar | Abrir en otra ventana
  • Manual de PS1

    Presento el uso de un programa para uso didáctico llamado SP-PS1 para la enseñanza de temas de lenguajes y autómatas tales como expresiones regulares, reglas de thompson, algoritmo de construcción de subgrupos y algoritmo de particiones. Es una primera parte de 2, ya que la segunda usa a este mismo SP-PS1 para generar código C++, C# y Object pascal usado en la construcción de analizadores léxicos, según las clases propuestas por R.A.Francisco. Este programa es una herramienta desarrollada para ayudarte en el estudio de 2 materias : “Lenguajes y Autómatas” y “Programación de Sistemas I”. Inicialmente, este manual te indicará el uso de Ps1 como auxiliar didáctico tanto para la enseñanza como para el aprendizaje de los siguientes temas del curso de “Lenguajes y Autómatas” : Expresiones regulares; Reglas de Thompson; Algoritmo de construcción de subgrupos; Algoritmo de particiones; Gramáticas. (En formato PDF).

    Publicado: Mie Oct 15 2008 | 91 visitas | Calificar | Comentar | Abrir en otra ventana
  • Estructuras de datos, Gestión Dinámica de Memoria

    En este tema se estudiarán las posibilidades que ofrece el Lenguaje C a la hora de trabajar dinámicamente con la memoria dentro de los programas, esto es, reservar y liberar bloques de memoria al momento de ejecutar un programa. Además en este tema se introducirá el concepto de tipo abstracto de dato y la forma de dividir un gran programa en otros más pequeños. Los tipos de datos vistos hasta ahora, tanto los simples (Predefinidos por el lenguaje) como los estructurados (Definidos por el programador), sirven para describir datos o estructuras de datos cuyos tamaños y formas se conocen de antemano. Cuando se declara una variable se reserva la memoria suficiente para contener la información que debe almacenar. Esta memoria permanece asignada a la variable hasta que termine la ejecución del programa (fin de la función main). Sin embargo, hay programas cuyas estructuras de datos pueden variar de forma y tamaño durante la existencia del mismo (En modo ejecución). (En formato PDF).

    Publicado: Mar Oct 14 2008 | 99 visitas | Calificar | Comentar | Abrir en otra ventana

White paper: Autómatas celulares

La simulación por computadora es, hoy en día, una de las únicas estrategias de las que dispone la ciencia para predecir sucesos en sistemas con un alto grado de complejidad. Esta complejidad es tal que la matemática clásica no resulta suficiente para expresar todos los fenómenos que ocurrirán en el sistema. Hoy por hoy, la simulación es una de las herramientas más precisas de las que dispone la ciencia para ver los comportamientos de los sistemas deseados. Los autómatas celulares son un tipo de simulación que se compone de elementos muy simples: una cuadrícula con cuadrados que pueden adoptar distintos colores y pasos discretos de tiempo. En cada paso de tiempo el autómata celular evoluciona en base a reglas muy simples. El nuevo valor (color) de una celda se calcula en base a la actual y a sus vecinas. Esto se hace para todas las celdas al mismo tiempo. Simple, no? Pero la complejidad que esconde este simple esquema es extrema. (En formato PDF).

8 lenguajes de programación que deberías aprender

Tendencias de los lenguajes de programación | tufuncion.com

Lo normal sería pensar que este gráfico es un indicador de las habilidades necesarias en un futuro por un desarrollador web, pero la realidad es bien distinta aquí en España, sólo habría que darse una vuelta por algún portal de empleo y ver las habilidades que requieren las empresas...

Por eso vamos a hacer un pequeño análisis de los 8 lenguajes de programación con más demanda en el mercado español, este análisis consta de 3 apartados:
¿Qué es?, ¿Por qué deberías aprenderlo?, Oferta de trabajo (Fuente:Infojobs)

1.PHP

¿Qué es?

PHP usa una mezcla entre interpretación y compilacion para intentar ofrecer a los programadores la mejor mezcla entre rendimiento y flexibilidad.

PHP compila para tu codigo una serie de instrucciones (llamadas opcodes) siempre que estas son accedidas. Estas instrucciones son entonces ejecutadas una por una hasta que el script termina. Esto es diferente a la manera convencional de compilacion de lenguajes como C++ donde el código es compilado a código ejecutable que es despues ejecutado. Php es recompilado cada vez que se solicita un script.

Una ventaja importante de interpretar el código es que toda la memoria usada por tu código es manejada por PHP, y el lenguaje automáticamente vacía esta memoria cuando el script finaliza. Esto significa que tu no tienes que preocuparte de las conexiones a la base de datos, porque PHP lo hará por ti. leer más

¿Por qué deberías aprenderlo?

Es uno de los lenguajes de progrmación más populares, la gran fluidez y rapidez de sus scripts y su prometedor futuro, desarrollar aplicaciones Webs utilizando lenguajes como C o COBOL son cosas del pasado.

Oferta de trabajo

Demanda de trabajo: 362 ofertas

2.C#

¿Qué es?

C# es un lenguaje de propósito general orientado a objetos creado por Microsoft para su plataforma .NET.

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes. C# fue diseñado para combinar el control a bajo nivel de lenguajes como C y la velocidad de programación de lenguajes como Visual Basic.

¿Por qué deberías aprenderlo?

Es una parte esencial de la plataforma .Net, C# combina los mejores elementos de múltiples lenguajes de amplia difusión como C++, Java, Visual Basic o Delphi. De hecho, su creador Anders Heljsberg fue también el creador de muchos otros lenguajes y entornos como Turbo Pascal, Delphi o Visual J++. La idea principal detrás del lenguaje es combinar la potencia de lenguajes como C++ con la sencillez de lenguajes como Visual Basic, y que además la migración a este lenguaje por los porgramadores de C/C++/Java sea lo más inmediata posible.

Oferta de trabajo

Demanda de trabajo: 1.002 ofertas

3.AJAX

¿Qué es?

AJAX no es un lenguaje exactamente su nombre viene dado por el acrónimo de Asynchronous JavaScript And XML y es posiblemente la mayor novedad en cuanto a programación web en estos últimos años.

El corazón de Ajax es el objeto XMLHttpRequest que nos permite realizar una conexión al servidor y al enviarle una petición y recibir la respuesta que procesaremos en nuestro código Javascript, estamos hablando del verdadero motor de Ajax, por ejemplo gracias a este objeto podemos desde una página HTML leer datos de una web o enviar datos de un formulario sin necesidad de recargar la página.

leer más

¿Por qué deberías aprenderlo?

La demanda de AJAX no sólo es amplía sino que de calidad debido a la dificultad de aprendizaje que conlleva, si la herramienta de Microsoft, Atlas, destinada a la realización de aplicaciones AJAX tiene éxito puede suponee un aumento en la demanda de esta tecnología.

Oferta de trabajo

Demanda de trabajo: 65 ofertas

4.JavaScript

¿Qué es?

Se trata de un lenguaje de programación del lado del cliente, porque es el navegador el que soporta la carga de procesamiento. Gracias a su compatibilidad con la mayoría de los navegadores modernos, es el lenguaje de programación del lado del cliente más utilizado.

¿Por qué deberías aprenderlo?

La razón de mayor peso es que es utilizado por millones de páginas webs para validar formularios, crear cookies, detectar navegadores y mejorar el diseño, su fácil aprendizaje lo hace un lenguaje muy demandado.

Oferta de trabajo

Demanda de trabajo: 422 ofertas

5.Perl

¿Qué es?

Perl es la alternativa más popular a PHP, seguramente porque es el lenguaje más antiguo tambien dentro de las alternativas. En internet nos encontramos numerosos recursos que utilizan Perl, muchos de las aplicaciones "open source" requieren tener Perl instalado correctamente. Perl tiene una ventaja y es que es muy flexible, y tambien tiene un gran cantidad de modulos ya escritos.

Bien escritos los scripts en Perl se asemejan bastante a PHP. La principal causa de la sucía apariencia de Perl es por la afición de sus desarrolladores a la escritura en "una línea" empaquetanto numerosas funcionalidades en una sola línea de código. leer más

¿Por qué deberías aprenderlo?

La potencía de Perl a la hora de procesar grandes cantidades de datos lo hace realmente popular a la hora de desarrollar aplicaciones del lado del servidor, aprender Perl o Php es básico a la hora de desarrollar aplicaciones Web.

Oferta de trabajo

Demanda de trabajo: 82 ofertas

6.C

¿Qué es?

Es un lenguaje de "medio nivel" pero con numerosas características de bajo nivel.
Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel.

¿Por qué deberías aprenderlo?

Aprender C es básico mientras aprendes C estas aprendiendo conceptos básicos de lenguajes cómo Java o C#, además no sólo es mas sencillo que estos últimos sino que comporten gran parte de su sintaxis.

Oferta de trabajo

Demanda de trabajo: 312 ofertas

7.Ruby y Ruby on Rails

¿Qué es?

Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby.
Ruby apareció en el año 1995 y creo que su principal problema había sido
la falta de documentación en otro idioma que no sea japonés. Eso se ha ido
solucionando y crece la popularidad del lenguaje. Su aplicación insignia,
por decirlo de algún modo parece ser RoR. Su mecanismo de gem se me parece
al CPAN de Perl y al Pear de PHP. leer más

¿Por qué deberías aprenderlo?

Simple y funcional, el uso de Active Record de forma eficiente simplifica y agiliza el desarrollo de forma notable. Al minimizar el trabajo con la base de datos (escribiendo triggers y procedimientos almacenados) y emplear un único lenguaje para todo el desarrollo, se consigue acortar los tiempos de desarrollo (time2market).

Oferta de trabajo

Demanda de trabajo: 5 ofertas

8.ASP

¿Qué es?

Active Server Pages (ASP) y ASP.NET es un intendo de Microsoft para introducirse en el mercado del desarrollo Web, y viene a ser como su estandar para su servidor Web, ISS. Asp ha sido atacado por la comunidad open source desde que este apareció, y dan numerosas razones para ello:
El propietario, una única plataforma, la lentitud..

Actualmente existen diferentes lenguajes de programación para desarrollar en la web, estos han ido surgiendo debido a las tendencias y necesidades de las plataformas. En el presente artículo pretende mostrar las ventajas y desventajas de los lenguajes más conocidos.

Desde los inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estáticos. A medida que paso el tiempo, las tecnologías fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar a desarrollar lenguajes de programación para la web dinámicos, que permitieran interactuar con los usuarios y utilizaran sistemas de Bases de Datos. A continuación daremos una introducción a los diferentes lenguajes de programación para la web.

Lenguaje HTML

Desde el surgimiento de internet se han publicado sitios web gracias al lenguaje HTML. Es un lenguaje estático para el desarrollo de sitios web (acrónimo en inglés de HyperText Markup Language, en español Lenguaje de Marcas Hipertextuales). Desarrollado por el World Wide Web Consortium (W3C). Los archivos pueden tener las extensiones Un lenguaje de programación es un lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas.

Debe distinguirse de “lenguaje informático”, que es una definición más amplia, puesto estos incluyen otros lenguajes como son el HTML o PDF que dan formato a un texto y no es programación en sí misma.

El programador es el encargado de utilizar un lenguaje de programación para crear un conjunto de instrucciones que, al final, constituirá un programa o subprograma informático.

En su uso, un lenguaje de programación puede acercarse a la forma humana de expresarse y, por eso, este tipo de lenguajes es llamado de alto nivel. Esto significa que utilizan palabras y formas en sus estructuras que se asemejan al lenguaje natural (especialmente al inglés). En cambio, aquellos lenguajes que se aproximan más a la forma en la cual la computadora se maneja, son llamados lenguajes de bajo nivel. Esto significa que lo que el programador deba escribir se acercará al lenguaje máquina, que es, en definitiva, lo que las computadoras pueden interpretar.

De todas maneras, un lenguaje de programación difiere en muchos aspectos de un lenguaje humano. Un código escrito en un lenguaje de programación específico siempre se interpreta de la misma manera (no como los idiomas humanos ambiguos), los errores son mucho más significativos (a tal punto de que un código puede volverse ininterpretable por la computadora), etc.

El código fuente es el conjunto de instrucciones que conforman un programa (o subprograma o módulo). El código fuente debe ser compilado para poder ser interpretado y ejecutado por la computadora. La compilación traduce el código fuente (que depende del lenguaje de programación) a un lenguaje máquina (que depende del sistema de la máquina).

Existen lenguajes del tipo script que son directamente ejecutados por un intérprete y no necesitan compilación.

Los lenguajes de programación pueden clasificarse según el paradigma que usan en: procedimentales, orientados a objetos, funcionales, lógicos, híbridos, etc., clasificación que depende de motivos que escapan al alcance de este artículo.

Son ejemplos de lenguajes de programación: php, prolog, asp, actionscript, ada, python, pascal, c, basic, java, etc.

Lenguajes de Programacion

Los lenguajes de programación son lenguajes creado por el ser humano para poder comunicarse con las computadoras. Así lenguaje de programación es el conjunto de símbolos y palabras que permiten al usuario de una computadora darle instrucciones y órdenes para que la computadora los ejecute.

Existen diferentes clases o tipos de lenguajes de programación:

1º El Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1.

Con estos dos únicos dígitos, conocidos como bits, forma lo que se conoce como
cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las
instrucciones que el microprocesador de la computadora entiende nuestra peticiones. Fue el primer lenguaje de programación. Este tipo de lenguaje de programación dejo de utilizarse por su gran dificultad y por la facilidad para cometer errores.

2º Lenguajes de programación de bajo nivel: Son mucho mas fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la máquina o computadora como sucedía con el lenguaje máquina. El lenguaje ensamblador fue el primer lenguaje de programación que trato de sustituir el lenguaje máquina por otro mucho más parecido al de los seres humanos.

En este lenguaje se conoce como programa fuente a un programa de instrucciones
escrito en lenguaje ensamblador por el programador, y programa objeto es la
traducción a lenguaje máquina del programa fuente.

Los lenguajes de este tipo pueden crear programas muy rápidos, pero son difíciles
de aprender, son específicos de cada procesador, si nos llevamos el programa a otro computador será preciso reescribir el programa desde el comienzo.

3º Lenguajes de programación de alto nivel: Este tipo de lenguajes de programación son independientes de la máquina, lo podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano, pero precisan de un programa interprete o compilador que traduzca este lenguaje de programación de alto nivel a uno de bajo nivel como el lenguaje de máquina que la computadora pueda entender.

Los lenguajes de programación de alto nivel son más fáciles de aprender porque se usan palabras o comandos del lenguaje natural, como por ejemplo del inglés. Este es el caso del BASIC, el lenguaje de programación más conocido.

Existen muchos lenguajes de programación de alto nivel con sus diferentes
versiones. Por esta razón es difícil su tipificación, pero una clasificación muy
extendida desde el punto de vista de trabajar de los programas y la filosofía de su
creación es la siguiente:

Lenguajes de programación imperativos: entre ellos tenemos el Cobol, Pascal, C y
Ada.

Lenguajes de programación declarativos: el Lisp y el Prolog.

Lenguajes de programación orientados a objetos: el Smalltalk y el C++.

Lenguajes de programación orientados al problema: son aquellos lenguajes
específicos para gestión.

Lenguajes de programación naturales: son los nuevos lenguajes que pretender
aproximar el diseño y la construcción de programas al lenguaje de las personas.

Otra clasificación de los lenguajes de programación de alto nivel, es teniendo en
cuenta el desarrollo de las computadoras según sus diferentes generaciones:

Lenguajes de programación de primera generación: el lenguaje máquina y el
ensamblador.

Lenguajes de programación de segunda generación : los primeros lenguajes de
programación de alto nivel imperativo (FROTRAN, COBOL).

Lenguajes de programación de tercera generación: son lenguajes de programación de alto nivel imperativo pero mucho más utilizados y vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).

Lenguajes de programación de cuarta generación: usados en aplicaciones de gestión y manejo de bases de dados (NATURAL, SQL).
Descripción
El curso “EL Lenguaje de Programación Java” ofrece a los
estudiantes información acerca de la sintaxis del lenguaje de
programación Java, programación orientada a objetos con el
lenguaje de programación Java, la creación de interfaces gráficas
de usuario (GUI), excepciones, entrada/salida de archivos, hilos
(threading) y networking. Los programadores familiarizados con
conceptos de orientación a objetos puede aprender cómo
desarrollar aplicaciones con tecnología Java. El curso utiliza La
Plataforma Java Edición Estándar 6 (Java SE 6) y utiliza el
producto JDK 6. Los estudiantes realizan los ejercicios de
laboratorio del curso usando el IDE NetBeans.

Programación en el lenguaje Java

El análisis es la base de la programación estructurada, es decir, la descomposición de una tarea en tareas más pequeñas. Un programa no es otra cosa que una colección de funciones que son llamadas sucesivamente por la función principal y única del programa. Cada función tiene sus propias variables, es un módulo independiente. La Programación Orientada a Objetos es el siguiente paso en la evolución de los lenguajes de programación, que combina funciones y datos en una unidad autoconsistente denominada clase.

La creación de interfaces gráficos como el Windows de Microsoft es uno de los ejemplos más claros de las ventajas que tiene la programación orientada a objetos sobre la programación estructurada. Las librerías nos proporcionan clases que describen el aspecto y la conducta de elementos como la ventana, el diálogo, los controles, etc. Derivando una clase de otra base, estamos utilizando el código de la clase base para nuestras propias necesidades, y le añadimos el código que implementa la conducta específica.

Un lenguaje de Programación Orientada a Objetos nos permite organizar el código en entidades como las clases compuestas de datos y funciones, y a través de la característica de la herencia podemos organizar las clases en jerarquías.

Aunque la Programación Orientada a Objetos es la manera más natural de programar, aclimatarse a su ambiente requiere cierto tiempo, no se producen resultados inmediatos. Los numerosos ejemplos que se comentarán a lo largo de las siguientes páginas tratarán de ayudar a efectuar dicha transición de un modo suave y ordenado. Una vez aclimatado, sentirá por sí mismo la necesidad de organizar el código en clases, y posteriormente, si lo requiere el problema, establecer jerarquías entre dichas clases.

A través de estas páginas, pretendemos mostrar la potencia y elegancia de la programación en lenguaje Java en dos situaciones concretas: en la creación de interfaces gráficas avanzadas (applets), y en la resolución de problemas numéricos.

Se pondrá especial énfasis en la Programación Orientada a Objetos que es la parte que los no iniciados encuentran más difícil. Aprender a extraer las propiedades y el comportamiento comunes a un determinado tipo de objetos y transformarlas en la definición de una clase, estructurar las clases en jerarquías, constituyen procesos de abstraccción que implican un cambio de mentalidad en la resolución de los problemas de software que precisan de entrenamiento y de un esfuerzo intenso.

El objetivo es el de enseñar al lector a traducir la descripción de un problema o situación que se plantea a código, a organizar el código en funciones, a agrupar datos y funciones en clases y las clases en jerarquías.

¡Foto!

¡Envia tu foto al Fotomaton!

Lenguajes de programación complicados

10 comentarios · Escrito el 14-Oct-2007 · 4.094 lecturas · programacion

Un lenguaje de programación es un conjunto de símbolos y reglas similares a un «idioma», con el cuál podremos crear aplicaciones o sistemas para controlar una máquina o determinadas funciones. Existen muchos y muy variados, algunos muy famosos son: Java, C/C++, Basic o Perl.

Sin embargo, existen algunos, mucho menos conocidos que podrían entrar en la categoría de Lenguajes de programación complicados dada su naturaleza. Echemos un vistazo a alguno de ellos:

Intercal (1972): Se diseñó en un principio como una parodia de los lenguajes Fortran y Cobol, por la compleja didáctica que poseían. Se trata de una especie de lenguaje máquina. Como curiosidad, Intercal significa «Lenguaje compilado con ningún acrónimo pronunciable».

Ejemplo del Hello World! en Intercal:

PLEASE DO ,1 <- #13
DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #238
DO ,1 SUB #7 <- #26
DO ,1 SUB #8 <- #248
DO ,1 SUB #9 <- #168
DO ,1 SUB #10 <- #24
DO ,1 SUB #11 <- #16
DO ,1 SUB #12 <- #158
DO ,1 SUB #13 <- #52
CONCEPTO DE LENGUAJE DE PROGRAMACIÓN
Un lenguaje de programación es una técnica estándar de comunicación que
permite expresar las instrucciones que han de ser ejecutadas en una computadora.
Consiste en un conjunto de reglas sintácticas y semánticas que definen un lenguaje
informático.
Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si
fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a
los lenguajes de programación y a otros más, como, por ejemplo, el HTML.
Un lenguaje de programación permite a un programador especificar de manera precisa:
sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y
transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo
esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje
humano o natural, tal como sucede con el lenguaje lexico.
Un programa escrito en un lenguaje de programación necesita pasar por un proceso de
compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que
pueda ser ejecutado por el ordenador. También existen lenguajes de scripting que son
ejecutados a través de un intérprete y no necesitan compilación.
HISTORIA Y EVOLUCIÓN DE LOS LENGUAJES DE
PROGRAMACIÓN
En esta parte nos vemos obligados a ser breves ya que podriamos realizar un
trabajo bastante extenso ya que es muy grande la cantidad de lenguajes de programa
ción que existen.
Para hacernos una idea mostramos esta pequeña lista de lenguajes con su año de
creación y cometido:
1900s BINARIO Bool primer lenguaje
1946 Plankalkul Konrad Zuse creado para jugar al ajedrez
1949 Short Code lenguaje traducido a mano
1950 ASM (ensamblador) lenguaje ensamblador
1951 A-0 GRACE HOPPER fue el primer compilador
1952 AUTOCODE Alick E. Glennie compilador muy rudimentario
1956 FORTRAN IBM sistema de TRAducción de FORmulas matemáticas
1956 COBOL Compilador
1958 ALGOL 58
1960 LISP Interprete orientado a la Inteligencia Artificial
1961 FORTRAN IV IBM sistema de TRAducción de FORmulas matemáticas
1961 COBOL 61 Extendido
1960 ALGOL 60 Revisado
1964 PASCAL Niklaus Wirth programacion estructurada
1964 BASIC Universidad de Dartmouth (california) Beginners All Purpose Symbolic Instruction
Code
1965 SNOBOL
1965 APL solo anotacion
1965 COBOL 65
1966 PL/I
1966 FORTRAN 66 IBM sistema de TRAducción de FORmulas matemáticas
1967 SIMULA 67
1968 ALGOL 68
1968 SNOBOL4
1970s GW-BASIC antiguo y clasico BASIC
1970 APL/360
1972 SMALLTALK Centro de Investigación de Xerox en Palo Alto pequeño y rapido
1972 C Laboratorios Bell lenguaje con tipos
1974 COBOL 74
1975 PL /I Lenguaje sencillo
1977 FORTRAN 77 IBM sistema de TRAducción de FORmulas matemáticas
1980s SMALLTALK/V Digitalk pequeño y rapido
1980 C con clases Laboratorios Bell lenguaje con clases
1981 PROLOG Ministerio Japonés de Comercio Internacional e Industria (MITI) Lenguaje
estandar para la Inteligencia Artificial
1982 ADA Ministerio de Defensa de los EE.UU lenguaje muy seguro
1984 C++ AT&T Bell Laboratories (Bjarne Stroustrup) compilador
1985 CLIPPER compilador para bases de datos
En cuanto a la evolución, no existen unas fases muy definidas ya que siempre a
habido cierta coexistencia entre los diferentes tipos de lenguajes. Pero vamos a
permitirnos hacer una breve reseña a ciertas evoluciones como:
1990-95 Las bases de datos relacionales.
Todos los lenguajes Xbase se basaban en el concepto de bases de
datos relacionales, es decir la agrupación de la información en forma de tablas,
denominadas campos y registros, cada uno de ellos preformateados para recibir cierto
tipo de dato (ej: fechas, caracteres, números, valores lógicos, etc.); pudiendo "unir"
diferentes bases por medio de campos comunes.
1995-2000 La orientación a objetos.
A medida que los años van pasando el concepto de Bases
relacionales empieza a decaer relativamente, surge entonces una variante que se aplica a
todos los lenguajes: La orientación a objetos. Ya no solo se habla de programación
estructurada, sino que los módulos de programación son vistos como objetos, las
estructuras representan objetos y/o funciones que se adaptan en forma general a
procesos específicos es la maximización de la programación modular.
2000 y más allá Los lenguajes visuales
Con al llegada de Windows todo es Visual, todo es iconos, todo
es botones, todo es Ventanas. Para programar en lenguajes visuales, primero hay que
comprender lo que es Windows. La forma de programar los sistemas evolucionó
radicalmente. Con Windows es preciso programar conservando las convenciones del
mismo, guardando sus características y funcionalidades. Los sistemas hechos para
Windows, deben ser tan Windows como el propio sistema operativo
PARADIGMAS DE PROGRAMACIÓN
Definición:
Un paradigma de programación es un modelo básico de diseño y desarrollo de
programas, que permite producir programas con unas directrices específicas, tales
como: estructura modular, fuerte cohesión, alta rentabilidad, etc.
Los paradigmas pueden ser considerados como patrones de pensamiento para la
resolución de problemas. Desde luego siempre teniendo en cuenta los lenguajes de
programación, según nuestro interés de estudio.
No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay
situaciones donde un paradigma resulta más apropiado que otro.
Hay multitud de ellos atendiendo a alguna particularidad metodológica o funcional
Cuando un lenguaje refleja bien un paradigma particular, se dice que soporta el
paradigma, y en la práctica un lenguaje que soporta correctamente un paradigma, es
difícil distinguirlo del propio paradigma, por lo que se identifica con él.
Tipos de paradigmas de programación:
Podemos clasificar los paradigmas de programación en:
Paradigma imperativo, heuristico, concurrente, funcional, lógico, paradigma basado en
objetos.
Paradigma imperativo:
Son aquellos que facilitan los cálculos por medio de cambios de estado, entendiendo
como estado la condición de una memoria de almacenamiento. Los lenguajes
estructurados en bloques, se refieren a los ámbitos anidados, es decir los bloques
pueden estar anidados dentro de otros bloques y contener sus propias variables.
Los programas escritos en un lenguaje funcional están constituidos únicamente porLenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.
definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un
lenguaje imperativo, sino como funciones puramente matemáticas, en las que se
verifican ciertas propiedades como la ''transparencia referencial'' (el significado de
una expresión depende únicamente del significado de sus subexpresiones), y por
tanto, la carencia total de ''efectos laterales''.
El objetivo es conseguir lenguajes expresivos y ''matemáticamente elegantes'', en los
que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a
cabo por el programa, y evitando el concepto de ''estado'' del cómputo. La
secuencia de computaciones llevadas a cabo por el programa se regiría única y
exclusivamente por la ''reescritura'' de definiciones más amplias a otras cada vez
más concretas y definidas, usando lo que se denominan ''definiciones dirigidas''.
A este tipo de paradigma de programación se le suele llamar algorítmico
Otras características propias de estos lenguajes son la no existencia de asignaciones
de variables y la falta de construcciones estructuradas como la secuencia o la
iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se
lleven a cabo por medio de funciones recursivas).
Algunos de los lenguajes imperativos son:
• C
• C++
• C#
• Basic
• Java
• Perl
Paradigma heuristico:
Define un modelo de resolución de problemas en el que se incorpora algún
componente heurístico, sobre la base de una representación más apropiada de la
estructura del problema, para su resolución con técnicas heurísticas.
Se puede definir como "aquel tipo de programación computacional que aplica para
la resolución de problemas reglas de buena lógica (reglas del pulgar). denominadas
heurísticas, las cuales proporcionan entre varios cursos de acción uno que presenta
visos de ser el más prometedor, pero no garantiza necesariamente el curso de acción
más efectivo."
La Programación Heurística implica una forma de modelizar el problema en lo que
respecta a la representación de su estructura, estrategias de búsqueda y métodos de
resolución, que configuran el Para
Este tipo de programación se aplica con mayor intensidad en el campo de la
Inteligencia Artificial (IA), y en especial, en el de la Ingeniería del
Conocimientodigma Heurístico.
La Programación Heurística se presenta y utiliza desde diferentes puntos de vista:
o Como técnica de búsqueda para la obtención de metas en problemas no
algorítmicos, o con algoritmos que generan explosión combinatoria
o Como un método aproximado de resolución de problemas utilizando
funciones de evaluación de tipo heurístico
o Como método de poda para estrategias de programas que juegan, aunque
estos métodos no son realmente heurísticos
Paradigma funcional:
Sus orígenes provienen del Cálculo Lambda (o λ-cálculo), una teoría matemática
elaborada por Alonzo Church como apoyo a sus estudios sobre computabilidad. Un
lenguaje funcional es, a grandes rasgos, un azúcar sintáctico del Cálculo Lambda.
El paradigma funcional está basado en el modelo matemático de composición
funcional. En este modelo, el resultado de un cálculo es la entrada del siguiente, y
así sucesivamente hasta que una composición produce el valor deseado.
No existe el concepto de celda de memoria que es asignada o modificada. Más bien,
existen valores intermedios que son el resultado de cálculos anteriores y las entradas
a cálculos subsiguientes. Tampoco existen sentencias imperativas y todas las
funciones tienen transparencia referencial.
La programación funcional incorpora el concepto de función como objeto de
primera clase, lo que significa que las funciones se pueden tratar como datos
(pueden pasar como parámetros, calculadas y devueltas como valores normales, y
mezcladas en el cálculo con otras formas de datos).
En este paradigma el informático concibe la solución como una composición de
funciones
La forma en que se especifican las funciones puede variar. Se pueden especificar
procedimentalmente o matemáticamente mediante su definición, sin secuencia de
control.
Un lenguaje funcional es el Lisp
Paradigma lógico:
La Programación Lógica es un Paradigma de Programación basado en la Lógica.
Los programas construidos un lenguaje lógico están construidos únicamente por
expresiones lógicas, es decir, que son ciertas o falsas, en oposición a un expresión
interrogativa (una pregunta) o expresiones imperativas (una orden). Un ejemplo de
lenguaje lógico es Prolog (Programación lógica).
Prolog, proveniente del inglés Programming in Logic, es un lenguaje lógico bastante
popular en el medio de investigación en Inteligencia Artificial. Prolog es un
lenguaje muy diferente, tanto de los imperativos como Fortran, Pascal, C etc., como
de los funcionales como Lisp. En todos los mencionados, las instrucciones se
ejecutan normalmente en orden secuencial, es decir, una a continuación de otra, en
el mismo orden en que están escritas, que sólo varía cuando se alcanza una
instrucción de control (un bucle, una instrucción condicional o una transferencia).
En Prolog, las cosas son distintas: el orden de ejecución de las instrucciones no tiene
nada que ver con el orden en que fueron escritas. Tampoco hay instrucciones de
control propiamente dichas. Para trabajar con este lenguaje, un programador debe
acostumbrarse a pensar de una manera muy diferente a la que se utiliza en los
lenguajes clásicos.
Paradigma basado en objetos:
La programación orientada a objetos (OOP, por las siglas inglesas de Object-
Oriented Programming) es una forma de programar que proliferó a partir de los años
ochenta.
La Programación Orientada a Objetos (POO u OOP según siglas en inglés) es un
paradigma de programación que define los programas en términos de "clases de
objetos", objetos que son entidades que combinan estado (es decir, datos),
comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del
objeto que lo diferencia del resto).
La programación orientada a objetos expresa un programa como un conjunto de
estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los
programas y módulos más fáciles de escribir, mantener y reutilizar.
De esta forma, un objeto contiene toda la información, (los denominados atributos)
que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras
clases (e incluso entre objetos de una misma clase, al poder tener valores bien
diferenciados en sus atributos). A su vez, dispone de mecanismos de interacción (los
llamados métodos) que favorecen la comunicación entre objetos (de una misma
clase o de distintas), y en consecuencia, el cambio de estado en los propios objetos.
Esta característica lleva a tratarlos como unidades indivisibles, en las que no se
separan (ni deben separarse) información (datos) y procesamiento (métodos).
Dada esta propiedad de conjunto de una clase de objetos, que al contar con una serie
de atributos definitorios, requiere de unos métodos para poder tratarlos (lo que hace
que ambos conceptos están íntimamente entrelazados), el programador debe pensar
indistintamente en ambos términos, ya que no debe nunca separar o dar mayor
importancia a los atributos en favor de los métodos, ni viceversa.
Las principales diferencias entre la programación imperativa y la orientada a objetos
son:
- La programación orientada a objetos es más moderna, es una evolución de la
programación imperativa que plasma en el diseño de una familia de
lenguajes conceptos que existían previamente con algunos nuevos.
- La programación orientada a objetos se basa en lenguajes que soportan
sintáctica y semánticamente la unión entre los tipos abstractos de datos y sus
operaciones (a esta unión se la suele llamar clase).
- La programación orientada a objetos incorpora en su entorno de ejecución
mecanismos tales como el polimorfismo y el envío de mensajes entre
objetos.
Lenguajes orientados a objetos
Entre los lenguajes orientados a objetos destacan los siguientes:
Ada C++ C# VB.NET Clarion Delphi Eiffel Java Lexico (en castellano)
CLASIFICACIONES DE LENGUAJES DE PROGARMACIÓN
En cuanto a su nivel de trabajo:
Lenguaje máquina
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el
alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits
(abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la
programación de computadoras, pero dejó de utilizarse por su dificultad y complicación,
siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además
reducen la posibilidad de cometer errores.
Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna
abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente
trasladado a lenguaje de máquina.En general se utiliza este tipo de lenguaje para
programar controladores (drivers).
La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el
lenguaje simbólico tiene ciertas ventajas:
1. Mayor adaptación al equipo.
2. Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes:
Imposibilidad de escribir código independiente de la máquina.
Mayor dificultad en la programación y en la comprensión de los programas.
Características
- Se trabaja a nivel de Microinstrucciones, es decir, su programación es al más
fino detalle.
- Está orientado a la máquina.
LenguajeLenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.
Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan
al lenguaje natural. Se puede decir que el principal problema que presentan los
lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.
Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
�� Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
�� Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente.
�� Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin
necesidad de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL,
COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67,
ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que
se han desarrollado de algunos de ellos.
TRADUCTORES
Explicamos el proceso más importante a la hora de hacer funcionar un programa
realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es
el código fuente de ese programa.
Este código fuente debe ser traducido a binario para que las instrucciones que contienen
puedan ser entendidas y ejecutadas por la máquina.
Para esto existe un programa encargado de realizar la traducción, llamado traductor del
lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a
lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje.
Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación:
Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un
editor. Como resultado nos dará el código fuente de nuestro programa.
Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a
código máquina. Si no se produce ningún error se obtiene el código objeto. En caso de
errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su
compilación de nuevo, una vez corregidos.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas
rutinas internas del lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
linkado estático: Los binarios de las librerías se añaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinámico: no se añaden las librerías a nuestro binario sino que hará que se
carguen en memoria las librerías que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde
también podrán surgir problemas y fallos, para los cuales tendríamos que volver a
realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes
de presentar el programa al cliente.
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de
intérpretes (estos no se encontrarían dentro de los traductores).
Intérpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
• Un programa compilado puede funcionar por si solo mientras que un código
traducido por un intérprete no puede funcionar sin éste.
• Un programa traducido por un intérprete puede ser ejecutado en cualquier
máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
• Un archivo compilado es mucho más rápido que uno interpretado.
entes de uso frecuente que son ofrecidas por el lenguaje de programación.

Generaciones de Lenguajes :

1. lenguajes de máquina
2. lenguajes ensambladores
3. lenguajes de procedimientos
4. lenguajes orientados a problemas
5. lenguajes naturales

1. Lenguaje de máquina (Primera Generación)
Es el lenguaje que la computadora entiende, su estructura está totalmente adaptada a los circuitos de la máquina y la programación es tediosa porque los datos se representan por ceros y unos. Es de bajo nivel. Es un conjunto de instrucciones codificadas en binario que son capaces de relacionarse directamente con los registros y circuitería del microprocesador de la computadora y que resulta directamente ejecutable por éste, sin necesidad de otros programas intermediarios. Los datos se referencian por medio de las direcciones de memoria donde se encuentran y las instrucciones realizan operaciones simples. Estos lenguajes están íntimamente ligados a la CPU y por eso no son transferibles. (baja portabilidad). Para los programadores es posible escribir programas directamente en lenguaje de máquina, pero las instrucciones son difíciles de recordar y los programas resultan largos y laboriosos de escribir y también de corregir y depurar.

2. Lenguaje ensamblador (Segunda Generación)
Es otro lenguaje de programación de bajo nivel, pero simbólico porque las instrucciones se construyen usando códigos de tipo mnemotécnico, lo cual facilita la escritura y depuración de los programas pero no los acorta puesto que para cada acción se necesita una instrucción. El programa ensamblador va traduciendo línea a línea a la vez que comprueba la existencia de errores. Si localiza alguno da un mensaje de error. Algunas características que lo diferencian del lenguaje de máquina son que permite el uso de comentarios entre las líneas de instrucciones; en lugar de direcciones binarias usa identificadores como total, x, y, etc. Y los códigos de operación se representan por mnemotécnica siempre tienen la desventaja de repertorio reducido de instrucciones, rígido formato para las instrucciones, baja portabilidad y fuerte dependencia del hardware. Tiene la ventaja del uso óptimo de los recursos hardware, permitiendo la obtención de un código muy eficiente. Ejemplo de algunos códigos mnemónicos son: STO para guardar un dato, LOA para cargar algo en el acumulador, ADD para adicionar un dato, INP para leer un dato, STO para guardar información, MOV para mover un dato y ponerlo en un registro, END para terminar el programa, etc. Con la tercera generación avanzamos a los lenguajes de alto nivel, muchos de los cuales se consideran exportables. Esto es, pueden correr en más de un tipo de computadoras, se les puede exportar de una máquina a otra.

3. Lenguaje de procedimientos (Tercera Generación)
Son lenguajes de alto nivel similares al habla humana pero requieren cierta capacitación para su uso.
Ventajas :
a. Independencia de la arquitectura física de la computadora (portabilidad), esto significa que un mismo lenguaje puede funcionar (al menos en teoría) en distintos computadores, por lo que tanto el lenguaje como los programas escritos con él serán transportables de un computador a otro. En la práctica, esta característica resulta limitada por la gran diversidad de versiones y dialectos que se constituyen para cada lenguaje.

b. una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a varias instrucciones en lenguaje máquina. Se llaman de procedimientos porque están diseñados para expresar la lógica capaz de resolver problemas generales. Entre estos tenemos:
Basic
Pascal
Cobol
C
Fortran
Para que el lenguaje de procedimientos pueda funcionar debe traducirse a lenguaje de máquina a fin de que la computadora lo entienda. Para ello se han de usar programas traductores que realicen dicho proceso. Tienen la capacidad de soportar programación estructurada.

4. Lenguajes orientados a problemas (4GL)
Resultan más eficaces para la resolución de un tipo de problemas a costa de una menor eficiencia para otros. Requieren poca capacitación especial de parte del usuario Son considerados de muy alto nivel Diseñados para resolver problemas específicos
Incluye: lenguajes de consulta y generador de aplicaciones
Lenguajes de consulta:
Permiten a no programadores usar ciertos comandos de fácil comprensión para la búsqueda y generación de reportes a partir de una base de datos.
Generador de aplicaciones:
Quiere decir que cuando se diseña uno de estos lenguajes, se tiene en cuenta que su finalidad es la resolución de problemas, prescindiendo de la arquitectura del computador. Contiene varios módulos que han sido preprogramados para cumplir varias tareas.

5. Lenguajes naturales
Lenguajes orientados a aplicaciones en inteligencia artificial, como lisp y prolog. Dentro de este campo destacan las aplicaciones en sistemas expertos, juegos, visión artificial (Jurasic Park) y robótica. Lisp es un lenguaje para procesamiento de listas y manipulación de símbolos. Prolog es un lenguaje basado en la lógica, para aplicaciones de bases de datos e Inteligencia Artificial.
Podemos decir entonces, que los lenguajes de alto nivel, tienen las ventajas de mayor legibilidad de los programas, portabilidad, facilidad de aprendizaje y facilidad de modificación.

PARA ANALIZAR:

1. ¿Cuál es la diferencia fundamental entre los lenguajes de alto nivel y bajo nivel?
2. Investigar analogías y diferencias entre el código máquina y el lenguaje ensamblador.
3. Buscar información que permita decidir cuáles serían los lenguajes de programación más apropiados para realizar: aplicaciones para gestión de oficinas, complejos cálculos científicos, un sistema experto en medicina, un simulador de vuelo, manipulación de bases de datos, control de un robot industrial.
Sugerencias de ampliación:
Clasificación de los lenguajes de alto nivel
¿QUÉ ES EL LENGUAJE DE PROGRAMACIÓN? PDF Imprimir E-mail
Escrito por Administrator
Domingo, 02 de Noviembre de 2008 18:38
El lenguaje de programación es aquel lenguaje que puede ser utilizado para controlar el comportamiento de cualquier máquina, por lo general hablamos de una computadora.

Un lenguaje de programación consiste en un conjunto de símbolos, reglas y caracteres que permiten a las personas “comunicarse” con las computadoras.

Los lenguajes pueden ser de alto o bajo nivel. En los de bajo nivel las instrucciones son simples y cercanas al funcionamiento de la máquina, como por ejemplo el código máquina y el ensamblador. En los lenguajes de alto nivel hay un alto grado de abstracción y el lenguaje es más próximo a los humanos, como por ejemplo Léxico, PASCAL, Cobol o Java .

Entre los programas que emplean lenguajes de programación, los más elementales son los ensambladores, ya que ofrecen al programador un modelo riguroso de la máquina. En ellos se emplean nemónicos, abreviaturas simbólicas, para cada una de las instrucciones de la máquina y desde ellos, están disponibles para el programador todos los recursos del equipo en su nivel más elemental. Los programas que se encargan de la traducción, se limitan a realizar una correspondencia uno a uno entre los nemónicos y las instrucciones de máquina.

Los interpretadores utilizan lenguajes, también simbólicos, pero en este caso, cada símbolo tiene una función asociada por el interprete con esta modalidad, el interpretador puede prever las consecuencias de la operación antes de realizarla y emitir, en su caso, diagnósticos para beneficio del usuario. Las operaciones asociadas a cada símbolo no están confinadas a las operaciones disponibles en la máquina, pueden ser instrucciones de otra máquina y de cualquier nivel de complejidad y elaboración.

Los compiladores naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.

Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).

Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código

Ejemplos de lenguajes de programación:

ASP

ASP.NET

BASIC

C

C++

CLIPS

CORAL

MAGIC

PHP

Visual Basic

Visual C++
  • Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

    Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.

    La implementación original y de referencia del compilador, la máquina virtual y las librerías de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre.

    Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java todavía no es software libre)

    1. Historia

    La tecnología Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.

    El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java.

    El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de cafe caliente. Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE. Otros simplemente dicen que el nombre fue sacado al parecer de una lista aleatoria de palabras.

    Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de tres días entre John Gaga, James Gosling, Joy Naughton, Wayne Rosing y Eric Schmidt, el equipo reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más tarde sería conocido como HotJava.

    En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, que Java sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft para que se encargase del desarrollo tecnológico. [2] Dos semanas más tarde la primera versión de Java fue publicada.

    La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.

    El entorno de ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web.

    Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme incremento en el número de clases y paquetes que componen la librería estándar.

    Desde J2SE 1.4, la evolución del lenguaje ha sido regulada por el JCP (Java Community Process), que usa Java Specification Requests (JSRs) para proponer y especificar cambios en la plataforma Java. El lenguaje en sí mismo está especificado en la Java Language Specification (JLS), o Especificación del Lenguaje Java. Los cambios en los JLS son gestionados en JSR 901.

  • JDK 1.0 (23 de enero de 1996) — Primer lanzamiento.

comunicado de prensa

  • JDK 1.1 (19 de febrero de 1997) — Principales adiciones incluidas: comunicado de prensa
    • una reestructuración intensiva del modelo de eventos AWT (Abstract Windowing Toolkit)
    • clases internas (inner classes)
    • JavaBeans
    • JDBC (Java Database Connectivity), para la integración de bases de datos
    • RMI (Remote Method Invocation)
  • J2SE 1.2 (8 de diciembre de 1998) — Nombre clave Playground. Esta y las siguientes versiones fueron recogidas bajo la denominación Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplazó a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition). Otras mejoras añadidas incluían: comunicado de prensa

Los cambios más notables fueron:comunicado de prensa lista completa de cambios

J2SE 5.0 (30 de septiembre de 2004) — Nombre clave: Tiger. (Originalmente numerado 1.5, esta notación aún es usada internamente.[3]) Desarrollado bajo JSR 176, Tiger añadió un número significativo de nuevas características comunicado de prensa
  • Plantillas (genéricos) — provee conversion de tipos (type safety) en tiempo de compilación para colecciones y elimina la necesidad de la mayoría de conversion de tipos (type casting). (Especificado por JSR 14.)
  • Metadatos — también llamados anotaciones, permite a estructuras del lenguaje como las clases o los métodos, ser etiquetados con datos adicionales, que puedan ser procesados posteriormente por utilidades de proceso de metadatos. (Especificado por JSR 175.)
  • Autoboxing/unboxing — Conversiones automáticas entre tipos primitivos (Como los int) y clases de envoltura primitivas (Como Integer). (Especificado por JSR 201.)
  • Enumeraciones — la palabra reservada enum crea una typesafe, lista ordenada de valores (como Dia.LUNES, Dia.MARTES, etc.). Anteriormente, esto solo podía ser llevado a cabo por constantes enteras o clases construidas manualmente (enum pattern). (Especificado por JSR 201.)
  • Varargs (número de argumentos variable) — El último parámetro de un método puede ser declarado con el nombre del tipo seguido por tres puntos (e.g. void drawtext(String... lines)). En la llamada al método, puede usarse cualquier número de parámetros de ese tipo, que serán almacenados en un array para pasarlos al método.
  • Bucle for mejorado — La sintaxis para el bucle for se ha extendido con una sintaxis especial para iterar sobre cada miembro de un array o sobre cualquier clase que implemente