Descargar

Introduccion a la Programación


  1. Sistemas operativos
  2. Evolución de los lenguajes de programación
  3. Interpretes, Compiladores

Sistemas operativos

1.1.1. Definición, características y función de un sistema operativo.

Sistema operativo, software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware del ordenador o computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.

Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar.

Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.

Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En la mayoría de los ordenadores sólo hay una UCP; un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan simultáneamente en la UCP. El mecanismo que se emplea más a menudo para lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente durante un periodo de tiempo determinado. Si el proceso no finaliza en el tiempo asignado, se suspende y se ejecuta otro proceso. Este intercambio de procesos se denomina conmutación de contexto. El sistema operativo se encarga de controlar el estado de los procesos suspendidos. También cuenta con un mecanismo llamado planificador que determina el siguiente proceso que debe ejecutarse. El planificador ejecuta los procesos basándose en su prioridad para minimizar el retraso percibido por el usuario. Los procesos parecen efectuarse simultáneamente por la alta velocidad del cambio de contexto.

Los sistemas operativos pueden emplear memoria virtual para ejecutar procesos que exigen más memoria principal de la realmente disponible. Con esta técnica se emplea espacio en el disco duro para simular la memoria adicional necesaria. Sin embargo, el acceso al disco duro requiere más tiempo que el acceso a la memoria principal, por lo que el funcionamiento del ordenador resulta más lento.

Los sistemas operativos empleados normalmente son UNIX, LINUX Mac OS, MS-DOS, OS/2 y Windows-NT. El LINUX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de organizar archivos y permite la protección de archivos. Sin embargo, las instrucciones del UNIX no son intuitivas. Otros sistemas operativos multiusuario y multitarea son OS/2, desarrollado inicialmente por Microsoft Corporation e International Business Machines Corporation (IBM), y Windows-NT, desarrollado por Microsoft. El sistema operativo multitarea de las computadoras Apple se denomina Mac OS. El DOS y su sucesor, el MS-DOS, son sistemas operativos populares entre los usuarios de computadoras personales. Sólo permiten un usuario y una tarea.

Los sistemas operativos siguen evolucionando. Los sistemas operativos distribuidos están diseñados para su uso en un grupo de ordenadores conectados pero independientes que comparten recursos. En un sistema operativo distribuido, un proceso puede ejecutarse en cualquier ordenador de la red (normalmente, un ordenador inactivo en ese momento) para aumentar el rendimiento de ese proceso. En los sistemas distribuidos, todas las funciones básicas de un sistema operativo, como mantener los sistemas de archivos, garantizar un comportamiento razonable y recuperar datos en caso de fallos parciales, resultan más complejas.

1.1.2. Análisis comparativo de Sistemas Operativos (MS- DOS, LINUX, WINDOWS)

Un sistema Operativo (SO) 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 SO despierta a la computadora y hace que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las unidades de disco. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación.

Cuando enciendes una computadora, lo primero que ésta hace es llevar a cabo un autodiagnóstico llamado autoprueba de encendido (Power On Self Test, POST). Durante la POST, 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 SO para arrancar (boot).

Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte de éste en su memoria en todo momento. Mientras la computadora esté encendida, el SO tiene 4 tareas principales:

  • 1. Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario, para que este último se pueda comunicar con la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz gráfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús.

  • 2. Administrar los dispositivos de hardware en la computadora · Cuando corren los programas, necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, módems, etc). El SO sirve de intermediario entre los programas y el hardware.

  • 3. 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.

  • 4. Apoyar a otros programas. Otra de las funciones importantes del SO es proporcionar servicios a otros programas. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc. Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del SO. Estas instrucciones son conocidas como "llamadas del sistema"

El Kernel y el Shell.

Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa ti ene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos.

Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando carga s Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos shells diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.

A.) Categorías de Sistemas Operativos

A.1) MULTITAREA: El término multitarea se refiere a la capacidad del SO para correr mas de un programa al mismo tiempo. Existen dos esquemas que los programas de sistemas operativos utilizan para desarrollar SO multitarea, el primero requiere de la cooperación entre el SO y los programas de aplicación.

