Archive | janeiro 2011

Sopa de letrinhas

Hoje recebi uma mensagem de um amigo que não conversava havia muito, e ele me disse que estava desenvolvendo alguns aplicativos baseados em planilhas do Excel mas que achava que isso impunha muitas limitações e deixava brechas muito grandes para a distribuição não autorizada de seu trabalho.  Welcome to the jungle.

Em sua mensagem ele disse:

“Queria transformar em sistema. Me falaram numa linguagem chamada PHP, que além de desenvolver sistema, também cria sites.”

Então é assim, vamos à sopa de letrinhas, mas aviso aos navegantes: eu não sou um bom cozinheiro. Só faço gororoba, então preparem os copos de água para ajudar no “engolimento”.

“Vejemos”, hum… começar por onde? Quais ingredientes temos aqui? hum. PHP, sistema, segurança, linguagem, sites, criação… hum…

O propósito das coisas

O começo é que tudo tem que ter um propósito.  Até eu, escrevendo aqui supostamente para dar uma força ao meu amigo, lá, estou em meu nobre propósito narcisista e egocentrico. Ah é, tem o lance de compartilhar informação né? Boa, bem lembrado.

Um “sistema” precisa ter um propósito, e este é geralmente, gerar mais dinheiro para alguém, como resultado de aumento de produtividade, redução de custos, diminuição de desperdício, sei lá. O fato é que geralmente, muito frequentemente, um “sistema” tem o propósito de gerar dinheiro. Este parágrafo sobre o propósito das coisas tem seu propósito: alertar para o fato de que nós programadores, iniciantes ou experientes, temos sempre que estar muito atentos.

A matemática em nossas vidas

E por que estar atentos é tão importante? Porque precisamos escolher as ferramentas mais adequadas para cada tipo de trabalho que precisamos executar.  E “adequada” é um parâmetro um tanto subjetivo. Aliás, tudo fora da matemática é subjetivo.  Os únicos no mundo habilitados a provarem algo, desculpe dizer, são os matemáticos – O Maior Espetáculo da Terra, Richard Dawkins – Compahia Das Letras – Tudo o que não é matemática pura, é subjetivo.

Psiu, ou, você aí do fundão! Acorda, não tou falando de substantivo com adjetivo, formando subjetivo. Tou falando que algo que se baseia em uma concepção do espírito.  Vejam aqui a definição – e aproveitem para lembrar de o quão linda e poderosa é a internerd (internerd = internet de nerds).

Escolha a ferramenta mais adequada: aquela que está à mão, serve!

Voltando à questão da subjetividade da adequação de nosso ferramental, afirmo isso porque mesmo na clássica situação do prego e do martelo, em que um martelo é obviamente a ferramenta mais adequada para a execução da tarefa de pregar um prego, pode acontecer de o martelo simplesmente não ser uma opção por simples indisponibilidade!  Quem não tem cão, caça com gato.  E aí, o gato vira o melhor amigo do homem, pelo menos naquele momento.

No mundo corporativo, o pragmatismo costuma ser mais eficaz e eficiente do que o teorismo.  Vamos em frente.

Daí nós decidimos que seremos práticos, e que já entendemos o que precisamos fazer.  Também já sabemos que temos que selecionar a ferramenta mais adequada para nosso trabalho mas aceitamos que nem sempre a ferramenta mais adequada está disponível.  Então vamos saber um pouco mais sobre as ferramentas disponíveis.

Papel Higiênico da informática?

PHP.  Ahhh, o bom e velho PHP.  Papel Higiênico Pessoal!  Ahhh, como é bom poder ter nosso próprio rolo de PHP, só para nosso uso… opa, mas PHP não é isso!  PHP é Personal Home Page Tools?  Ãhn?  Dois, dois, quatro, quatro mil… Coméquié???

Pois é, o que significa realmente PHP nem os criadores do próprio sabem.  Um dia souberam, mas o PHP mudou tanto que o significado da sigla também foi sendo adaptado ao longo do tempo.  Saiba mais sobre a origem e evolução do PHP, aqui.  O que eu disse no parágrafo anterior não está claramente registrado na entrada da Wikipedia, mas vai ser muita nerdice eu ficar literalmente variando sobre o assunto, e não vai servir para nada. Esquece.

