En la actualidad la ciencia y la tecnología están
avanzando a pasos agigantados llevándonos así a conocer tecnologías que nunca
nos hubiéramos imaginado conocer.
Hoy en día la
computadora ya no es un lujo sino que es una necesidad, ya que ésta nos ayuda a
terminar trabajos o deberes de una forma más rápida y precisa.
Es por eso que éste trabajo de investigación se enfocó
a presentar cuáles son los tipos de lenguajes,
cómo se iniciaron, quienes las crearon y cómo funcionan.
Y también definición e historia del lenguaje C
1. LENGUAJE DE PROGRAMACIÓN
1.1 DEFINICIÓN
Un lenguaje de programación es un idioma artificial diseñado
para expresar procesos que
pueden ser llevadas a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que
controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana.
Está formado por un conjunto de símbolos y
reglas sintácticas y semánticas que
definen su estructura y el significado de sus elementos y expresiones. Al
proceso por el cual se escribe, se prueba, se depura, se compila y
se mantiene el código fuente de
un programa
informático se le
llama programación.
También la palabra programación se define
como el proceso de creación de un programa de computadora,
mediante la aplicación de procedimientos lógicos, a través de los siguientes
pasos:
·
El desarrollo
lógico del programa para resolver un problema en particular.
·
Escritura de la
lógica del programa empleando un lenguaje de programación específico
(codificación del programa).
·
Ensamblaje o
compilación del programa hasta convertirlo en lenguaje de máquina.
·
Prueba y depuración
del programa.
·
Desarrollo de la
documentación.
1.2 HISTORIA
Para que la computadora entienda nuestras
instrucciones debe usarse un lenguaje específico conocido como código
máquina, el cual la máquina comprende fácilmente,
pero que lo hace excesivamente complicado para las personas. De hecho sólo
consiste en cadenas extensas de números
0 y 1.
Para facilitar el trabajo, los primeros
operadores de computadoras decidieron hacer un traductor para reemplazar los 0
y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A
de la palabra inglesa add (sumar). El lenguaje ensamblador sigue
la misma estructura del lenguaje máquina, pero las letras y palabras son más
fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de
programación para las acciones usuales llevó a denominarlas con nombres fáciles
de memorizar y asociar:
ADD
(sumar), SUB
(restar), MUL
(multiplicar), CALL
(ejecutar
subrutina), etc. A esta secuencia de posiciones se le denominó
"instrucciones", y a este conjunto de instrucciones se le llamó lenguaje
ensamblador. Posteriormente aparecieron diferentes
lenguajes de programación, los cuales reciben su denominación porque tienen una
estructura sintáctica similar
a los lenguajes escritos por los humanos, denominados también lenguajes
de alto nivel.
La primera programadora de computadora
conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer
a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso
aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el
trabajo que Ada realizó con éstas le hizo ganarse el título de primera
programadora de computadoras del mundo. El nombre del lenguaje
de programación Ada fue escogido como homenaje a esta
programadora.
A finales de 1953, John Backus sometió
una propuesta a sus superiores en IBM para
desarrollar una alternativa más práctica al lenguaje
ensamblador para programar la computadora
central
IBM 704. El histórico equipo Fortran de Backus consistió en los programadores Richard
Goldberg, Sheldon
F. Best, Harlan
Herrick, Peter
Sheridan, Roy
Nutt, Robert
Nelson, Irving
Ziller, Lois
Haibt y David
Sayre.
El primer manual para el lenguaje Fortran apareció
en octubre de 1956, con el primer compilador Fortran entregado
en abril de 1957. Esto era un compilador optimizado, porque los clientes eran reacios a
usar un lenguaje
de alto nivel a menos que su compilador pudiera generar
código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje
ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aún en 2010 en informática
de gestión.
A medida que la complejidad de las tareas
que realizaban las computadoras aumentaba, se hizo necesario disponer de un
método más eficiente para programarlas. Entonces, se crearon los lenguajes
de alto nivel, como lo fue BASIC en las versiones introducidas en los
microordenadores de la década de 1980. Mientras que una tarea tan sencilla como sumar dos números puede
necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto
nivel bastará una sola sentencia.
1.3.1 LENGUAJES
DE MÁQUINA
En informática, cualquier lenguaje artificial
que puede utilizarse para definir una secuencia de instrucciones para su
procesamiento por un ordenador o computadora. Es complicado definir qué es y
qué no es un lenguaje de programación. Se asume generalmente que la traducción
de las instrucciones a un código que comprende la computadora debe ser
completamente sistemática. Normalmente es la computadora la que realiza la
traducción.
1.3.2 LENGUAJE DE BAJO NIVEL
Se llaman de bajo nivel porque están muy
cercanos al hardware del ordenador. Es necesario conocer a fondo la
arquitectura de la máquina para la que se va a programar. El primer lenguaje de
este tipo que se utilizó fue el lenguaje máquina, que consiste en un conjunto
de instrucciones en binario, es decir, con ceros y unos, con los cuales se
indica al ordenador qué hacer. Este lenguaje es muy complicado y la posibilidad
de cometer errores es muy alta, por lo que ya no se utiliza. Para solventar
estas dificultades apareció el lenguaje ensamblador, que consiste en asignar
una abreviatura a cada instrucción en binario, de forma que sea más fácil
recordarla y más difícil equivocarse. Sin embargo, con este lenguaje sigue
siendo necesario conocer muy bien el hardware del ordenador.
1.3.4 LENGUAJES DE ALTO NIVEL
Los primeros programas ensambladores producían sólo una instrucción en
lenguaje de máquina por cada instrucción del programa fuente. Para agilizar la
codificación, se desarrollaron programas ensambladores que podían producir una
cantidad variable de instrucciones en lenguaje de máquina por cada instrucción
del programa fuente
1.3.5 LENGUAJES COMPILADOS
En informática, un lenguaje cuyos programas se traducen a código máquina
antes de ejecutarse, a diferencia de un lenguaje interpretado, cuyos programas
se traducen y ejecutan instrucción por instrucción.
1.3.6 LENGUAJES INTERPRETADOS
Se puede también utilizar una
alternativa programador sólo carga el programa fuente en la computadora junto
con los datos que se van a procesar 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 corrida de
compilación para utilizarlo en una corrida de producción futura, el
1.3.7 LENGUAJES DE PROGRAMACIÓN DECLARATIVOS
Se les conoce como lenguajes declarativos en ciencias computacionales a
aquellos lenguajes de programación en los cuales se le indica a la computadora
qué es lo que se desea obtener o qué es lo que se está buscando, por ejemplo:
Obtener los nombres de todos los empleados que tengan más de 32 años. Eso se
puede lograr con un lenguaje declarativo como SQL.
1.3.7 LENGUAJE DE DESCRIPCIÓN DE MÁQUINA
Lenguaje de programación, como el PostScript, que se utiliza para
describir la salida a una impresora o a una pantalla, que a su vez usan las
instrucciones del lenguaje de descripción de página para construir el texto y
los gráficos para crear la imagen de la página. El lenguaje de descripción de
página es como otros lenguajes de ordenador o computadora, con un flujo lógico
de programa que permite una manipulación sofisticada de la salida.
1.3.8 LENGUAJE EXPERTO
Visual C Lenguaje de programación desarrollado
en 1972 por el estadounidense Dennis Ritchie en los Laboratorios Bell. Debe su
nombre a que su predecesor inmediato había sido llamado lenguaje de
programación B. Aunque muchos consideran que C es un lenguaje ensamblador más
independiente de la máquina que un lenguaje de alto nivel, su estrecha
asociación con el sistema operativo UNIX, su enorme popularidad y su
homologación por el American National Standards Institute (ANSI) lo han
convertido quizá en lo más cercano a un lenguaje de programación estandarizado
en el sector de microordenadores o microcomputadoras y estaciones de trabajo. C
es un lenguaje compilado que contiene un pequeño conjunto de funciones
incorporadas dependientes de la máquina.
1.3.9 PASCAL
Lenguaje de programación
imperativo, diseñado entre 1967 y 1971 por Niklaus Wirth. Se trata de un
lenguaje compilado y estructurado, basado en el lenguaje ALGOL, que simplifica
su sintaxis a la vez que incluye nuevos tipos de datos y estructuras, como subrangos,
tipos de datos enumerados, archivos, registros y conjuntos.
1.3.10 VISUAL BASIC
En informática, acrónimo de Beginners
All-purpose Symbolic Instruction Code (Código de Instrucciones Simbólicas de
Uso General para Principiantes). Se trata de un lenguaje de programación de
alto nivel desarrollado por los estadounidenses John Kemeny y Thomas Kurtz en
el Dartmouth College a mediados de la década de 1960. BASIC se ganó su enorme
popularidad gracias sobre todo a dos implementaciones, Tiny BASIC y Microsoft
BASIC, que convirtieron a este lenguaje en la primera lengua franca de los
microordenadores o microcomputadoras
1.3.11 COBOL
Programación
desarrollado entre 1959 y 1961 que
utiliza como base el idioma inglés y que se caracteriza por su gran facilidad
de lectura. Los programas escritos en COBOL, que es un lenguaje compilado, se
clasifican en cuatro divisiones: Identification, Enviroment, Data y Procedure.
La Identification division especifica el nombre del programa y contiene
información general del programa como puede ser su autor, fecha en que se
escribió y una pequeña descripción de su utilidad, así como cualquier otra
documentación que el programador desee añadir. La Enviroment division
especifica qué equipo o equipos se están utilizando, y los archivos empleados
en el programa para la entrada y la salida. La Data division describe los datos
utilizados en el programa. La Procedure division contiene la parte del
procesamiento que dicta las acciones del programa
1.3.12 LISP
El LISP es un lenguaje interpretado, en el que
cada expresión es una lista de llamadas a funciones. Este lenguaje se sigue
utilizando con frecuencia en investigación y en círculos académicos, y fue
considerado durante mucho tiempo el lenguaje modelo para la investigación de la
inteligencia artificial.
1.3.13 JAVA
Este lenguaje define una máquina
virtual independiente de la plataforma donde se ejecuta, que procesa programas,
llamados Applets, descargados desde el servidor Web. Además, debido al modo de
ejecución de los Applets, este lenguaje es muy seguro frente a la presencia y
ataque de virus informáticos.
2. LENGUAJE DE PROGRAMACIÓN TIPO C
2.1 DEFINICIÓN
C es un lenguaje
de programación creado en 1972 por Dennis M. Ritchie en
los Laboratorios Bell como
evolución del anterior lenguaje B, a su vez basado enBCPL.
Al igual que B, es un lenguaje orientado a
la implementación de Sistemas
Operativos, concretamente Unix. C es apreciado por la
eficiencia del código que produce y es el lenguaje de programación más popular
para crear software de sistemas, aunque también se utiliza para crear
aplicaciones.
Se trata de un lenguaje fuertemente
tipificado de medio
nivel pero con muchas 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. Los compiladores suelen ofrecer extensiones
al lenguaje que posibilitan mezclar código en ensamblador con
código C o acceder directamente a memoria o dispositivos
periféricos.
La primera estandarización del lenguaje C
fue en ANSI, con el estándar
X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente comoANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este
estándar es muy amplia por lo que, si los programas creados lo siguen, el
código es portátil entre plataformas y/o arquitecturas.
2.2 HISTORIA
2.2.1 DESARROLLO
INICIAL
El desarrollo inicial de C se llevó a cabo
en los Laboratorios Bell de AT&T entre
1969 y 1973; según Ritchie, el periodo más creativo tuvo lugar en 1972. Se le
dio el nombre "C" porque muchas de sus características fueron tomadas
de un lenguaje anterior llamado "B".
Hay muchas leyendas acerca del origen de C y
el sistema operativo con el que está íntimamente relacionado, Unix. Algunas de
ellas son:
·
El desarrollo de C
fue el resultado del deseo de los programadores de jugar con Space Travel.
Habían estado jugando en el mainframe de
su compañía, pero debido a su poca capacidad de proceso y al tener que soportar
100 usuarios, Thompson y Ritchie no tenían suficiente control sobre la nave
para evitar colisiones con los asteroides. Por ese motivo decidieron portar el
juego a un PDP-7 de
la oficina que no se utilizaba; pero esa máquina no tenía sistema
operativo, así que decidieron escribir
uno. Finalmente decidieron portar el sistema operativo del PDP-11 que
había en su oficina, pero era muy costoso, pues todo el código estaba escrito
en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y
portátil para que el sistema operativo se pudiera portar fácilmente de un
ordenador a otro. Consideraron usar B, pero carecía de las funcionalidades
necesarias para aprovechar algunas características avanzadas del PDP-11. Entonces
empezaron a crear un nuevo lenguaje, C.
·
La justificación
para obtener el ordenador original que se usó para desarrollar Unix fue crear
un sistema que automatizase el archivo de patentes. La versión original de Unix
se desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C se desarrolló
para poder reescribir el sistema operativo.
En 1973, el lenguaje C se había vuelto tan
potente que la mayor parte del kernel Unix,
originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C.
Éste fue uno de los primeros núcleos de sistema operativo implementados en un
lenguaje distinto al ensamblador. (Algunos casos anteriores son el
sistema Multics,
escrito en PL/I,
y Master Control Program para
el B5000 de
Burroughs, escrito en ALGOL en
1961).
2.2.2 EL C DE KERNIGHAN Y RITCHIE
En 1978, Ritchie y Brian
Kernighan publicaron la primera
edición de El lenguaje de programación C,
también conocido como La biblia de C. Este libro fue durante años
la especificación informal
del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre
de "el C de Kernighan y Ritchie" o simplemente "K&R C"
(La segunda edición del libro cubre el estándar ANSI C,
descrito más abajo).
El
C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un
compilador debe de soportar. Durante muchos años, incluso tras la introducción
del ANSI C, fue considerado "el mínimo común denominador" en el que
los programadores debían programar cuando deseaban que sus programas fueran
transportables, pues no todos los compiladores soportaban completamente ANSI, y
el código razonablemente bien escrito en K&R C es también código ANSI C
válido.
En
las primeras versiones del lenguaje, la definición de funciones se hacía
mediante un 'prototipo de función' (function prototype), el cual indicaba al
compilador el tipo de retorno de la función. Aunque este método tiene una gran
desventaja respecto al nuevo, debido a que no comprueba el número ni el tipo en
la lista de argumentos; en otras palabras, es mucho más fácil cometer errores
al hacer una llamada a una función con argumentos incorrectos.
En
los años siguientes a la publicación del C de Kernighan y Ritchie, se añadieron
al lenguaje muchas características no oficiales, que estaba soportadas por los
compiladores de AT&T, entre otros.
2.2.3 ANSI C e ISO C
A
finales de la década de 1970, C empezó a sustituir a BASIC como
lenguaje de programación de microcomputadores predominante. Durante la década
de 1980 se empezó a usar en los IBM PC,
lo que incrementó su popularidad significativamente. Al mismo tiempo, Bjarne
Stroustrup empezó a
trabajar con algunos compañeros de Bell Labs para añadir funcionalidades de
programación orientada a objetos a C. El lenguaje que crearon, llamado C++,
es hoy en día el lenguaje de programación de aplicaciones más común en el
sistema operativo Microsoft Windows;
mientras que C sigue siendo más popular en el entorno Unix. Otro lenguaje que
se desarrolló en esa época, Objective C,
también añadió características de programación orientada a objetos a C. Aunque
hoy en día no es tan popular como C++, se usa para desarrollar
aplicaciones Cocoa para Mac OS X.
En
1983, el Instituto Nacional Estadounidense de Estándares organizó
un comité, X3j11, para establecer una especificación estándar de C. Tras un
proceso largo y arduo, se completó el estándar en 1989 y se ratificó como el
"Lenguaje de Programación C" ANSI X3.159-1989. Esta versión del
lenguaje se conoce a menudo como ANSI C,
o a veces como C89 (para distinguirla de C99).
En
1990, el estándar ANSI (con algunas modificaciones menores) fue adoptado por
la Organización Internacional para la
Estandarización (ISO) en el
estándar ISO/IEC 9899:1990. Esta versión se conoce a veces como C90. No
obstante, "C89" y "C90" se refieren en esencia al mismo
lenguaje.
Uno
de los objetivos del proceso de estandarización del ANSI C fue producir una
extensión al C de Kernighan y Ritchie, incorporando muchas funcionalidades no
oficiales. Sin embargo, el comité de estandarización incluyó también muchas
funcionalidades nuevas, como prototipos de función, y un preprocesador
mejorado. También se cambió la sintaxis de la declaración de parámetros para
hacerla semejante a la empleada habitualmente en C++:
2.2.4 C99
Tras
el proceso de estandarización de ANSI, la especificación del lenguaje C
permaneció relativamente estable durante algún tiempo, mientras que C++ siguió
evolucionando. Sin embargo, el estándar continuó bajo revisión a finales de
la década de 1990,
lo que llevó a la publicación del estándar ISO 9899:1999 en 1999. Este estándar
se denomina habitualmente "C99". Se adoptó como estándar ANSI en
marzo de 2000.
El
compilador GCC, entre muchos otros, soportan hoy en día la mayoría de las
nuevas características de C99. Sin embargo, este nuevo estándar ha tenido poca
acogida entre algunos desarrolladores de compiladores, como Microsoft y Borland,
que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de
muchas características de C99. Algunas características tienen más demanda que
otras, y consideraremos incluirlas en versiones futuras siempre que sean
compatibles con C++."
2.2.5 C11
C11 (antes
conocido como C1X) es un nombre informal para ISO/IEC
9899:2011, el último estándar publicado para C. El borrador final,
N1570, fue
publicado en abril de 2011. El nuevo estándar superó su última revisión el 10
de octubre de 2011 y fue oficialmente ratificado por la ISO y publicado el 8 de
diciembre de 2011.
2.3 CARACTERÍSTICAS
·
Un núcleo del
lenguaje simple, con funcionalidades añadidas importantes, como funciones
matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
·
Es un lenguaje muy
flexible que permite programar con múltiples estilos. Uno de los más empleados
es el estructurado "no llevado al extremo" (permitiendo ciertas
licencias de ruptura).
·
Un sistema de
tipos que impide operaciones sin sentido.
·
Usa un lenguaje
de preprocesado,
el preprocesador
de C, para tareas como
definir macros e
incluir múltiples archivos de código fuente.
·
Acceso a memoria
de bajo nivel mediante el uso de punteros.
·
Interrupciones al
procesador con uniones.
·
Un conjunto
reducido de palabras clave.
·
Por defecto, el
paso de parámetros a
una función se realiza por valor. El paso por referencia se consigue pasando
explícitamente a las funciones las direcciones de memoria de dichos parámetros.
·
Punteros a
funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.
·
Tipos
de datos agregados (struct) que permiten que datos relacionados (como un
empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen
como un todo (en una única variable "empleado").
No hay comentarios:
Publicar un comentario