LOS DISTINTOS COMPONENTES DEL SOFTWARE

 

Componentes del software:


Ensamblador: es un lenguaje de programación que se usa en los microprocesadores. Implementa una representación simbólica de los códigos de maquinas binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portables.



U
programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.

Componentes del software interpretador:



Intérprete o interpretador: es un programa informático capaz de analizar y ejecutar otros programas. Los intérpretes se diferencian de los compiladores o de los ensambladores 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 solo 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 (ejemplo. una PC y una PlayStation 4). 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 depuració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).

 Para mejorar el desempeño, algunas implementaciones de algunos lenguajes de programación pueden interpretar o compilar el código fuente original en una forma intermedia más compacta, y después traducir eso al código de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representación intermedia (ej. Python, UCSD Pascal y Java).

 En la actualidad, uno de los entornos más comunes de uso de los intérpretes es en los navegadores web, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.


Componentes del software compilador:


Es un programa que traduce código escrito en un lenguaje de programación (llamado fuente) a otro lenguaje (conocido como objeto).1 En este tipo de traductor el lenguaje fuente es generalmente un lenguaje de alto nivel y el objeto un lenguaje de bajo nivel, como assembly o código máquina.2 Este proceso de traducción se conoce como compilación.

La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.

Análisis: se trata de la comprobación de la corrección del programa fuente, según la definición del lenguaje en términos de teoría de lenguajes formales. 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ódigo4:23 (en las que se busca obtener un programa objetivo lo más eficiente posible, según su complejidad computacional o complejidad de Kolmogórov: tiempo de ejecución, espacio durante ejecución, espacio para ser almacenado fuera de ejecución, etc.).

Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en:

 Analizador o front-end: es la parte que analiza el código fuente,5 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.

Generador o back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis.


Ventajas y desventajas:


Componentes del software supervisor:


Supervisores: son similares a los controladores, pero no tienen acceso a los datos en tiempo real de cualquier dispositivo. Los supervisores no forman parte del funcionamiento diario de una red PROFINET.


En su lugar, los usuarios finales pueden utilizar un supervisor para realizar tareas tales como leer la información de diagnóstico de un dispositivo, asignar las direcciones IP o los nombres de las estaciones DCP, o diagnosticar los problemas en una conexión de red problemática.


Sistema operativo:

Es el conjunto de programas de un sistema informático que gestiona los recursos del hardware y provee servicios a los programas de aplicación de software. Estos programas se ejecutan en modo privilegiado respecto de los restantes.

Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo (teléfonos móviles, reproductores de DVD, computadoras, enrutadores, etc.). En cuyo caso, son manejados mediante una interfaz gráfica de usuario, un gestor de ventanas o un entorno de escritorio, si es un celular, mediante una consola o control remoto si es un DVD y, mediante una línea de comandos o navegador web si es un enrutador.


 El sistema operativo de escritorio dominante es Microsoft Windows con una cuota de mercado de alrededor del 75,88%. macOS de Apple Inc. ocupa el segundo lugar (13,23%), y las variedades de GNU/Linux están colectivamente en tercer lugar (1,57%).2​ En el sector móvil (incluidos teléfonos inteligentes y tabletas), la participación de Android es de hasta un 70% en el año 2017.3​ Las distribuciones Linux son dominantes en los sectores de servidores y supercomputación.4​ Existen otras clases especializadas de sistemas operativos, como los sistemas integrados y en tiempo real, para muchas aplicaciones.


Programas de aplicación:


Un programa de aplicación consiste en una clase de software que se diseña con el fin de que para el usuario sea más sencilla la concreción de un determinado trabajo. Esta particularidad lo distingue del resto de los programas, entre los cuales se pueden citar a los sistemas operativos (que son los que permiten el funcionamiento de la computadora), los lenguajes de programación (aquellos que dan las herramientas necesarias para desarrollar los programas informáticos en general) y las utilidades (pensadas para realizar acciones de mantenimiento y tareas generales).

El software es el elemento intangible y lógico que forma parte de una computadora. El hardware, en cambio, es el componente material y físico. Se dice que los sistemas operativos constituyen el lazo que une al software con el hardware.


Programas de utilidades (Utility Programs):



