Abstract - Programming languages are like human languages
have syntactic and semantic rules to define the meaning of each of its processes, which the programmer whether to find the most understandable by the user and also we can find various types of languages either low, high or very high level, we also find the Compilers and Interpreters who do the heavy lifting of Binary language Translate to the language of the processor. This program will also adjusting from the earliest times to the Present, (As one of the most important branches and without saying it is the most fundamental so that everything can happen with a simple click of the User).
Key Words Programming language, Low Level, High Level, Compilers, Interpreters.
Resumen- Los lenguajes de Programacin son como los lenguajes humanos, tienen reglas sintcticas y semnticas, para definir el significado de cada uno de sus procesos, el cual el programador en si debe encontrar la forma ms entendible por el usuario y adems nos podemos encontrar con varios tipos de lenguajes ya sea de bajo, de alto o de muy alto nivel, tambin encontramos los Compiladores e Intrpretes quienes hacen el trabajo pesado de Traducir al Lenguaje Binario, al lenguaje del Procesador. As tambin la programacin se va adecuando de los tiempos ms Remotos a la Actualidad, (Siendo una de las ramas ms importantes y sin decir que es la ms fundamental para que todo pueda suceder por un simple click del Usuario).
Palabras Claves Lenguaje de Programacin, Bajo Nivel, Alto Nivel, Compiladores, Intrpretes.
I. INTRODUCCIN LENGUAJES DE PROGRAMACIN as personas para comunicarse entre s utilizan un lenguaje que puede ser oral o escrito. En general, para comunicar algo siempre se usa un lenguaje. La informtica no queda excluida del uso de lenguajes, ya que estos son la manera de especificar las acciones que se desea sean realizadas en la computadora. En otras palabras, son la interface entre el programador y la computadora. A travs de ellos podemos desarrollar programas o aplicaciones, que se componen por un conjunto de instrucciones que luego se ejecutarn en la computadora haciendo uso de sus recursos (CPU, memoria, disco, etc.).
Los lenguajes de programacin estn destinados a distintos mbitos, dependiendo de sus caractersticas que simplifican algunas tareas y complejizan otras. Pueden estar
destinados a aplicaciones cientficas, aplicaciones de negocios, inteligencia artificial, programacin de sistemas,
Scripting, y tambin disponemos de lenguajes de propsitos especiales. Los lenguajes de programacin tienen una estructura compleja que se compone de varias partes: sintaxis, semntica, elementos del lenguaje, nivel de abstraccin, paradigma, estructuras de control para ordenar la ejecucin de los programas, tipos de datos (nmeros, letras, etc.), y funciones o procedimientos (unidades) que contienen un conjunto de instrucciones, entre otras. No hay un nico tipo de lenguajes, sino que se clasifican segn las caractersticas que posean y segn el paradigma y conceptos que soporten.
Por su nivel: - Mquina - Bajo nivel. - Alto nivel. - Muy Alto nivel
Por su jerarquizacin: - Primera generacin. - Segunda generacin. - Tercera generacin. - Cuarta generacin. - Quinta generacin.
Vern una tabla comparativa entre algunos lenguajes, encontrando sus ventajas y desventajas, todo para una mejor manera de comprensin.
Al final de ste paper nos daremos cuenta de que nos presentamos con una forma de comunicacin entre hombre - mquina, teniendo ya conocimientos de su forma, y uso en el mbito de la programacin.
II. LA CLASIFICACIN Y SUS CARACTERSTICAS
A pesar de no tener mucho tiempo de duracin, la historia de la computacin electrnica produjo una interminable lista de variedad de lenguajes para programacin muy reconocibles y en uso actual. En sus inicios estos lenguajes se parecan mucho al lenguaje de las computadoras como lo es el lenguaje maquina que consiste en ceros y unos, pero con el tiempo han ido cambiando hasta asimilarse ms a un lenguaje humano y Autores: Carlos Gonzlez, Alexis Romo, Jhonatan Barrientos y Francisco Gonzlez. Pontificia Universidad Catlica de Valparaso, Chile. Escuela de Ingeniera Informtica.
Paper Lenguajes de Programacin L LENGUAJES DE PROGRAMACION cotidiano ms especficamente el ingls o bien a formas grficas ms expresivas y sintticas. Mientras ms se parezca un lenguaje al de la computadora se le clasifica como un lenguaje de bajo nivel, lo opuesto es de alto nivel .Existen cinco generaciones de lenguajes de programacin, en donde cada uno mejora a sus predecesores en cuanto a las facilidades que otorga al programador.
1. Lenguaje mquina.2. Lenguajes ensambladores.3. Lenguajes de alto nivel.4. Lenguajes de muy alto nivel.5. Lenguajes naturales. Lenguaje Mquina
Es el lenguaje de ms bajo nivel, a travs de un sistema binario que consiste en 0s y 1s muestra datos e instrucciones, y el elemento ejecutor es la circuitera misma de la computadora. Al principio de la comunicacin electrnica cada mquina tena su propio lenguaje, lo que complicaba a los programadores que tenan sistemas rudimentarios para combinar nmeros que representaran las instrucciones ms simples como SUMAR y COMPARAR. Los mtodos de programacin en este lenguaje ocupan mucho tiempo adems de ser poco prcticos, por lo que en poco tiempo los programadores comenzaron a ocupar los lenguajes ensambladores.
Lenguajes Ensambladores
Los lenguajes ensambladores significaron un gran avance; en lugar de ceros y unos se utilizan cdigos mnemnicos (para ayudar a la memoria) o abreviatura fciles de recordar para las instrucciones: ADD (sumar), STO (almacenar), C (comparar), etctera. Para usar un lenguaje ensamblador se requiere un lenguaje traductor que convierta los programas en ensamblador a lenguaje mquina que es el nico que comprende la computadora. Este traductor se llama programa ensamblador. An cuando los ensambladores representaron un paso adelante, todava tenan muchos inconvenientes, por ejemplo, que son detallados en extremo y su programacin es tediosa, repetitiva y propensa al error.
Lenguaje de alto nivel. Se separaran en tres generaciones 3GL.
La investigacin sobre los lenguajes de alto nivel se inicia en 1945, con el ingeniero alemn Konrad Zuse, pero hasta el inicio de los 1960 que se generaliza su uso, transformando radicalmente la actividad de la programacin. Estos lenguajes se asemejan ms a la lengua humana, particularmente el ingls, con menos detalles y con menos declaraciones describen tareas ms complejas para la computadora. Como resultado, los programadores logran trabajos de mayor alcance y con menos esfuerzo. Obviamente se requiere de un traductor de las declaraciones simblicas de un lenguaje de alto nivel al lenguaje mquina ejecutable por la computadora, estos traductores se llaman compiladores (el primero se desarrollo en 1952). Existen compiladores para cada lenguaje y cada mquina, pero una ventaja de los lenguajes de alto nivel es que se pueden trasladar de una mquina a otra con pocas o nulas modificaciones .Entre los lenguajes de esta generacin se encuentran los de propsito general como BASIC, FORTRAN y COBOL que han sido muy populares. Adems se encuentran Pascal, C y sus derivados. En los primeros lenguajes de alto nivel la limitacin era que se orientaban a un rea especfica y sus instrucciones requeran de una sintaxis predefinida. Se clasifican como lenguajes procedimentales. Otra limitacin de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programacin para realizar las secuencias de instrucciones lgicas. Para que el usuario comn pudiese solucionar tal problema de procesamiento de datos de una manera ms fcil y rpida. Se crearon Los lenguajes de muy alto nivel cuarta generacin (4GL). Los lenguajes de la cuarta generacin, 4GLs, son llamados lenguajes de muy alto nivel. Se trata esencialmente de los lenguajes de programacin taquigrficos; Entre las caractersticas de estos lenguajes est el que no son de procedimientos. En los lenguajes de procedimientos se dice con detalle a la computadora la tarea a realizar. En los declarativos se define solamente lo que se va hacer. Enfatizan el qu en lugar del cmo.
Este lenguaje puede ser usado con un mnimo de entrenamiento y ahorran al usuario la necesidad de conocer a fondo el hardware y la programacin. Entre los inconvenientes de estos lenguajes se encuentra que no hacen uso eficiente de los recursos computacionales. Sin embargo
A menudo no cumplen con estndares internacionales ISO ANSI. Por este motivo, invertir tiempo y dinero, es un riesgo a futuro, porque no se sabe a ciencia cierta, cunto tiempo permanecer la herramienta y su fabricante, en el mercado.
Lenguaje Natural En la quinta generacin se encuentran los llamados Lenguajes naturales, por su acercamiento a la lengua escrita. El uso de un lenguaje natural con una base de conocimientos produce un sistema basado en el conocimiento. O sea emplean la programacin con restricciones para resolver problemas, en lugar de emplear algoritmos escritos por el programador. 1a Codigo Binario 2a Ensamblador 3a Orientado a "x" Funciones LENGUAJES DE PROGRAMACION Una clase de estos sistemas son los Sistemas expertos, que son base de la Inteligencia Artificial. (IA). Japn ha sido pionero en este tipo de lenguajes pero sus xitos prcticos han sido pocos. Muchos conocedores opinan que los sistemas expertos han sido fracaso lo que ha llevado el nombre de esta generacin en desuso, pero es probable que encuentren nuevos rumbos de evolucin.
III. VENTAJAS Y DESVENTAJAS DE LENGUAJES DE PROGRAMACIN.
Lenguaje de Programacin C:
C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones.
Se trata de un lenguaje dbilmente representado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos.
La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido como ANSI C. Posteriormente, en 1990, fue Certificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas.
Ventajas C: * Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. * Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). * Un sistema de tipos que impide operaciones sin sentido. * Usa un lenguaje de pre-procesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. * Acceso a memoria de bajo nivel mediante el uso de punteros. * Interrupciones al procesador con uniones. * Un conjunto reducido de palabras clave. * Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado"
Desventajas de C: * Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm. * Soporte para programacin orientada a objetos, aunque la TABLE I UNITS FOR MAGNETIC PROPERTIES Symbol Quantity Conversion from Gaussian and CGS EMU to SI a
u magnetic flux 1 Mx 10 8 Wb = 10 8 V s B magnetic flux density, magnetic induction 1 G 10 4 T = 10 4 Wb/m 2 H magnetic field strength 1 Oe 10 3 /(4t) A/m m magnetic moment
1 erg/G = 1 emu 10 3 A m 2 = 10 3 J/T M magnetization 1 erg/(G cm 3 ) = 1 emu/cm 3
10 3 A/m 4tM magnetization 1 G 10 3 /(4t) A/m o specific magnetization 1 erg/(G g) = 1 emu/g 1 A m 2 /kg j magnetic dipole moment 1 erg/G = 1 emu 4t 10 10 Wb m J magnetic polarization 1 erg/(G cm 3 ) = 1 emu/cm 3
4t 10 4 T _, k susceptibility 1 4t _ mass susceptibility 1 cm 3 /g 4t 10 3 m 3 /kg permeability 1 4t 10 7 H/m = 4t 10 7 Wb/(A m) r relative permeability r w, W energy density 1 erg/cm 3 10 1 J/m 3
Fig.1. Este Grfico Indica una Gran Diferencia entre el lenguaje java y (C, C++, Python), quedando a una Brecha ms Corta con otros lenguajes de Programacin, siguindole PHP. 6% Tabla de Evolucin de los Lenguajes de Programacin
LENGUAJES DE PROGRAMACION implementacin original de C++ fue un preprocesador que traduca cdigo fuente de C++ a C. * Encapsulacin. * Funciones anidadas, aunque GCC tiene esta caracterstica como extensin. * Polimorfismo en tiempo de cdigo en forma de sobrecarga, sobrecarga de operadores y slo dispone de un soporte rudimentario para la programacin genrica. * Soporte nativo para programacin multihilo y redes de computadores.
Lenguaje de Programacin Visual Basic:
Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar hoy en da. Dicho lenguaje nace del BASIC (Beginners All-purpose Symbolic Instruction Code) que fue creado en su versin original en el Dartmouth College, con el propsito de servir a aquellas personas que estaban interesadas en iniciarse en algn lenguaje de programacin. Luego de sufrir varias modificaciones, en el ao 1978 se estableci el BASIC estndar. La sencillez del lenguaje gan el desprecio de los programadores avanzados por considerarlo "un lenguaje para principiantes". Primero fue GW-BASIC, luego se transform en QuickBASIC y actualmente se lo conoce como Visual Basic y la versin ms reciente es la 6 que se incluye en el paquete Visual Studio 6 de Microsoft. Esta versin combina la sencillez del BASIC con un poderoso lenguaje de programacin Visual que juntos permiten desarrollar robustos programas de 32 bits para Windows. Esta fusin de sencillez y la esttica permiti ampliar mucho ms el monopolio de Microsoft, ya que el lenguaje slo es compatible con Windows, un sistema operativo de la misma empresa. Visual Basic ya no es ms "un lenguaje para principiantes" sino que es una perfecta alternativa para los programadores de cualquier nivel que deseen desarrollar aplicaciones compatibles con Windows. Ventajas de Visual Basic: * Es un lenguaje RAD. * Posee una curva de aprendizaje muy rpida. * Integra el diseo e implementacin de formularios de Windows. * Permite usar con suma facilidad la plataforma de los sistemas Windows. * El cdigo en Visual Basic es fcilmente llevado a otros lenguajes. * Acostumbra a los desarrolladores a programar con eficiencia. Desventajas de Visual Basic: * No permite programacin a bajo nivel ni incrustar secciones de cdigo en ASM. * Slo permite el uso de funciones de libreras dinmicas (DLL) stdcall. * Algunas funciones estn indocumentadas (Sin embargo esto ocurre en muchos lenguajes). * Es un lenguaje basado en objetos y no orientado a objetos. * No maneja muy bien los apuntadores de memoria. * No soporta tratamiento de procesos como parte del lenguaje. * No incluye operadores de desplazamiento de bits como parte del lenguaje. * No tiene instrucciones de pre procesamiento. * El tratamiento de mensajes de Windows es bsico e indirecto. Lenguaje de Programacin Java: En 1990, la empresa Sun Microsystems, tras el abandono del proyecto NeWS (Network/extensible Window System), decide crear un pequeo grupo de programadores cuyo objetivo es desarrollar un nuevo lenguaje destinado al campo de la electrnica de consumo, especialmente electrodomsticos. Este proyecto se conoca como Green Project. A la cabeza del grupo se encontraba el programador James Goslin. Java hubiese quedado reducido a un lenguaje para programar los chips de diversos electrodomsticos si no hubiese sido por una fuerza emergente que empez a dar sus primeros pasos, tambin a principios de los aos 90: la World Wide Web (WWW). Ventajas de Java: * No debes volver a escribir el cdigo si quieres ejecutar el programa en otra mquina. Un solo cdigo funciona para todos los browsers o Buscadores compatibles con Java o donde se tenga una Mquina Virtual de Java (Mac's, PC's, Sun's, etc). * Java es un lenguaje de programacin orientado a objetos, y tiene todos los beneficios que ofrece esta metodologa de programacin. * Un browser o Buscador compatible con Java deber ejecutar cualquier programa hecho en Java, esto ahorra a los usuarios tener que estar insertando "plug-ins" y dems programas que a veces nos quitan tiempo y espacio en disco. * Java es un lenguaje y por lo tanto puede hacer todas las cosas que puede hacer un Lenguaje: Clculos matemticos, procesadores de palabras, bases de datos, aplicaciones grficas, animaciones, sonido, hojas de clculo, etc. * Si lo que te interesan son las pginas de Web, ya no tienen LENGUAJES DE PROGRAMACION que ser estticas, se le pueden poner toda clase de elementos multimedia y permiten un alto nivel de interactividad. Desventajas de Java: * La velocidad: Los programas hechos en Java no tienden a ser muy rpidos, supuestamente se est trabajando en mejorar esto. Como los programas de Java son interpretados nunca alcanzan la velocidad de un verdadero ejecutable. * Java es un lenguaje de programacin. Esta es otra gran limitante, por ms que digan que es orientado a objetos y que es muy fcil de aprender sigue siendo un lenguaje y por lo tanto aprenderlo no es cosa fcil. Especialmente para los no programadores. * Java es nuevo. En pocas palabras todava no se conocen bien todas sus capacidades. Pero en general Java posee muchas ventajas y se pueden hacer cosas muy interesantes con esto. Hay que prestar especial atencin a lo que est sucediendo en el mundo de la computacin, a pesar de que Java es relativamente nuevo, posee mucha fuerza y es tema de moda en cualquier medio computacional. Muchas personas apuestan a futuro y piensan en Java. La pregunta es: Estarn en lo correcto? (Para Ustedes Lectores). IV. COMPILADORES E INTRPRETES.
Compilador: Proceso de traduccin que convierte un programa fuente escrito en un lenguaje de alto nivela un programa objeto en cdigo mquina y listo por tanto para ejecutarse en el ordenador, con poca o ninguna preparacin adicional.
Conceptos Relacionados
Intrprete:
Un intrprete es un programa que analiza y ejecuta simultneamente un programa escrito en un Lenguaje fuente. Existen diferentes tipos de Intrpretes:
* Puros:
Los intrpretes puros son los que analizan y ejecutan sentencia a sentencia todo el programa fuente. Siguen el modelo de interpretacin iterativa y, por tanto, se utilizan principalmente para lenguajes sencillos.
* Avanzados:
Los intrpretes avanzados o normales incorporan un paso previo de anlisis de todo el programa fuente. Generando posteriormente un lenguaje intermedio que es ejecutado por ellos mismos.
* Incrementales:
Existen ciertos lenguajes que, por sus caractersticas, no se pueden compilar directamente. La razn es que pueden manejar objetos o funciones que no son conocidos en tiempo de compilacin, ya que se crean dinmicamente en tiempo en ejecucin. Entre estos lenguajes, pueden considerarse Smalltalk, Lisp o Prolog.
Fig.2: Esquema General de Un Interprete
V. REAS DE APLICACIN DE LOS LENGUAJES DE PROGRAMACIN. El hombre, con el avanzar de los aos, ha podido desarrollar los lenguajes de programacin de manera que puedan se puedan aplicar en distintas reas. De tal forma que se le pueden dar muchas utilidades, tales como:
i) Lenguajes de Internet. ii) Lenguajes de programacin imperativa. iii) Lenguajes de programacin orientados a objetos. iv) Lenguajes de programacin lgica. v) Lenguajes de programacin funcionales.
LENGUAJES DE INTERNET: LENGUAJES DE PROGRAMACION Estos lenguajes son ocupados para la creacin de pginas Web de Internet, y realizar su programacin (motores de bsqueda, seguridad, establecimiento de comunicaciones, etc.). Actualmente existen diferentes de estos lenguajes que han ido surgiendo debido a las tendencias y necesidades de las plataformas.
La arquitectura comn de estos lenguajes es la siguiente:
Navegador Lenguaje Base de datos (Cliente) (Servidor) Dentro de esta rea encontramos los siguientes: - HTML - JavaScript - PHP - ASP - Python - Ruby - Perl
LENGUAJES DE PROGRAMACION IMPERATIVA: La programacin imperativa describe la programacin en trminos del estado del programa y sentencias que cambian dicho estado. Estos programas son un grupo de instrucciones que le indican al computador como realizar una tarea. La implementacin de hardware de la mayora de los computadores es imperativa ya que los hardwares de estos estn diseados para ejecutar cdigo maquina, escrito en forma imperativa. Algunos lenguajes imperativos son: - ASP - BASIC - C - FORTRAN - Pascal - Perl - PHP - Lua - Java
LENGUAJES DE PROGRAMACION ORIENTADOS A OBJETOS: Estos lenguajes ocupan objetos y sus interacciones, para poder disear aplicaciones y programas informticos. Surgieron en los aos 70 con el lenguaje Simula 67 el cual fue creado para hacer simulaciones. En la actualidad Smalltakl es el lenguaje
que representa la orientacin a objetos ya que permite realizar tareas de computacin interactuando con objetos virtuales, ya que provoca que los objetos se comuniquen entre s mediante el envi de mensajes, as mismo el objeto puede proveer muchas operaciones; este lenguaje a tenido gran influencia en lenguajes como Java o Ruby. Aqu encontramos lenguajes como: Ada C++ C# - VB.NET - Clarion - Delphi - Eiffel - Java - Lexico - Oz - PHP - PowerBuilder - Python - Ruby - Smalltalk LENGUAJES DE PROGRMACION LOGICA: La programacin lgica se basa en la relacin de elementos matemticos; esta programacin encuentra su hbitat natural en aplicaciones de inteligencia artificial o aplicaciones relacionadas a este mbito. Los lenguajes de programacin lgica actualmente se usan como tecnologa software para la descripcin y resolucin de problemas combinatorios difciles, especficamente en reas de planificacin y programacin de tareas (calendarizacin). Estos lenguajes cumplen tareas como: -Dominios booleanos, donde solo existen restricciones del tipo verdadero/falso.
-Dominios en variables enteras y racionales.
-Dominios lineales, donde slo se describen y analizan funciones lineales.
-Dominios finitos, donde las restricciones son definidas en conjuntos finitos.
-Dominios mixtos, los cuales involucran dos o ms de los anteriores. El primer lenguaje y ms popular utilizado para tal efecto fue Prolog. Pero actualmente hay lenguajes de programacin lgica como: - B-Prolog (Basado en Prolog, propietario)
LENGUAJES DE PROGRAMACION - CHIP V5 (Basado en Prolog, tambin existen bibliotecas en C y C++, propietario)
- Ciao Prolog (Basado en Prolog, software libre: GPL/LGPL)
- ECLiPSe (Basado en Prolog, software libre)
- Mozart (Basado en Oz, software libre: X11)
- SICStus (Basado en Prolog, propietario) - GNU Prolog (Basado en Prolog, software libre)
- SWI-Prolog Un entorno Prolog que contiene varias libreras para soluciones con restricciones (LGPL)
LENGUAJES DE PROGRMACION FUNCIONAL:
La programacin funcional se basa en la utilizacin de funciones aritmticas que no maneja datos mutables o de estados. El objetivo de estos lenguajes es conseguir lenguajes expresivos y matemticamente elegantes, en los que no sea necesario bajar al nivel de la mquina para describir el proceso llevado a cabo por el programa. Los lenguajes de programacin funcional han sido enfatizados principalmente en el mbito acadmico y no tanto en el desarrollo del software comercial. Lenguajes de programacin importantes tales como Scheme, Erlang, y Haskell, han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones; pero lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al procesar valores mutables. Algunos de estos lenguajes son: - Haskell - Miranda - Lisp - Scheme - Ocaml - SAP - Erlang - Scala - Perl - SQL
Tabla de los principales lenguajes de programacin segn su utilidad o rea de Aplicacin:
LENGUAJES UTILIDAD Basic, Pascal Aprendizaje de programacin Ada, C, C++ Programacin de sistemas Logo Lenguaje didctico COBOL, RPG, Natural, SQL Gestin de empresas Algol, FORTRAN, APL Calculo Numrico CLIPPER, ACCES, DBASE, Delphi, SQL Bases de datos LENGUAJES UTILIDAD Smalltalk, Actor, C++, Eiffel Programacin orientada a objetos (OOP) Visual Basic, Visual C Programacin Windows HTML, JAVA, PERL Internet Lingo Programas multimedia Prolog, Lisp Inteligencia artificial VRLM Realidad virtual Mapper, Cogen, Linc Lenguajes de cuarta generacin 4GL LENGUAJES DE PROGRAMACION
VI. COMPARACIN CON OTROS TPICOS Programas Caractersticas JAVA C++ Sencillez S NO Robustez S NO Seguridad S NO Interpretado S NO Dinamicidad S NO Portabilidad S NO Neutralidad S NO Threds (temas) S No Garbage Colection (recoleccin automtica de basura) S No Excepciones S ALGUNAS Representacin ALTA ALTA
1.- LA SENCILLEZ Java tiene una sencillez que no posee C++. Esto es debido a que una de las razones de la creacin de Java es la de obtener un lenguaje parecido a C++ pero reduciendo los errores ms comunes de la programacin, algo que de logra con mucho xito puesto que Java reduce un 50% los errores que se cometen en C++ entre los que se destacan: - Eliminacin de la aritmtica de punteros y de las referencias. - NO se permiten ni la definicin de tipos (typedef) ni la de macros (#define). - Ya no es necesario liberar memoria (free o delete). De todas formas, lo que hace Java en realidad es la eliminacin de palabras reservadas, y la utilizacin de un intrprete bastante pequeo.
2.- LA ROBUSTEZ Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de ejecucin, lo que hace es que se destaquen errores lo antes posible, normalmente en el ciclo de desarrollo. Algunas de estas verificaciones que hacen que Java sea un lenguaje robusto son: - Verificacin del cdigo de byte. - Gestin de excepciones y errores. - Comprobacin de punteros y lmites de vectores. Se aprecia una clara diferencia con C++ quien no realiza ninguna de estas verificaciones. 3.- LA SEGURIDAD En Java no se permite los accesos ilegales a la memoria, algo que si se permita en C++. Esto es algo muy importante puesto LENGUAJES DE PROGRAMACION que este tipo de problemas puede ocasionar la propagacin de virus y otras clases de programas dainos por la red. El cdigo Java pasa por varios test antes de ejecutarse en una mquina. El cdigo se pasa a travs de un verificador de cdigo de byte que comprueba el formato de los fragmentos de cdigo y aplica un probador de teoremas para detectar fragmentos de cdigo ilegal, cdigo que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clases de un objeto. Algunos de los conocimientos que se puede obtener de los cdigos de byte si pasan la verificacin sin generar ningn de error son: - El cdigo no produce desbordamiento de operaciones en la pila. - El tipo de parmetros de todos los cdigos es conocido y correcto. - No ha ocurrido ninguna conversin ilegal de datos, tal como convertir enteros en punteros. Por todo esto, y por no permitir mediante Java la utilizacin de mtodos de un programa sin los privilegios del ncleo (kernel) del sistema operativo, la obligacin de autentificacin por clave pblica para la realizacin de modificaciones, se considera Java un lenguaje seguro. Todo esto no lo incorpora C++. 4.- LENGUAJE INTERPRETADO Java es un lenguaje que puede ejecutar el cdigo directamente es decir es un lenguaje interpretado. Esto es una caracterstica que no posee C++. No obstante, y aunque en teora se consumen menos recursos siendo los lenguajes interpretados, el actual compilador que existe es bastante lento, unas 20 veces menos rpido que C++. Esto normalmente no es vital para la aplicacin ni demasiado apreciable por el usuario, y adems esta diferencia se est reduciendo con los nuevos compiladores JIT (Just In Time). 5.- LA DINAMICIDAD Para la obtencin de un mayor provecho de la tecnologa orientada a objetos, Java no intenta conectar todos los mdulos que comprenden una aplicacin hasta el tiempo de ejecucin. Esta caracterstica no es contemplada por C++, que enlaza todos los mdulos cuando los compila. 6.- PORTABILIDAD Un programa Java puede ser ejecutado en varios entornos algo que es imposible para C++ 7.- NEUTRALIDAD Se dice que Java tiene una arquitectura neutra puesto que compila su cdigo a un fichero objeto de formato independiente de la arquitectura de la mquina que de ejecutar. Cualquier mquina que tenga el sistema de ejecucin (JRE o Java Runtime Enviroment) puede ejecutar ese cdigo objeto, sin importar en modo alguno la mquina en que ha sido generado. No es as para C++, donde el cdigo generado podr ejecutarse nicamente en la plataforma que se gener. 8.- THREADS (TEMAS) Java permite mltiples hilos (multithreading) antes de su ejecucin y en tiempo de ejecucin. La posibilidad de construir pequeos procesos o piezas independientes de un gran proceso permite programar de una forma ms sencilla y es una herramienta muy potente que no se ofrece en C++. 9.-RECOLECIN AUTOMATICA DE BASURA (GARBAGE COLECTION) Java modifica completamente la gestin de la memoria que se hace en C/C++. En tanto C++ se utilizan punteros, reservas de memoria (con las ordenes malloc, new, free, delete) y otra serie de elementos que dan lugar a graves errores en tiempo de ejecucin difcilmente depurables. Java tiene operadores nuevos para reservar memoria para los objetos, pero no existe ninguna funcin explicita para liberarla. La recoleccin de basura (objetos ya inservibles) es una parte integral de Java durante la ejecucin de sus programas. Una vez que se ha almacenado un objeto en el tiempo de ejecucin, el sistema hace un seguimiento del estado del objeto, el sistema vaca ese espacio de memoria para un uso futuro. Esta gestin de memoria dinmica hace que la programacin en Java sea ms fcil. 10.- REPRESENTACIN Uno de los objetos perseguidos en el desarrollo de Java era la obtencin de programas con interfaces cmodas e intuitivas. Esto tambin se permite en C++, aunque con unos mtodos ms costosos, y en ningn caso con interfaces portables como los que Java crea. VII. CONCLUSIN Los lenguajes de programacin son el conjunto de instrucciones que evocan en una tarea computacional a lo largo de la historia se describen una infinidad de lenguajes distintos pasando desde el lenguaje maquina que ha permitido el desarrollo de lenguajes posteriores hasta lenguajes de alto nivel lo que no ha llevado a un increble avance en trminos de programacin siendo la base para el avance de otros disciplinas o reas. VIII. REFERENCIAS [1] http://www.monografias.com/trabajos15/computadoras/computadoras.sh tml [2] http://www.itimag.com/programacion/ada/caracteristicas-lenguajes- programacion/ [3] http://issuu.com/masterofwar/docs/lenguajesdeprogramacion [4] http://www.qualitrain.com.mx/objeIndirecto/javavsvbasic.htm [5] http://www.monografias.com/trabajos/lengprog/lengprog.shtml [6] Fundamentos de la Programacin Editorial Mcgraw-hill (ao 2002 3 Generacin, Espaol) [7] B. Costales. Introduccin al Lenguaje C. Editorial Gustavo Gili, S.A. - 1987. 291 pginas. [8] B. Kernigham / D. Ritchie. El lenguaje de programacin C. Ed. prentice- Hall. [9] Lenguajes de Programacin, Allen B. Tucker, Segunda Edicin Biblioteca FIN (PUCV)