sexta-feira, 25 de abril de 2008

Web 2.0: o que realmente foi, é e vai ser?

Estes últimos dias estive estudando a possibilidade de dar uma palestra sobre Web 2.0 para os calouros aqui da faculdade. A gente percebe claramente que a maioria deles entra na universidade achando que a Web atual se resume a Orkut/Wikipedia/Google. Seria interessante mostrá-los que há muito mais coisas interessantes que eles poderiam aproveitar. Quem sabe já ir botando na cabeça deles a idéia de criar um serviço na web e montar uma empresa em cima disso.

Apenas mostrar um monte de sites interessantes (Delicious, Twitter, Digg-likes, blogs, agregadores de blogs e outros) já seria legal, mas eu queria mostrar mais do que isso, fazê-los entender em que contexto a Web está hoje. Posso tentar.

A chamada Web 2.0 pode ser resumida (salvo exceções) num só conceito: o foco nas pessoas e tudo em volta delas.

Pouco tempo atrás (5 anos ou mais), empresas que investiam na Web e em sites preocupavam-se principalmente com seus produtos, preços, como receber mais capital (olha o estouro da bolha). O usuário entrava no site isolado e indepedente de outros usuários, fazia sua compra/pesquisa/utilização e pronto. A navegação era muito focada em objetivos claros, que geralmente envolviam vender o produto de uma empresa.

Hoje, milhares de sites (os citados acima, por exemplo) provam que o usuário pode fornecer muita informação, pode gerar muita informação. A Wikipedia, por exemplo, percebeu isso e deixou os seus usuários gerarem e alterarem toda a informação contida no site. Outro exemplo é o Camiseteria, que não contrata designers para fazer estampas. Os seus próprios usuários criam e enviam para a comunidade do site. As mais votadas são fabricadas e vendidas, não antes de premiar os designers mais criativos.

Vários outros serviços tem um contexto similar: Flickr, videolog, Youtube e blogs em geral são lugares onde a pessoa pode compartilhar alguma produção sua ou de outros, seja imagem, vídeo ou texto. Novamente: o usuário gera informação.

Muito ligado com estes últimos exemplos está o conceito Social. Hoje qualquer site que se preze tem uma "camada social". Um modo de seus usuários interagirem entre eles, seja através de comentários ou ae de uma própria rede social integrada.

Ainda atrelado a este conceito estão os serviços que se enquadram na categoria de Social Media, sites que se aproveitam da "sabedoria das multidões". Na Web 2.0 não basta uma pessoa dizer que algo é bom ou ruim, é mais interessante cada um dar sua opinião. No final, a opinião coletiva vence.

Tá, já sabemos que o usuário é o grande centro das atenções. Todos os dias pipocam startups propondo serviços que você nem imagina que possa precisar (muitas vezes não precisa mesmo). O que falta fazer?

Alguns conceitos devem se fortalecer e talvez dar vida a novos serviços.
  • Personalização
  • Interoperabilidade
  • Convergência
O usuário quer fazer determinada coisa de qualquer lugar e do seu próprio jeito único e quer fazer o máximo de coisas sem precisar ir em vários sites/lugares diferentes.

Na Web 2.0 a informação se tornou um recurso de suma importância, tanto na forma de notícias, artigos e páginas Web, quanto na forma de dados pessoais de usuários. O Google sabe muito bem disso.
Peter Norvig, diretor de pesquisa do Google resumiu bem a idéia, na Startup School 2008:

"Consiga dados; especialmente dados sobre outras pessoas. Qualquer um pode ir na Web e conseguir 1.7 bilhões de palavras. Faça isso e depois faça algo com elas (análise, algoritmos, busca)". (Extraído desse resumo da conferência)

As empresas que souberem como conseguir e tratar dados do usuário e transformá-las em informação útil sairão na frente, quem sabe, na Web 3.0.

Leia também:

segunda-feira, 7 de abril de 2008

Os aplicativos estão indo para a Web. Vamos parar de compilar programas?

Um compilador transforma um código fonte (linguagem de programação) em um código binário correspondente que a máquina consiga ler e executar. Já um interpretador lê o código fonte (linguagem de programação) ou um código intermediário e executa as instruções diretamente.

São duas formas distintas de executar um programa, ambas tem as suas vantagens e desvantagens (não vou entrar no mérito). A pergunta é: o que vai prevalecer daqui pra frente?

Existem duas tendências que podem ser observadas hoje em dia:

  • A necessidade de portabilidade entre plataformas torna-se notável com o aumento do uso de dispositivos móveis e dos Sistemas Operacionais baseados em Linux e para computadores Mac. Para suprir todos os nichos as empresas necessitam desenvolver software para todas as plataformas, a maneira mais eficiente de fazê-lo é utilizando tecnologias de fácil portabilidade.

  • Várias aplicações normalmente utilizadas off-line estão migrando para a Web. Calendário, agenda, gerenciamento de projetos, editor de textos, e-mail entre outras ferramentas começam a ser mais utilizadas através do navegador e não na forma de um programa instalado no computador do usuário. Essa tendência vem crescendo nos últimos anos e é provável que usaremos cada vez menos programas instalados no computador. O conceito de Software como um serviço (SaaS) representa bem esta nova tendência.


Tendo em vista estes dois pontos pode-se observar que muitos aplicativos já são utilizados através da Web ou estarão migrando num futuro próximo. Nos sites e serviços baseados na Web o uso de linguagens interpretadas é absoluto e isso provavelmente não irá mudar. Escrever um programa em C para tratar um formulário de um site e acessar o Banco de Dados não faz muito sentido, já que linguagens como PHP, Perl ou Ruby são eficazes, eficientes e muito mais amigáveis para o desenvolvedor.

Devido a esses fatores, é visível que as linguagens interpretadas tendem a predominar sobre as compiladas, mas de forma alguma isso significa que as linguagens compiladas cairão em desuso. Linguagens como PHP são muito utilizadas no chamado Front End, parte da aplicação mais ligada a interface com o usuário. Linguagens compiladas como C/C++ ainda são mais indicadas e largamente utilizadas no Back End, parte da aplicação responsável pelo processamento dos dados.


Fonte:
TIOBE Programming Community Index for March 2008