O uso de IA's generativas no dia a dia do desenvolvimento mobile para iOS
O mundo hoje está em um frenesi absurdo pelas Inteligências Artificiais generativas. O chatGPT por exemplo aumentou sua base de usuários exponencialmente. Não a toa, pois podemos pedir para ele escrever frases como:
E claro, como bons usuários que somos, logo começamos a pedir para que ele escreva código pra nós, como no exemplo abaixo:
Só que existem alguns pontos a se considerar nesses pedidos. Primeiro, precisamos entender o que é uma Inteligência Artificial Generativa. Ela pode criar novos tipos de conteúdo e ideias, incluindo conversas, histórias, imagens, vídeos e músicas, e essa é uma das magias; Se atente ao verbo utilizado: criar. A IA generativa é alimentada por modelos de machine learning, geralmente muito grandes que são pré-treinados em grandes quantidades de dados e comumente chamados de Modelos básicos (FMs). Especificamente o GPT (Generative Pre-trained Transformer) é um modelo de linguagem natural desenvolvido por uma empresa de pesquisa chamada OpenAI. Ele se baseia em uma arquitetura de rede neural conhecida como Transformer, que tem a habilidade especial de trabalhar com informações sequenciais, como texto. Um trecho de código pode ser comparado em sua formatação a um pedaço de texto.
Na prática e em resumo: o GPT aprendeu com um monte de texto e código que foi passado pra ele a criar novos textos que façam sentido. E aí que está o pulo do gato, eles fazem sentido mas nem sempre estão corretos. Veja os exemplos abaixo:
O texto das respostas está muito bem escrito, e faz total "sentido", mas se formos analisar a primeira pergunta de fato, os livros começam na página 1 então as páginas que estariam juntas seriam as 83–84 e 85–86, e aí a resposta seria 5 páginas, não 4. Com código ele faz a mesma coisa. Escreve código que faz sentido mas nem sempre está correto. E isso é especialmente preocupante quando você está aprendendo a programar, porque você vai se espelhar em algo que nem sempre pode funcionar e não vai entender como que a coisa funciona de fato. Será uma máquina que facilita o copia e cola mas te prejudica na capacitação de resolução de problemas. De repente vai aparecer um problema novo que você nunca viu antes e o chatGPT vai criar uma nova solução mirabolante que não funciona e complicar a sua vida. Além de ter que resolver o seu problema, vai se deparar com um complicador que é o problema adicional da solução criada pelo programa. Outro complicador de utilizar essas ferramentas é o fato de que elas estão sempre aprendendo com o que você escreve, afinal, quanto mais informação ela tiver, melhor ela será. Mas será que a sua empresa concorda em expor/disponibilizar o código para esse aprendizado? Afinal a concorrência poderia se aproveitar do mesmo, sem falar no juridiquês de propriedade intelectual.
Agora vamos falar sobre outras IAs que já estão tomando conta do mercado e ganhando muitos adeptos: GitHub Copilot e Amazon Code Whisperer. Como funcionam? Basicamente, elas analisam todo o código publicamente disponível em repositórios públicos no github e na plataforma de git da amazon e conseguem então aprender e a partir daí gerar código novo. Neste caso temos um agravante a mais. Nem todos os usuários das plataformas concordaram em disponibilizar o código para o aprendizado da máquina. E com isso pesquisadores chineses descobriram que você pode convencer esses modelos a proverem chaves de acesso a APIs válidas, sem o conhecimento de ninguém no processo. Uma clara falha grave de segurança. O ponto é que se você de alguma maneira injetar uma informação sensível no modelo, será possível resgatar ela posteriormente. O copilot ao menos, se integra muito bem com o VSCode e para utilizá-lo no Xcode você precisará de um plugin ou ferramenta de terceiro (ou ainda utilizar o VSCode mesmo e salvar os arquivos gerados na pasta do projeto). Enxergo pessoalmente a utilização dessas ferramentas como copilot válidas afim de evitar o entediante trabalho repetitivo dentro do universo do código (como por exemplo criar todos os delegates e datasources de uma collectionView). Em questão de segundos você tem uma ViewController com uma collectionView pronta, só aguardando a customização. De novo, reforço que de nada adianta você utilizar uma ferramenta que cria o código se você não entende nada do que está se passando ali e como as coisas funcionam.
Conclusão: Todas essas ferramentas invadiram o mercado e parecem como bala de prata, mas não confie cegamente nelas e estude bastante antes de começar a utilizá-las. Podem parecer sedutoras substitutas do stackOverflow, mas o problema para quem não sabe o que está fazendo é o mesmo. Prefira o uso para trabalhos repetitivos e chatos e evite o uso na criação de soluções personalizadas.