RSS

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "

Followers

Lenguaje C

Lenguaje C


El lenguaje C es uno de los lenguajes que se usan en la actualidad más antigua. Data del año 1972 y fue escrito por Dennis M Ritchie para los Laboratorios Bell, y es evolución del lenguaje C.
El lenguaje C está mayormente orientado a la escritura de sistemas operativos, aunque se trata de un lenguaje de medio nivel de propósitos generales, por lo que puede ser utilizado para programar casi cualquier tipo de tareas.
C es un lenguaje estructurado, no orientado a objetos, pero C++ es la modificación de C que permite la incorporación de clases, métodos y atributos, encapsulación y polimorfismo, y respeta toda la sintaxis de C, por lo que programadores de C que deseen incursionar en la programación orientada a objetos podrán hacerlo sin problemas, más que un cambio de "paradigma mental" a la hora de diseñar el código.

Los objetivos de C

Con la cantidad de lenguajes que disponemos actualmente, muchos se pensarán que el lenguaje C es obsoleto, y muy "duro" para trabajarlo comparado con otros lenguajes más amigables con el programador.
Esto no es del todo cierto. Si bien C tiene una curva de aprendizaje más lenta, quien programa en C tiene un campo enorme de posibilidades, que van desde programas simples de gestión, comandos del sistema operativo, funcionalidades nuevas, hasta módulos del kernel y controladores de dispositivos.
El lenguaje C es el lenguaje utilizado para la programación de sistemas, o software de base, con lo que podemos afirmar que casi la totalidad del código fuente de un sistema operativo está escrito, sin duda, en C. Ejemplos son Unix y derivados (*nix, como Linux), o Windows.
No es un lenguaje pensado para escribir directamente aplicaciones de gestión gráficas en forma nativa, pero sí dispone de muchísimas librerías o bibliotecas de funciones que se pueden incorporar en un código para extender su funcionalidad.


C y su biblioteca.

El lenguaje C posee un núcleo muy simple, una serie de muy pocas palabras reservadas, y pocos tipos nativos de datos, pero resulta un lenguaje extremadamente extensible a nuevas funcionalidades mediante definiciones de nuevos tipos de datos de usuario, incluso independiente de la arquitectura, y la suma de una gran cantidad de funciones de biblioteca estándar y bibliotecas especializadas en diferentes tareas.
Por ejemplo, un código fuente de C puede enriquecerse con bibliotecas de OpenSSL para permitirle al programador trabajar con funciones de cifrado y hash propias de la criptografía. También pueden incorporarse librerías gráficas como gtk o qt para entornos Unix/Linux, lo que permite fácilmente escribir aplicaciones gráficas de muchísima potencia.
En nuestros sistemas podremos instalar cualquier tipo de biblioteca que necesitemos, y utilizarlas dentro de nuestro código, lo que hace de C un lenguaje extremadamente flexible a la hora de cumplimentar objetivos.


C como lenguaje portable y el estándar ANSI.


Cuando hablamos de portabilidad de aplicaciones nos referimos a aplicaciones que pueden ejecutarse en varias plataformas de software de base, o, en definitiva, en varios sistemas operativos, como Unix, Linux o Windows.
Una aplicación escrita en C es portable a nivel de código fuente, es decir, podemos portar la fuente de la aplicación de un sistema a otro, y compilarla para obtener los ejecutables para dicho sistema, sin mayores modificaciones.
Por supuesto, deberemos tener instaladas las bibliotecas de desarrollo utilizadas, en el sistema operativo en el que vamos a compilar.
C no es portable a nivel de código ejecutable, lo que significa que una aplicación compilada para Linux en formato, por ejemplo, ELF de 32 bits, no podrá ser ejecutada en windows, que utiliza formatos EXE o COM. Y viceversa, un .EXE de Windows no podrá ser ejecutado en un sistema *nix.
El código fuente sí puede compilarse, y para ello es necesario, o al menos muy recomendable, que el código fuente haya sido escrito siguiendo el estándar ANSI C, ya que muchos compiladores para diferentes plataformas de sistemas operativos podrán compilarlo sin problemas, tales como GCC en Linux/Unix, o DevCpp o MinGW en Windows.
Si el código fuente no fue escrito siguiendo ANSI, seguramente solo podrá ser compilado con el compilador o IDE en el que fue programado. Tal es el caso de Borland y sus compiladores Turbo, que generalmente incitan al programador a utilizar bibliotecas propietarias que no están disponibles en otros sistemas operativos como Linux.


