Arquitectura de las Computadoras

 

2do PARCIAL

 

 

C/PASCAL PARALELOS:

Programación en paralelo es:

  • Operación simultánea de elementos dentro de un sistema
  • El Hardware de bajo nivel ha sido paralelo por muchos años. Tradicionalmente este paralelismo está oculto del usuario.
  • Las máquinas que permiten que el utilizador se aproveche de paralelismo se refieren normalmente como máquinas paralelas, para distinguir configuraciones convencionales.

Una computadora paralela es un juego de procesadores que pueden trabajar para resolver un problema computacional de manera cooperativa. Las computadoras paralelas son interesantes porque nos ofrecen el potencial para concentrar recursos computacionales como los procesadores, memoria, ancho de banda de I/O, en problemas computacionales importantes.  

El paralelismo a veces se ha visto como una subarea rara y exótica de la informática, interesante pero de relevancia pequeña para la mayoría de los programadores. El paralelismo está volviéndose oblicuo pero la programación en paralelo está convirtiéndose en el centro de la iniciativa de la programación.

Los lenguajes Pascal© y C™ son clasificados como lenguajes de programación Procedimental o Procedural, y por esto las funciones en estos lenguajes tiene una importancia mayor que los datos. Estos lenguajes se construyen a partir de diagramas de flujo de datos, que muestran el flujo de datos a través de un sistema, dentro y fuera de las funciones ( o procedimientos).

Mediante la evaluacion individual de sus caracteristicas de lenguaje C y el lenguaje PASCAL,se puede crear un paralelo entre ellos.

EIFFEL:

Es un programa orientado a objetos, lenguaje desarrollado por Bertrand Meyer para Software Interactivo que Diseña Inc., Goleta, CA, (www.eiffel.com). Corre en DOS, OS/2 y la mayoría las plataformas de UNIX. El compilador de Eiffel genera codigo C que puede modificarse y compilarse con un copilador de C.

G++:

Nombre de un software, simboliza las peculiaridades más destacadas de esta solución informática para empresas:

1. Sistema para la automatización de la Gestión Administrativa Empresarial

2. Soporta la adición (de ahí + + ), de tantos módulos como precise cada empresa, tanto diseñados por nosotros como estándares, como a medida para el cliente: Contabilidad, Recursos Humanos, Liquidación de Haberes, Intranet, Business to Business, Business to Consumer, etc...

JAVA:

Java es un lenguaje de programación expresamente diseñado para usarse en el entorno distribuido de Internet. Se diseñó para que se "pareciera" al lenguaje C++, pero es más sencillo de usar que éste y obliga a una visión de la programación completamente orientada a objetos. Java puede usarse para crear aplicaciones completas que corran en un sólo ordenador o se distribuyan entre servidores y clientes de una red. También puede usarse para construir pequeños módulos de aplicación o applets para utilizarlos como parte de una página web. Los applets hacen posible que el usuario de una página web interactúe con ella.

Java fue lanzado por Sun Microsystems en 1995 e instantáneamente creó una nueva percepción de las posibilidades interactivas de la Red. Los dos principales navegadores incluyen una máquina virtual de Java. Casi todos los principales desarrolladores de sistemas operativos (IBM, Microsoft y otros) han añadido compiladores de Java como parte de su oferta de productos.

Las principales características del Java son:

  • Portabilidad. Los programas que creados son portátiles dentro de una red. El programa se compila en un código de bytes Java que puede ejecutarse en cualquier sitio de una red, en un servidor o cliente que tenga una máquina virtual de Java. La máquina virtual de Java interpreta el código de bytes y lo transforma en código que puede correr en el equipo real del ordenador. Esto significa que las diferencias individuales de las plataformas de los ordenadores, como la longitud de las instrucciones, pueden ser reconocidas y adaptadas localmente mientras el programa se esta ejecutando.
  • Compatibilidad. Ya no se necesitan versiones específicas de nuestros programas para cada plataforma.
  • Seguridad. El código es "robusto", lo que aquí significa que, a diferencia de los programas escritos en C++ y quizá algunos otros lenguajes, los objetos Java no pueden tener referencias a datos externos a ellos mismos. Esto asegura que una instrucción no pueda tener la dirección de almacenamiento de datos en otra aplicación o en el sistema operativo mismo, casos que provocarían que el programa y quizá el sistema operativo se cerraran o cayeran ("crash"). La máquina virtual de Java realiza una serie de verificaciones de cada objeto para garantizar su integridad.
  • Objetos. Java está orientado a objetos, lo que significa que, entre otras características, objetos similares pueden aprovechar el hecho de que son parte de la misma clase y heredar código común. Se piensa en los objetos como "sujetos" gramaticales con los que un usuario puede relacionarse más que los tradicionales "verbos" de procedimiento. Se puede pensar en un método como una de las capacidades o comportamientos del objeto.
  • Velocidad. Además de ser ejecutado en el cliente en vez del servidor, un applet Java tiene otras características diseñadas para que corra rápidamente.
  • Facilidad. Comparado con el C++, Java es más fácil de aprender. (Sin embargo, no es un lenguaje que podamos dominar en una noche.)

