domingo, 26 de septiembre de 2010

Reporte numero 3

Pues en este reporte utilizaremos  lengujes script como:
awk, sh, python, perl, TLC y java script

En esta tarea se realizaran 3 programas con los lenguajes ya mencionados, estos programas
se realizaran con awk, sh y python este ultimo elegido libremente por un mi.

awk
Su nombre lo recibe de sus autores Alfred Aho, Peter Weinberger y Brian Kernighan, es un lenguaje de programación que fue diseñado con el objetivo de procesar datos basados sobre texto y una de las primeras herramientas en aparecer en Unix. Utiliza listas en un índice ordenado por cadenas clave (listas asociativas) y expresiones regulares. Es un lenguaje ampliamente utilizado para la programación de guiones ejecutables pues añade funcionalidad a las tuberías en los sistemas operativos tipo POSIX. Está incluido en las instalaciones básicas de prácticamente todas las distribuciones de GNU/Linux.


sh


python
es un lenguaje de programación de alto nivel cuya  sintaxis es muy limpia y  favorezca a un código legible.
Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y es multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License,que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.

¿Porque hay tantos lenguajes de programación?(Puntos extras)

La computadora, a diferencia de otras herramientas que por lo general apoyan el esfuerzo físico de los humanos, fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algún problema, por ejemplo "sumar dos y dos", el diseñador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programación, el cual la computadora es capaz de "entender", luego la computadora ejecuta el algorítmo expresado como programa en el lenguaje de programación en cuestión, y listo. La máquina le entrega al hombre la respuesta "4", sin que éste tuviera que esforzar sus neuronas.
¿Cuál es el papel del lenguaje de programación en este proceso?
Es muy importante, el lenguaje de programación es el medio de comunicación entre el hombre y la máquina. El modelo general de las computadoras, desde que fue esbozado por von Neumann, no ha cambiado mucho, mientras que la invención humana para proponerse nuevos problemas a resolver, usando la computadora, parece no tener límites. En consecuencia, los lenguajes de programación tienen que adaptarse a éstas crecientes necesidades y aumentar la expresividad para poder resolver problemas muy diversos y cada vez más complejos.
Además, tienen que ofrecer cierta eficiencia en la ejecución. Es un logro difícil de alcanzar y por lo tanto, se requiere una búsqueda constante de nuevos lenguajes para ello.

Maquinas Turing(Puntos extras)

¿QUE SON Y COMO FUNCIONAN?
Una máquina de Turing consiste, básicamente, en una cinta infinita, dividida en casillas. Sobre esta cinta hay un dispositivo capaz de desplazarse a lo largo de ella a razón de una casilla cada vez. Este dispositivo cuenta con un cabezal capaz de leer un símbolo escrito en la cinta, o de borrar el existente e imprimir uno nuevo en su lugar. Por último, contiene además un registro capaz de almacenar un estado cualquiera, el cual viene definido por un símbolo. Los símbolos que definen el estado del dispositivo no tienen por que coincidir con los símbolos que se pueden leer o escribir en la cinta. En los programas presentados en el artículo, los posibles símbolos a leer o escribir en la cinta son el 0 y el 1, y los posibles estados se representan con letras mayúsculas. En el emulador, existe un cambio en la representación del estado, usando para ello los números del 0 al 99, para permitir un mayor número de ellos.
La máquina tiene un funcionamiento totalmente mecánico y secuencial. Lo que hace es leer el símbolo que hay en la casilla que tiene debajo. Después toma el símbolo del estado en que se encuentra. Con estos dos datos accede a una tabla, en la cual lee el símbolo que debe escribir en la cinta, el nuevo estado al que debe pasar y si debe desplazarse a la casilla izquierda o derecha.
Para entender mejor el funcionamiento de dicha maquina, vamos a ver un simple ejemplo: sea la máquina de Turing capaz de leer o escribir los símbolos 0 y 1 en la cinta (en la definición original de Turing, el número de símbolos a usar podía ser cualquiera, con la única condición de ser un número finito, y no tenían por qué ser números; sin embargo, en aplicaciones prácticas se suelen limitar a estos dos), y que puede tener los estados A, B y C (una máquina de Turing puede tener cualquier número de estados; la única condición es que sea un número finito). Supongamos que definimos la siguiente tabla:
estado símbolo nuevo nuevo sentido de
inicial leído estado símbolo avance

