Pesquisar este blog

domingo, 19 de maio de 2013

Introdução

História do VBA


    O VBA - Visual Basic for Applications, como hoje conhecemos, é fruto de uma combinação de inventividade, visão empresarial, marketing, persistência e sorte, cuja origem remonta ao ano de 1991, associado a figura de Alan Cooper1, um dos maiores mestres mundiais na construção de interfaces gráficas.

    Nesta época, Alan Cooper era um eficiente programador C da plataforma Windows 3, tendo criado um novo ambiente (Shell) para o mesmo, sem saber como empregá-lo de modo prático. Ele foi então contratado por um grande banco da Califórnia, com o objetivo de limitar o uso do Windows em todas as estações de trabalho, apenas as tarefas a serem executadas internamente pelos funcionários da instituição, evitando que os mesmos tivessem de lidar com as idiossincrasias do gerenciamento de arquivos, e pastas do sistema.

    Cooper desenvolveu então um software para Windows 3 capaz de personalizar e distribuir um novo ambiente de trabalho em grupos de usuários, o qual foi batizado de "Tripod" (tripé). O produto foi um sucesso no uso interno, levando Alan Cooper a apresenta-lo a Bill Gates como forma de personalização da próxima versão do Windows (que viria a ser a versão Windows for Workgroups, ou Windows 3.11).

    Nesta época, a programação em Windows era quase que uma exclusividade da Microsoft, sendo amplamente centrada na linguagem "C", com ênfase no emprego de DLLs e chamadas API (Application Programers Interface). "Tripod" ia muito além disto, incluindo características inovadoras muito comuns hoje em dia, como capacidade de "arrastar e soltar" (drag and drop) componentes como caixas de texto e caixas de listagem em um formulário padrão do Windows, permitindo estender o ambiente Windows para as necessidades do usuário. (No livro "The Inmates are Running the Asylum", Cooper cita a perplexidade e satisfação de Bill Gates ao ver o produto pela primeira vez, exclamando "How could you do That!" - "Como é que você fez isso?").

    Como a Microsoft já havia empregado o nome "Tripod" em um de seus projetos, Cooper alterou-o para "Ruby", e o vendeu à Microsoft para ser incluído na próxima versão do Windows - codinome empregado até hoje pela Microsoft para o pacote de formulários.

    Apesar de ter comprado o pacote de Cooper, a Microsoft decidiu por não inserí-lo na versão do Windows 3.11, guardando-o para uso futuro. O projeto "Ruby" ficou sem destino por mais de 1 ano, e ninguém na Microsoft, desde Tom Button (diretor de marketing do VB1, codinome "Thunder" - Trovão) a Jonh Fine (gerente de desenvolvimento do VB1) sabe ao certo quem teve a ideia crucial de fundir a funcionalidade do projeto "Ruby" com a linguagem de programação "QuickBasic", que estava então em sua versão DOS.

    Desde 1980, após uma entrevista para a "Byte", Bill Gates havia se comprometido a fornecer uma versão gráfica de sua linguagem Basic para DOS, tendo este objetivo se tornado um dos pontos centrais da plataforma Windows + Office. Seu sonho era desenvolver uma linguagem única que permitisse o desenvolvimento de aplicativos Windows em todos os produtos fornecidos pela Microsoft.

   E assim, o projeto "Ruby" foi renomeado para "Thunder" e transferido para o grupo de linguagens da Microsoft, tornando-se a primeira ferramenta RAD (Rapid Applications Devellopment) da história da informática.

    Numa das primeiras apresentações do projeto "Thunder" para Bill Gates, Tom Button e seu time de desenvolvimento exibia o produto mostrando como poderia ser possível montar rapidamente um aplicativo Windows empregando controles "drag and drop" da barra de ferramentas desenvolvida por Cooper para um formulário de dados. Muito impressionado, Bill Gates perguntou ao grupo como era possível adicionar novos controles para a barra de ferramentas do produto. Quando soube que isto não era possível, o próprio Bill Gates insistiu que esta habilidade deveria ser uma das principais características do produto (a característica de extensibilidade da barra de ferramentas já havia sido criada por Alan Cooper na versão "Ruby", mas esta capacidade só veio a ser inserida no VB1 por intervenção direta de Bill Gates, criando a tecnologia de extensibilidade chamada VBX - Visual Basic eXtensibility).

    A adição desta característica ao projeto "Thunder" atrasou consideravelmente sua chegada ao mercado, mas foi ela a responsável pelo imediato sucesso do produto. Além disso, Bill Gates insistia com o grupo de desenvolvimento que o produto deveria ter a palavra "Basic" em seu nome comercial, entrando em desacordo direto com seus gerentes de marketing e desenvolvimento.

    Assim, em 1991 chegou ao mercado o Visual Basic 1 - VB1 que, apesar da falta de ferramentas para o desenvolvimento empresarial e sua reputação de "linguagem inferior", em grande parte por conter o nome "Basic", teve grande sucesso devido à sua característica de facilitar a programação deum ambiente gráfico complexo como o Windows, evitando a chamada de DLLs e a linguagem "C", e uma forma rápida de se construir eficientes protótipos de softwares comerciais.

    A estratégia de divulgação do Visual Basic também foi bastante eficaz. Por possuir um orçamento estreito, o departamento de marketing optou por uma estratégia de "marketing de guerrilha", efetuando demonstrações onde quer que existisse um seminário de informática (simplesmente mostrando ao público como empregar a ferramenta), e construindo uma comunidade de desenvolvedores ao seu redor.

    O time de desenvolvimento gastou a maioria de seus recursos de marketing em duas estratégias principais:

  • Recrutando e treinando empresas de informática para criar controles que pudessem ser adicionados ao Visual Basic, estendendo seu poder de programação, tornando-o mais rápido de usar do que qualquer outra linguagem existente no mercado;
  • Trabalhando com Jim Fawcette, presidente fundador de uma das maiores editoras técnicas de informática dos EUA - Fawcette Technical Publicatinos", para lançar uma revista centrada no VB (chamada inicialmente de "BasicPro", renomeada para "Visual Basic Programmers Journal - VSPJ"2), e uma série de conferências por todos os EUA - e posteriormente todo o mundo - ao redor do Visual Basic.
  • A revista e as conferências tiveram importante impacto no desenvolvimento de uma imensa comunidade de desenvolvedores para o Visual Basic, principalmente por se tratar de veículos onde as empresas produtoras de controles VBX podiam anunciar e vender seus produtos, encontrando pessoalmente seus clientes3 . Segundo Tom Button, esta característica de extensibilidade do produto, largamente dependente da visão inicial e inovadora de Alan Cooper no projeto "Ruby", e envisionada por Bill Gates, direcionou o Visual Basic para um nível jamais imaginado pela empresa.
  • Visual Basic tornou-se um sucesso imediato porque simplificava o desenvolvimento no ambiente Windows em ordens de magnitude, evitando que os desenvolvedores de software tivessem qualquer conhecimento das APIs do Windows e a sua complexidade para a criação de soluções. Em vez de se concentrar em detalhes do desenvolvimento, os programadores podia direcionar o foco para os processos a serem executados e a solução desejada pelos clientes de forma rápida e objetiva.
  • Apesar do grande sucesso do Visual Basic e seu modelo de extensibilidade com o VBX, os vendedores de controles tinham grande dificuldade em fazer chegar aos programadores a existência de seus produtos.
  • Foi então lançado o "Professional ToolKit for Visual Basic - VB1" (codinome RawHide),  o qual foi integrado ao VB2, fornecido aos programadores por um preço muito razoável, versões limitadas de diversos controles VBX em um único pacote, identificado claramente a empresa criadora de cada controle e a forma de contactá-las para obter versões ainda mais poderosas dos mesmos. A própria Microsoft considera que foi este evento o responsável por fazer com que os produtores de controles atingissem massa crítica no mercado, definindo o Visual Basic como a linguagem mais popular do planeta.
  • A dominação mundial do Visual Basic como ambiente de programação ocorreu apenas na versão 3 (VB3), pois esta foi a primeira a fornecer suporte ao acesso a dados nativo na linguagem, incorporando uma Data control e o Data Access Objects.
    Durante sua evolução o Visual Basic sofreu a influência de grandes nomes no mercado americano, como o mestre Daniel Appleman, autor de "Visual Basic Guide to Windows API" e "Developing ActiveX Control with Visual Basic", entre outras obras, e fundador da Desaware, onde desenvolveu a série de controles "Custom Control Factory" e "SpyWorks", que permite ao Visual Basic interceptar mensagens do Windows, superando em muita as suas limitações técnicas, levando ao time de desenvolvimento a necessidade de adição de funções capazes de lidar com endereço de memória de uma função em execução capazes de lidar com ponteiros como o C++, e também de instrução AddressOf(), capaz de fornecer o endereço de memória de uma função em execução. permitindo empregá-la em avançadas operações de call-back4.

    Além disso, uma importante ferramenta competidora apareceu no mercado - o Delphi da Borland, cuja aparição se deu em 1995. O Delphi levou a Microsoft a repensar o Visual Basic, fazendo com que cada próxima versão do Visual Basic oferecesse características da versão anterior do Delphi - o que tem se mantido até o aparecimento do VB.net.

    Quando o Visual Basic 4 atingiu o mercado, deparou-se com a difícil transição do ambiente Windows 3.x em 16 bits para o ambiente Windows 95 em 32 bits, fornecendo aos programadores a capacidade de criar aplicativos para ambas s plataformas.

    O VB4 deixava de ser produzido com uma linguagem independente, passando a integrar o acesso ao modelo de objetos componentes do Windows, a famosa COM - Component Object Model, incorporando nesta versão a capacidade de compilar sob demanda, carregamento de projetos em segundo plano, capacidade de criar controles VBX passíveis de serem utilizados por outros aplicativos - como o Microsoft Access 2, e de criar DLLs - Dinamic Link Libraries - passíveis de serem utilizadas por outros programas COM - compatíveis de 32 bits.

    A versão 4 do Visual Basic foi a primeira a possuir uma edição "Enterprise", que fornecia ferramentas como "Visual Source Safe" para o controle de projetos ao nível de times de desenvolvimento, fornecendo também uma versão do SQL Server e a capacidade de programar elementos para a computação distribuída, empregando Remote Data Objects. A Microsoft reconhece que esta decisão foi responsável pelo grande disseminação do SQL Server como banco de dados sério no mercado empresarial.

    Segundo Daniel Appleman, a versão 4 do Visual Basic foi infeliz para os vendedores independentes de software e controles. O produto chegou atrasado ao mercado (em relação ao Delphi) e, por ser baseado na COM e na Microsoft Foundation Class (MFC), uma tecnologia nova, promissora e imatura, foi constantemente alterado por upgrades e servisse-packs, fazendo com que certas implementações de código se quebrassem com razoável facilidade.

    O Visual Basic 5 foi a primeira versão a implementar a moderna tecnologia inteligente utilizada para o Visual Basic for Applications. Foi também a primeira versão em que o Visual Basic for Applications  apareceu, se tornando então a linguagem padrão de desenvolvimento e personalização
