domingo, 31 de octubre de 2010

Video: Como instalar y Compilar en FORTRAN...

Laboratorio de Lenguajes de Programación


Este video hecho por mi, es con el fin de que algunos de nuestros compañeros que estan en el laboratorio de lenguajes, no llevan la materia con la Dra. por lo tanto, muchas veces no saben como instalar y compilar en los lenguajes vistos.




Código utilizado en el video.

      program circulo
      real r, area
      write (*,*) 'Dame el Radio: '
      read  (*,*) r
      area = 3.14159*r*r
      write (*,*) 'El area es: ', area
      stop
      end


Pueden ver el video aqui.
Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

Lenguajes Funcionales... y esto.. ¿Para que sirve?

Laboratorio de Lenguajes de Programación.

Como les hablaba en mi entrada Lenguajes Scripting.. y esto.. ¿Para que sirve? les hablaré ahora de los lenguajes funcionales que vimos en clase, para así saber que lenguaje es mas eficiente para un trabajo o problema dado.




Lenguaje R
Fue desarrollado por Robert Gentleman en 1993.
Este lenguaje es de genero matematico, su función es para el análisis estadístico y grafico (recolección, análisis e interpretación de datos para ayudar a la resolución de una toma de decisiones).
Es uno de los lenguajes mas utilizado en la investigación estadística, popular en la investigación biomedica y matemáticas financieras.
Lo podemos encontrar en multiples plataformas como Linux y Mac.
Existen librerías para integrarse con lenguajes interpretados como Perl y Python.
R tambien permite su propio formato para la documentación en LaTeX. Tambien lo podemos utilizar como calculo numerico.





Lisp

Su principal función es el proceso de listas, de ahi su nombre lisprocessing.
Es un grupo de lenguajes de programación funcional, todo esta entre parentesis.
Originalmente hecho en 1958 por John McCarthy, basado en el calculo lambda, es uno de los lenguajes que se utiliza para la inteligencia artificial, pionero en estructuras de datos de arboles, y manejo de almacenamiento automatico, entre otros.
Las listas encadenadas son la estructura de datos mas importante de este lenguaje.

Dialectos de este lenguaje:

  • Scheme
         Multiparadigma, apareció en la decada de los 70's diseñado por Guy L. Steele es     utilizado para principiantes con fines educativos.

  • Emacs LISP
         Se usa en el editor que utilizamos en clase Emacs, algunas veces lo podemos encontrar como Elisp, sirve para aquellos programadores que deseen extender y personalizar emacs.


ML estándar
Algunas veces llamado SML es un lenguaje funcional, multiparadigma, funcional e imperativo, que esta influido por ML, siendo este mas moderno, es utilizado para la logica de funciones computables (sistema de teoremas automatizadas desarrollada por Robin Milner, mismo que introdujo la programación ML que prueba los teoremas matemáticos en un programa de computadora.) Con este lenguaje se escriben programas con expresiones a evaluar.






Haskell
Es un lenguaje de funcional diseñado por la Simon Peyton, en los años 90's, se incluyen tipos de datos, funciones recursivas, listas, etc... 
Sus principales característica es la Lazy evaluation(tecnica de retrasar un calculo hasta que el resultado se requiera) Pattern matching (es comprobar la secuencia de tokens en presencia de los componentes de algunos patrones), y List comprehensions( sintactica crear listas basadas en listas existentes. )






Erlang
Es un lenguaje multiplataforma: concurrente(simultaneidad en la ejecución de tareas multiples) y funcional, diseñado por Ericsson en 1986, tiene como objetivo 3 cosas.
Fue diseñado para mejorar las aplicaciones de la telefonia, implementado incialmente en Prolog.


Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.


Video: Como instalar y Compilar en ALGOL...

Laboratorio de Lenguajes de Programación


Este video hecho por mi, es con el fin de que algunos de nuestros compañeros que estan en el laboratorio de lenguajes, no llevan la materia con la Dra. por lo tanto, muchas veces no saben como instalar y compilar en los lenguajes vistos.


Este video lo puedes ver aqui.
Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

Compilador vs Interprete

Laboratorio de Lenguajes de programación
Podemos decir que existen dos principales traductores de lenguajes de alto nivel, estos son el compilador y el interpete.

