viernes, 16 de abril de 2010

Tipos de Lenguaje

Los tipos de Lenguaje de programacion los podemos clasificar en dos grandes grupos.

Los lenguajes de programacion de bajo nivel y los de alto nivel. El tipo de lenguaje de programación bajo nivel depende totalmente de la máquina, en este caso de la maquina u ordenador, estos solo entienden el lenguaje binario o el código máquina que consiste en ceros y unos. Es decir que para realizar, cualquier acción, solo utilizan este tipo de lenguaje de programación.

Los lenguajes de programación mas cercanos a la arquitectura del hadware pertenecen al tipo de lenguaje de programación de bajo nivel. Mientras que los lenguajes de programación que se encuentran más próximos a los usuarios y programadores pertenecen al tipo de programación de alto nivel.

El tipo de lenguaje de programación de bajo nivel es totalmente dependiente de la computadora u ordenador, es decir que no podemos utilizarlo en cualquier otra. Este tipo de lenguaje de programación está prácticamente diseñado a la medida del hardware y aprovecha las características de este. Dentro de este tipo de lenguajes de programación podemos citar al lenguaje máquina y al lenguaje ensamblador.

Dentro del tipo de lenguajes de programación de alto nivel tenemos a todos aquellos lenguajes de programación que son más afines al lenguaje natural que al lenguaje máquina. Estos lenguajes de programación son completamente independientes de la arquitectura del hardware de la computadora u ordenador. Por lo que en general, un programa escrito con un lenguaje de programación de alto nivel lo podemos utilizar en cualquier otra computadora.

Estos lenguajes de programación de alto nivel solo necesitan un traductor que entienda el código fuente y las caracteristicas de la máquina para poder funcionar correctamente.

Tambien es conocido el lenguaje de programación de medio nivel, que es una mezcla de los dos anteriores. A este tipo de lenguaje de programación pertenecen todos aquellos lenguajes que llevan a cabo acciones como: acceder a registros del sistema, usar direcciones de memoria(caracteristicas de los lenguajes de programación de bajo nivel) pero a la vez efectúan operaciones de los lenguajes de alto nivel. Dentro de este tipo de lenguajes de programación de nivel medio tenemos al lenguaje de programación C.

Ensambladores

Son lenguajes de programación.

La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de k en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto seria que los programas en ensamblador ocupan menos espacio en memoria


Ventajas y Desventajas del lenguaje Ensamblador....

Ventajas:

1. Velocidad.- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la máquina la computadora lo procesa mas rápido.

2. Eficiencia de tamaño.- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel.

3. Flexibilidad.- Es flexible por que todo lo que puede hacerse con una máquina puede hacerse con el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel tienen en una u otra forma limitante para explotar al maximo los recursos de la máquina. O sea que en el lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permiten.

Desventajas:

1.Tiempo de Programación. Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado requiere más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen mas fuertemente en la ejecución.
2.Programas fuente grandes.- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos mas instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.

3. Peligro de afectar recursos inesperadamente.- Que todo error que podamos comenter, todo riesgo que podamos tener, podemos afectar los recursos de la máquina, programar en este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialize. Por que con este lenguaje es perfectamente posible ( y sencillo) realizar recuencias de instrucciones inválidas que normalmente no aparecen al usar un lenguaje de alto nivel.


4. Falta de portabilidad.- Porque para cada maquina existe un lenguaje ensamblador; por ello evidentemente no es una seleccion apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos e computadoras.

Compiladores

Un compilador es un programa Informático que traduce un progrma escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar.

Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior(típicamente lenguaje de máquina). De esta manera un diseñador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

Interpretes

Programa Informático que analiza el programa fuente y lo ejecuta directamente, sin generar ningun código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningun escrito permanente. Interpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:

  • Un interprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables etc..). Ademas, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.

  • Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio un interprete se ve obligado generalmente analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
  • Un interprete permite utilizar funciones y operadores más potentes como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto exigen un interprete, se llaman un interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescienden de este tipo de operadores.



Sistemas Operativos

Un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de una computadora y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un sistema operativo es lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware de la computadora se emplee de manera eficiente.

Un sistema operativo es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial, quizá el más complejo e importante en una computadora.

El sistema operativo despierta a la computadora y hace que reconozca a la CPU, la memoria, el teclado, el sistema de video y las unidades de disco. Además proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma apartir de la cual se corran programas de aplicación.

Cuando se enciente una computadora, lo primero que ésta hace es llevar acabo un autodiagnósitco llamado auto prueba de encendido. Durante este autodiagnósitico, la computadora identifica su memoria, sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un sistema operativo para arrancar (boot).
Una vez que la computadora hapuesto en marcha su sistema operativo, mantiene al menos parte de éste en su memoria en todo momento. Mientras la computadotra esté encendida, el sistema operativo tiene 4 tareas principales:
  • Proporcionar ya sea un interfaz de línea de comando o una interfaz gráfica al usuario, para que este ultimo se pueda comunicar con la computadora.

-Interfaz de línea de comando: Se introducen palabras y símbolos desde el teclado de la computadora, ejemplo, el MS-DOS.

-Interfaz gráfica del usuario (GUI): Se seleccionan las acciones mediante el uso de un mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús.

  • Administrar los dispositivos de hardware en la computadora. El sistema operativo sirve de intermediario entre los programas y el hardware.
  • Administrar y mantener los sistemas de archivo de disco. Los SO agrupan la información dentro de compartimientos lógicos para almacenarlos en el disco. Estos grupos de información son llamados archivos. Los archivos pueden contener instrucciones de programas o información creada por el usuario. El SO mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos.
  • Apoyar a otros programas. Por ejemplo, listar los archivos, grabarlos en el disco, eliminar archivos, revisar espacio disponible, etc.


Necesidad de los Sistemas Operativos

La necesidad actual de compartir información en empresas, instituciones y en centros educativos es cada vez mayor. Es por esta razón que es importante la implementación de este tipo de servicios, que a más de la facilidad de compartir la información nos ahorran costos.
Existen varios tipos de Sistemas de archivos distribuidos como el NFS, GústerFS, CODA cada uno tiene sus ventajas que serán aprovechadas dependiendo del ambiente en que se vaya a implementar.

EJEMPLO.


NTF-- El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.

CODA-- Fue desarrollado como un sistema de ficheros distribuido almacena ficheros en uno o más ordenadores sincronizados entre sí llamados servidores, y los hace accesibles a otros ordenadores llamados clientes, para quienes el acceso a estos ficheros es transparente. La principal ventaja es la compartición de ficheros y su gestión centralizada desde los servidores (como por ejemplo el control de acceso y la gestión de copias de seguridad). Esta compartición de ficheros es especialmente útil para grupos de trabajo que comparten documentos, aunque también es posible compartir software, como por ejemplo, un procesador de textos.

Tipos de Sistemas Operativos

Sistemas operativos de multiprogramación (o Sistemas operativos de multitarea)

Soporta la ejecución de dos o más trabajos activos al mismo tiempo.
• Su objetivo es tener varias tareas en la memoria principal.

Las características de un Sistema operativo de multiprogramación son las siguientes:

• Mejora productividad del sistema y utilización de recursos
• Multiplexa recursos entre varios programas
• Soporta múltiples usuarios
• Requiere validación de usuario para seguridad y protección

Estos sistemas operativos se caracterizan por tener múltiples programas activos, compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistemas operativos de red

Son aquellos que mantienen a dos o más computadoras unidas a través de algún medio de comunicación, con el objetivo de poder compartir los diferentes recursos y la información del sistema.

• Por lo regular son utilizados en: Novell Netware, Personal Netware, Lan Manager, etc ..