Los programas son escritos de tal manera que periódicamente inspeccionan con el SO para ver si cualquier otro programa necesita a la CPU, si este es el caso, entonces dejan el control del CPU al siguiente programa, a este método se le llama multitarea cooperativa y es el método utilizado por el SO de las computadoras de Machintosh y DOS corriendo Windows de Microsoft. El segundo método es el llamada multitarea con asignación de prioridades. Con este esquema el SO mantiene una lista de procesos (programas) que están corriendo. Cuando se inicia cada proceso en la lista el SO le asigna una prioridad. En cualquier momento el SO puede intervenir y modificar la prioridad de un proceso organizando en forma efectiva la lista de prioridad, el SO también mantiene el control de la cantidad de tiempo que utiliza con cualquier proceso antes de ir al siguiente. Con multitarea de asignación de prioridades el SO puede sustituir en cualquier momento el proceso que esta corriendo y reasignar el tiempo a una tarea de mas prioridad. Unix OS-2 y Windows NT emplean este tipo de multitarea.

A.2) MULTIUSUARIO: Un SO multiusuario permite a mas de un solo usuario accesar una computadora. Claro que, para llevarse esto a cabo, el SO también debe ser capaz de efectuar multitareas. Unix es el Sistema Operativo Multiusuario más utilizado. Debido a que Unix fue originalmente diseñado para correr en una minicomputadora, era multiusuario y multitarea desde su concepción.

Actualmente se producen versiones de Unix para PC tales como The Santa Cruz Corporation Microport, Esix, IBM,y Sunsoft. Apple también produce una versión de Unix para la Machintosh llamada: A/UX.Unix

Unix proporciona tres maneras de permitir a múltiples personas utilizar la misma PC al mismo tiempo.

1.) Mediante Módems.

  • 2.) Mediante conexión de terminales a través de puertos seriales

3.) Mediante Redes.

A.3) MULTIPROCESO: Las computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de la computadoras multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instrucción, el otro procesador queda liberado para procesar otras instrucciones simultáneamente.

Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las computadoras que tienen capacidad de multiproceso ofrecen una gran ventaja.

Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como:

  • Multiproceso asimétrico: Una CPU principal retiene el control global de la computadora, así como el de los otros procesadores. Esto fue un primer paso hacia el multiproceso pero no fue la dirección ideal a seguir ya que la CPU principal podía convertirse en un cuello de botella.

  • Multiproceso simétrico: En un sistema multiproceso simétrico, no existe una CPU controladora única. La barrera a vencer al implementar el multiproceso simétrico es que los SO tienen que ser rediseñados o diseñados desde el principio para trabajar en u n ambiente multiproceso. Las extensiones de Unix, que soportan multiproceso asimétrico ya están disponibles y las extensiones simétricas se están haciendo disponibles. Windows NT de Microsoft soporta multiproceso simétrico.

B.) Lista de los Sistemas Operativos más comunes.

B.1) MS-DOS: Es el más común y popular de todos los Sistemas Operativos para PC. La razón de su continua popularidad se debe al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel.

Cuando Intel liberó el 80286, D OS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayoría del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien como las computadoras IBM lo hacían.

B.2) OS/2: Después de la introducción del procesador Intel 80286, IBM y Microsoft reconocieron la necesidad de tomar ventaja de las capacidades multitarea de esta CPU. Se unieron para desarrollar el OS/2, un moderno SO multitarea para los microprocesadores Intel. < BR>Sin embargo, la sociedad no duró mucho. Las diferencias en opiniones técnicas y la percepción de IBM al ver a Windows como una amenaza para el OS/2 causó una desavenencia entre las Compañías que al final las llevó a la disolución de la sociedad.

IBM continuó el desarrollo y promoción del OS/2.

Es un sistema operativo de multitarea para un solo usuario que requiere un microprocesador Intel 286 o mejor. Además de la multitarea, la gran ventaja de la plataforma OS/2 es que permite manejar directamente hasta 16 MB de la RAM ( en comparación con 1 MB en el caso del MS-DOS ). Por otra parte, el OS/2 es un entorno muy complejo que requiere hasta 4 MB de la RAM. Los usuarios del OS/2 interactuan con el sistema mediante una interfaz gráfica para usuario llamada Administrador de presentaciones. A pesar de que el OS/2 rompe la barrera de 1 MB del MS-DOS, le llevo tiempo volverse popular. Los vendedores de software se muestran renuentes a destinar recursos a la creación de un software con base en el OS/2 para un mercado dominado por el MS-DOS. Los usuarios se rehusan a cambiar al OS/2 debido a la falta de software que funcione en la plata forma del OS/2 y a que muchos tendrían que mejorar la configuración de su PC para que opere con el OS/2.

