Sei sulla pagina 1di 10

Marco histórico de la programación

La historia de la Programación está


relacionada directamente con la aparición
de los computadores, que ya desde el siglo
XV tuvo sus inicios con la construcción
de una máquina que realizaba operaciones
básicas y raíces cuadradas (Gottfried
Wilheml von Leibniz); aunque en realidad
la primera gran influencia hacia la
creación de los computadores fue
la máquina diferencial para el cálculo de
polinomios, proyecto no
concluido de Charles Babbage (1793-
1871) con el apoyo de Lady Ada
Countess of Lovelace (1815-1852),
primera persona que incursionó en la
programación y de quien proviene el
nombre del lenguaje de programación
ADA creado por el DoD (Departamento
de defensa de Estados Unidos) en la
década de 1970.

Luego los avances en las ciencias informáticas han sido muy acelerados, se reemplazó los tubos al
vacío por transistores en 1958 y en el mismo año, se sustituyeron por circuitos integrados, y en
1961 se miniaturizaron en chips de silicio. En 1971 apareció el primer microprocesador de Intel; y
en 1973 el primer sistema operativo CP/M. El primer computador personal es comercializado por
IBM en el año 1980.
De acuerdo a este breve viaje por la historia, la programación está vinculada a la aparición de los
computadores, y los lenguajes tuvieron también su evolución. Inicialmente se programaba en
código binario, es decir en cadenas de 0s y 1s, que es el lenguaje que entiende directamente el
computador, tarea extremadamente difícil; luego se creó el lenguaje ensamblador, que aunque era lo
mismo que programar en binario, al estar en letras era más fácil de recordar. Posteriormente
aparecieron lenguajes de alto nivel, que en general, utilizan palabras en inglés, para dar las órdenes
a seguir, para lo cual utilizan un proceso intermedio entre el lenguaje máquina y el nuevo código
llamado código fuente, este proceso puede ser un compilador o un intérprete.
Un compilador lee todas las instrucciones y genera un resultado; un intérprete ejecuta y genera
resultados línea a línea. En cualquier caso han aparecido nuevos lenguajes de programación, unos
denominados estructurados y en la actualidad en cambio los lenguajes orientados a objetos y los
lenguajes orientados a eventos.
Los primeros lenguajes de programación preceden a la computadora moderna. En un inicio los
lenguajes eran códigos.
La máquina del telar de Jacquard, creada en 1801, utilizaba los orificios en tarjetas perforadas para
representar los movimientos de un brazo de la máquina de tejer, con el objetivo de generar patrones
decorativos automáticamente.
Durante un período de nueve meses entre 1842 y 1843, Ada Lovelace tradujo las memorias del
matemático italiano Luigi Menabrea acerca de la nueva máquina propuesta por Charles Babbage,
la Máquina Analítica. Con estos escritos, ella añadió unas notas en las cuales especificaba en detalle
un método para calcular los números de Bernoulli con esta máquina.
Herman Hollerith se percató de que podía codificar la información en tarjetas perforadas cuando
observó a los conductores de trenes que identificaban a los pasajeros según el orificio que hacían en
su respectivo ticket. En 1890 Hollerith codificó los datos del censo en tarjetas perforadas.
Los primeros códigos de computadora estaban especializados según sus aplicaciones. En las
primeras décadas del siglo 20, los cálculos numéricos estaban basados en los números decimales.
Con el paso del tiempo, se dieron cuenta de que la lógica podía ser representada con números, no
sólo con palabras. Por ejemplo, Alonzo Church fue capaz de expresar el cálculo lambda a través de
fórmulas. La máquina de Turing estableció las bases para almacenar programas como datos en
la arquitectura de von Neuman de una computadora. Sin embargo, a diferencia del cálculo lambda,
el código de Turing no serviría satisfactoriamente como base para lenguajes de más alto nivel- su
principal uso es en el análisis riguroso en la complejidad algorítmica.
Como muchos “primeros” en la historia, el primer lenguaje de programación moderno es difícil de
identificar. Desde un inicio, las restricciones de hardware definían el lenguaje. Las tarjetas
perforadas permitían 80 columnas, pero algunas de estas serían utilizadas para una clasificación de
cada tarjeta. FORTRAN incluía algunas palabras reservadas provenientes del inglés, como “IF”,
“GOTO” (go to) y “CONTINUE”. El uso del tambor magnético para la memoria implicaba que los
programas informáticos tuvieran que estar intercalados con las rotaciones del tambor. Por lo tanto
los programas eran muy dependientes del hardware.
Para algunas personas, lo que sería el primer lenguaje de programación moderno depende de cuánto
poder y legibilidad humana se requería antes de que se concediera el estado de "lenguaje de
programación". Tanto el telar de Jacquard como la Máquina Diferencial de Babbage, tenían
lenguajes muy simples y extremadamente limitados para describir las acciones que estas máquinas
realizaran. Se puede incluso considerar los agujeros perforados en los rollos de pianola como un
limitado lenguaje de dominio específico, a pesar de no estar diseñado para el consumo humano.
En la década de 1940 fueron creadas las primeras computadoras modernas, con alimentación
eléctrica. La velocidad y capacidad de memoria limitadas forzaron a los programadores a escribir
programas, en lenguaje ensamblador muy afinados. Finalmente se dieron cuenta de que la
programación en lenguaje ensamblador requería de un gran esfuerzo intelectual y era muy propensa
a errores.
En 1948, Konrad Zuse publicó un artículo acerca de su lenguaje de programación Plankalkül. Sin
embargo, no fue implementado en su vida y sus contribuciones fueron aisladas de otros desarrollos.
Entre algunos lenguajes importantes que fueron desarrollados en este período se encuentran:
1943 - Plankalkül (Respetad a Conrado), diseñado, pero sin implementar durante medio siglo
1943 - se crea el sistema de codificación ENIAC.
1949 - 1954 -- una serie de conjuntos de instrucciones nemotécnicas, como la de ENIAC,
comenzando en 1949 con C-10 para BINAC (que luego evolucionaría en UNIVAC). Cada conjunto
de instrucciones estaba destinado a un fabricante específico.