Un compilador primero debe de convertir un código fuente en un archivo intermedio, al que se le llama código objeto, contiene una traducción del código en lenguaje maquina, después existe una serie de pasos en los que los compiladores realizan fases los cuales son.

  1. Análisis léxico. Es leído y dividido en tokens, según a un simbolo en el lenguaje de programación, por ejemplo, un numero, palabras reservadas, variables.

  2. Análisis sintáctico. Acomoda la estructura de árbol sintáctico según la lista de tokens de la fase anterior, llamado tambien parsing.

  3. Verificación de tipos. Se analiza el árbol sintáctico para saber si están bien los requisitos de consistencia, por ejemplo cuando utilizamos una variable que no se utiliza.

  4. Generación de código intermedio. Traduce a un lenguaje simple independiente de la maquina.

  5. Ubicación de registros. Los símbolos de las variables son cambiados a los números, cada uno de ellos es un registro de código maquina objetivo.

  6. Generación de código maquina. El intermedio se traduce a ensamblador para una arquitectura de maquina especifica.

  7. Ensamblado y Enlazado. Se traduce a representación binaria, determinando la dirección de las funciones, variables, etc.

  8. Después un programa enlazador, combina los modulos del código objeto para hacer un ejecutable.



Compilación



Un interprete es otra manera de traducir un lenguaje, compartiendo aspectos del compilador como el análisis léxico y sintético. En lugar de hacer un árbol sintáctico, se procesa directamente las expresiones y sentencias, para así, utilizar funciones y operaciones mas potentes, realizando la operación paso a paso, para cada sentencia de entrada, se ejecuta y vuelve a iniciar con la siguiente sentencia, normalmente no guardan el resultado de la traducción.

Para nosotros como futuros programadores debemos de saber que es un interprete y un compilador, para así tener la idea de como se trabaja el programa y crear códigos mas eficientes.


Podemos decir que:
  • El programa compilado puede correr solo.

  • El interprete traduce en forma que lo va leyendo.

  • La ejecución de un programa compilado es mas rapido que uno interpretado

El interprete puede ser interpretado en cualquier SO, en cambio un programa compilado solo funciona en la plataforma (.exe .out), por otra parte, el programa compilado puede ser distribuido en base a el mismo SO, mientras que el interpretado necesita del interprete.

 Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

Lenguajes Scripting... y esto.. ¿Para que sirve?

Laboratorio de Lenguajes de programación


Uno de los objetivos de la materia de lenguajes de programación es que como futuros ingenieros en tecnologias de software debemos de poder programar en cualquier lenguaje, pero para ello es necesario saber que cada lenguaje tiene uno o varios paradigmas, hablado anterior mete en la esta entrada, por lo tanto son específicos y trabajan mas eficientes para algunas cosas que otras, es como si queremos hacer en AWK un script para web, si tenemos JavaScript, es ilógico. Entonces publico esta entrada para diferenciar, los lenguajes script vistos en clase,  cual es mas eficiente para realizar un trabajo.


Para empezar debemos de saber que los lenguajes script son lenguajes interpretados esto quiere decir que esta diseñado para ser ejecutado por un interprete que analiza y realiza una traducción cada que sea necesaria, ósea instrucción por instrucción, que pueden utilizar cualquier paradigma.


AWK
Aparece en 1977, diseñado por Alfred Aho y Brian Kernighan
Utiliza un paradigma dirigida por eventos, esto es que van determinados por los sucesos que ocurran en el sistema, hecho por nosotros como usuarios., al igual que programación imperativa esto es que se escribe en términos del estado del programa y sentencias que cambian el estado, utilizando un conjunto de instrucciones para realizar una tarea.
Podemos decir que AWK esta diseñado para procesar datos en texto, ósea ficheros o flujos de datos, operando linea por linea separando el texto en columnas.






SHELL
Este es uno de los lenguajes en los que utilizamos cuando abrimos nuestro terminal en ubuntu, para así nos permite darle instrucciones a algún programa.
Existen Shells de texto como Bash que fue uno de los primeros interpretes de Unix.
Con esto podemos utilizar al maximo para realizar tareas en el terminal, incluso poniendo variables, ciclos y condiciones.






PERL
Aparece en 1987,  desarrollado por Larry Wall.
Este lenguaje es multiparadigma, Es util en el manejo de cadenas y arreglos, aunque lo podemos utilizar para diferentes paradigmas, como funcional, imperativo incluso orientado a objetos.
Esta influido por AWK, Lisp, C, entre otros.
Es popular y tiene una aritmetica muy parecida al lenguaje C ya que esta basado en un estilo de bloques.






Python
Apareció en 1991, y fue diseñado por Guido van Rossum
Lenguaje multiparadigma, entre los cuales podemos encontrar el imperatico, funcional y reflexivo, tambien orientado a objetos.
Se diferencia de los demás porque tiene una sintaxis limpia, por lo tanto nosotros como programadores, podemos hacer un código mas legible.
Es de código abierto e incluye un modo interactivo, de facil extención para escribir nuevos modulos en C. utilizado tambien en Programación Web.






TCL
Es un lenguaje que apreció en 1988, y lo diseñó John Ousterhout.
Es un Lenguaje multiparadigma, funcional, procedural(Consiste en basarse de un numero muy bajo de expresiones repetidas, para englobarlas en un procedimiento) y Programación dirigida por eventos.
TCL, se utiliza en el desarrollo de prototipos, apps scripts, interfaces gráficas y pruebas.
Se combina TCL con TK para producir y crear interfaces gráficas.