O que é importante saber sobre o PHP é o seguinte:

  1. Não é bem uma linguagem, no sentido clássico, mas um AMBIENTE de execução de scripts;
  2. É um monte de remendos que tiveram que ser criados para poder resolver problemas técnicos, para que mais dinheiro pudesse ser gerado;
  3. PHP não cria sites, nem sistemas;

O último item da relação anterior foi propositalmente escrito para eu poder chamar a atenção para um fato de importância aparentemente menor, mas que tem a maior das importâncias, na realidade.

Quem cria um sistema ou um site é o programador, não a linguagem ou o ambiente.

É bastante comum me perguntarem qual linguagem é mais indicada ou mais fácil de ser utilizada para se criar um “sistema”.  Nem vou me estender muito sobre isso porque a resposta padrão, “depende”, é quase que auto explicativa.  Prefiro falar sobre algo pouco compreendido.

Sistemas ou programas?

Lembram da sopa de letrinhas do título? A compreensão exata do que um termo quer dizer, da idéia que está por trás das letras que formam o termo, pode nos economizar muito tempo.

Vejam a definição de sistema.  Podemos ter um sistema composto por apenas um programa?  Em minha tola opinião, sim.  Se levarmos em consideração que o programa não é auto suficiente, que precisa estar integrado em um contexto maior que envolve um ou mais usuários, que vai demandar suporte, manutenção, treinamento, marketing, vendas etc, vemos claramente que um coitadinho de um “cadastrinho de clientes” lá, jogado nos confins de um diretório no disco rígido mais podre e barulhento de uma máquina que está esquecida debaixo do palco do teatro por algo em torno de 10 anos, é parte sim, de um sistema.

A propósito, o exemplo que citei acima não foi delírio meu.  Aconteceu de verdade, e o servidor era um Netware 3.15 que só foi descoberto quando o tal teatro precisou ser reformado.  E o servidor estava lá, servindo… tadinho, deve ter sofrido tanto nos 10 anos de anonimato.  Cadê a sociedade protetora dos servidores abandonados, pô?

Bom, então vamos combinar que nos dias atuais, dizer que vai criar um “programinha” não rola.  Dizer que vai criar um “sistema” não é correto – o sistema já existe, nós vamos integrar um componente, dinamizar algum processo, aumentar desempenho, ou em meu caso, criar pânico entre os usuários, sei lá.

O mais adequado seria dizer: “vou criar um aplicativo”.  Software aplicativo é um programa, ou programas, que tem uma aplicação.  Lembram? Propósito? Heim? Heim? Quem chegou atrasado na primeira aula, pegue o caderno do colega ao lado, mas devolva-o inteiro pelo menos.

Aplicativos ok, e os sites?

Ah é, os sites.  É mesmo… Aqui em Marília tem um “fessor” que disse certa vez que Java é linguagem para internet.  Daí um amigo meu que estava assistindo àquela aula, que por acaso era a primeira dele (do meu amigo, não do “fessor”) naquele curso, levantou e não voltou mais.  Em minha opinião, com muita personalidade e acertadamente, porque ele tinha acabado de “captar a mensagem, óh amado mestre” de que o curso seria um exercício de desperdício de tempo.  Mas outro dia eu falo sobre Java.

Sites web eram, inicialmente, conteúdo quase inteiramente estático apresentado para o usuário em um programa específico (aplicativo?).  Este blog é quase que inteiramente estático.  Tem pouca interação com você, leitor.

Hoje em dia, com o advento da tecnologia AJAX, os sites web ganharam um dinamismo muito maior.  Isso permitiu que desenvolvedores passassem (cuidado para não tropeçarem nos tantos S dessa palavra, melhor perguntar para o Tiririca como se conjuga passar no pretérito imperfeito) a desenvolver sites que eram tão ágeis como aplicativos para desktop.  Mas quais as vantagens de se fazer isso?

  • Desenvolvimento descentralizado;
  • Lançamento centralizado;
  • Aumento de segurança;
  • Diminuição da complexidade de operações de consolidação;
  • Independência de plataforma;
  • Independência de linguagem de programação;

Cada um dos tópicos acima daria um blog exclusivo, mas o que mais nos interessa hoje é o último tópico.

Linguagem para internet!