Las décadas de 1950 y 1960


En los cincuenta, los tres primeros lenguajes de programación modernos, cuyos descendientes aún
continúan siendo utilizados, son:
FORTRAN (1955), creado por John Backus.
LISP (1958), creado por John McCarthy.
COBOL (1959), creado por el Short Range Committee, altamente influenciado por Grace Hopper.
Otro hito a finales de 1950 fue la publicación, por un comité Americano y Europeo de científicos de
la computación, de un nuevo “lenguaje para algoritmos”; el Reporte de ALGOL
60 ("ALGOrithmic Language"). Este reporte consolidó muchas ideas que estaban circulando en
aquel entonces, y proporcionó dos innovaciones importantes para los lenguajes de programación:
Estructuras de bloques anidadas: las secuencias de código y las declaraciones asociadas se pueden
agrupar en bloques sin tener que pertenecer explícitamente a procedimientos separados;
Ámbito léxico: un bloque puede tener sus propias variables, procedimientos y funciones, invisible
al código fuera de dicho bloque, por ejemplo, ocultamiento de información.
Otra innovación, relacionada con esto, fue cómo el lenguaje fue descrito:
Una notación matemática exacta, Backus-Naur Form (BNF), fue utilizada para describir la sintaxis
del lenguaje. Todos los subsecuentes lenguajes de programación han utilizado una variante de BNF
para describir la porción libre del contexto de su sintaxis.
Algol 60 influenció particularmente en el diseño de lenguajes posteriores, de los cuales algunos se
hicieron más populares. Los grandes sistemas de Burroughs fueron diseñados para ser programados
en un subconjunto extendido de Algol.
Las ideas fundamentales de Algol se continuaron, produciendo Algol 68:
La sintaxis y la semántica se hizo aún más ortogonal, con rutinas anónimas, un sistema de
tipificación recursiva con funciones de orden superior, etc.;
Y no sólo la parte libre del contexto, sino que tanto la sintaxis como la semántica del lenguaje
completo fueron definidos formalmente, en términos de una gramática de Van Wijngaarden, un
formalismo diseñado específicamente para este propósito.
Las variadas pero poco usadas características de Algol 68 (por ejemplo, bloques simultáneos y
paralelos) y su complejo sistema de atajos sintácticos y coerciones automáticas de tipo lo hicieron
impopular entre los ejecutores y se ganó una reputación de ser difícil. Niklaus Wirth salió del
comité de diseño para crear el sencillo lenguaje Pascal.
Algunos de los lenguajes importantes que fueron desarrollados en este período incluyen:

 1951 - Regional Assembly Language


 1952 - Autocode
 1954 - IPL (precursor de LISP)
 1955 - FLOW-MATIC (precursor de COBOL)
 1957 - FORTRAN (primer compilador)
 1957 - COMTRAN (precursor de COBOL)
 1958 - LISP
 1959 - FACT (precursor de COBOL)
 1959 - COBOL
 1959 - RPG
 1962 - APL
 1962 - Simula
 1962 - SNOBOL
 1963 - CPL (precursor de C)
 1964 - BASIC
 1964 - PL/I
 1967 - BCPL (precursor de C)
 1968-1979: estableciendo paradigmas fundamentales