El script de Java o JavaScript no debe confundirse con Java. El JavaScript, que se originó en Netscape, se interpreta a un nivel más alto y es más fácil de aprender que Java, pero carece de parte de la portabilidad de Java y la velocidad del código de bytes. Dado que los applets de Java corren en casi cualquier sistema operativo sin requerir recompilación, y dado que el Java no tiene extensiones o variaciones específicas de un sistema operativo, generalmente se lo considera como el lenguaje más estratégico para el desarrollo de aplicaciones para la Red. (Sin embargo, JavaScript puede ser útil para aplicaciones muy pequeñas que corran en el cliente o servidor web.)

MP3 PLAYERS:

WinAmp

Sonique

Dj-System

K-Joföl 2000

Earjam IMP

Soritong

 

SoundJamMP, Quicktime, GetRight, Yahoo Player, Kjofol, Wplay, Unreal PlayerFreeamp, etc...

OPEN GL:

Es un estándar gráfico empleado en estaciones de trabajo y sistemas de diseño asistido por el ordenador que también se utiliza en PCs.

Open GL ha sido parte de OS/2 desde la aparición de Warp 4, pero el soporte de hardware para Open GL ha aparecido recientemente. Muchos fabricantes de tarjetas de vídeo han incorporado Open GL por hardware en sus tarjetas, y esta tecnología tienen una buena oportunidad para onvertirse en el API estándar para los juegos en Windows 9x. Puesto que IBM acaba de publicar el kit necesario para que los desarrolladores de controladores de dispositivos añadan Open GL por hardware a sus controladores, y dado que la cantidad de productos OS/2 que lo usan es relativamente pequeña, puede pasar un tiempo antes de que veamos alguna consecuencia de esto.

PYTHON:

Python es un lenguaje Interpretado, orientado a objetos semejante a Tcl y Perl que ha ganado a popularidad por su sintaxis y la clara legibilidad del código. Python es relativamente fácil de aprender y es portátil, esto significa que sus declaraciones se pueden interpretar en varios sistemas operativos, inclusive sistemas basados en UNIX, Mac OS, MS-DOS, OS/2, y varias versiones de Microsoft Windows. Python fue creado por Guido van Rossum, un residente de Holanda, cuyo grupo favorito de comedia en ese tiempo era el "Monty Python's Flying Circus".

El código fuente está libremente disponible y abierto para la modificación y reuso. Python en la actualidad tiene un número significativo de usuarios .Una característica notable del Python es la "indentación" de su código que permite una facilidad para su lectura. El Python ofrece "dynamic data types", "ready-made classes", e interfaces a muchas llamadas del sistema y bibliotecas. Se puede extender, usando el lenguaje C o C++.

TCL/TK:

TCL (Tool Command Language) es un lenguaje de programación interpretado y multiplataforma. Fue creado por John K. Ousterhout y su equipo de la Universidad de California, pero actualmente es desarrollado por Sun Microsystems Laboratories ( en concreto por su gupo SunScript, que lidera el propio Ousterhout) y distribuido de forma totalmente gratuita, aunque su uso sea para aplicaciones comerciales, a través de Internet. El intérprete puede ser encontrado en diversas direcciones.