A 0 B 1 DERECHA
A 1 B 0 IZQUIERDA
B 0 A 1 DERECHA
B 1 C 0 DERECHA
C 0 A 0 IZQUIERDA
C 1 C 0 DERECHA
La cual vamos a simplificar de la siguiente manera:
0 1

A B,1,> B,0,< B A,1,> C,0,>

C A,0,< C,0,>
Hemos puesto los posibles estados en columna, y los posible símbolos en fila, y hemos expresado el nuevo estado, símbolo y sentido todo junto. El sentido lo expresamos con la dirección en la que apunta el símbolo < o >.
Vamos a poner nuestra máquina sobre esta cinta:
cabezal
v
... 0 0 0 0 0 1 0 0 0 0 ...
Indicaremos el estado actual de la máquina encima del cabezal. Veamos los sucesivos pasos de esta máquina si partimos del estado A:
1) A El estado es A y leemos un cero;
v luego debemos cambiar al estado B,
... 0 0 0 0 0 1 0 0 0 0 ... escribir un 1 y movernos a la derecha

2) B El estado es B y leemos un cero;
v luego debemos cambiar al estado A,
... 0 0 0 1 0 1 0 0 0 0 ... escribir un 1 y movernos a la derecha

3) A El estado es A y leemos un uno;
v luego debemos cambiar al estado B,
... 0 0 0 1 1 1 0 0 0 0 ... escribir un 0 y movernos a la izquierda

4) B El estado es B y leemos un uno;
v luego debemos cambiar al estado C,
... 0 0 0 1 1 0 0 0 0 0 ... escribir un 0 y movernos a la izquierda

5) C El estado es C y leemos un uno;
v luego debemos cambiar al estado C,
... 0 0 0 1 0 0 0 0 0 0 ... escribir un 0 y movernos a la derecha

6) C El estado es C y leemos un cero;
v luego debemos cambiar al estado A,
... 0 0 0 0 0 0 0 0 0 0 ... escribir un 0 y movernos a la izquierda