de todos os aplicativos da Microsoft.  

    Nesta versão, o time de desenvolvimento de interfaces gráficas produziu um novo acabamento para o ambiente de desenvolvimento integrado (IDE - Integrated Development Enviroment) do Visual Basic, fornecendo-lhe a identidade visual utilizada até hoje, além da mesma interface gráfica usada pelo Visual Basic for Applications encontrado em todas as versões dos aplicativos do Microsoft Office.

    O Visual Basic 5 foi a primeira versão a fornecer suporte para a criação de controles personalizáveis, sendo a versão Custom Control Edition (CCE) fornecida gratuitamente no site da Microsoft e em diversas revistas especializadas, antes da disponibilização da versão comercial do VB5 - causando certa consternação no time de desenvolvimento devido à necessidade de implementar mais características no produto a ser vendido comercialmente.    

    Por decisão do Bill Gates, o VB5 deveria ser capaz de permitir aos desenvolvedores criar controles ActiveX COM - compatíveis, no lugar de se empregar o Visual C++. O VB5 também tentou introduzir na linguagem características passíveis de o tornarem uma ferramenta de desenvolvimento para WEB, fornecendo tecnologias como ActiveX Documents, capaz de criar páginas HTML dinâmicas. Essa tecnologia nunca "pegou" de verdade, pois apresentou diversos problemas de implementação, sendo muito criticada nas revistas especializadas - especialmente pelo VBPJ - Visual Basic Programers Journal.

    O VB5 também apresentou diversas novidades na programação orientada a objetos (OOP - Object Oriented Programing), fornecendo instruções como Implements de interfaces (representadas por módulos classe), os procedimentos Property Let e Get, e a capacidade de gerar eventos em objetos coma instrução RaiseEvent.

    A versão 6 do Visual Basic (VB6) chegou ao mercado com a promessa de fornecer novas tecnologias de acesso a dados com o emprego do ADO - ActiveX Data Objects, como a nova tecnologia padrão e universal de acesso a dados, que em sua primeira versão (ADO 1.0), era muito instável e suscetível a problemas que só foram resolvidas pela versão ADO 2.7.

    O VB6 também lançado com a promessa de criar vários tipos de projetos distintos, inclusive lançando características virtualmente inúteis, como a sua capacidade de lidar com DHTML e WebClasses. Estas tecnologias jamais vingaram, principalmente por não serem exatamente o tipo de ferramenta desejada pelos desenvolvedores. O VB6, apesar de produzir diversos tipos de componentes estáveis, teve contra si o fato de ser distribuído em sua versão profissional sem qualquer tipo de documentação impressa. Apenas o Help On-Line, implementado de forma equivocada, foi disponibilizado pela Microsoft, fazendo com que o produto sofresse duras críticas dos milhões de desenvolvedores espalhados por todos os cantos do mundo.

    A última versão do Visual Basic, chamado VB.net foi criada para fornecer aos desenvolvedores a capacidade de criar aplicativos multiplataforma, incluindo certas características há muito desejadas pelos seus usuários, como a herança através da instrução Inherit, com grandes características da última versão comercial do Delphi, mudando inclusive os tipos de dados utilizados pelo ambiente.

    Sua desvantagem consiste em ser uma plataforma completamente diferente da anterior, razoavelmente incompatível, mas com extremo poder de criação de aplicativos para a Web (notavelmente WebServices). A seu favor, existe uma imensa base de usuários passíveis de migrar para a nova plataforma. E contra seu uso, existe o fato de o produto ser muito diferente do VB6 e do Visual Basic for Applications encontrado nos produtos da Microsoft, inclusive em sintaxe, além de possuir um mar de tecnologias competitivas pelas quais o usuário pode optar - uma situação bem diferente daquela encontrada pelo VB1.

    Em resumo, o Visual Basic sempre baseou sua evolução na necessidade de uma interface gráfica amigável de desenvolvimento rápido de aplicativos para a plataforma Windows. As mudanças ocorridas na linguagem até o VB6 foram orientadas não apenas pelas necessidades e sugestões do usuário, mas também pelas mudanças fundamentais ocorridas na plataforma Windows.

   Neste sentido, a Internet representa também uma mudança fundamental que os desenvolvedores terão de se adaptar na produção de aplicativos, fazendo com que a plataforma .NET representada principalmente pelo VB.Net, coloque o Visual Basic em uma encruzilhada tecnológica, necessitando novamente de grande esforço e sorte da Microsoft para fazer com que seus milhões de usuários prosperem no desenvolvimento para a Web de mesma forma que prosperaram rapidamente no desenvolvimento para Windows.

    Este blog está sendo construído com a finalidade de ser uma espécie de guia de referência para os amantes desta linguagem, que eu especialmente gosto. Os comandos estarão sendo divididos por postagens e na medida do possível colocarei também alguns exemplos básicos de códigos direcionados para o Excel.