Tcl es un lenguaje de comandos, cuyo intérprete recibe el nombre de tclsh (tclsh80 para Tcl/Tk 8.0), que tiene como una de sus principales características la gran facilidad con la que se pueden implementar funciones en C/C++ que pasan a ser nuevas instrucciones del intérprete. Es decir, se pueden embeber aplicaciones en C/C++ dentro del propio intérprete de Tcl; de esta forma es posible obtener nuevas versiones de Tcl, denominadas extensiones, que no dejan de ser otra cosa que intérpretes que aunan a los comandos originales de Tcl nuevos comandos escritos en C/C++.

Algunas de estas extensiones son BLT (que permite hacer representaciones gráficas en 2D), Itcl (Incremental Tcl, Tcl orientado a objetos), OraTcl (Tcl capaz de manejar bases de datos ORACLE), etc.

Comandos Tcl.-La sintaxis básica para un comando de tcl es :

comando arg1 arg2 arg3 ...

Cualquier manual de programación que se precie debe iniciarse con el típico ejemplo de "Hola Mundo!!". Esto es en Tcl:

Ejemplo:

En este ejemplo simplemente se ha escrito la cadena "Hola Mundo!!!". Tcl/Tk proporciona dos intérpretes de comando: para Tcl, tclsh80; y para Tk, wish80. Cualquiera de estos dos puede ser utilizado para ejecutar los ejemplos de la primera parte de este trabajo, pero siempre resultará más cómodo utilizar wish80 que tclsh80, ya que el primero crea la ventana que se puede ver sobre estas líneas, mientras que el segundo lo correrá en una ventana de DOS. Para llamar al intérprete wish80 bastará con ejecutar wish80.exe; mientras que para el segundo se jecutará tclsh80.exe. En el caso de ejecutar el primero, además de la ventana que aquí se puede ver, denominada consola, aparecerá otra más, de color gris, y que de momento no va a tener mayor importancia.

Tk es un toolkit para la programación bajo Windows. Inicialmente fue diseñado para el sistema X window, pero actualmente ha sido migrado a otros sitemas, entre ellos Windows 95 y NT. Tk provee un conjunto de comandos Tcl que permiten manipular widgets. Un widget es una ventana del interface gráfico que presenta un aspecto particular y una determinada utilidad. Entre los widgets se encuentran botones, barras de scroll, menús, y ventanas de texto. Tk también proporciona un widget de próposito general para el dibujo, denominado canvas, en el que pueden ser creados líneas, circulos, cuadrados, bitmaps, etc.

El sistema X window soporta herencia entre ventanas, y esto se refleja en los comandos de Tk La herencia en Tk significa que existe una ventana primaria o principal, y dentro de ella (también fuera de ella) pueden existir un número de ventanas hijas. De igual forma, las ventanas hijas pueden contener otras ventanas, y así sucesivamente.

Los widgets están bajo el control del geometry manager que controla su tamaño y posición en la pantalla. Hay numerosos geometry manager para Tk, pero en este trabajo va a utilizarse el más habitual, denominado packer. Para representar un widget en pantalla, primero debe ser incluido en una frame. Una frame es un widget que se encarga de contener otros widgets. Una vez creado un widget como hijo de una frame, estará creado pero no aparecerá en pantalla hasta que el packer lo coloque en su sitio.

Una aplicación basada e Tk tiene un control del flujo por eventos. Para poder ejecutar comandos como respuesta a estos eventos, existe el comando bind, el cual asocia a un evento un determinado comando, que se ejecutará en el preciso momento de producirse dicho evento. Los widgets de Tk tienen algunos de estos eventos asociados a determinados comandos definidos por defecto.

Un concepto importante es el foco; el widget que posea el foco será el que esté activo en ese momento. Tk proporciona comandos para cambiar el foco o pasarlo a otro widget.

La estructura básica de una aplicación Tk empieza creando los widgets, situándolos con el geometry manager y asociando los bind para el control de los eventos.

Wish80:

Es el intérprete de Tk. Para ejecutarlo, lo más cómodo es crear en el escritorio un acceso directo a este fichero ejecutable, y llamarlo mediante un doble click sobre el icono de dicho acceso directo. Al ejecutarlo, aparecerá la denominada Consola, que es el equivalente bajo Windows de lo visto anteriormente para tclsh80. Desde ella se pueden ejecutar las aplicaciones mediante el comando source seguido del nombre de la aplicación, incluyendo el path. Por ejemplo:

% source c:/tcl/lib/sio95/sioini95

El aspecto de la consola es el siguiente:

Bugs conocidos :

  • La conexion Non_blocking para sockets no funciona todavía.
  • Los eventos de fichero sólo funcionan con sockets.
  • La librería no puede ser usada por dos procesos al mismo tiempo.
  • No soporta cursores ni iconos de usuario.
  • Aún no está implementado el dibujo de arcos con patrones, es decir, línea distinta de continua.
  • Algunas funciones wm no están todavía implementadas.
  • Las instrucciones send y winfo interps no funcionan todavía.
  • No es posible imprimir imágenes dentro de un canvas.
  • El wm puede ser ignorado en algunos casos.

Manejo de la consola :

Una de las cosas que más sorprende a aquellas personas que se acercan a Tcl/Tk procedentes de algún lenguaje compilado es la consola.

La consola de Tcl/Tk es una ventana similar a la que pudiera verse en las máquinas UNIX, que va a permitir ejecutar todas los comandos de Tcl y Tk desde ella, con lo que será posible comprobar si un comando funciona tal como se espera o no antes de insertarlo en el código de una aplicación, sin necesidad de escribir un fichero, grabarlo y ejecutarlo.

Aunque desde la consola es posible ejecutar todos los comandos de Tcl/Tk, existen comandos que parecen especialmente indicados para utilizar desde ella. Algunos de estos son:

  • source nom_fichero : Permite cargar en memoria un fichero. si este fichero contiene código "ejecutable", se ejecutará; sino, en caso de contener procedimientos, estos se cargarán en memoria, quedando disponibles para ser ejecutados. Para cargar el fichero, debe escribirse su path completo, o en su defecto, moverse por el árbol de directorios con los comandos cd, pwd, etc, Hay que recordar que al ser Tcl un lenguaje procedente del mundo UNIX, la consola admite un gran número de comandos UNIX. Como nota curiosa, para separar los directorios debe hacerse con la barra "\" propia de UNIX, no con "/", propia de Windows.
  • history : Este comando presenta la lista de comandos efectuados hasta este momento.
  • info body procedimiento : Presenta en la consola el código del procedimiento indicado.
  • info var : Presenta en la consola las variables.

Por otra parte, todas las variables que se hayan declarado como globales en un procedimiento pueden ser vistas y modificadas desde la consola en tiempo de ejecución

Tabla 1. Comandos de creación de widgets.

button

Crea un botón que ejecuta un comando.

checkbutton

Crea un botón de chequeo. Tiene dos posiciones, activado o desactivado.

radiobutton

Crea un botón de radio. Es similar al anterior, pero aparece formando un grupo, y sólo uno del grupo puede estar activado de cada vez.

menubutton

Crea un botón que presenta un menú. Serían los botones existentes en la barra de menú.

menu

Crea un menú.

canvas

Crea un canvas donde es posible dibujar.

label

Crea una etiqueta. Sólo es de lectura. No se puede escribir en ella.

entry

Crea una entrada de texto. Se utiliza para introducir datos.

message

Crea un cuadro de mensaje, sólo de lectura.

listbox

Crea una lista de texto.

text

Crea texto editable o no, de propósito general.

scrollbar

Crea las barras de scroll, tanto verticales como horizontales.

scale

Crea una escala que permite ajustar el valor de una variable con su desplazamiento.

frame

Crea un contenedor de widgets. Todos los widgets deben aparecer dentro de una frame

toplevel

Crea una ventana

Tabla 2. Comandos de manipulación de widgets.

after Ejecuta un comando después de un cierto período de tiempo.
bell Hace sonar un pitido.
bind Asocia un comando Tcl con un evento del sistema.
bindtags Crea clases bind y controla la herencia entre binds.
clipboard Manipula el portapapeles.
destroy Destruye un widget.
fileevent Asocia un comando Tcl con un descriptor de fichero.
focus Controla el foco de entrada.
grab Fija el foco de entrada a un widget, quitándoselo a otro.
image Crea y manipula imágenes.
lower Da de baja una ventana.
option Accede a la base de datos de los recursos.
pack El packer geometry manager.
place El place geometry manager.
raise Da de alta una ventana.
selection Manipula la selección.
send Envía un comando Tcl a otro programa Tcl.
tk Informa sobre el estado interno de Tk.
tkerror Captura los errores.
tkwait Detiene el programa en espera de un evento.
update Actualiza la pantalla.
winfo Informa acerca de las ventanas.
wm Interactúa con el window manager.