Un programa de utilidad, llamado comúnmente “utility”, es un tipo de programa que realiza una tarea específica, usualmente relacionada a manejar la computadora, sus equipos y sus programas. La mayoría de los sistemas operativos incluyen varios programas de utilidades.


Programación y lenguaje:



Es un lenguaje formal (o artificial, es decir, un lenguaje con reglas gramaticales bien definidas) que proporciona a una persona, en este caso el programador, la capacidad y habilidad de escribir (o programar) una serie de instrucciones o secuencias de órdenes en forma de algoritmos con el fin de controlar el comportamiento físico o lógico de un sistema informático, para que de esa manera se puedan obtener diversas clases de datos o ejecutar determinadas tareas. A todo este conjunto de órdenes escritas mediante un lenguaje de programación se le denomina programa informático.


Programación lenguaje de bajo nivel:


Es un lenguaje de programación: Un lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y por lo tanto están condicionados por la estructura física de las computadoras que lo soportan.

 El uso del término bajo en su nombre no quiere decir que este lenguaje sea menos potente o importante que un lenguaje de alto nivel, simplemente se refiere a la reducida abstracción que existe entre el lenguaje y el hardware.

 Para que lo entiendas mejor, vamos a darte un ejemplo general: Se utiliza para programar tareas o funciones trascendentales de los sistemas operativos, controladores de dispositivos o de aplicaciones a tiempo real.






Lenguaje de maquina en programación:


Es el sistema de códigos directamente interpretable por un circuito micro programable, como el microprocesador de una computadora o el microcontrolador de un autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina. Un programa consiste en una cadena de estas instrucciones más un conjunto cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina es específico de la arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas.

 Los circuitos micro programables son digitales, lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con los números 0 y 1, por eso el lenguaje de máquina solo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación. 


Claude Elwood Shannon, en su libro Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del álgebra de Boole a las redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos. Shannon utilizaba el relé como dispositivo físico de conmutación en sus redes, dado que el relé, a igual que una lámpara eléctrica, posee dos estados: activado (encendido) o (apagado).

  


El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos a circuitos con tubos de vacío, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados, en cuya cúspide se encuentran los circuitos micro programados.

 El llamado código máquina consistía en introducir la programación de la máquina mediante unos y ceros. cualquier programa de ordenador debe, finalmente, ser convertido a este código para que un ordenador pueda ejecutar las instrucciones de dicho programa.

 Los ordenadores solo leen este tipo de lenguaje, en donde la combinación de números logra convertirse en acciones. Dada su complejidad existen los lenguajes de programación como JavaScript para programar páginas web o C++ para programar videojuegos entre muchos otros.


Lenguaje de ensamblador:

 


Es un lenguaje de programación de bajo nivel para comunicarse con hardware. El lenguaje es una representación simbólica del lenguaje máquina e interactúa directamente con la computadora. Cada instrucción ensambladora es una instrucción en lenguaje máquina que se ejecuta directamente en un CPU.



Lenguaje de alto nivel:


Se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad con que las máquinas lo ejecutan. Estos lenguajes permiten una máxima flexibilidad al programador a la hora de abstraerse o de ser literal. Permiten un camino bidireccional entre el lenguaje máquina y una expresión casi oral entre la escritura del programa y su posterior compilación. Por lo general suelen estar orientados a objetos, a eventos o a funciones, pudiendo estos combinarse. Asimismo, pueden ser compilados o interpretados. Algunos ejemplos son: Java, PHP, Python, Javascript, C#. 


 En los primeros lenguajes, la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida.


Lenguaje de programación cobol:

 

Common Business-Oriented Language, un lenguaje de programación basado en el idioma inglés que lleva más de medio siglo sustentando todo tipo de operaciones, sobre todo en Estados Unidos. Es utilizado por sistemas financieros, compañías de seguros y un gran número de instituciones. 


COBOL se utiliza principalmente en sistemas comerciales, financieros y administrativos para empresas y gobiernos. COBOL todavía se usa ampliamente en aplicaciones implementadas en ordenadores centrales, como trabajos de lote y procesamiento de transacciones a gran escala. Sin embargo, debido a su popularidad decreciente y al retiro de los programadores COBOL experimentados, los programas se están migrando a nuevas plataformas, reescribiéndolos en lenguajes modernos o reemplazándolos con paquetes de software. 









Comentarios