domingo, 29 de agosto de 2010

Primera Presentación

Hola compañeros, pues bueno me tarde un poco en subir mi presentación pero fue por cuestiónes de tiempo y porque no tenia acceso a Internet  : P

Como sabrán el martes pasado la gran mayoría de nosotros expusimos la primera presentación del curso, la cual corresponde a las etapas de compilación.
Pues bueno el tema que me toco exponer a mi junto a mis compañeros Oscar y Daniel
fue la de Generador de Código Intermedio.

Antes de que se me pase, este es el libro que utilizamos para realizar nuestra presentación se llama “Compiladores: principios técnicas y herramientas de Alfred V. Aho - Ravi Sethi, el editorial es PEARSON ADDISON-WESLEY, es uno de los pocos libros sobre compiladores en español, así que creo que vale la pena leerlo un poco.

Lo pueden descargar de manera electrónica en la siguiente dirección
http://freelibros.com/2009/06/compiladores-principios-tecnicas-y-herramientas.html
Cualquier problema con los links avísenme ;)


En si el tema no es muy extenso ni tampoco muy difícil de entender, pues bueno a continuación les dejo las diapositivas que utilizamos para la presentación ;)


domingo, 22 de agosto de 2010

Lenguaje de Programación TCL /TK

Anteriormente hablamos un poco sobre lo que era programación y sobre los paradigmas de los lenguajes, ahora nos enfocáremos un poco a un lenguaje de programación que entra en la categoría multiparadigma, ya que en si este posee varias características de varios paradigmas. Nos referimos al lenguaje de programación TCL y profundizaremos un poco en su extensión TK

TCL por sus siglas en ingles (Tool Command Language) o en español “Lenguaje de Herramientas de Comando” es un tipo de lenguaje de programación perteneciente a la categoría de lenguajes script (Lenguaje Interpretado) - Para que no halla confusiones, mas adelante estudiaremos más a fondo los distintos tipos de lenguajes script, ya que estos lenguajes no pertenecen a algún tipo de paradigma en especifico, ya que poseen características de varios paradigmas.-

Este fue creado por John Ousterhout con la finalidad de crear un lenguaje con una sintaxis sencilla pero sin decaer en su funcionalidad.

El principal uso que se le da al lenguaje, es para el desarrollo rápido de prototipos, pruebas, aplicaciones script e interfases graficas.


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 agregan a los comandos originales de Tcl nuevos comandos escritos en C/C++.

La extensión más conocida, que es donde profundizaremos es Tk (Tool Kit). Tk, creada por el propio John Ousterhout, proporciona un intérprete denominado wish (para Tcl/Tk 8.0, wish80), que añade a los comandos de Tcl, comandos capaces de crear interfaces gráficas 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.


Este lenguaje esta disponible para varias plataformas, entre ellas Linux y Windows. El editor que utilizaremos será para Windows ya que mucha gente no esta familiarizada con el uso de Linux, de igual manera si queremos programar en esta plataforma, podremos utilizar el editor emacs.En si el editor de TCL no posee capacidad grafica, en Windows se utiliza una interfaz de ms-dos como la siguiente:
Cabe mencionar como nosotros utilizaremos en conjunto TCL con la extención TK este editor combinado ya posee una interfaz grafica como la siguiente:


Desde aquí comenzaremos a programar en TCL/TK.

Ahora pasaremos a una breve descripción de sintaxis, primeramente con variables, luego con estructuras de control y por ultimo operaciones.
El comando set es usado para asignar un valor a una variable. Toma dos argumentos, el primero es el nombre de la variable y el segundo el valor que debe tomar esa variable. No es necesario declarar en Tcl las variables que se van a usar. El intérprete crea la variable cuando esta se utiliza por primera vez . El valor de la variable puede obtenerse mediante el signo $.
Ejemplo:
------------------------------------------------------------------
% set a 12
12
% set b $a
12
% set b 12
--------------------------------------------------------------------------------

En este ejemplo puede verse cómo inicialmente se asigna el valor 12 a la variable "a"; posteriormente se asigna el valor contenido de la "variable a" la "variable b", que lógicamente toma el valor 12.
No profundizare demasiado ya que todos estos conceptos vienen en el manual que pondré mas adelante y seria imprudente realizar un "copy page" .Esta explicación es para dar una breve noción de como podemos trabajar con este lenguaje.
Las operaciones y las estructuras de control tienen cierta similitud a lo que vimos anteriormente en el Lenguaje C, por lo que no será de gran dificultad para nosotros, igualmente en el manual que pondré mas adelante esta explicado con claridad.

Ahora un programa escrito en TCL/TK el clásico "Hola mundo! "
-------------------------------------------------------------------------------

button .hola -text "Hola Mundo" -command {puts "Hola Mundo!!!"}



pack .hola -padx 20 -pady 10
--------------------------------------------------------------------------------

Esto nos imprimirá una pantalla como la siguiente:
Como podemos observar y como mencionamos antes, es un lenguaje muy util a la hora de realizar puequeñas aplicaciones graficas y muy eficientes, ademas con su sintaxis sencilla, no es de gran  dificultad utilizar este lenguaje, yo creo que vale la pena adentrarse un poco en el  ;)