Ejemplo (Tk):

En este ejemplo se crea un botón con el texto "Hola Mundo". El comando que jecutará al ser pulsado será escribir en la consola el texto "Hola Mundo !!!". Finalmente, se se sitúa dicho botón con el packer, dejando 20 pixels de separación en el eje horiontal entre el borde del botón y el borde de la ventana que lo contiene, y 10 en el vertical.

Listado:


button .hola -text "Hola Mundo" -command {puts "Hola Mundo!!!"}
pack .hola -padx 20 -pady 10

El resultado es este:

Ventajas de Tcl/Tk:

  • Sencillez de programación.
  • Rapidez en el desarrollo de las aplicaciones (Tecnología RAD).
  • Gran velocidad comparado con otros lenguajes interpretados.
  • Facilidad de modificación de las aplicaciones.
  • Multiplataforma.
  • Gran número de extensiones gratuitas.
  • Posibilidad de incorporar nuevos comandos en lenguaje C/C++.

Inconvenientes de Tcl/Tk:

  • Excesivamente lento comparado con los lenguajes compilados.
  • Necesidad del intérprete para ejecutar una aplicación.
  • Difícil de depurar, debido a que, a diferencia de un compilador, el intérprte sólo "traduce" el código que se ejecuta; pudiendo quedar partes del código sin depurar porque el intérprete nuca las haya ejecutado.

 

CONCLUSIONES:

En esta investigacion me entere muchas cosas interesantes y de las cuales no estaba entereda como de la posibilidad de trabajar con C y Pascal en paralelo. De que Eiffel es un programa orientado a objetos que´puede correr en DOS, OS/2 y en UNIX y que genera codigo C que puede modificarse y compilarse con un copilador de C. Que existe un software, llamado G++ que nace como una solución informática para empresas. Investigue un poco de lo que es el lenguaje Java y me di cuenta de que este expresamente diseñado para usarse en el entorno distribuido de Internet. Casi todos los principales desarrolladores de sistemas operativos (IBM, Microsoft y otros) han añadido compiladores de Java como parte de su oferta de productos.Las principales características de Java son: Portabilidad, Compatibilidad, Seguridad, Objetos, Velocidad y Facilidad, y que el JavaScript se originó en Netscape y se interpreta a un nivel más alto y es más fácil de aprender que Java, pero carece de parte de la portabilidad de Java. Que un Mp3 Players es un reproductor de archivos de música comprimida de calidad casi digital (Mp3) y que aparte de existir programas existen aparatos portatiles para la reproduccion de los Mp3. Que el Open Gl es un estándar gráfico empleado en estaciones de trabajo y en Pc's. Que Python es un lenguaje interpretado, orientado a objetos semejante a Tcl y Perl.

Y me llamo en especial la atencion lo que son TCL y TK que son lenguajes de programación interpretados y multiplataforma, de los cuales me pude dar cuenta que sin duda, la extensión más conocida, y que es distribuida junto con el propio Tcl, es Tk (Tool Kit), que Tk proporciona un intérprete denominado wish, que añade a los comandos de Tcl, comandos capaces de crean interfaces gráficos de usuario. Es decir, Tk permite crear ventanas, botones, menús, barras de scroll, y toda una serie de elementos, propios de la programación con ventanas.Tk se distribuye junto con Tcl en un paquete denominado Tcl/Tk, que proporciona los dos intérpretes. Y que intérprete de Tcl puede ser eliminado ya que se encuentra incorporado en el intérprete de Tk.

REFERENCIAS:

http://webopedia.internet.com/TERM/

http://www.lawebdelprogramador.com/diccionario/

http://www.buscamp3.com/software/reproductores.htm

http://www.terra.com.ve/informatica/que-es/

http://www.aldeamac.com/links/mp3/

http://www.caballe.com/TeamOS2/test/documentos/traduccion/warpnt.htm

http://www.noticiasmp3.com/intro.html

http://www.eidoslatam.com/

www.eiffel.com

http://www.etsimo.uniovi.es/pub/tcl/

 

Pagina Principal Inicio