Isto pode ser um choque, mas um site web não é um projeto classificado como técnico ou funcional, mas como de comunicação.  Pense um pouco a respeito.  Você consegue realmente ler algo como isso?  Eu não.  Eu estou nesse momento olhando para uma pequena pilha de formulário contínuo, formato carta, que tem o conteúdo do link impresso.  Sabe quando eu imprimi isso?  Tem uns 4 anos.  Sabe quantas vezes eu li o documento na íntegra? Nenhuma.  Deve ser por isso que meu aplicativo de NewsGroups não terminou… nem comecei.  Nem vou começar.  Tem o INND, o CNews, o DNews etc etc etc… bah.

Quando a gente olha os créditos de um filme que assistimos e vemos a tonelada de nomes de pessoas que nem sonhamos que existem, por um momento nos damos conta da complexidade envolvida na produção daquela hora e meia de entretenimento barato e muitas vezes, fugaz.  Assim é, em concepção, com um bom site web.  Precisa ter um bom desenhista, um bom roteirista, um bom programador, um bom DBA (administrador de banco de dados), um bom vendedor, um bom usuário que não vai reclamar que o logo está meio pixel desalinhado para fora da margem esquerda etc.

E o programador que se rale para fazer tudo isso ficar junto em uma página. Ele precisa entender o que o cliente quer, que droga o designer tomou quando produziu aquela ilustração impossível de ser colocada em uma página, qual o problema psicológico que o DBA enfrenta, que o levou a usar vinte e cinco tabelas diferentes para armazenar os dados cadastrais básicos de um cliente, e por fim, antecipar para onde, na página, TODOS os usuários DIFERENTES no MUNDO, olharão primeiro.  Fácil!

E aí, o programador conhece os frameworks JavaScript.  Ahhh que maravilha!  Agora sim eu posso escrever meia dúzia de sete mil comandos apenas, para produzir uma página que o usuário irá classificar como “legalzinha”, no dia da apresentação.  E depois que terminar a apresentação, o usuário perguntará: “e funciona com leitor de códigos de barras também?”

– Mas você não tinha dito nada sobre nenhum leitor de códigos de barras, em nenhuma das reuniões que tivemos!!
– Ué, mas eu pensei que você soubesse, já que estamos criando um site sobre rastreamento de bois!  Nada mais óbvio!
– Por falar em bois, como anda a senhora… deixa pra lá…

Então o programador sai frustrado da reunião e lembra-se que tem um amigo que já fez um trabalho com leitores de códigos de barras.  O amigo diz que topa o serviço mas que só tem experiência em Perl.  Seja lá o que raios for isso, para o programador não interessa porque o ambiente da web é agnóstico.  Aceita tudo!

E por que o ambiente web é assim?  Porque o que apresenta o que está armazenado no servidor é uma pequena peça de software chamada navegador!  Ele interpreta o que está armazenado no servidor e apresenta para o usuário.  Não importa se a página está composta por um monte de códigos em PHP, Perl, JavaScript, CSS, ASP ou qualquer outra coisa obscura que possam inventar.  Ele, o navegador, é o candango que terá que interpretar toda aquela tripa de instruções e transformá-la em algo visual.

Contanto que exista uma página com um mínimo de formatação básica, em HTML, que é a língua franca da internet.  Tecnicamente nem é preciso ter a estrutura HTML, mas isso é papo de nerd que não tem namorada.  Eu tenho namorada!  Chegou ontem pelo correio e na caixa está escrito que ela infla com apenas três soprões! Estou louco para ver se é verdade mesmo ou se é igual à anterior. Bom, deixa isso pra lá.

Então quer dizer que não importa muito qual linguagem utilizar para criar um site?  E que eu posso criar um site que rivalize com um aplicativo desktop? E eu posso ficar popular se fizer isso?

Bom essa última parte eu não sei.  O Mark é popular mas eu não o vi ainda com nenhuma namorada.  Até o tio Bill conseguiu se casar, mas o Mark deve estar querendo conhecer a Magali, porque o guarda-roupas dele é da turma da Mônica… Acham que estou viajando? Vejam isso.

Mas as duas partes anteriores, são verdade.  Sim, você pode criar um site usando uma, duas, três, quantas linguagens de programação precisar.  Lembre-se: o gato pode ser o melhor amigo do homem.  E sim! SIM! SIM!!! Você pode criar um site que não apenas rivalize com um aplicativo desktop, mas que de fato, supere o aplicativo desktop.

Agora o balde de água fria