C y la administración de las tareas del sistema.


Una de las características que tenemos en sistemas GNU/Linux es la de programar scripts para facilitarnos la administración de tareas. Esos lenguajes de scripts, si bien son muy potentes e interpretados, tales como el bash o python, no llegan a tener toda la potencia de un lenguaje compilado como C/C++.
Es por ello que quien puede programar en C podrá, además, escribir sus propias utilidades, simples o complejas, y ejecutarlas como aplicaciones gráficas o como comandos en el sistema, y de esta forma portar esas utilidades de un sistema Linux a otro y continuar utilizándolas.
Incluso podrá además empaquetar toda su aplicación en un tarball fuente, o código pre-compilado para algún repositorio de distribución, como .deb o .rpm.
Y por supuesto, también podrá licenciar su código fuente como GPL o alguna licencia libre, y compartirlo con el resto de la comunidad, y de esta forma obtener aportes retro alimentados o feedback de programadores más experimentados, lo que logrará sin duda que el código aportado crezca mucho más de lo imaginado.


C y sus posibilidades en el mundo Unix

Por si no lo sabes, el kernel Linux, y el sistema operativo GNU están casi en su totalidad escritos en C y en C++. Muchas de las aplicaciones que utilizamos todo el tiempo son códigos fuente C/C++ compilados para Linux en formato ELF, lo que significa que quien programe en C/C++ tiene muchísimas posibilidades a la hora de optimizar y personalizar en medio/bajo nivel su sistema operativo, e incluso escribir nuevos controladores, módulos y software para facilitarle la tarea de administración.
Además, y particularmente en sistemas GNU/Linux, podremos utilizar el lenguaje C del estándar ANSI C para programar diversos mecanismos de comunicación de procesos UNIX, también conocidos como IPC (Inter-Proccess Communication), lo que le permitirá al programador administrar diversas características del manejo de procesos del sistema, como ser, por ejemplo:


-        Gestión de prioridades de planificación.
-        Envío y recepción de señales entre procesos.
-        Generación de segmentos de memoria compartida.
-        Mecanismos de envío de información entre procesos mediante pipes o tuberías.
-        Envío de información mediante named-pipes, o FIFOs.
-        Envío de información utilizando colas de mensajes.
-        Envío de información entre procesos locales mediante sockets de familia UNIX.
-        Envío de información entre procesos locales o remotos mediante sockets de familia INET.

-        Control de acceso a recursos mediante semáforos.

read comments Read User's Comments

Traductores: Ensambladores, compiladores e intérpretes

Traductores: Ensambladores, compiladores e intérpretes

