miércoles, 17 de noviembre de 2010

Reporte # 8 Lenguaje Multiparadigmas

Lenguajes Multiparadigmas

Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”.
El objetivo en el diseño de estos lenguajes es permitir a los programadores utilizar el mejor paradigma para cada trabajo, admitiendo que ninguno resuelve todos los problemas de la forma más fácil y eficiente posible.
Por ejemplo, lenguajes de programación como C++, Genie, Delphi, Visual Basic o PHP, combinan el paradigma imperativo con la orientación a objetos. Incluso existen lenguajes multiparadigma que permiten la mezcla de forma natural, como en el caso de Oz, que tiene subconjuntos (particularidad de los lenguages lógicos), y otras características propias de lenguages de programación funcional y de orientación a objetos.

Lenguaje Oz

El Sistema de Programación Mozart es una plataforma de desarrollo avanzada para aplicaciones inteligentes, distribuidas. El sistema es el resultado de una década de investigación en el diseño de lenguajes de programación y aplicación, la inferencia basada en restricciones, la computación distribuida, y las interfaces humano-computadora. Como resultado, Mozart no tiene igual en potencia expresiva y funcionalidad. Mozart tiene un entorno interactivo de desarrollo incremental y una aplicación de calidad de producción para las plataformas Unix y Windows. Mozart es el fruto de una colaboración de investigación en curso por el Consorcio Mozart.Mozart se basa en el lenguaje de Oz, que apoya la programación declarativa, la programación orientada a objetos, programación con restricciones, y la concurrencia, como parte de un todo coherente. 

Ejemplos:
Lo que el codigo realiza es insertar Key,Value en el árbol binario TreeIn y poner la salida en TreeOut

proc {Insert Key Value TreeIn ?TreeOut}
   case TreeIn
   of nil then TreeOut = tree(Key Value nil nil)
   [] tree(K1 V1 T1 T2) then
      if Key == K1 then TreeOut = tree(Key Value T1 T2)
      elseif Key < K1 then T in
        TreeOut = tree(K1 V1 T T2)
        {Insert Key Value T1 T}
      else T in
        TreeOut = tree(K1 V1 T1 T)
        {Insert Key Value T2 T}
      end
   end
end



GO
GO es la nueva propuesta de Google para incursionar en otro campo más que le quiere arrebatar a Microsoft: Los lenguajes de programación. GO es el lenguaje de programación de Google y entre sus más destacadas características se encuentra el hecho de ser de código abierto, a diferencia del lenguaje de Microsoft.

Ejemplo:   

 package main

   import fmt "fmt"  // Package implementing formatted I/O.

    func main() {
    fmt.Printf("Hello (:")
    }





*En el codigo de GO no es necesario los punto y coma despues de cada declaracion.


Bibliografia de los ejemplos:
Pagina mOZart http://www.mozart-oz.org/
Ejemplo: http://manzanamecanica.org/?q=node/582/
Ejemplo y Tutorial GO http://golang.org/

**Agregue lo que realiza el codigo primero ;)**

Reporte # 7 Lenguajes Orientados a Objetos

Programación Orientada a Objetos
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.
 
Clases en POO
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. 
 
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. con los objetos.
 
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
 
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto:
miCoche = new Coche() .
Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche.
 
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación.
 
Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.

JAVA
El primero que realice en Java-Eclipse  fue el HolaMundo para comprobar que funcionara adecuadamente (: 
C



C++
Aqui dos programas sencillos:
1.-Suma de dos enteros



2.- El volumen de un cubo


Saludos!


Tutorial/Referencias
Java-Eclipse - http://www.youtube.com/watch?v=JbcB3AUwVBY
Eclipse-downloads - http://www.eclipse.org/downloads/