El período comprendido entre finales de 1960 y finales de 1970 trajo un gran florecimiento de
lenguajes de programación. La mayoría de los paradigmas de lenguajes de programación más
importantes y actualmente en uso se inventaron en este período:
Simula, inventado en la década de 1960 por Nygaard y Dahl como un superconjunto de Algol 60,
fue el primer lenguaje diseñado para apoyar la programación orientada a objetos.
C, en principio un lenguaje de programación de sistemas, fue desarrollado por Dennis Ritchie y Ken
Thompson en los Laboratorios Bell entre 1969 y 1973.
Smalltalk (mediados de los 70) proporcionaron un completo diseño de un lenguaje orientado a
objetos.
Prolog, diseñado en 1972 por Colmerauer, Roussel y Kowalski, fue el primer lenguaje
de programación lógica.
ML construyó un sistema de tipos polimórfico (inventado por Robin Milner en 1973) en el tope de
Lisp, pionero en los lenguajes funcionales de programación con tipado estático.
Cada uno de estos lenguajes generó toda una familia de descendientes, y los lenguajes más
modernos cuentan al menos uno de ellos en su ascendencia.
En los años 60 y 70 también suscitó un debate considerable sobre los méritos de la "programación
estructurada", que esencialmente significaba programación sin el uso de GOTO. Este debate estaba
estrechamente relacionado con el diseño del lenguaje: algunos lenguajes no incluían GOTO, lo que
obligó a la programación estructurada en el programador. Aunque el debate se recrudecía
acaloradamente en ese momento, casi todos los programadores están de acuerdo en que, incluso en
lenguajes que ofrecen GOTO, es una mala práctica de programación usarlo, excepto en raras
circunstancias. Como resultado de ello, las generaciones posteriores de diseñadores de lenguajes
han encontrado el debate sobre programación estructurada tedioso e incluso desconcertante.
Algunos lenguajes importantes que se desarrollaron en este período fueron:

 1968 - Logo
 1969 - B (precursor C)
 1970 - Pascal
 1970 - Forth
 1972 - C
 1972 - Smalltalk
 1972 - Prolog
 1973 - ML
 1975 - Scheme
 1978 - SQL (inicialmente sólo un lenguaje de consulta, posteriormente ampliado con
construcciones de programación)
 1978 - Modula-2
La década de 1980: consolidación, módulos, rendimiento
La década de 1980 fueron años de consolidación relativa en los lenguajes imperativos. En vez de
inventar nuevos paradigmas, se comenzó a trabajar a partir de las ideas inventadas en la década
anterior. C++ combinaba la programación orientada a objetos y la programación de sistemas. El
gobierno de Estados Unidos estandarizó Ada, un lenguaje de programación de sistemas destinado a
ser utilizado por contratistas de defensa. En Japón y en otras partes, se gastaron enormes sumas
investigando los llamados lenguajes de programación de quinta generación que incorporaban
construcciones de la programación lógica. La comunidad de los lenguajes funcionales llevaron a
cabo la estandarización de ML y Lisp. La investigación en Miranda, un lenguaje funcional,
con evaluación perezosa, comenzó a tomar fuerza en esta década.
Una nueva tendencia importante en el diseño de lenguajes era un mayor enfoque en la
programación de sistemas a gran escala a través del uso de módulos, una organización a gran escala
de unidades de código. Modula, Ada, y ML desarrollaron sistemas de módulos notables en la
década de 1980. Los sistemas de módulos eran relacionados con frecuencia con construcciones de
programación genéricas, que serían, en esencia, módulos parametrizados (véase
también polimorfismo en programación orientada a objetos).
Aunque no aparecían nuevos paradigmas de lenguajes de programación imperativos, muchos
investigadores expandieron las ideas de los lenguajes anteriores y las adaptaron a nuevos contextos.
Por ejemplo, los lenguajes de los sistemas Argus y Emerald adaptaron la programación orientada a
objetos para sistemas distribuidos.
La década de 1980 también trajo avances en la implementación de lenguajes de programación. El
movimiento de RISC en la arquitectura de computadoras postulaba que el hardware debía estar
diseñado para los compiladores más que para los programadores de ensamblador humanos. Con la
ayuda de las mejoras en la velocidad del procesador, permitiendo técnicas de compilación cada vez
más agresivas, el movimiento RISC despertó un mayor interés en la tecnología de compilación de
los lenguajes de alto nivel.
Las tecnologías de los lenguajes continuaron sobre estas líneas entrando en la década de 1990.
Algunos lenguajes importantes que se desarrollaron en este período son:

 1980 - C++ (C con clases, el nombre cambió en julio de 1983)


 1983 - Ada
 1984 - Common Lisp
 1984 - MATLAB
 1985 - Eiffel
 1986 - Objective-C
 1986 - Erlang
 1987 - Perl
 1988 - Tcl
 1988 - Mathematica
 1989 - FL (Backus);