-        Ensambladores: son los encargados de transformar o traducir los programas escritos en ensamblador a su equivalente en código maquina o binario para que pueda ser ejecutado por la CPU. Este fue el primer lenguaje de programación que tradujo el lenguaje maquina a un lenguaje más natural para el ser humano. Con todo esto podemos decir que el lenguaje ensamblador es un lenguaje de programación de bajo nivel que se utiliza para escribir programas para computadoras, es la representación más directa del código máquina comprensible por los programadores.
El lenguaje ensamblador se usó para la creación de programas en el pasado, actualmente se usa muy poco. Únicamente cuando se requiere un control directo del hardware o se quiere conseguir rendimientos poco comunes de los equipos. Un programa escrito con el lenguaje ensamblador seguirá los siguientes pasos: este programa tiene una serie de instrucciones que contienen las órdenes a seguir para llevar a cabo una acción. Todas estas órdenes son cargadas en la memoria de la computadora.
(http://www.larevistainformatica.com/Ensamblador.htm)

QUE OFRECEN LOS ENSAMBLADORES AVANZADOS?

  • control avanzado de estructuras.
  • procedimiento de alto nivel,declaracion de funciones.
  • tipos de datos que incluyen: estructuras,registros,uniones,clases & conjuntos.
  • sofisticado procesamiento de macros.
TIPOS DE ENSAMBLADORES:

(aunque todos los ensambladores realizan basicamente las mismas tareas,podemos clasificarlos de acuerdo a características),asi podemos clasificarlas en:
  1. ENSAMBLADORES CRUZADOS (CROSS-ASSEMBLER).
  2. ENSAMBLADORES RESIDENTES.
  3. MACROENSAMBLADORES.
  4. MICROENSAMBLADORES.
  5. ENSAMBLADORES DE UNA FASE.
  6. ENSAMBLADORES DE DOS FASES.



Ensambladores Cruzados 

Es aquel que se ejecuta sobre un computador con un procesador diferente de aquel para el que se ensambla el código. Los ensambladores cruzados permiten a un programador desarrollar programas para diferentes sistemas sobre un computador.
Sin embargo, excepto en el caso de minicomputadores y grandes computadores que pueden ofrecer un simulador de microprocesador destinatario real, no se puede normalmente probar y depurar el código creado por un ensamblador cruzado sin ejecutarse sobre una maquina real que utilice este procesador. En cualquier caso, siempre se debe utilizar la sintaxis correcta, esto es, códigos OP, operandos, y así sucesivamente, para el microprocesador para el que el ensamblador cruzado esta diseñado. Ej. asMSX es un ensamblador cruzado para MSX [cross-assembler], es decir, un programa que genera archivos binarios para MSX (y para cualquier otra máquina que utilice el microprocesador Z80) desde cualquier plataforma IBM/PC con el sistema operativo Windows (cualquier versión).
Como se especifica en la propia documentación del programa, existen otros muchos ensambladores para MSX, tanto cruzados como nativos para MSX, y cada uno de ellos tiene sus propias características propias, con sus puntos fuertes y débiles. asMSX no pretende ser el mejor de ellos, ni siquiera el más potente, pero quizás sí uno de los más cómodos para programar para MSX. Incorpora un juego creciente de macroinstrucciones destinado a facilitar la tarea del desarrollador para MSX, encargándose por sí sólo de generar las cabeceras y los formatos necesarios para que el resultado final sea directamente utilizable en un ordenador MSX, sea cual sea la opción elegida.
Para más información, consultar la documentación que acompaña el programa.

Ensambladores Residentes

La ventaja de estos ensambladores es que permiten ejecutar inmediatamente el programa; la desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el programa fuente y el programa objeto. El polo opuesto del ensamblador cruzado es el ensamblador residente, que se ejecuta sobre una maquina que contiene el mismo procesador que el destinatario del código ensamblado. Un ensamblador residente ofrece al programador la ventaja de utilizar una única maquina para crear, probar, y depurar código. Los ensambladores residentes sobre los primeros microprocesadores fueron algo lentos y restrictivos en características debido al alto costo de memoria y la lentitud del microprocesador, con la disponibilidad de memoria debajo costo (y consecuentemente grandes memorias disponibles en la mayor parte de los sistemas) y la posibilidad del procesador de direccionar directamente grandes cantidades de memoria, así como de realizar funciones mas rápidas, los ensambladores residentes proporcionan ahora una variedad de características y velocidad de ensamblaje que anteriormente solo se encontraban en ensambladores cruzados sobre grandes computadores y microcomputadores.




Macroensambladores

Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variarse complejidad, dependiendo de las posibilidades de definición y manipulación de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes. Ejemplos:
Macro Ensamblador IBM.- Está integrado por un ensamblador y un macroensamblador. En gran medida su funcionamiento y forma de invocarlo es sumamente similar al de Microsoft. Su forma de uso consiste en generar un archivo fuente en código ASCII, se procede a generar un programa objeto que es ligado y se genera un programa .EXE. Opcionalmente puede recurirse a la utilería EXE2BIN de MS-DOS para transformarlo a .COM. Es capaz de generar un listado con información del proceso de ensamble y referencias cruzadas.
Macro Ensamblador de Microsoft.- Dependiendo de la versión, este ensamblador es capaz de soportar el juego de instrucciones de distintos tipos de microprocesadores Intel de la serie 80xx/80x86. En su versión 4.0 este soporta desde el 8086 al 80286 y los coprocesadores 8087 y 80287. Requiere 128KB de memoria y sistema operativo MS-DOS v2.0 o superior. Trabaja con un archivo de código fuente creado a partir de un editor y grabado en formato ASCII. Este archivo es usado para el proceso de ensamble y generación de código objeto. Posteriormente, y con un ligador, es creado el código ejecutable en formato .EXE.
Turbo Editassm.- Este es desarrollado por Speddware, Inc., y consiste de un ambiente integrado que incluye un editor y utilerías para el proceso de ensamble y depuración. Es capaz de realizar el ensamble línea a línea, conforme se introducen los mnemónicos, y permite revisar listas de referencias cruzadas y contenido de los registros. Este ensamblador trabaja con tablas en memoria, por lo que la generación del código ejecutable no implica la invocación explícita del ligador por parte del programador. Adicionalmente permite la generación de listados de mensajes e información de cada etapa del proceso y la capacidad de creación de archivos de código objeto.
Turbo Assembler.- De Borland Intl., es muy superior al Turbo Editassm. Trabaja de la misma forma, pero proporciona una interfaz mucho más fácil de usar y un mayor conjunto de utilerías y servicios.


Microensambladores

Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un determinado código de operación.
El programa que indica al intérprete de instrucciones de la UCP cómo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama microensamblador. Existen procesadores que permiten la modificación de sus microprogramas, para lo cual se utilizan microensambladores.




Ensambladores de una fase

Estos ensambladores leen una línea del programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina o la ejecuta si se trata de una pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc.
Debido a su forma de traducción, estos ensambladores obligan a definir los símbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado símbolo en una instrucción, se conozca la dirección de dicho símbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado.
Ensambladores de dos fases 
Se denominan así debido a que realizan la traducción en dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de símbolos; de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir traduciendo totalmente, puesto que conocen la totalidad de los símbolos utilizados y las posiciones que se les ha asignado. Estos ensambladores son los más utilizados en la actualidad.



-        Compiladores: es un programa traductor que a diferencia de los intérpretes, lleva a cabo la fase de traducción de dos formas, primero traduce completamente el programa fuente o código máquina y seguidamente lo ejecuta.
Es quien que analiza el programa fuente y "lo traduce" a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.
Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
(Martinez, 2013)

Partes del Compilador:Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases correspondientes al Análisis Léxico (que consiste en la descomposición del programa fuente en componentes léxicos), Análisis Sintáctico (agrupación de los componentes léxicos en frases gramaticales ) y Análisis Semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de Análisis Sintáctico).

Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible).

Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.

