domingo, 23 de marzo de 2014

generaciones de el software

generaciones de el software :






ERA
AÑOS
CARACTERÍSTICAS
1950 - 1965
  • Se trabajaba con la idea de “Codificar y Corregir”.
  • No existía un planteamiento previo.
  • No existía documentación de ningún tipo.
  • Existencia de pocos métodos formales y pocos creyentes en ellos.
  • Desarrollo a base de prueba y error.
1965 - 1972
  • Se busca simplificar código.
  • Aparición de Multiprogramación y Sistemas Multiusuarios.
  • Sistemas de Tiempo Real apoyan la toma de decisiones.
  • Aparición de Software como producto. (Casas de Software).
  • INICIO DE LA CRISIS DEL SOFTWARE.
  • Se buscan procedimientos para el desarrollo del Software.
1972 - 1989
  • Nuevo Concepto: Sistemas Distribuidos.
  • Complejidad en los Sistemas de Información.
  • Aparecen: Redes de área local y global, y Comunicadores Digitales.
  • Amplio Uso de Microprocesadores.
1989 - ¿?
  • Impacto Colectivo de Software.
  • Aparecen: Redes de Información, Tecnologías Orientadas a Objetos.
  • Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.
  • La información como valor preponderante dentro de las Organizaciones.
Creemos de suma relevancia el mencionar algunas de los lenguajes de programación que fueron utilizados en sus respectivas eras. Esto nos ayudará a comprender mejor el objetivo que se perseguía en cada una de ellas.

ERA
LENGUAJES
CARACTERÍSTICAS
  • Fortran
  • Basic
  • Logo
  • Cobol
  • Fue el primer y principal lenguaje Científico.
  • Diseñado por IBM.
  • Utilizado también para aplicaciones comerciales.
  • Desarrollado como lenguaje de tiempo compartido.
  • Traza elementos gráficos estableciendo la geometría de lápiz.
  • Ampliamente usado en programación en minicomputadores.
  • Pascal
  • Prolog
  • Mumps
  • Lisp
  • Lenguaje Académico.
  • Sus características son copiadas por otros lenguajes.
  • Éxito comercial a través de Borland.
  • Desarrollado en Francia, 1973.
  • Aplicaciones en Inteligencia Artificial (IA).
  • Sistema de Multiprogramación.
  • Incluye su propia base de datos.
  • Utilizado en aplicaciones médicas.
  • Sintaxis muy diferente de los demás lenguajes.
  • Programa aplicaciones en IA.

  • C, C++
  • Modula-2
  • dBase
  • Desarrollado en los ochentas.
  • Se utiliza en aplicaciones comerciales.
  • C++, se utiliza para la tecnología orientada a objetos.
  • Versión mejorada de Pascal.
  • Desarrollada en 1979.
  • Lenguaje estándar para aplicaciones comerciales.
  • Ramas colaterales: Clipper, FoxBase.
  • Visual C++
  • Visual Basic
  • Desarrollado por Microsoft.
  • Principalmente orientado a la tecnología de objetos.
  • Se utiliza para aplicaciones comerciales.
  • Principalmente para aplicaciones comerciales.
  • Versión cotizada, ya que permite interactuar con tablas de manejadores de bases de datos y lenguaje SQL.






Generadores de Código para Compiladores (Compilador de Compilador)

Se han creado algunas herramientas generales para el diseño automático de componentes específicos de compilador. Estas herramientas utilizan lenguajes especializados para especificar e implantar el componente, y pueden utilizar algoritmos bastantes complejos. Las herramientas más efectivas son las que ocultan los detalles del algoritmo de generación y producen componentes que se pueden integrar con facilidad al resto del compilador. La siguiente es una lista de algunas herramientas útiles para la construcción de compiladores:

1.- Generadores de analizadores sintácticos. Estos generadores producen analizadores sintácticos, normalmente a partir de una entrada fundamentada en una gramática independiente del contexto. En los primeros compiladores, el análisis sintáctico consumía no sólo gran parte del tiempo, de ejecución del compilador, sino gran parte del esfuerzo intelectual de escribirlo. Esta fase se considera ahora una de las más fáciles de aplicar. Muchos de los generadores de analizadores sintácticos utilizan poderosos algoritmos de análisis sintáctico, y son demasiado complejos para realizarlos manualmente.

2.- Generadores de analizadores léxicos. Estas herramientas generan automáticamente analizadores léxicos, por lo general a partir de una especificación basada en expresiones regulares. La organización básica del analizador léxico resultante es en realidad un autómata finito.

3.- Dispositivos de traducción dirigida por la sintaxis. Estos producen grupos de rutinas que recorren el árbol de análisis sintáctico. La idea básica es que se asocian una o más "traducciones" con cada nodo del árbol de análisis sintáctico, y cada traducción se define partiendo de traducciones en sus nodos vecinos en el árbol.

4.- Generadores automáticos de código. Tales herramientas toman un conjunto de reglas que definen la traducción de cada operación del lenguaje intermedio al lenguaje de máquina para la máquina objeto. Las reglas deben incluir suficiente detalle para poder manejar los distintos métodos de acceso posibles a los datos; por ejemplo, las variables pueden estar en registros, en una posición fija (estática) de memoria o pueden tener asignada una posición en una pila. La técnica fundamental es la de "concordancia de plantillas". Las proposiciones de código intermedio se reemplazan por "plantillas" que representan secuencias de instrucciones de máquina, de modo que las suposiciones sobre el almacenamiento de las variables concuerden de plantilla a plantilla. Como suele haber muchas opciones en relación con la ubicación de las variables (por ejemplo, en uno o varios registros o en memoria), hay muchas formas posibles de "cubrir" el código intermedio con un conjunto dado de plantillas, y es necesario seleccionar una buena cobertura sin una explosión combinatoria en el tiempo de ejecución del compilador.

5.- Dispositivos para análisis de flujo de datos. Mucha de la información necesaria para hacer una buena optimación de código implica hacer un "análisis de flujo de datos", que consiste en la recolección de información sobre la forma en que se transmiten los valores de una parte de un programa a cada una de las otras partes. Las distintas tareas de esta naturaleza se pueden efectuar esencialmente con la misma rutina, en la que el usuario proporciona los detalles relativos a la relación que hay entre las proposiciones en código intermedio y a la información que se está recolectando.

  ambientes de programación
¿que es un ambiente de programación?
 es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. 

Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

tipos de ambiente 

ambientes de programación multiplatafora
-unix
  - herramientas de construcción de software
        -  makefile, cmake,scom ,jam etc
   -ides
         - mono, kdevelop      
-windows
 -  ms.net
  -codegear

ambientes de programación completos
   - ms.net
   -qt nokia

No hay comentarios.:

Publicar un comentario