B.3) UNIX: Unix es un SO multiusuario y multitarea, que corre en diferentes computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo.

Es un sistema operativo que fue creado a principios de los setentas por los científicos en los laboratorios Bell. Fue específicamente diseñado para proveer una manera de manejar científica y especializadamente las aplicaciones computacionales. Este SO se adapto a los sistemas de computo personales así que esta aceptación reciente lo convierte en un sistema popular.

. Unix es más antiguo que todos los demás SO de PC y de muchas maneras sirvió como modelo para éstos. Aun cuando es un SO extremadamente sólido y capaz, la línea de comandos Unix, no es apta para cardiacos, debido a que ofrece demasiados comandos.

B.4) SISTEMA OPERATIVO DE MACINTOSH: La Macintosh es una máquina netamente gráfica. De hecho, no existe una interfaz de línea de comando equivalente para ésta. Su estrecha integración de SO, GUI y área de trabajo la hacen la favorita de la gente que no quiere saber nada de interfaces de línea de comando.

Las capacidades gráficas de la Macintosh hicieron de esa máquina la primera precursora en los campos gráficos computarizados como la autoedición por computadora.

La familia de microcomputadoras de Apple Macintosh y su sistema operativo define otra plataforma importante. Las PC de Macintosh, que se basan en la familia de microprocesadores de Motorola, usan la arquitectura de Bus de 32 bits. La plataforma para Macintosh incluye muchas capacidades sofisticadas que comprende la multitarea, una GUI, la memoria virtual y la capacidad para emular la plataforma MS-DOS. Las PC de Macintosh también tiene la capacidad integrada de compartir archivos y comunicarse con o tras PC de Macintosh en una red.

B.5) WINDOWS NT DE MICROSOFT: Con Windows NT, Microsoft ha expresado su dedicación a escribir software no sólo para PC de escritorio sino también para poderosas estaciones de trabajo y servidores de red y bases de datos. Microsoft Windows NT no es necesariamente un sustituto de DOS ni una nueva versión de éste; es, en conjunto, un nuevo SO diseñado desde sus bases para las máquinas más modernas y capaces disponibles.

Windows NT de Microsoft ofrece características interconstruidas que ningún otro SO para PC ofrece, con excepción de Unix.

Además de las características tradicionales de estricta seguridad de sistema, red interconstruida, servicios de comunicación y correo electrónico interconstruidos, herramientas de administración y desarrollo de sistema y una GUI, Windows NT puede correr directamente aplicaciones de Windows de Microsoft y de Unix.

Windows NT, al igual que el OS/2 ver 2.0 y algunas versiones de Unix, es un SO de 32 bits, que puede hacer completo uso de los procesadores de estas características.

Además de ser multitarea, está diseñado para tomar ventaja del multiproceso simétrico.

Evolución de los lenguajes de programación

1.2.1. Definición, características y funciones de los lenguajes de programación.

Pag 25 y 26 bronson

Lenguajes y Lógica

Existen dos tipos básicos y reconocidos de lenguajes: los lenguajes naturales y los lenguajes formales. Los primeros como puede ser: el Francés, el Inglés o el Castellano; tienen su origen y desarrollo natural, es decir, sin el control de ninguna teoría. Las teorías de lenguajes naturales y las gramáticas, fueron establecidas a priori, esto es, después de que el lenguaje habia ya madurado. Por otro lado, los lenguajes formales como las matemáticas y la lógica, fueron desarrollados generalmente a través del establecimiento de una teoría, la cual le dá las bases para dichos lenguajes. El objetivo de este capítulo es definir las características distinguibles mas importantes entre estas dos clases de lenguajes y presentar las razones que predisponen a los investigadores a la consideración de la posibilidad de la existencia de principios comunes a ambos. Esto nos hará establecer los fundamentos de una teoría cuya meta es permitir la traducción (o la expresión) de un lenguaje natural o formal a un lenguaje formal particular llamado el lenguaje de la lógica. La última meta de este proceso es el poder manejar y procesar los lenguajes naturales y formales usando técnicas de computación como por ejemplo el lenguaje Prolog.