Tipos de compiladores

Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.








-        Interprete: es un programa encargado de procesar y traducir cada instrucción o sentencia de un programa escrito en un lenguaje de alto nivel a código máquina y después ejecutarla.
Analiza el programa fuente y lo ejecuta directamente, o sea en el ejemplo del traductor humano, éste sería un traductor humano que conforme a lo que está escuchando va ejecutando, sin generar ningún escrito, es decir que sobre la marcha va traduciendo.
Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.
(Martinez, 2013)

En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y de puración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).


Recomendaciones de la Unidad:


  1. http://josesanchezsantos.blogspot.com/2012/05/compilador-e-interprete.html
  2. http://santoslopez1.blogspot.com/



read comments Read User's Comments

Clasificación de los Lenguajes de programación.
El ordenador sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción.

Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran más cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

A continuación presento dos clasificaciones de los Lenguajes de Programación, la primera por tipo o nivel de lenguaje y la segunda los agrupa por generación tomando en cuentas sus características:




-        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 las cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las instrucciones que el microprocesador de la computadora entiende nuestra peticiones. El lenguaje máquina fue el primer lenguaje de programación. Dejo de usarse por su gran dificultad y por la facilidad para cometer errores.

-        Lenguajes de Programación de Bajo Nivel: Son mucho más fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la computadora como sucedía con el lenguaje máquina. El lenguaje ensamblador fue el primer lenguaje de programación de bajo nivel que trato de sustituir el lenguaje máquina por otro mucho más parecido al de los seres humanos. El programa fuente es un conjunto de instrucciones escrito en lenguaje ensamblador, y cuyo objeto es la traducción a lenguaje máquina del programa fuente. Los lenguajes de este tipo son agiles, difíciles de usar, específicos de cada procesador, si nos llevamos el programa a otro computador será preciso reescribir el programa desde el comienzo.

