IA pra todo lado, mas e aí?

No fim de 2024, postei este vídeo:

É longo (18 min, uma aberração nos dias de hoje). Nele me posiciono superficialmente sobre essa maluquice toda de Inteligência Artificial, IA daqui para frente para facilitar.

Minha opinião não mudou muito, apenas amadureceu. O que foi dito está dito. O que fiz depois do lançamento do ChatGPT e outros é entender o papel dele e de tecnologias análogas, as ditas generativas, para então saber o que fazer. A pergunta que vou tentar responder (e provavelmente falharei) é:

Como profissional de tecnologia, o que faço para me manter atualizado num mundo dominado por IA?

Gosto de me basear em bons exemplos. A definição de “bom exemplo” é assunto para outro artigo, mas vou usar a citação abaixo:

Nixon foi à China, em 1972, e perguntou ao primeiro-ministro Chu Enlai sobre o impacto da Revolução Francesa. A resposta? “É muito cedo para dizer.”
Fonte: dê um google

Isso em 1972 sendo que a Revolução Francesa acabou em 1799. E sim, acredito que essa forçada de barra de introduzir IA em tudo se compara a qualquer momento definidor na história, pelo menos em contexto tecnólogico, como foram o computador pessoal, a internet e então, redes sociais.

Resumindo, estamos tão entusiasmados com o que podemos fazer que não paramos para pensar se devíamos.

Significa que o melhor é esperar para ver o que acontece? Prefiro pensar que o preferível é não tirar conclusões precipitadas.  Tudo ainda está tomando forma. Não é preciso pensar muito para atestar isso. Veja o cenário 2 anos atrás, então 1 ano, e agora. Tivemos uma avalanche de produtos AI-based que viraram pó, promessas não cumpridas aos montes, tudo para fazer o público mais interessado, no caso, investidores,  manterem seu suado dinheirinho financiando tais iniciativas.

Enquanto somos inundados com tanto blábláblá, entenda o seguinte sobre IA:

  • Nos dias de hoje, ela é nada mais que Aprendizado de Máquina (Machine Learning, ML) com uma nova roupa, rebranded para quem é hipster.
  • ML está aí desde os tempos em que eu fiz faculdade (e tem um tempão).
  • ML tem sido entregue a nós todos os dias, tem muito tempo. Quer exemplos?
    • Google Maps/Waze.
    • Google Lens.
    • Auto-completar de código da maioria das IDEs (Visual Studio, JetBrains).
    • Corretores ortográficos.
  • Qualquer feed de rede social para fazer micro alcance de anúncios para você.
  • Avanços em áreas acadêmicas como micro biologia e genética (não entendo muito, mas tenho parentes diretos que estão na área)
  • Todo o avanço geológico, drones, etc.

O “segredo”, que é segredo algum, é ter um mínimo de base sobre o que roda dentro do capô da IA para melhor julgar o impacto que cada notícia que sai a cada segundo nos portais de tecnologia e redes sociais.

O manter-se atualizado não é consumir tudo o que aparece. Antes disso, refine seu filtro do que está acontecendo para saber investir no que fará a diferença para você enquanto profissional.

E antes de você colocar “AI expert” ou “AI first” no seu perfil do LinkedIn, aqui vai minha suave opinião sobre tudo isso:

Pouco vai mudar no curto prazo. IAs generativas servem só pra gerar ruído e manter a corrida maluca das grandes marcas para ver qual delas ficará com a medalha do “eu fiz primeiro”.

Se você estiver usando IA no seu trabalho (ChatGPT, Gemini, Grok, DeepSeek), você está certo se ela estiver te ajudando, e não fazendo o trabalho por você.

Se seu trabalho pode ser feito por uma IA generativa, procure outro tipo emprego, pra ontem!

Pense no cenário ideal como você sendo o Tony Stark e o seu assistente de IA o Jarvis (Friday nos filmes mais atuais, nerds entenderão). Jarvis faz o trabalho sujo e demorado, mas a genialidade é vem do Tony. Ele é a alavanca pra fazer com que um trabalho level minutos ou invés de anos, por exemplo, simulação de resultados.

E, sendo bem sincero, estamos bem longe disso, mas longe nos dias de hoje pode significar anos, meses, ou até semanas.

Veremos.

Carinhosamente,

O autor, movido por inteligência natural, muito café, google, e talvez um só um pouquinho de gemini.

Python no Excel, para onde isso vai?

Python no Excel
Python no Excel

Em Agosto de 2023 tivemos a surpresa de ter a integração com Python anunciada para uma futura atualização do Excel. Uau! Isso é grande coisa e temos que prestar atenção no que isso significa, principalmente para eliminar impressões erradas que estão sendo criadas em torno disso.