Lenguajes naturales y lenguajes formales

edu.red

El conjunto de palabras que tengan un significado constituirán el diccionario del lenguaje (por ejemplo el Webster, diccionario del Inglés). A partir de lo anterior, tendremos que un lenguaje se considera como un conjunto de oraciones, que usualmente es infinito y, se forma con palabras del diccionario. En este punto, podemos distinguir entre dos clases de lenguajes; los lenguajes naturales como el Francés, Inglés, y Castellano y, lenguajes formales como las Matemáticas y la Lógica.

El lenguaje Castellano puede ser definido como el conjunto (teóricamente infinito) de todas las oraciones en Castellano. Esas oraciones son consistentes en forma natural con la experiencia práctica humana que se organiza automáticamente al tiempo que organiza el lenguaje en si mismo.

Una oración en Castellano es una secuencia finita de palabras del Castellano, donde sabemos que el conjunto de esas palabras es finito. Una oración en Castellano puede ser considerada como una secuencia finita de elementos tomados de un conjunto finito dado, sin embargo, no todas las combinaciones de palabras son permitidas, es necesario que esas combinaciones sean correctas (con respecto a una sintáxis) y tengan sentido (con respecto a la semántica), estas serán las que se encontrarán dentro de un diccionario. Esa sintáxis y esa semantica constituyen un orden en la teoría del lenguaje Castellano: Aquel que permite la definición de todas las oraciones en Castellano y así, del lenguaje Castellano.

De la particularización anterior se desprende que en un lenguaje natural, como el Castellano, la formación de las oraciones del lenguaje procedió la formalización de el lenguaje por medio de una teoría o una gramática. Por esta razón, un lenguaje es llamado natural lo que es decir, es no-artificial o no construido. El calificativo “natural", se opone al de “formal", el cual determina un lenguaje que es construido estableciendo una teoría y, por ende, se le llamará artificial. Un lenguaje formal como la Lógica consiste de un conjunto de oraciones generalmente llamadas fórmulas u expresiones bien formadas, las cuales podemos obtener de la aplicación de las leyes de la Lógica. La calificación de “Lenguaje Artificial", se refiere al hecho de que el lenguaje se forma por medio de reglas y axiomas de formación. El calificativo “formal" se refiere específicamente al hecho de que las oraciones de estos Lenguajes consisten de una lista de símbolos (lógicos o matemáticos) sujetos a diversas interpretaciones. Por otro lado, en los lenguajes naturales las palabras en una oración posee un significado y tienen su significante. Esto quiere decir que independientemente del significado de cada palabra, debemos tomar en cuenta el sentido correcto que éstas adquieren, según el contexto en las que se expresen en un momento dado. Una de las metas en computación es poder especificar rigurosamente estos significados por los métodos de interpretación de los sistemas formales, estos métodos en cuestión, constituyen las semánticas de el lenguaje formal.