-        Lenguajes de Programación de Alto Nivel: Este lenguaje es independientes de la máquina, lo podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano. Necesitan un programa intérprete o compilador que lo traduzca uno de bajo nivel, como el lenguaje de máquina para que la computadora pueda entenderlo. Este tipo de lenguaje es más fáciles de aprender porque se usan palabras o comandos del lenguaje natural, como por ejemplo: palabras en 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 su forma de trabajar 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 datos (NATURAL, SQL).
-        Lenguajes de programación de quinta generación: creados para la inteligencia artificial y para el procesamiento de lenguajes naturales (LISP, PROLOG).[1]




[1] http://www.larevistainformatica.com/clasificacion-de-los-lenguajes-de-programacion.html

http://www.desarrolloweb.com/articulos/2358.php


Recomendaciones de la Unidad:






read comments Read User's Comments

Los lenguajes más utilizados actualmente

Los lenguajes más utilizados actualmente

En la actualidad varios son los lenguajes de programación más utilizados. A pesar de su antigüedad, el lenguaje C sigue siendo muy utilizado, sobre todo en aplicaciones relacionadas muy directamente con el hardware (software industrial, etc.). El propio sistema operativo Linux está escrito en su mayor parte en lenguaje C. Ellenguaje C++ también sigue siendo muy utilizado, sobre todo en aplicaciones de escritorio orientadas al sistema operativo Windows.