Como um prelúdio, aviso que tudo que escrevo aqui é baseado inteiramente na minha opinião e nas informações públicas sobre o assunto, referências no fim do texto.

Python vs VBA

Cada célula do meu corpo, principalmente as dedicadas a programação querem que o Python seja o substituto do VBA. Permita-me ser claro neste ponto: Não é.

Não há nada, ou pouco para quem é programador de aplicações VBA nesta integração do Python com Excel que está sendo entregue, pelo menos do que foi apresentado.

Portanto, nobre programador VBA, não se anime muito. O máximo que vai acontecer é você evitar ter que criar as UDFs no VBA resolvendo tudo dentro de um bloco sucinto de Python.

Para quem é o Python no Excel

É bom que isso esteja bem claro: ninguém, (tirando a própria MS e o time de produto do Office) tem a menor ideia até o presente momento de quem é o público alvo desta implementação.

Seu tivesse que apostar, iria em duas frentes:

  1. O time do Office está mirando num público de data mining/data science, em outras palavras, os analistas de dados. Quando ferramentas como o Excel, Powers*, Tableus, entre outras, começam a dar trabalho para grandes massas de dados, estes costumam recorrer ao Python. Há muito o que desenrolar aqui, já que não é só o Python, mas sim um micro-ecossistema deste criado para atender este público
  2. Como o Python está se tornando um linguagem de programação de uso “quase” geral, pode aí haver uma intenção de proporcionar um ambiente familiar para o mercado e seus usuários. O que me faz descrer um pouco desta teoria é que eles já tentaram isso com o ScriptLab via Javascript, outra linguagem largamente utilizado. Só o tempo dirá.

Mas, para quem é o Python no Excel

Já tentei responder isso acima, assim como vários outros colegas que amam o Excel. O fato é que, não se sabe ainda no que isso vai dar.

A Microsoft é especialista em errar, mas quando acerta, é pra valer. Exemplos há aos montes, o próprio Excel é um, já que carrega essa empresa nas costas por décadas.

Por isso, é cedo para prever a aceitação que essa brincadeira terá. Até uns 5 anos, Power Query e Power BI eram coisas além do alcance dos meros escritores de fórmulas. Hoje é até difícil negar que eles vieram para ficar.

Como entusiasta, estou empolgado. Como programador, cético. Como usuário do Excel, indiferente. Como analista de dados, instigado.

O Python no Excel é para mim

Essa é fácil. Não. Mas porquê?

Eu sou um programador, gosto de código, mais do que isso, gosto de liberdade criativa. Abrir o VBA me dá uma sensação tão boa de criação que não tem como comparar o prompt do Python dentro de uma célula substituindo isso.

Adicionalmente, o Python não executa localmente. É aqui que mora o sucesso, ou talvez o fracasso dessa implementação: segurança, o câncer que acompanha a suíte Office por décadas do qual a Microsoft quer se livrar a todo custo.

Concluindo…

É cedo, não dá pra concluir muita coisa, principalmente do meu ponto de vista, que é a de um programador que gosta de VBA e pouco trabalhou com o lado Data Science do Excel.

Estou sim muito curioso para saber o que os colegar do Power PI tem a dizer sobre isso. A vocês, precisando de uma dica de Python, estamos aí.

Aguardem as cenas dos próximos capítulos. Tenho a sensação de que o Python no Excel veio para ficar.

Referências

StackOverFlow 2023 Survey: https://survey.stackoverflow.co/2023/#section-most-popular-technologies-programming-scripting-and-markup-languages
Python in Excel by Leila Gharani: https://youtu.be/FbBXtqtRnWU?si=f2X3wolD9c0fN-MP
Microsoft Excel just got Python by Fireship: https://youtu.be/8ofsE7xiGho?si=JvyPZ236Oi-O1VF4

Automatizando Tarefas: Uma Comparação entre VBA e PowerShell

Quando se trata de automatizar tarefas, os desenvolvedores têm diferentes opções à disposição. Duas linguagens populares para automação são o VBA (Visual Basic for Applications) e o PowerShell. Embora tenham propósitos semelhantes, eles possuem abordagens e pontos fortes diferentes. Neste artigo, exploraremos as semelhanças e diferenças entre o VBA e o PowerShell, juntamente com exemplos de código em cada linguagem.

VBA: Automação dentro de Aplicativos

O VBA é amplamente utilizado em aplicativos como Excel, Word e Access para automatizar tarefas e estender a funcionalidade. Ele oferece um ambiente familiar para desenvolvedores que trabalham com aplicativos do Microsoft Office. Aqui está um exemplo de uso do VBA para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

