lunes, 16 de agosto de 2010

Semana 3: Lenguaje de programacion GO

Hola de nuevo, en esta entrada escribiré acerca del lenguaje de programación GO de la compañia google.

Mascota del lenguaje :P

Resumí sobre los aspectos que considero importantes sobre este lenguaje.
  • GO es un lenguaje de programación relativamente nuevo, apareció el año pasado.
  • Está inspirado el lenguaje C, aunque también incluye algunos elementos de Python, así como de Pascal entre otros.
  • Sus diseñadores mas importantes son Robert Griesemer, Rob Pike y Ken Thompson.
  • El paradigma de programación es imperativo y concurrente.
  • Está diseñado para resolver problemas para aprovechar al máximo los procesadores de múltiples núcleos, así como para navegadores Web y para la programación orientada a objetos.
  • Actualmente solo se puede compilar en los SO de Linux y Mac.
  • La compañía Google, crea este lenguaje pretendiendo ser eficiente para nosotros como futuros programadores.

Aqui les dejo el link del manual "Learning GO!"



El Compilador. 
Bueno pues yo batalle un poco en instalar el compilador y al final lo he logrado, aqui les pongo los pasos que yo hice para instalarlo en ubuntu.

Primero tienes que poner en el terminal.

gedit ~/.bashrc

Se te abre un archivo al cual le tienes que poner estas lineas.


export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=386
export GOBIN=$HOME/bin
export PATH=$PATH:$GOBIN

Nota que en la tercera linea, puede ser cambiado según la arquitectura de tu procesador,  si es amd64 o arm, para mi computadora era el 386.

Guardas el archivo y pones esto en el terminal

source ~/.bashrc 

Ahora creamos un directorio

mkdir $GOBIN

Ahora vas  instalar Mercurial que es el cliente para controlar las versiones.

 sudo apt-get install mercurial

Instalas estos paquetes.

sudo aptitude install bison gcc libc6-dev ed

Descargas  

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

luego compilas lo descargado

cd $GOROOT/src
./all.bash

Al finalizar deberá decir

— cd ../test
0 known bugs; 0 unexpected bugs

Pero a mi computadora, me aparecía 1 known bugs, según investigué ese numero varia por la versión.

Ahora ya haz instalado el compilador, para probarlo puedes hacer un pequeño programa como el conocido hola mundo!

package main

import “fmt”

func main() {
fmt.Printf(“Hola mundo!!\n”);
}

Para compilar lo unico que tienes que hacer es abrir la terminal y poner

8g hola.go

luego

8l hola.8

después para ejecutar

./8.out

nota que el numero 8 puede cambiar segun la arquitectura de computadora.

amd64 = 6.
386 = 8.
arm = 5.

y tendras la salida en el terminal con el texto "Hola mundo!".

Ejemplo en lenguaje GO

Cuenta longitud de una cadena y la serie fibo en GO
package main

import "fmt"

func main() {
        cadena := "Esta..es..una..prueba..GO!"
        fmt.Printf("La cadena: \n%s\nTiene una longitud: %d\n", cadena, len([]byte(cadena)))

    var a int
    var b int
    var c int
   
    b = 0
    c = 1   

    fmt.Printf("Ahora va la serie fibo :)...\n")   

    for n := 0; n < 20; n++ {
        a = b + c
        c = b
        b = a
        fmt.Printf("%d ,", a)
    }
}

Aqui les dejo el link de el código fuente
 
Aqui les dejo tambien el link del sitio web de GO, pueden encontrar mucha información.

También les dejo un vídeo de la presentación del lenguaje, incluso pueden ponerle subtítulos en español




Si tienen algún comentario acerca de mi publicación, espero me lo hagan saber ya que estoy abierto a cualquier error.

Roberto :)



3 comentarios:

  1. Muy interesante tu publicación compañero. Sólo que quisiera saber que pasa con el compilador en los procesadores Intel.

    Ahora bien, en parte se fundamenta en el lenguaje C, el cual usaba su preprocesador “#include”. En este nuevo lenguaje, ¿cuál viene siendo ese preprocesador?

    Además, note algo interesante en el código que incluiste. ¿A qué se refiere lo de import “fmt”? ¿Qué se importa ahí? Eso es en cuestión de preguntas.

    Y respecto a este lenguaje, es cierto lo que afirmas al decir que Google “pretende” lanzar un lenguaje más eficiente. ¿A qué me refiero?, que no podemos saber cuando un lenguaje en verdad lega a ser eficiente sin antes que tenga cierto tiempo y aplicación útil en el mundo de la programación.

    Aqui también me viene un pensamiento sobre los lenguajes de programación que están actualmente. Considero que cada lenguaje a salido para cubrir las necesidades que se presentan y que los lenguajes que estaban en existencia en ese lapso de tiempo, no cubren las expectativas. Por lo que me hace concluir que Google hizo lo mismo, pero la pregunta sería: ¿qué necesidad es la que ya no se cubre actualmente con los lenguajes que tenemos?

    Ahora bien, Google es una compañía muy fuerte. Es posible que eso ayude mucho en la colocación de este nuevo lenguaje, junto con la colaboración de quienes lo utilicen, ya que eso hará que lo mejoren en determinado momento, supongo yo, claro.

    Pero en fin, me agrado la información. Muy buena la aportación sobre la materia. Saludos.

    ResponderEliminar
  2. Hola! Muy bien Roberto, mira para empezar, en la pregunta de los procesadores de Intel, puedes utilizarlo, a lo que se refiere con 386, amd64 o arm es según la implementación de el conjunto de instrucciones de tu procesador amd64 = x86-64, que por ejemplo, en una computadora tengo Core 2 duo y utiliza este tipo de arquitectura, en este caso compile en una hp mini que tiene intel atom, utiliza el conjunto de instrucciones x86, por eso utilice 386 y el arm, utiliza la arquitectura ISA.

    El equivalente en GO a #include seria import "fmt" que es, por así decirlo, la librería de entrada y salida.

    Las ventajas de GO según como he leído y comenté al principio de la publicación es que está diseñado para aprovechar los procesadores de múltiples núcleos,cosa que cuando por ejemplo C++, que le lleva casi 20 años, pues no se aprovecha eficientemente y en cuestión de hardware está cambiando constantemente, aunque tampoco podemos predecir el futuro y decir que se va a mantener, la verdad creo que depende mucho según para lo quieres utilizar y si trabaja bien para ello.

    Roberto:)

    ResponderEliminar
  3. Muy bien. Te pongo tres por el reporte y uno por participación.

    ResponderEliminar