En un primer resumen tenemos que los lenguajes naturales y formales, difieren significativamente uno de otro por su origen y por su área de aplicación. Primeramente vamos a intentar identificar las propiedades mas importantes de estos dos tipos de lenguajes, con el fin de examinar una de las preguntas fundamento de la Inteligencia Artificial (IA): `? Hasta que punto pueden los lenguajes naturales ser representados (traducidos) por medio de lenguajes formales?; mas específicamente, estaremos interesados en la utilización de lenguajes computacionales intentando representar y manipular lenguajes naturales.

Propiedades de los lenguajes naturales

El lenguaje es la función que expresa pensamientos y comunicaciones entre la gente. Esta función es llevada a cabo por medio de señales y vocales (voz) y posiblemente por signos escritos (escritura) que conforman el lenguaje natural. Con respecto a nuestro mundo, el lenguaje nos permite designar las cosas actuales (y razonar acerca de ellas) y crear significados. Contrariamente a lo que ciertas teorías linguísticas formales harían a uno creer, el lenguaje natural no fué fundamentado sobre una verdad racional a priori, pero fué desarrollado y organizado a partir de la experiencia humana, en el mismo proceso en que la experiencia humana fue organizada. En su forma actual, los lenguajes naturales tienen un gran poder expresivo y pueden ser utilizados para analizar situaciones altamente complejas y razonar muy sutilmente.

La riqueza de su componente semántico y su cerrada relación con los aspectos prácticos de los contextos en los cuales son usados da a los lenguajes naturales su gran poder expresivo y su valor como una herramienta para razonamiento sutíl. En lo siguiente veremos cuan difícil es formalizar el componente semántico de un lenguaje natural, es decir el constituyente del lenguaje por el cual las oraciones tienen o adquieren su significado. Por otro lado, la sintáxis de un lenguaje natural puede ser modelada facilmente por un lenguaje formal similar a los utilizados en las matemáticas y la lógica. Otra propiedad única de los lenguajes naturales es la 'polisemántica', es decir, la posibilidad de (que una palabra en una oración tenga diversos significados, diversos valores, por ejemplo la palabra 'pair' en el Inglés puede ser considerada primero como un sustantivo, y es usada entonces en estructuras de frases como 'arrange in pairs', 'the happy pair', sin embargo, puede también ser interpretada como un verbo transitivo en frases como 'two vases that pair', 'to pair off with someone'.

El carácter polisemántico de un lenguaje tiende a incrementar la riqueza de su componente semántico, más aún esto hace la formalización dificil, sino imposible la polisemántica de los lenguajes naturales es considerada una propiedad adquirida recientemente [Atlan 86], las formas primarias de los lenguajes naturales habrían sido similares a los lenguajes formales y la polisemántica sería el resultado de un enriquecimiento progresivo. En suma los lenguajes naturales se distinguen por las siguientes propiedades:

i) Desarrollados por enriquecimiento progresivo antes de cualquier intento de formación de una teoría.

ii) La importancia de su carácter expresivo debido grandemente a la riqueza de el componente semántico (polisemántica).

iii) Dificultad o imposibilidad de una formalización completa.

Propiedades de los lenguajes formales

La definición (es decir, axiomática) de una teoría de un lenguaje formal dado, procedió la formación dc oraciones (o fórmulas) de este lenguaje. El proceso de generación y desarrollo de un lenguaje formal es inverso con respecto al de los lenguajes naturales, consecuentemente, las palabras y las oraciones de un lenguaje formal son perfectanente definidas (una palabra mantiene el mismo significado prescindiendo de contexto o uso).

edu.red

Los lenguajes formales son, por esto, necesariameme exentos de cualquier componente semántico fuera de sus operadores y relaciones, y es gracias a esta ausencia de significado especial que los lenguajes formales pueden ser usados pare modelar una teoría de la mecánica, de la ingeniería eléctrica, en la linguística u otra naturaleza, la cual asume el estatus del componente semántico de tal lenguaje. Esto equivale a decir que durante la concepción de lenguajes formales toda la ambiguedad es eliminada, es como si esta reducción al significado único debe manifestarse por si mismo como la eliminación del 'mundo de significados' en el proceso de construir las fórmulas, al tiempo que se toca el nivel abstracto de estas construcciones. Es solamente por medio de un paso adicional que el significado es asignado a las fórmulas, este paso nos permite la posibilidad de asignar un criterio falso/cierto a cada fórmula. El mundo de significados, que es el componente semántico, solamente existe en la teoría que uno intenta expresar a través del lenguaje formal. Por ejemplo, un componente semántico normalmente asociado con el lenguaje formal de una teoría cónica es el movimiento de los cuerpos celestes, sistemas lineales de todos las órdenes son posibles componentes semánticos de teoría de matrices. Una de las principales metas en IA es la manipulación de lenguajes con metodos de las ciencias de la computación, manipulación basada en la asignación del componente semántico de los lenguajes naturales a ciertos lenguajes lógicos como los lenguajes de primer orden o loslenguajes modales.

No podemos evitar mencionar la importancia de los números en lenguajes formales. En un sistema numérico, asi como en un sistema de cálculo, los números siempre tienen el potencial de referir un cierto 'contenido' el cual pertenecerá entonces al componente semántico del lenguaje: los objetos posibles cuando son contables o medibles. La asociación de un significado con un número o cálculo no es siempre obvio, sin embargo, es util recordar que en física cuando se completa un cálculo y se busca entonces interpretarlo, solamente se mantienen los números positivos de los resultados, ya que las soluciones negativas o imaginarias a las ecuaciones que se supone describen la realidad son la mayoría de las veces rechazadas porque no corresponden con la 'realidad fisica'. En suma, los lenguajes formales son caracterizados por las siguientes propiedades:

i) Se desarrollan de una teoría preestablecida,

ii) Componente semántico mínimo.

iii) Posibilidad de incrementar el componente semántico de acuerdo con la teoría a formalizar.

iv) La sintáxis produce oraciones no ambiguas.

v) La importancia del rol de los números.

vi) Completa formalización y por ésto, el potencial de la construcción computacional.

Manipulación computacional de lenguajes naturales

Una meta fundamental en IA es la manipulación de lenguajes naturales usando herramientas de computación, en esta perspectiva, los lenguajes de programación juegan un importante rol: forman el enlace necesario entre los lenguajes naturales y su manipulación por una máquina. Debemos recordar primero antes que todo que un lenguaje de programación, como Prolog es una herramienta pare escribir programas para una computadora. La definición de Prolog se origina en la lógica formal: Prolog ejecuta estatutos que no son otra cosa que oraciones de un lenguaje lógico elemental particular, llamado, cláusulas de Horn.

Una diferencia fundamental entre lenguaje natural y un lenguaje lógico que debe ser tomada en cuenta en la representación del primero, es aquella que resulta de el lugar central ocupado por el concepto de verdad en la lógica. El rol del análisis lógico es sobre todo determinar si una oración (fórmula) de un lenguaje es válida (verdadera en todas sus interpretaciones), absurda (falsa en todas sus interpretaciones) o simplemente consistente (verdadera en al menos una de sus interpretaciones).

Un buen número de oraciones en un lenguaje natural son estatutos no declarativos, vagos o indeterminados como Entendió Pablo?, Juan es joven', 'puedo venir' a las cuales parece en principio, difícil asignar valores de verdad (verdadero ó falso). Una forma de desviar la dificultad resultante de la importancia dada o no a el concepto de la verdad de una oración es introducir las nociones de proposición y proporsición expresada.

Una proposición es el contenido de una oración, es decir, el conjunto de situaciones (mundos posibles) en las cuales la oración es verdadera. El concepto de proposición toma en cuenta el hecho de que una importante función del lenguaje natural es referir objetos y situaciones, esto es interpreter cada oración del lenguaje como un fragmento de la realidad.

El valor de verdad de una proposición depende, por lo anterior, no solamente de las relaciones entre las palabras del lenguaje los objetos en el mundo sino también de el estado del mundo y del conocimiento acerca de ese estado. El valor de verdad de la oración 'Pablo corre' depende no solamente de la persona denotada en 'Pablo' y el significado del verbo 'correr', sino también del momento cuando esta oración es expresada. Pablo probablemente corre ahora, pero ciertamente que no siempre corre.

El valor de verdad de la oración 'Pedro piensa que Pablo corre' depende del conocimiento de Pedro. Si trasladamos el lenguaje natural, interpretado necesariamente como realidad, a un lenguaje lógico, este último toma automáticamente esta interpretación.

Debemos todavia garantizar la completa formalización de esta intepretación con una semántica formal como podria ser 'mundos posibles' [Kripke 63]. Finalmenlte el análisis de verdad de las oraciones de este lenguaje lógico nos permite razonar acerca de la realidad que representa.

No es siempre necesario que un agente sea capáz de decir si una oración que él expresa es verdadera o falsa con respecto a cierto estado de la realidad, un lenguaje no debe ser reducido a la sola función de referirse a un mundo real o posible .La formalización de un lenguaje natural por medio de un lenguaje lógico exige que este último sea suficientemente expresivo para reflejar todas las sutilezas del primero, en otras palabras, estos lenguajes lógicos deben ser capáces de reflejar, en la formalización, todas las funciones extra-referencia de el lenguaje, las cuales son por lo regular, mucho mas complejas que las funciones referencia.Por proposición expresada entendemos el sentido específico de la proposición, independientemente de cualquier análisis de verdad.

Manipulación computacional de lenguajes formales

Las dificultades inherentes en la representación de lenguajes naturales por medio de un lenguaje lógico no ocurren en el proceso de traducción de un lenguaje formal dentro de uno lógico. Como las oraciones de la lógica, los estatutos matemáticos no dependen del contexto en el cual son establecidos. Uno de los problemas cruciales en la representación de un lenguaje natural por la lógica llamado el problema de la referenciación, desaparece en este caso. Una de las metas historicas de la representacion del discurso matemático en forma lógica fue ciertamente tracer posible beneficiarse de el rigor y precisión de el lenguaje lógico en la fundamentación y desarrollo de ciertas partes de las matemáticas, por ejemplo, Godel tenia esta perspectiva cuando formalizó la teoría de conjuntos por medio de un número finito de fórmulas lógicas de primer orden [Godel40].

Las actuales motivaciones para la representación lógica resultan principalmente de la conección de tal representación con la teoría de demostración automática, en [Boyer86] se propone la reformulación de los axiomas lógicos de la teoría de conjuntos en el lenguaje de clausulas, estás pueden ser usadas directamente en metodos de demostración de teoremas basados en la regla de resolución.

4.2. CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN POR SU AREA DE APLICACIÓN Y ORIGEN

Un lenguaje de programación es un conjunto de símbolos, junto con un conjunto de reglas para combinar dichos símbolos que se usan para expresar programas. Los lenguajes de programación, como cualquier lenguaje, se componen de un léxico (conjunto de símbolos permitidos o vocabulario), una sintaxis (reglas que indican cómo realizar las construcciones del lenguaje), y una semántica (reglas que permiten determinar el significado

de cualquier construcción del lenguaje).

Ya hemos dicho que para que una computadora pueda ejecutar un programa escrito en un determinado lenguaje de programación, es necesario que dicho programa sea traducido a un lenguaje que la computadora entienda, el LENGUAJE DE MAQUINA, el cual está totalmente apegado a los circuitos de la máquina y muy alejado del lenguaje que los seres humanos utilizan. Aunque dicho lenguaje hace posible hacer programas que utilicen la totalidad de los recursos de la máquina y así obtener programas muy eficientes en cuanto a tiempo de ejecución y uso de memoria, resulta muy difícil programar en él. Por eso se desarrollaron otros tipos de lenguajes como lo vamos a discutir a continuación.

Los lenguajes de programación se pueden clasificar de la siguiente manera, utilizando el criterio de proximidad del lenguaje con la máquina o con el lenguaje natural:

1. Lenguajes de bajo nivel: Lenguajes de máquina.

2. Lenguajes de nivel medio: Ensambladores y Macroensambladores.

3. Lenguajes de alto nivel, como Pascal, Fortran,C, C++, Lisp, Basic, Prolog, etc.

A estos últimos se les puede también clasificar por el tipo de problemas que nos permiten resolver con más facilidad.

1. Aplicaciones científicas, en donde predominan operaciones numéricas propias de algoritmos numéricos. Aquí tenemos a Fortran y Pascal, pero particularmente Fortran.

2. Procesamiento de datos, como COBOL y SQL.

3. Tratamiento de textos como C.

4. Inteligencia artificial, como aplicaciones en sistemas expertos, juegos y visión artificial. Aquí tenemos a LISP y PROLOG.

5. Programación de Sistemas: Software que permite la interfaz entre el hardware y el usuario. Tenemos a ADA, MODULA-2 y C

Otra clasificación sería por el estilo de programación que fomentan.

1. Lenguajes imperativos o procedurales. Estos establecen cómo debe ejecutarse una tarea, dividiéndola en partes y especificando las subtareas asociadas. Se fundamentan en el uso de variables para almacenar valores y el uso de instrucciones para indicar operaciones a realizar con los datos. La mayoría de los lenguajes de alto nivel son de este tipo: Fortran, Pascal, Basic, etc.

2. Declarativos. Los programas se construyen mediante descripciones de funciones o expresiones lógicas que indican las relaciones entre determinadas estructuras de datos (PROLOG).

3. Lenguajes orientados a Objetos. Se centran más en los datos y su estructura. Un programa consiste de descripciones de unidades denominadas objetos que encapsulan a los datos y las operaciones que actúan sobre ellos (C++).

4. Lenguajes orientados al problema. Diseñados para problemas específicos. Son generadores de aplicaciones que permitan automatizar la tarea de desarrollo de software de aplicaciones.

Se hablará entonces ahora de los traductores para los diferentes tipos de lenguajes de programación, de acuerdo con su proximidad al lenguaje de máquina o al lenguaje natural.

Interpretes, Compiladores

1.3.1. Definición de Intérpretes y Compiladores, Ambiente integral del Lenguaje C

Lenguajes de nivel bajo y alto

Los lenguajes de nivel de máquina y los de ensamblador se clasifican como lenguajes de nivel bajo. Esto se debe a que ambos utilizan instrucciones que están vinculadas directamente a un tipo de computadora. De tal manera, un programa en lenguaje ensamblador sólo se puede utilizar con el tipo específico de computadora para la cual fue escrito. Tales programas, sin embargo, permiten utilizar las características específicas de una computadora en particular y generalmente se ejecutan en el nivel más rápido posible.

En contraste con los lenguajes de nivel bajo están los de nivel alto. Un lenguaje de nivel alto utiliza instrucciones similares a las de los lenguajes escritos, como el inglés, y se pueden ejecutar en diversos tipos de computadoras. FORTRAN, BASIC, Pascal y C++ son ejemplos de lenguajes de nivel alto.4 Utilizando C++, una instrucción para sumar dos números y multiplicarlos por un tercer número se puede escribir como:

resultado = (primero + segundo) * tercero;

A los programas escritos en un lenguaje de computadora de nivel alto o bajo se les conoce de manera indistinta como programas fuente o código fuente. Una vez que un programa se escribe en un lenguaje de nivel alto, también se debe traducir, al igual que un programa ensamblador de nivel bajo, al lenguaje de máquina de la computadora en la cual se ejecutará. Esta traducción se puede realizar de dos maneras. Cuando cada instrucción en un programa fuente de nivel alto se traduce de manera individual y se ejecuta inmediatamente al momento de la traducción, el lenguaje de programación utilizado se llama lenguaje interpretado, y el programa que efectúa la traducción se llama intérprete. Cuando todas las instrucciones en un programa fuente de nivel alto se traducen como una unidad completa antes de que cualquier instrucción sea ejecutada, al lenguaje de programación utilizado se le llama lenguaje compilado. En este caso, al programa que efectúa la traducción se le llama compilador.

Puede haber versiones tanto compiladas como interpretadas de un lenguaje, aunque generalmente una predomina. Por ejemplo, aunque existen versiones compiladas de BASIC, éste es predominantemente un lenguaje interpretado. De la misma forma, aunque existen versiones interpretadas de C++, éste es básicamente un lenguaje compilado.

REALIZACIÓN DE UN PROGRAMA EN C.

En este apartado se van a exponer los pasos a seguir en la realización de un programa, por medio de un ejemplo. La siguiente figura, representa estos pasos en el orden en el que hay que ejecutarlos.

edu.red

Este ejemplo que una vez editados los ficheros fuente A. C y B. C, son compilados obteniéndose los ficheros objeto A. OBJ y B. OBJ los cuales son enlazados con el fichero C. OBJ, con la librería D. LIB y con las librerías del sistema .LIB dando lugar a un único fichero ejecutable A. EXE.

La orden correspondiente para compilar y enlazar los ficheros expuestos en este ejemplo, es la siguiente:

CL A.C B.C C.OBJ /link D.LIB

Para ejecutarse el fichero A.EXE resultante, escribir el nombre de dicho fichero (A), y pulsar Enter.

 

Enviado por:

Ing.+Lic. Yunior Andrés Castillo S.

"NO A LA CULTURA DEL SECRETO, SI A LA LIBERTAD DE INFORMACION"®

www.monografias.com/usuario/perfiles/ing_lic_yunior_andra_s_castillo_s/monografias

Santiago de los Caballeros,

República Dominicana,

2015.

"DIOS, JUAN PABLO DUARTE Y JUAN BOSCH – POR SIEMPRE"®