Liberdade – fora com ela!

Imaginemos uma situação hipotética: você vai até uma loja de roupas famosa, que possui as roupas mais duráveis e bonitas e escolhe uma calça. Na hora que você vai pagar, você tem o seguinte diálogo com o atendente:

Atendente: Bom dia, senhor. Antes de pagar, o senhor sabe que você não pode usar essa calça para ir para festas, não sabe?
Você: Desculpe… como assim?
A: O fabricante dessa calça proíbe terminantemente de usar a calça em festas, baladas, raves, ou similares…
V: Como é?
A: E também, você vai encontrar na etiqueta da calça um site. Note que apenas as roupas listadas naquele site podem ser usadas com essa calça…
V: Desculpe, do que você está falando? Quer dizer que o fabricante recomenda as roupas que eu posso usar com essa calça?
A: Não, senhor, o senhor entendeu mal. O fabricante proíbe que você use qualquer outra roupa com essa calça. Caso o senhor seja pego usando uma roupa diferente do que ele citou no site, confiscaremos a calça e o senhor terá que pagar uma multa…
V: Desculpe, eu gostaria…
A: Aproveitando, o senhor não pode modificá-la, alterá-la, tingí-la…….

Parece absurdo? Bom, de fato é. Mas então, por que as pessoas concordam que a Apple faça isso com seus produtos? O mais novo brinquedinho deles, o iPad, é tão restritivo quando o iPhone, que por si só já é o maior absurdo tecnológico da história – mas não, é Apple! Tem que ser bom, não?

(more…)

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?
(more…)