Sub CopiarArquivos()
    Dim caminhoOrigem As String
    Dim caminhoDestino As String
    Dim nomeArquivo As String
    Dim arquivo As Variant
    
    ' Define os caminhos de origem e destino
    caminhoOrigem = "C:\PastaOrigem"
    caminhoDestino = "C:\PastaDestino"
    
    ' Percorre os arquivos na pasta de origem
    nomeArquivo = Dir(caminhoOrigem & "\*.txt") ' Critério de pesquisa para arquivos .txt
    
    Do While nomeArquivo <> ""
        ' Copia cada arquivo para a pasta de destino
        FileCopy caminhoOrigem & "\" & nomeArquivo, caminhoDestino & "\" & nomeArquivo
        
        ' Obtém o próximo arquivo
        nomeArquivo = Dir()
    Loop
    
    ' Exibe uma mensagem quando concluído
    MsgBox "Arquivos copiados com sucesso!"
End Sub

Neste trecho de código VBA, especificamos os caminhos de origem e destino e usamos a função Dir para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo e usamos a declaração FileCopy para copiá-lo para a pasta de destino.

PowerShell: Automação Poderosa em Linha de Comando

O PowerShell é uma linguagem de script em linha de comando desenvolvida pela Microsoft, focada em administração de sistemas e tarefas de automação. Ele oferece uma ampla gama de cmdlets e acesso ao .NET Framework para capacidades avançadas de automação. Aqui está um exemplo de uso do PowerShell para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

$caminhoOrigem = "C:\PastaOrigem"
$caminhoDestino = "C:\PastaDestino"

# Obter os arquivos que correspondem ao critério de pesquisa
$arquivos = Get-ChildItem -Path $caminhoOrigem -Filter "*.txt" -Recurse

# Copiar os arquivos para a pasta de destino
foreach ($arquivo in $arquivos) {
    Copy-Item -Path $arquivo.FullName -Destination $caminhoDestino
}

# Exibir uma mensagem quando concluído
Write-Host "Arquivos copiados com sucesso!"

Neste trecho de código PowerShell, especificamos os caminhos de origem e destino e usamos o cmdlet Get-ChildItem para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo usando o loop foreach e usamos o cmdlet Copy-Item para copiá-lo para a pasta de destino.

Comparando VBA e PowerShell

Agora vamos comparar o VBA e o PowerShell em termos de seus pontos fortes e áreas de foco:

  1. Integração com Aplicativos: O VBA se destaca na automação de tarefas dentro de aplicativos do Microsoft Office. Ele oferece acesso direto ao modelo de objetos do aplicativo hospedeiro, permitindo um controle e manipulação detalhados. O PowerShell, por outro lado, concentra-se mais na automação e administração de sistemas, com uma ampla variedade de cmdlets para gerenciar sistemas operacionais, serviços e recursos.
  2. Sintaxe e Estrutura: O VBA utiliza uma abordagem procedural, com sub-rotinas e funções, sendo adequado para tarefas específicas de aplicativos. O PowerShell adota uma abordagem baseada em comandos, usando cmdlets e funções para executar operações. Ele abraça uma mentalidade orientada a objetos, tratando tudo como um objeto com propriedades e métodos.
  3. Integração e Extensibilidade: O VBA integra-se perfeitamente a aplicativos do Microsoft Office e seus modelos de objetos. Ele oferece acesso fácil a funcionalidades específicas do aplicativo. O PowerShell, por outro lado, oferece integração extensiva com o .NET Framework e bibliotecas de terceiros. Ele suporta a importação de módulos e o aproveitamento de bibliotecas existentes para estender a funcionalidade.
  4. Administração de Sistemas: O PowerShell se destaca em tarefas de administração de sistemas. Ele fornece cmdlets poderosos para gerenciar sistemas operacionais, Active Directory, SQL Server, Exchange Server e muito mais. As capacidades de script do PowerShell e o acesso ao .NET Framework tornam-no uma escolha ideal para automatizar operações complexas de sistema e realizar tarefas administrativas.

Quando se trata de copiar arquivos com base em critérios de pesquisa, o PowerShell tem uma vantagem clara. O cmdlet Get-ChildItem fornece recursos robustos de filtragem de arquivos, permitindo pesquisar arquivos com base em vários critérios, como extensão de arquivo, nome, tamanho e outros. A sintaxe concisa do PowerShell e seu conjunto abrangente de cmdlets o tornam uma ferramenta poderosa para gerenciar e manipular arquivos de forma eficiente.

Em conclusão, tanto o VBA quanto o PowerShell são ferramentas valiosas para automação, mas possuem áreas de foco diferentes. O VBA é ideal para automatizar tarefas dentro de aplicativos do Microsoft Office, enquanto o PowerShell se destaca em administração de sistemas, automação em linha de comando e gerenciamento de arquivos. Escolha a linguagem que melhor atenda às suas necessidades de automação e aproveite seus pontos fortes para otimizar seus fluxos de trabalho e aumentar a produtividade.