Hehe.  Tudo é lindo e maravilhoso no plano das intenções.  Mas no plano real, dá trabalho.  É como eu sempre digo: o trem é “bão”, mas dá “trabaio”.  Se você quiser produzir alguma coisa que preste, minimamente, precisará entender do seguinte:

  • Algum banco de dados: MySQL e PostgreSQL.  Firebird não é banco de dados.  É heresia. Eu recomendo o PostgreSQL.
  • HTML: saiba como acentuar “avião” de cabeça, saiba como usar uma DIV etc etc. SAIBA HTML!
  • CSS: nem pense em sair de casa se você não sabe CSS.
  • JavaScript: Essa linguagem não é o que todos pensam, que serve apenas para aumentar o tamanho de uma janela. É uma linguagem padronizada e muito forte.  Saiba mais sobre ela aqui.
  • Algum framework JavaScript: eu aconselho o YUI – Yahoo User Interface.
  • Inglês: é… não tem jeito.  Quer programar algo que preste? Vai ter que ler muita documentação.  Tem que se garantir no inglês, pra valer.
  • Macintosh: saia correndo do mundo Windows. Eu uso Windows em meu laptop, mas estou escrevendo esse blog em meu Mac. Sem virus, mais de 9 dias ligado.

    Mac não pára!

  • Safari: ok, se você não puder se desvencilhar do Windows, use um navegador que preste e faça um favor a si mesmo: desinstale o Internet Exploder. O tio Bill fez muitas coisas legais na vida dele, mas uma das piores que fez chama-se Internet Exploder.  O Safari, para quem não sabe, é o navegador por trás do Google Chrome.  O Chrome usa a engine WebKit, criada pela Apple e liberada como código aberto.  Colocando simplesmente, rebenta o Gecko de trás pra frente e – bom, papo de nerd de novo.
  • Um bom ambiente de desenvolvimento: um aplicativo editor de textos qualquer serve, mas dá trabalho. Minhas sugestões:
    • UltraEdit – ESSE é bão… é o que eu uso no Windows para tudo, até para programar em Clarion.  A versão para Mac acabou de sair e está boa, mas é um tanto lenta.  Eles já sabem do problema e já avisaram que estão resolvendo, mas isso é aceitável porque escrever para Mac OS não é fácil, e o UE é realmente muito rápido no Windows. Vale cada centavo do preço, que considero muito baixo.
    • Eclipse: Isso faz tudo. Nunca vi uma coisa assim.  Tenho certeza absoluta que esses caras, nenhum deles, tem namorada.
    • Aptana: Esse é uma dica minha.  Coisa relativamente nova no pedaço, mas muito promissora e eficiente.  Estou usando no Mac. Minha escolha para o Mac.

Resumo da ópera

Você acha que leu bastante até chegar aqui? Prepare-se, pois terá que ler muito mais.  Pior, em inglês.  “Eles que num se atreve a mangar di eu, que minha vingança sará malígrina!  Todos os sites interessantes da internet vai ser tudo em ingreis, Kalunga.”

Decida por um framework que considere mais seu estilo e pau na máquina.  Aprenda as funcionalidades daquele framework e faça acontecer.

Se tiver um colega para trabalhar com você, melhor.  Sozinho ninguém faz nada.  Se tiver um cliente para pagar um primeiro projeto, melhor ainda! Me contrate!

Cuide de sua máquina.  Nela não há espaço para joguinhos, apresentaçõeszinhas malditas em PowerPoint de boas ações e desejos ridículos de “tenha uma boa semana”, ou de correntes repassadas por algum amigo mentecapto seu que realmente acredita que entulhar a rede com vai-e-vém de pura idiotice vai resolver alguma coisa.

Arrume uma namorada aqui.  Estou juntando dinheiro e aceito doações…

Uma última dica: esqueça essa coisa de mocinha de teclados em português.  A tecla de shift deles é do tamanho de uma tecla normal, e isso faz com que seu dedo mínimo esquerdo tenha que fazer um movimento contorcionista para acioná-la.  Para que alguém precisa realmente de um ENTER daquele tamanho em um teclado ABNT-2?  Eu não aciono o ENTER dando um soco no teclado.  Uso apenas um dedo para isso.  É realmente uma sandice esse desenho ABNT-2… Só por causa do C com cedilha?  Isso não resolve nada, porque para fazer o A com acento agudo ainda precisamos pressionar duas teclas!!! E as letras com til?  E com circunflexo?  Afe…

Abraços, porque agora eu vou nanar.

Anúncios