7) A El estado es A y leemos un cero;
v luego debemos cambiar al estado B,
... 0 0 0 0 0 0 0 0 0 0 ... escribir un 1 y movernos a la derecha
La ejecución de esta máquina seguiría indefinidamente, rellenando la cinta con unos y ceros de una manera más o menos aleatoria. Realmente, una máquina de Turing útil debería poder detenerse; esto es, tener un estado en el que se detiene. Dicho estado se alcanzaría igual que cualquier otro estado. Esto es, supongamos que el estado D es el de paro; lo único que debemos hacer es que, cuando la máquina halla terminado el cálculo, pase a estado D; de este modo se detiene y permite examinar la cinta para buscar el resultado.
Vemos que esta máquina no hace gran cosa. Sin embargo, una máquina de Turing puede hacer cosas útiles, tales como sumar dos números, multiplicarlos, copiarlos, etc. Disponiendo de una máquina con el suficiente número de estados, podríamos hacer con ella cualquier operación que un ordenador normal pudiese realizar.
Las máquinas de Turing plantean una deducción bastante curiosa: dado que en ellas se puede realizar cualquier trabajo computable, es posible programarlas para que simulen el comportamiento de un potente ordenador. Y como una máquina de Turing puede ser codificada en CUALQUIER ordenador, por pequeño que sea, sería posible (si disponemos de memoria suficiente, claro) emular en nuestro ordenador de casa una máquina de Turing que simule un superordenador. Esto significa que todos los ordenadores pueden realizar exactamente el mismo tipo de tareas, y que los cálculos que pueda realizar el más grande los puede llevar a cabo también el más pequeño. La única diferencia sería, obviamente, la velocidad.
Descripción La máquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta máquina se limitan a:
Avanzar el cabezal lector/escritor para la derecha; • avanzar el cabezal lector/escritor para la izquierda. El cómputo es determinado a partir de una tabla de estados de la forma: (Estado, valor)-→(\nuevo estado, \nuevo valor, dirección)
Definición Una máquina de Turing con una sola cinta puede ser definida como una 6-tupla M=(Q,L,s,b,F,o) , donde •Q es un conjunto finito de estados. •L es un conjunto finito de símbolos de cinta, el alfabeto de cinta. •s E Q es el estado inicial. •b E L es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces. •F _C Q es el conjunto de estados finales de aceptación. •o : Q x L → Q x L x {L,R} es una función parcial denominada función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.
Existen en la literatura un abundante número de definiciones alternativas, pero todas ellas tienen el mismo poder computacional, por ejemplo se puede añadir el símbolo S como símbolo de “no movimiento” en un paso de cómputo o el símbolo Σ para indicar el alfabeto de entrada.
Ejemplo Definimos una máquina de Turing sobre el alfabeto {0,1}, donde 0 representa el símbolo blanco. La máquina comenzará su proceso situada sobre un símbolo “1″ de una serie. La máquina de Turing copiará el número de símbolos “1″ que encuentre hasta el primer blanco detrás de dicho símbolo blanco. Es decir, situada sobre el 1 situado en el extremo izquierdo, doblará el número de símbolos 1, con un 0 en medio. Así, si tenemos la entrada “111″ devolverá “1110111″, con “1111″ devolverá “111101111″, y sucesivamente.
La máquina realiza su proceso por medio de un bucle, en el estado inicial s1, reemplaza el primer 1 con un 0, y pasa al estado s2, con el que avanza hasta la derecha, saltando los símbolos 1 hasta un 0 (que debe existir), cuando lo encuentra pasa a ser s3, con este estado avanza saltando los 1 hasta encontrar otro 0 (la primera vez no habría ningún 1). Una vez en el extremo derecho, añade un 1. Después comienza el proceso de retorno; con s4 vuelve a la izquierda saltando los 1, cuando encuentra un 0 (en el medio de la secuencia), pasa a s5 que continúa a la izquierda saltando los 1 hasta el 0 que se escribió al principio. Se reemplaza de nuevo este 0 por 1, y pasa al símbolo siguiente, si es un 1, se pasa a otra iteración del bucle, pasando al estado s1 de nuevo. Si es un símbolo 0, será el símbolo central, con lo que la máquina se detiene al haber finalizado su cómputo.
Máquina de Turing Cuántica En 1985, Deutsch presentó el diseño de la primera Máquina Cuántica basada en una máquina de Turing. Con este fin enunció una nueva variante la tesis de Church dando lugar al denominado “Principio de Church-Turing-Deutsch”. La estructura de una máquina de Turing cuántica es muy similar a la de una máquina de Turing clásica. Está compuesta por los tres elementos clásicos: •Una cinta de memoria infinita en que cada elemento es un Qu Bit? •Un procesador finito •Un cursor
Diagrama de transición para la maquina de turing
Las transiciones de una maquina de turing pueden representarse visualmente, un diagrama de transición esta formado por un conjunto de nodos que nodos que corresponde a los estados de la MT. En un arco que vaya del estado q al esta p, apareceran una o varias etiquetas de la forma X/YS, donde X e Y son símbolos de cintan y S indica un sentido, que puede se I o D. es decir, si δ(q,X) = (p,Y,S),en el arco que va de q a p se encontrara la etiqueta X/YS.

viernes, 3 de septiembre de 2010

Presentacion en clase

Generador de codigo_intermedio
View more presentations from Oscar Jose .

Bueno esta es la primera presentacion que me toco exponer con mis compañeros Guillermo y Daniel.

A nosotros nos toco hablar de generador de código intermedio que en términos simples es el lenguaje que se encuentre entre el lenguaje maquina y el código del objeto.

lunes, 23 de agosto de 2010

Visual dialogscrip

Bueno pues a mi me toco el lenguaje de programacion Visual DialogScrip
y esto es lo mas relebante acerca de este lenguaje de programacion:

Visual DialogScript

Fue desarrollado originalmente por Julian Moss, pero en la actualidad es un producto de Commercial-Research, Ltd.