La década de 1990: la era de Internet
El rápido crecimiento de Internet en la década de 1990 fue el siguiente gran acontecimiento
histórico para los lenguajes de programación. Con la apertura de una plataforma totalmente nueva
para los sistemas informáticos, Internet creó una oportunidad adoptar nuevos lenguajes. En
particular, el lenguaje de programación JavaScript se hizo popular debido a su pronta integración
con el navegador web Netscape Navigator, y varios lenguajes de scripting alcanzaron un amplio uso
en el desarrollo de aplicaciones personalizadas para servidores web. La década de 1990 no vio
ninguna novedad fundamental en los lenguajes imperativos, pero sí mucha recombinación y la
maduración de viejas ideas. Esta era comenzó la difusión de los lenguajes funcionales. Una filosofía
de conducción grande era la productividad del programador. Surgieron muchos lenguajes de
“aplicaciones de desarrollo rápido” (RAD), los cuales usualmente venían con un IDE, recolector de
basura, y eran descendientes de lenguajes anteriores. Todos estos lenguajes eran orientados a objeto.
Estos incluían Object Pascal, Visual Basic y Java. Java, en particular, recibió mucha atención. Pero
más radicales e innovadores que los lenguajes de RAD eran los nuevos lenguajes de script. Estos no
descendían directamente de otros lenguajes y ofrecieron nuevas sintaxis e incorporación más liberal
de otras características. Muchos consideran estos lenguajes de script más productivos que los
lenguajes de RAD, aunque esto se debe a menudo a que es más difícil escribir y mantener largos
programas que pequeños programas simples. Sin embargo, no es menos cierto que los programas de
script llegaron para convertirse en los más prominentes en la conexión con la Web.
Algunos lenguajes importantes que se desarrollaron en este período son:

 1990 - Haskell
 1991 - Python
 1991 - Visual Basic
 1991 - HTML (lenguaje de marcado de hipertexto)
 1993 - Ruby
 1993 - Lua
 1994 - CLOS (parte del ANSI Common Lisp)
 1995 - Java
 1995 - Delphi (Object Pascal)
 1995 - JavaScript
 1995 - PHP
 1996 - WebDNA
 1997 - Rebol
 1999 - D
Tendencias actuales
La evolución de los lenguajes de programación continúa, tanto en la industria como en
investigación. Algunas de las tendencias actuales incluyen:
Aumentar el soporte para la programación funcional en lenguajes importantes utilizados
comercialmente, incluida la programación funcional pura para hacer el código más fácil de razonar
y de paralelizar (tanto en macro como en micro-niveles).
Construir lenguajes para apoyar la programación concurrente y distribuida.
Mecanismos para añadir al lenguaje verificación en cuanto a seguridad y confiabilidad: chequeo
sintáctico extendido, control de flujo de información, seguridad de hilos.
Mecanismos alternativos de modularidad: mixins, delegados, aspectos.
Desarrollo de software orientado a componentes.
Metaprogramación, la reflexión o el acceso al árbol de sintaxis abstracta.
Mayor énfasis en cuanto a distribución y movilidad.
Integración con bases de datos, incluyendo XML y bases de datos relacionales.
Soporte para Unicode para que el código fuente (texto del programa) no se limite sólo a los
caracteres contenidos en el conjunto de caracteres ASCII, permitiendo, por ejemplo, el uso de
caracteres no latinos basados en guiones o signos de puntuación extendidos.
XML para interfaz gráfica (XUL, XAML).
El código abierto como una filosofía de desarrollo de lenguajes, incluyendo la colección de
compiladores de GNU y lenguajes recientes, como Python, Ruby, y Squeak.

Programación Orientada a Aspectos (AOP).


Lenguajes que soporten programar sobre los procesadores de la GPU en paralelo, como OpenCL.
Algunos lenguajes importantes desarrollados durante este período incluyen:

 2000 - ActionScript
 2001 - C#
 2001 - Visual Basic .NET
 2002 - F#
 2003 - Groovy
 2003 - Scala
 2003 - Factor
 2005 - Scratch
 2007 - Clojure
 2009 - Go
 2011 - Dart
 2014 - Swift