Observações:

1 - Alan Cooper é um nome respeitado nos grande círculos mundiais de desenvolvimento de software e produtos no qual o software é aplicado. Ele é um grande crítico da forma como os produtos "eletrônicos" incorporam o software de maneira equivocada, variando desde uma simples chave para abertura de um carro, passando por videocassete e chegando a produtos mais sofisticados, como o Adobe PhotoShop e outras ferramentas gráficas. Você pode apreciar mais suas incríveis visões da tecnologia lendo "It's About Face", um livro que foi relançado nos EUA em 2003, que trata de uma feroz e irônica crítica ao software comercial, e "The Inmates are Running the Asylum", uma obra extraordinária, onde ele desenvolve a metodologia de desenvolvimento interativo de interfaces gráficas empregando "personas" e cenários;

2 - Você pode encontrar informações sobre quaisquer ferramentas de desenvolvimento nos sites a Fawcette Publications, especialmente o www.vspj.com, e também no Advisors Publications, www.advisors.com.

3 - Há uma conferência técnica da Advisors Publications sobre o Microsoft Access em Phoenix, Arizona, que se repete anualmente nesta cidade em outubro, além de Chicago, San Francisco, Nova York e Orlando nos EUA, além de Berlim, Tóquio e Estocolmo. A experiência deve ser muito relevante para qualquer um que deseje realmente aprofundar seus conhecimentos profissionais, nivelando-se com a nata dos programadores mundiais.

4 -  Se você quiser saber mais sobre a programação avançada do Visual Basic, leia o livro "Desenvolvendo Controles ActiveX com VB5" de Daniel Appleman, publicado no Brasil pela Editora Campus (não tenho conhecimento de uma nova versão). Nesta obra, Dan Appleman aborda técnicas muito interessantes e avançadas de programação, orientação a objeto, fundamentos da COM - Component Object Model, multi-threading e criação de controles ActiveX para o mercado comercial.

Boa Leitura!!

Nenhum comentário:

Postar um comentário