JavaScript
Es un lenguaje multiparadigma hecho por Netscape y Mozilla Fundation en 1995, utilizando programación funcional, imperativo, basada en prototipos(en donde las "clases", no están presentes). 
Su principal objetivo es integrarlo con el código HTML para realizar interfaces de usuario y paginas web dinámicas.




Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.


  

Maquinas Turing

Esta entrada es para laboratorio de lenguajes de programación.




Una maquina de estado finito (o automata finito que es un modelo matemático que hace cómputos automaticamente de una entrada para dar una salida) tiene una memoria interna del cual recuerda que estado se encuentra por lo tanto, se dice que es primitiva.

Cuando permitimos una memoria externa en la una maquina pueda leer y escribir, son definidas como maquinas mas potentes o poderosas. Otra mejora es si se permite que se escane una cadena de entrada en alguna dirección y que altere dicha entrada.

Podemos definir las clases de maquinas que aceptan lenguajes libres de contexto, lenguajes sensibles al contexto y lenguajes generados por gramáticas de estructura de frases.

Maquinas Turing
Las maquinas turing son una importante tipos de maquinas. igual que las maquinas de estado finito, siempre guarda un estado particular. Se dice que la cadena de entrada a una maquina Turing es una cinta que es infinita en ambas direcciones.

Una maquina de este tipo, lee carácter por carácter y después de cada leída, la maquina se detiene o hace una de las funciones, ninguna o todas: altera el carácter, se mueve a la izquierda o a la derecha, cambia el estado, entonces se puede cambiar la cadena de entrada.

Una maquina turing T de aceptación una cadena a si, se alimenta a a T, T se detiene en un estado de aceptación.

Esto se puede demostrar que un Lenguaje L (o sea, un lenguaje variable) se genera por una gramática de estructura de frases si y solo si existe una maquina Turing que acepte a L.

La verdadera importancia de estas maquinas turing es que cualquier función que se puede hacer en una computadora, se debe de calcular en una maquina Turing, a esto se le llama hipotesis de Turing o tesis de Church. nos dice que una maquina de Turing es como una abstracción de una computadora digital.

Entonces podemos decir que un algoritmo es una maquina de Turing que, dada una cadena de entrada, en algún momento se detiene.



Bibliografia:
MATEMATICAS DISCRETAS. Sexta edición.
Johnsonbaugh, Richard
PEARSON EDUCACION, México, 2005
Área: Universitarios.


PD. es el libro que utilizamos en la materia de Mates discretas, la pagina donde viene esta información es en la 537. Lo pueden conseguir en google books. en este link


En este video podemos  ver una maquina turing en funcionamiento.



Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

sábado, 30 de octubre de 2010

domingo, 24 de octubre de 2010

Lenguajes funcionales R

Esta entrada es para laboratorio de lenguajes 
R es un lenguaje de programación con funciones para estadística y gráficas.
Para esta entrada de laboratorio mostrare una grafica de barras.
Supongamos que una empresa nos pide una grafica en donde podamos ver las toneladas de papel que han comprado en el primer semestre del año de forma rapida y eficaz, para eso nosotros como programadores, podemos realizar una simple grafica en el lenguaje R con pocas lineas.
Les mostraré como lo podemos hacer.


Para empezar, abrimos el r-base en la consola.

Estos son los datos que nos dan.

Año 2010
Enero         134 toneladas
Febrero      123 toneladas
Marzo        241 toneladas
Abril          279 toneladas
Mayo         287 toneladas
Junio         301 toneladas

ingresamos los datos.
>meses <- 1:6
> toneladas <- c(134, 123, 241, 279, 287, 301)


utilizamos la funcion plot para hacer la grafica
en este caso utilize el tipo h que es una grafica de barras con color rojo y el ancho de la barra sera de 15.
> plot(meses, toneladas, type="h", col="red", lwd=55, main="Primer semestre del año 2010")


Podemos cambiar los valores, si por ejemplo nos piden una grafica para ver el avance de la empresa en el transcurso del tiempo, con lineas.
> plot(meses, toneladas, type="l", col="blue", lwd=15, main="Primer semestre del año 2010")



Podemos ver que es realmente sencillo hacer la grafica, la podemos guardar como imagen y utilizarla para lo que queramos.


Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.


miércoles, 13 de octubre de 2010

Proyecto de Medio Curso

Aquí les dejo el video de mi proyecto en donde explico lo que hace y como funciona.




Para ver el video haz clic aqui.
Para descargar los archivos de mi proyecto has clic aqui. (estan en .zip)

Proyecto de Medio Curso

Aquí les dejo el video de mi proyecto en donde explico lo que hace y como funciona.




Para ver el video haz clic aqui.
Para descargar los archivos de mi proyecto has clic aqui. (estan en .zip)