Visual DialogScript es un lenguaje script de programación orientado a objetos, muy robusto, sencillo de aprender y fiable, con muchas posibilidades para que programar sea una tarea sencilla.

Desde su aparición, con la versión 2, no ha parado de crecer y ofrecer más funcionalidad, con nuevos y mejores comandos y funciones, más potencia y un entorno mejorado. La última versión es la VDS 6.
Visual DialogScript también llamado VDS es un lenguaje de script orientado a objetos con un entorno visual y centrado en el desarrollo de aplicaciones basadas en cuadros de diálogo.

Funciona en prácticamente todas las versiones 32 bits de Windows. Es un lenguaje es un lenguaje muy eficiente ya que reduce mucho el código a la hora de programar. Es compacto, ocupa poco más de 1 Mb en las versiones 3 y 4, sobre 3 Mb en la versión 5 y cerca de los 5 Mb en la última versión, la 6.0.

Lo interesante de VDS es su fiabilidad y estabilidad. Al utilizar las API de Windows la compatibilidad con el sistema es muy alta. Ya que al ser un lenguaje script no es compilado ya que previamente traducido en su ejecución.

El interface es sencillo y manejable, bastante intuitivo y posee un propio editor sensible a los comandos, parámetros y datos. Genera ficheros con extensión .dsc cuyo contenido es texto plano sin formato, que puede editarse fácilmente con cualquier editor de texto (Bloc de notas, por ejemplo).

Otro punto a destacar del programa es la facilidad de manejo. La ayuda (aunque esta en inglés) es fácil de comprender. La sintaxis del propio lenguaje es tan sencilla que aun que posee algunas peculiaridades con respecto a otros lenguajes, también posee convertidores para las versiones anteriores y algunas herramientas que nos ayudan en la tarea de crear y diseñar las cajas de mensajes o los cuadros de diálogo. Estos últimos son la base de VDS (aunque en la práctica podemos crear aplicaciones que no presenten ninguno de los ya mencionados).

En los cuadro de diálogo podemos usar cualquiera de los elementos que nos proporciona, de forma estándar, este lenguaje y otros elementos ampliados gracias a las librerías de ampliación que podemos encontrar en la red.

Estos elementos proporcionan información (como los textos, imágenes, vídeo y sonido) e interactividad con el usuario (como botones, botones de opciones, casillas de verificación, etc.)

Cuando los propios comandos y funciones que lo componen se quedan cortos entran en juego las librerías que proporcionan nuevas posibilidades.

Visual DialogScript, como cualquier otro lenguaje de programación, tiene una sintaxis definida que, en algunos aspectos, contiene elementos característicos propios.
Como breve reseña he dividido la sintaxis en tres apartados:

Sintaxis-Variables
Como en cualquier lenguaje de programación las variables son usadas para almacenar datos necesarios en la ejecución de las aplicaciones. Las variables pueden almacenar texto o datos numéricos de manera que suelen existir distintos tipos de variables: tipo numérico de números enteros, en coma flotante, etc; tipo alfanumérico, y otros.

Aspectos a Considerar

En VDS, a diferencia de la mayoría de los lenguajes, no hay que definir las variables, es decir, no hay que declarar su nombre previamente ni especificar, el tipo de dato que va a almacenar. De hecho, las variables son considerados cadenas de texto sin ningún formato numérico o de otro tipo, es decir, el valor "89" en la variable "I" son considerados como simples caracteres "8" y "9" y no un número. Sólo cuando vamos a operar como si fuera número se considera como tal.

Como consecuencia, el uso de una variable no utilizada con antelación o a la cual nunca se le haya asignado un dato contendrá en valor nulo ("null").

El nombre de las variables comienzan con el signo % (para nombres de variables con un solo carácter) o %% (para nombres de variables de más caracteres). Además, éste no puede tener espacios en medio. Por ejemplo:

%I = 89


%%nombre_largo = Hola

A la hora de la asignación de datos a una variable hay que dejar un espacio entre el nombre de la variable, el carácter de asignación "=" y el dato a asignar como en el ejemplo anterior.

• Las variables especiales %1 a %9 son usadas para almacenar los parámetros que se pueden pasar a nuestros programas. Así si queremos hallar la raíz cuadrada de un número con visual dialogscrip sería así:

Raíz cuadrada.exe 9

donde Raíz cuadrada.exe es el nombre de nuestro programa y 9 es el parámetro que le pasamos almacenándose de manera automática en la variable %1.

En el siguiente ejemplo:

Suma dos números.exe 12 23

Suma dos números.exe es el nombre del programa y los valores 12 y 23 se pasan a las variables %1 y %2 respectivamente...

La variable especial %0 es de "sólo lectura" y contiene la dirección completa de la carpeta donde se encuentra el programa en ejecución.

Sintaxis-Comandos

Los comandos consisten en un nombre de comando seguido por una cadena de texto usada como argumento o parámetro. Si un comando tiene más de un parámetro éstos deben estar separados por una coma. Los parámetros deben separarse del comando por un espacio.

Ejemplos:

title Mi programa

en el ejemplo el comando está en negrita y el parámetro en itálica aunque no es necesario al programar.

info Esto es una caja de texto de información

el comando se muestra otra vez en negrilla y el parámetro en itálica.

Los parámetros pueden incluir variables y funciones que serán evaluadas antes de ejecutar el comando. Aquí podemos ver un ejemplo de comando que contiene una función y una variable:

if @file(%f)


info El archivo %f existe


end

Sintaxis-Funciones

Las funciones se utilizan generalmente para asignar o para procesar variables. Son procesadas en tiempo de ejecución y se devuelve una cadena de caracteres con información.
Comienzan con el signo "@" seguido por el nombre de la función. Los argumentos de una función se colocan entre paréntesis.

Ejemplos:

@Curdir( )

Esta función devuelve el directorio actual de la unidad especificada. Si ésta no se especifica la función devuelve el directorio en el que el programa se está ejecutando.

NOTA: las funciones encierran entre paréntesis los argumentos, aunque como en el ejemplo anterior sean nulos.

Cuando son más de un argumento éstos van separados por comas:

Ejemplo:

%a = @equal(%I,Hola)
Esta función devuelve en la variable %a el valor 1 (verdadero) si el contenido de la variable %I es igual a la cadena de caracteres "Hola", en caso contrario devuelve una cadena vacía ["null"] (no se tienen en cuenta las mayúsculas y minúsculas).

Estas son algunas versiones:

*Visual Dialogscrip 6

Tamaño: 4,88 Mb


Operatividad: 35 elementos de diálogo, 63 comandos y 136 funciones, aproximadamente.

Editor: Sensible a los comandos, variables, funciones y parámetros.

Observaciones: Nueva interface, recoge las ventajas de VDS 5 y aumenta las prestaciones al soportar más de 4032 variables globales, aritmética de 64 bits, gestión de memoria mejorada para un funcionamiento más rápido y con capacidad para cargar grandes listas de texto, soporte integrado para web (HTTP), XML, etc.

*VSD 5.02
Tamaño: 3,18 Mb


Operatividad: 31 elementos de diálogo, 52 comandos y 119 funciones, aproximadamente.

Editor: Sensible a los comandos, variables, funciones y parámetros.

Observaciones: Versión renovada, con un interface remodelada. VDS 5 ha ampliado las posibilidades con funciones y comandos definidas por el usuario, llamadas a .dll no VDS, ficheros precompilados (.dsu), trabajo con proyectos y muchas más funciones y comandos.

Y UNA DE LAS MAS VIEJA
*VDS 2.1
Tamaño: 770 Kb (16 bits)


741 Kb (32 bits)

Operatividad: 14 elementos de diálogo, 36 comandos y 70 funciones, aproximadamente.

Editor: No sensible a comandos, variables, funciones y parámetros.

Observaciones: Nombre de variables de un solo carácter (%1 a %9 y %a a %z), sólo admite la creación de un cuadro de diálogo y no tiene la capacidad de mover y cambiar el tamaño de los objetos una vez creados.

lunes, 9 de agosto de 2010

martes, 3 de agosto de 2010

Oscar Saalazar

hola a todos
mi nombres es oscar
escriban y comenten sobre la clase de lenguajes de progamacion