Bueno ahora si les dejo unos cuantos links, con informacion y herramientas necesarias para programar en este lenguaje.

Manual de TCL / TK en español
http://www.etsimo.uniovi.es/tcl/tutorial/

El editor que utilizaremos bajo la plataforma Windows. (Link directo)
http://prdownloads.sourceforge.net/tcl/tcl805.exe

Aquí un blog con varias aplicaciones programadas en TCL/TK
http://txtplano.blogspot.com/search/label/tcl

Manual de TCL/TK (En ingles)
http://www.beedub.com/book/

Y unas cuantas referencias en Internet
* http://es.wikipedia.org/wiki/Tcl
* http://en.wikipedia.org/wiki/John_Ousterhout
* http://www.tcl.tk/about/history.html
* http://www.tufuncion.com/diferentes-lenguajes-programacion
* http://es.wikipedia.org/wiki/Script








lunes, 9 de agosto de 2010

Introducción a los lenguajes de programación

Para introducirnos al estudio de los lenguajes de programación, seria esencial primeramente familiarizarnos con algunos conceptos básicos, que nos serán de gran ayuda ya que los estaremos aplicando en el transcurso del curso.

Cada uno de nosotros tenemos nuestra idea de los que es la programación, pero realmente que es la programación?
Desde distintos puntos de vista la palabra "Programación" suele sonar un poco ambigua, ya que en si el concepto puede reflejar distintas ideas. Nosotros simplemente nos enfocaremos a la "Programación" en el campo de las ciencias de la computación.

Una definición sencilla, podemos expresar que la programación es un conjunto de técnicas y habilidades que empelamos para la elaboración de software. Dichas técnicas se conocen como paradigmas de programación.

Por lo general para poder iniciar a programar, es como requisito primordial una computadora personal que dependiendo las actividades que realizaremos serán los requerimientos de la misma. Por lo general la importancia en la programación siempre radica principalmente en dos elementos: En la Unidad Central de Procesamiento (CPU) y Memoria.

Pasando ahora a los paradigmas de programación, los definiremos formalmente como procesos de diseño que van más allá de una gramática, reglas semánticas y algoritmos, dicho en palabras más simples que es un conjunto de métodos sistemáticos aplicables en todos los niveles del diseño de programas. Esta definición es tomada de Robert W. Floyd -científico dedicado a la investigación informática-.

Los paradigmas de programación podemos clasificarlos en cuatro categorías, de las cuales se derivan la mayoría de los lenguajes de programación, dichos paradigmas son:


*Paradigma Imperativo.


*Paradigma Funcional.


*Paradigma Lógico.


*Paradigma Orientado a Objetos.


No profundizare mucho en cada paradigma, ya que conforme avancemos en el curso conoceremos mejor sus características y aplicaciones más a fondo.

El paradigma imperativo este se conforma principalmente de oraciones o conjunto de instrucciones que le indican a la computadora que instrucciones realizar. Los elementos más importantes de este paradigma son las variables, los tipos de dato, expresiones y estructuras de control. Los lenguajes que siguen este modelo son: C, FORTRAN, ALGOL, Pascal y Cobol.


El paradigma funcional se compone a base de funciones, principalmente funciones matemáticas. Como su funcionamiento se basa en funciones el paradigma funcional considera al programa como una función matemática, donde el dominio representaría el conjunto de todas las entradas posibles (inputs) y el rango sería el conjunto de todas las salidas posibles (outputs).
Los lenguajes que siguen este modelo son: Haskell, Haskell, Scala, Lisp, Scheme, Ocaml, SAP y Standard ML.

El paradigma lógico a diferencia de los demás paradigmas, trabajar en este significa especificar qué hacer y no cómo hacerlo, por ello son llamados lenguajes declarativos. El proceso general de la programación lógica es que a partir de un conjunto de reglas podamos comprobar nuevas proposiciones que nos sean relevantes. Este proceso está basado en reglas de lógica.
El lenguaje que sigue este modelo es Prolog.


Finalmente el paradigma orientado a Objetos la particularidad de este paradigma es que cuando programamos es como simular o modelar objetos del mundo real.
Un objeto está compuesto por estados y métodos. Los estados son propiedades del objeto y están representados por variables con valores únicos para cada objeto y que son llamadas variables de instancia. Los métodos son representaciones de los comportamientos que el objeto es capaz de hacer.
Algunos ejemplos de lenguajes que siguen este modelo son: Java, C++, PHP, Python, C#, Delphi, Ruby, D y Actionscript.

Ya casi para terminar mencionaremos que la importancia de programar también comprende ciertas etapas, como lo son la de diseño, la de implementar y depurar, para ello se utilizan muchísimas herramientas disponibles.

Con la programación se pueden realizar muchísimas cosas, algunos inclusive la consideran como un arte, ya que en si se dice que se requiere mas creatividad para programar que conocimientos mismos en el lenguaje.

Los resultados que obtendremos con la programación, son aplicaciones de uso diario, software de calidad, sistemas operativos, bases de datos o determinada aplicación para resolver cierto tipo de problema, es por ello que su campo es muy amplio y sigue en constante crecimiento.