El lenguaje COBOL también se utiliza mucho, sobre todo en entidades bancarias y grandes empresas con sistemas mainframes para las que la fiabilidad del sistema es un factor clave, y los costes y riesgos de migración a otros lenguajes son hoy por hoy inasumibles. Al contrario de las creencias populares que afirman que se trata de un lenguaje obsoleto y no utilizado, algunos lo plantean como una buena alternativa para aquellos que buscan empleo.
Para consultas a bases de datos relacionales, el lenguaje SQL es el estándar indiscutible. Toda base de datos relacional que se precie debe permitir realizar consultas en este lenguaje.
Para el desarrollo de aplicaciones orientadas a Internet, el lenguajeJava y los lenguajes de la plataforma .Net de Microsoft (incluidosVisual Basic.Net y C#) se reparten la mayoría del mercado.
Existen otros lenguajes que cada vez cobran más importancia, tales como: Ruby, Perl, Phyton o PHP. Asimismo, el lenguaje Javascript (no confundir con Java) también está jugando un papel importante en el desarrollo de aplicaciones, impulsado por la amplia difusión de Internet y tecnologías emergentes como Ajax para la creación de interfaces ricas de usuario (RIA: Rich Application Interface).[1]



[1] http://manuelpereiragonzalez.blogspot.com/2009/09/historia-de-la-informatica-los.html

read comments Read User's Comments

Historia de los lenguajes de programación

Historia de los lenguajes de programación


Al igual que las personas nos comunicamos entre nosotras utilizando un lenguaje (por ejemplo español o Inglés), un lenguaje de programación permite a las personas comunicarse con los ordenadores para indicarles lo que tienen que hacer. Una persona que quiere que el ordenador realice una determinada tarea escribe un programa en un lenguaje de programación determinado, y el ordenador (utilizando ciertos traductores llamados compiladores e intérpretes) es capaz de realizar dicha tarea.

Lenguaje de programación: son un conjunto de símbolos convencionales representativos utilizado por el computador para manejar la información. Son las herramientas para que el usuario se comunique con el computador.
(Peralta, p. 12)

Desde la invención de las primeras máquinas de calcular hasta la actualidad, la evolución de los ordenadores ha ido acompañada del desarrollo de nuevos lenguajes de programación que permitan aprovechar la potencia de éstos de manera eficiente.



Los primeros lenguajes

En la década de los 40 empezaron a surgir los primeros lenguajes de programación de ordenadores. Estos primeros lenguajes (llamados lenguajes Ensamblador) estaban basados en símbolos o nemónicos que se correspondían directamente con instrucciones de código máquina (el código que es capaz de interpretar un ordenador sin necesidad de un intérprete o traductor).

En 1957 aparece el lenguaje Fortran (siglas de FORmula TRANslator), el primer lenguaje de alto nivel ampliamente difundido y utilizado a nivel mundial. El primer compilador de Fortran fue desarrollado por un equipo de IBM liderado por John W. Backus. Inicialmente Fortran fue muy utilizado en el mundo científico y en aplicaciones militares, y se escribieron multitud de librerías matemáticas para cálculo numérico, algunas de las cuales siguen utilizándose hoy en día.

Ya en 1960 aparece LISP, un lenguaje idóneo para crear programas de inteligencia artificial porque utilizaba conceptos de programación funcional y recursividad. Aunque no es muy utilizado para el desarrollo de aplicaciones empresariales, LISP sigue siendo utilizado hoy en día en entornos docentes (yo mismo lo utilizo en una asignatura en la que se enseñan diversos paradigmas de programación).


1 – Fortran (1957)
FORmulaTRANslation es el lenguaje de programación más antiguo y que continúa en uso. Creada por John Backus, esta herramienta fue desarrollada para la computación científica de alto nivel, matemática y estadística.
A día de hoy, este lenguaje se sigue usando en la industria automovilística, aeroespacial, gubernamental y la investigación. Por ejemplo, es muy útil para el pronóstico de los servicios meteorológicos.[1]



2 – Cobol (1959)
El Common Business Oriented Language está detrás de la mayoría de los sistemas de transacciones de negocio de los procesos de las tarjetas de crédito, ATMs (Modo de Transferencia Asíncrona), telefonía, sistemas hospitalarios, gobierno, sistemas automatizados y señales de tráfico.
El desarrollo de Cobol, creado por Grace Murray Hopper, muestra un lenguaje familiar y uniforme para transacciones empresariales. Por ejemplo, lo usan en el servicio postal estadounidense.
  
3 – Basic (1964)
Creado por estudiantes de Dartmouth College, el denominado Beginners All Purpose Symbolic
Instrucción Code fue diseñado como un lenguaje simplificado para aquellos que no tenían como base fuertes conocimientos técnicos o matemáticos. Una versión modificada, escrita por Bill Gates y Paul Allen, llegó a ser el primer producto de Microsoft. Fue vendido al M.I.T.S. para el Altair.
En 1977, fue integrado en el Apple II para su arranque.


4 – C (1969)
Este lenguaje fue desarrollado entre 1969 y 1973 por Dennis Ritchie para los laboratorios Bell Telephone para usarlos en el sistema Unix. Se le llamó “C” porque sus características derivaban de un lenguaje anterior llamado “B”.
C llegó a ser tan poderoso que la mayoría del núcleo de Unix fue reescrito con él. De hecho, hoy en día, Linux está todavía basado en C.

5 – Pascal (1970)
El lenguaje se llamó así en honor de Blaise Pascal, el inventor de las calculadoras matemáticas, aunque su creador se llamaba Niklaus Wirth, y lo desarrolló como una herramienta de enseñanza y formación aunque tiene un uso meramente comercial. Este lenguaje se usa en Skype.

6 – C++ (1983)
En los laboratorios Bells, Bjarne Stroustrup modificó el lenguaje C al C++, creando lo que
muchos consideran el lenguaje de programación más popular que ha existido nunca. Además, ha sido listado en lo alto de los top ten de los lenguajes de programación desde 1986 y archivado en el Hall of Fame en 2003. Hoy en día es usado por Firefox, Office y Adobe PDF Reader.







7 – Perl (1987)
Larry Wall, un programador Unix, creó Perl después de intentar extraer datos de un informe y darse cuenta que Unix no podía llevar a cabo las operaciones que él necesitaba. Practical Extraction Report Language fue descrito por su inventor como un lenguaje que “consigue que hagas tu trabajo”. Actualmente es usado por Craigslist.

8 – Python (1991)
Monty Python sirvió de inspiración para nombrar este lenguaje. Guido Van Rossum lo creó para solucionar problemas en el lenguaje ABC y continúa utilizándose para tal fin. Hoy en día es usado por la NASA, Google y YouTube.

9 – Ruby (1993)
Fue creado por Yukihiro Matsumoto, conocido como Matz, y utilizando partes de sus lenguajes de programación favoritos: Perl, Smalltalk, Eiffel, Ada y Lisp. Ahora es usado por Basecamp.

10 – PHP (1995)
Rasmus Lerdoff desarrolló PHP para reemplazar unos scripts de Perl usados para mantener su web personal. Hoy en día, PHP ha crecido hasta llegar a ser parte de una arquitectura web integrada en 20 millones de websites. Facebook lo usa actualmente.

11 – Java (1995)
Un grupo de trabajadores de Sun Microsystems, liderado por James Gosling, creó Java para arrancar los decodificadores de una televisión interactiva. Hoy en día, Java está presente en más de 1.000 millones de PCs de todo el mundo y muchas websites no pueden funcionar sin ella. Fue utilizada en 2004 en la misión de la NASA Mars Rovers.

12 – Javascript (1995)
Java y Javascript no están relacionados y tienen muy diferente semántica, aunque no lo parezca. Javascript fue desarrollada por Brendan Eich, de Netscape, bajo el nombre de Mocha. Tiene influencia del lenguaje C. Hoy en día es usado en servicios como node.js. De él depende AJAX.

13 – Ruby On Rails (2005)
Fue extraído por David Heinemeier Hansson de su trabajo en Basecamp, un proyecto dirigido por 37 señales. Hasson lanzó Ruby On Rails, en principio, como código abierto, en 2004, pero no compartió los derechos hasta febrero de 2005. Ahora está en su versión 3.0.7 y tiene más de 1.800 contribuyentes.

En la actualidad el uso de Java ha sido muy impulsado por la amplia influencia de Internet, debido a la universalidad de Java por la capacidad de sus programas para ser ejecutados en cualquier tipo de máquina.




[1] http://www.muycomputerpro.com/2011/08/26/historia-lenguajes-programacion




Recomendaciones de la Unidad:

  1. Vídeo: Historia y Características de Los Lenguajes de Programación.
  2. Ver vídeo: Que lenguaje de programación debemos aprender primero?
  3. Evoluciones de los Lenguajes de Programación.





read comments Read User's Comments