Selenium – O que é Selenium Basic/VBA

Selenium é uma biblioteca poderosa e versátil de código aberto que oferece um conjunto abrangente de ferramentas para automação de navegadores web. Embora seja comumente usado para testes web, ele também ganhou grande popularidade no campo de web scraping. Aqui estão algumas razões pelas quais o Selenium é considerado uma excelente opção para web scraping:

  1. Manipulação de Conteúdo Dinâmico: Muitos sites modernos dependem fortemente de conteúdo dinâmico que é carregado ou gerado por meio de JavaScript. Técnicas tradicionais de scraping, como análise de HTML com bibliotecas como BeautifulSoup, podem não ser capazes de lidar com esse conteúdo dinâmico. O Selenium, por outro lado, é excelente em lidar com conteúdo dinâmico. Ele pode interagir com a página da web em tempo real, executar código JavaScript e recuperar o conteúdo totalmente renderizado, permitindo que você extraia dados de sites que dependem fortemente de JavaScript.
  2. Automação de Navegadores: O Selenium permite que você automatize navegadores web, replicando interações semelhantes às de um ser humano com as páginas da web. Isso significa que você pode navegar por várias páginas, clicar em botões, preencher formulários, enviar dados e realizar várias outras ações programaticamente. Ao simular interações humanas, o Selenium permite que você acesse dados que podem estar ocultos por trás de telas de login, interaja com funcionalidades baseadas em AJAX ou percorra conteúdo paginado. Esse nível de automação torna o Selenium uma ferramenta poderosa para fazer scraping de sites complexos.
  3. Suporte a Vários Navegadores: O Selenium oferece suporte a vários navegadores da web, como Chrome, Firefox, Safari e Internet Explorer, entre outros. Esse suporte a vários navegadores permite que você escolha o navegador que melhor se adapte às suas necessidades de scraping ou replique o comportamento do seu público-alvo. Você pode escrever seu código de scraping uma vez e alternar facilmente entre diferentes navegadores, garantindo compatibilidade e flexibilidade.
  4. Seleção Robusta de Elementos: O Selenium fornece uma ampla variedade de métodos para localizar elementos em uma página da web, incluindo por ID, classe, XPath, seletores CSS e outros. Essa flexibilidade permite que você direcione com precisão os elementos que deseja extrair. Além disso, o Selenium oferece métodos avançados de interação com elementos, permitindo que você extraia texto, valores de atributos, execute cliques e manipule várias interações do usuário com facilidade.
  5. Ecossistema e Suporte da Comunidade: O Selenium possui uma comunidade extensa e ativa de desenvolvedores, o que significa que você pode encontrar muitos recursos, tutoriais e discussões para ajudá-lo em seus projetos de web scraping. O extenso ecossistema em torno do Selenium inclui frameworks, wrappers e ferramentas de terceiros que fornecem recursos adicionais e tornam o web scraping mais eficiente.

Embora o Selenium seja uma ferramenta poderosa para web scraping, vale ressaltar que ele pode ser exagerado para tarefas de scraping simples. Se o site que você está visando não depende fortemente de conteúdo dinâmico ou JavaScript, ou se você só precisa extrair dados HTML estáticos, pode ser mais apropriado usar uma biblioteca leve como BeautifulSoup ou Requests. No entanto, quando enfrentar cenários complexos de scraping ou sites dinâmicos, as capacidades do Selenium se destacam, tornando-o uma escolha principal para muitos projetos de web scraping.

Aqui, um exemplo simples de código VBA  usando Selenium Basic.

Sub AutomatizarTarefaWeb()
    Dim driver As New SeleniumWrapper.WebDriver
    Dim elemento As SeleniumWrapper.WebElement
    
    ' Abrir o navegador e navegar para um site
    driver.Start "chrome", "https://www.example.com"
    driver.Get "/"
    
    ' Localizar um campo de entrada pelo seu ID e inserir texto
    Set elemento = driver.FindElementById("campoDeEntrada")
    elemento.SendKeys "Olá, Selenium!"
    
    ' Localizar um botão pelo XPath e clicar nele
    Set elemento = driver.FindElementByXPath("//button[@id='botaoEnviar']")
    elemento.Click
    
    ' Aguardar o carregamento da página
    driver.Wait 5000
    
    ' Extrair o texto de um elemento específico
    Set elemento = driver.FindElementByClassName("textoResultado")
    MsgBox "Resultado: " & elemento.Text
    
    ' Fechar o navegador
    driver.Quit
End Sub

Certifique-se de ter a biblioteca Selenium Basic instalada e referenciada em seu projeto VBA antes de executar este código. Você pode encontrar a biblioteca Selenium Basic e instruções de instalação em sua página oficial no GitHub: https://github.com/florentbr/SeleniumBasic