Linguagem de Programação GO

Hoje, algumas pessoas no twitter e até mesmo aqui na UFABC me mandaram um link: http://golang.org/. Parece que é uma linguagem desenvolvida pelo Google, para procedimentos internos, sejam lá quais eles forem.

Resolvi dar uma olhada no site, nos exemplos, para ver o que há de novo. Primeiramente, o típico “Hello World” em Go:

package main
import "fmt"

func main() {
  fmt.Printf("Hello, world\n")
}

Minha primeira impressão foi: meu Deus, reinventaram o Java! Sintaxe C/C++, construções estranhas (fmt.Printf?). Mas fica pior:

func nextInt(b []byte, pos int) (value, nextPos int)
func ReadFull(r Reader, buf []byte) (n int, err os.Error)

Percebem? Uma função chama-se nextInt, a outra ReadFull. Me lembra do PHP e suas funções sem padronização de nomes… e a sintaxe?

package main
import (
    "os";
    "flag";  // command line option parser
)
var omitNewline = flag.Bool("n", false, "don't print final newline")

const (
    Space = " ";
    Newline = "\n";
)

func main() {
    flag.Parse();   // Scans the arg list and sets up flags
    var s string = "";
    for i := 0; i < flag.NArg(); i++ {
        if i > 0 {
            s += Space
        }

        s += flag.Arg(i)
    }

    if !*omitNewline {
        s += Newline
    }
    os.Stdout.WriteString(s);
}

Conforme a própria documentação do google, isso faz algo semelhante ao “echo”, do linux. O código em Ruby?

omitir_quebra_linha = ARGV.delete '-n'

texto = ARGV.join(" ")
texto += "\n" unless omitir_quebra_linha
print texto

Pelo que me pareceu, GO é uma mistura entre as piores coisas de C++ e Pascal. Aliás, o que é isso:

var s string = "";

Intuitivo? As aspas são atribuídas a quem? À variável “string”, ou ao “s”? Para que exatamente serve a palavra “var”? Na documentação, eles informam que é possível iniciar uma variável sem usar o var, mas usando :=, quer dizer, temos duas sintaxes para atribuir valores às variáveis! Eu gosto da forma que Ruby e outras linguagens me oferecem para resolver o mesmo problema de várias formas diferentes, mas aplicar isso para declaração de variáveis não é um pouco extremo? Só para terminar esse artigo, vai um trecho do site de Go:

Why are you creating a new language?

Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame(…)

Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern(…)

Moderna? Linguagens mais novas tentam nos soltar da idéia de “sintatic salt”, ou usar ponteiros, referências, <pacote>.<pacote>.<class>.<metodo> para fazer até as coisas mais simples…

Como disse AkitaOnRails, “Síndrome de ‘Não Inventada Aqui’…

Advertisements
This entry was posted in Linguagens de Programação and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s