Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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:
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.
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
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.