Personas destacadas en la historia de los lenguajes de programación

 Joe Armstrong, creador de Erlang.


 John Backus, inventor de Fortran.
 Alan Cooper, desarrollador de Visual Basic.
 Edsger W. Dijkstra, desarrolló la estructura para la programación estructurada.
 James Gosling, desarrollador de Oak, precursor de Java.
 Anders Hejlsberg, desarrollador de Turbo Pascal, Delphi y C#.
 Grace Hopper, desarrolladora de Flow-Matic, influenciando el lenguaje COBOL.
 Kenneth E. Iverson, desarrollador de APL, y co-desarrollador de J junto a Roger Hui.
 Bill Joy, inventor de vi, autor de BSD Unix, creador de SunOS, el cual se convirtió
en Solaris.
 Alan Kay, pionero en programación orientada a objetos, creador de Smalltalk.
 Brian Kernighan, coautor del primer libro de programación en lenguaje C con Dennis
Ritchie, y coautor de los lenguajes de programación AWK y AMPL.
 Yukihiro Matsumoto, creador de Ruby.
 Mitchel Resnick, creador del lenguaje visual Scratch
 John McCarthy, inventor de LISP.
 Bertrand Meyer, inventor de Eiffel.
 Robin Milner, inventor de ML, y compartió crédito en el método Hindley–
Milner de inferencia de tipo polimórfica.
 John von Neumann, creador del concepto de sistema operativo.
 Martin Odersky, creador de Scala, y previamente contribuyó en el diseño de Java
 Seymour Papert, pionero de la inteligencia artificial, inventor del lenguaje de
programación Logo en 1968. .
 Dennis Ritchie, inventor de C. Sistema Operativo Unix.
 Nathaniel Rochester, inventor del primer lenguaje en ensamblador simbólico (IBM 701).
 Guido van Rossum, creador de Python.
 Bjarne Stroustrup, desarrollador de C++.
 Ken Thompson, inventor de B, desarrollador de Go, y coauthor del sistema operativo Unix.
 Larry Wall, creador de Perl y Perl 6.
 Niklaus Wirth, inventor de Pascal, Modula y Oberon.
 Stephen Wolfram, creador de Mathematica.
 Véase también[editar]
 ACM SIGPLAN History of Programming Languages Conference (HOPL)

Bibliografía
Rosen, Saúl, Sistemas y lenguajes de programación, McGraw-Hill, 1967
Sammet, Jean E., Lenguajes de programación: historia y fundamentos, Prentice-Hall, 1969
Sammet, Jean E., "Lenguajes de programación: historia y futuro", Comunicaciones de la ACM,
Volumen 15, Número 7, julio de 1972.
Richard L. Wexelblat (ed.): Historia de los lenguajes de programación, Academic Press 1981.
Thomas J. Bergin y Richard G. Gibson (eds.): Historia de los lenguajes de programación, Addison
Wesley, 1996.
Marco teórico
Como se explicó anteriormente existen sistemas dispensadores de comida muy similares pero estos
únicamente dispensan a determinadas horas sin tener una variable a determinar cómo es el caso del
prototipo dispensador comida para canes de uso doméstico que es el peso del animal.
Al pasar el alimento por la tolva, la materia prima se dirige a un sistema de pesaje electrónico
conectado al sistema de control. En el sistema electrónico, existen varios sistemas de control como
por ejemplo PLC PLD, microcontroladores, etc. Un microcontrolador es un microprocesador
optimizado para ser usado para el uso de los contactos electrónicos, son controladores que
corresponde un DSPs más especializados.
Con la integración de todos estos sistemas electrónicos y mecánicos mediante los conocimientos
adquiridos en la ingeniería se lleva a cabo el proyecto de la forma en que se dice a continuación
Microcontroladores.
Un controlador es un dispositivo utilizado para controlar uno o varios procesos. A principio, los
controladores estaban formados exclusivamente por componentes discretos.
Más tarde, se emplearon procesadores rodeados de memorias y circuitos de entrada / salida sobre
una placa de circuito impreso. Actualmente, los controladores integran todos los dispositivos se
vuelven a utilizar en un pequeño chip de lo que hoy se conoce como microcontrolador
Las partes principales del microcontrolador son: CPU RAM para contener los datos que se
intercambian con los buses de entrada / salida, memoria tipo ROM / PROMEPROM para el código
programado, diversos módulos para el controlador de periféricos.
Un aspecto muy importante es la forma en la que se va programar el micro controlador ya que va
ser el que de funcionamiento a los dimas dispositivos para lograr su funcionamiento.

Potrebbero piacerti anche