Como será a programação em 2025?



Freqüentemente lemos sobre as melhores práticas de programação, sobre novos recursos de framework ou o que há de novo na próxima versão do PHP. Lemos como mudar " isto para isto " , porque algumas técnicas são boas ou más, ou qual novo pacote você pode usar em seu projeto. Mas tudo isso é especulação apenas sobre o passado ou o presente.



Vou terminar de ler o livro « do Inevitável » , escrito pelo fundador da revista Wired, em que se trata apenas do futuro. Inspirado por este livro, proponho olhar para o futuro da programação.



Hoje estamos lutando contra a dívida técnica (seja lá o que isso signifique), código legado que é difícil de manter e caro para modificar, mas gera muito dinheiro ao mesmo tempo. Regularmente, temos que refatorar o código, seguir os princípios DDD, escrever testes, atualizar a versão do PHP para segurança, instalar as versões mais recentes do software no servidor e automatizar o layout.



Há tanto trabalho de rotina atual que não há absolutamente nenhum tempo para olhar para dezenas de outros projetos que nossa empresa apóia ... ou pelo menos os armazena em algum lugar em nossos servidores. Devemos contratar um especialista para ajudar a melhorar cada aspecto, pelo menos um pouco. Não porque esses projetos sejam ruins, mas simplesmente porque existem tantas tecnologias que podemos usar, e ainda mais código que precisamos manter.



Como tudo isso vai acontecer no futuro?



IDE usará inteligência artificial



No futuro, digitar o código será mais fácil. Nosso IDE será alimentado por inteligência artificial, que aprende com os dados anônimos de outros projetos PHP e todos os projetos de código aberto no Github e Gitlab.



Graças a esta IA, quando começarmos a digitar "class HomepageC ...", o IDE saberá que estamos criando um controlador de home page, que estamos usando Symfony, bem como sua versão do composer.json, e se oferecerá para adicionar automaticamente modificadores de finalização ao resto do código e tipos fortes, baseados no conhecimento da versão do PHP em uso, também do composer.json. Ele irá gerar um modelo para o mecanismo de modelo que estamos usando e irá imitar o conteúdo encontrado em outros modelos que já temos em nosso projeto.



Graças à enorme quantidade de dados anônimos e dados de armazenamentos públicos de código, a IA saberá como testar o controlador da melhor forma e usar esse conhecimento para criar um teste de controlador ideal.



Melhor Prática Verificada



Quando falamos sobre "melhores práticas", não queremos dizer o que eu ou outra pessoa escrevemos em uma postagem ou livro com base apenas na experiência pessoal. Essas opiniões costumam ser baseadas em experiências de apenas alguns projetos e são carregadas de emoção.



No futuro, o conceito de “melhor prática” será substituído por “prática verificada” e será baseado em dados reais associados a dois indicadores rígidos - dívida técnica e eficiência da codificação. A dívida de tecnologia terá um equivalente financeiro que mostrará quanto custará para manter cada linha de código no futuro. Você está livre para escrever código estático sem classes digitadas? A string pode "custar" $ 10. Você está escrevendo aulas finais com tipos fortes e um método público? Nesse caso, a linha custará $ 2.



Esses números não serão aleatórios, mas serão baseados na análise constante de uma quantidade colossal de big data, anônimos para todos os projetos que optarem por usar este recurso. O código será comparado aos custos monetários necessários para manter e melhorar os projetos. Graças a esse feedback, a IA também saberá qual versão é mais benéfica para seu projeto específico.



A IA saberá sobre o contexto do seu projeto e comparará os dados de acordo. Você tem um projeto CLI? Ele será comparado com o código de outros projetos CLI nesta área de assunto. Você está fazendo um site? Ele será comparado com designs de outros sites.



A eficiência da codificação será determinada pela métrica de "sustentabilidade" do projeto. Ele será medido em uma escala de 0 a 100, em que 0 significa que leva muitas horas para entender o código e pode levar dias ou até semanas para fazer alterações. Um código com pontuação 100 será fácil para um desenvolvedor júnior entender e ele será capaz de alterar o código quase instantaneamente.



Preenchimento automático verificado por IDE



O IDE estará ciente dessas métricas e também seguirá os padrões usados ​​em seu código. Quando você começa a escrever um trecho de código cuja eficiência é de 40-50 pontos, o preenchimento automático aparecerá com uma sugestão de código com a mesma funcionalidade, mas com uma eficiência de 80-90. Isso é semelhante ao trabalho que Rector ou PHPStan fazem hoje.



A análise de desempenho também será realizada juntamente com a análise de desempenho de codificação. O desempenho será medido automaticamente sempre que o código for alterado em segundo plano no contêiner do Docker, e você será informado sobre qualquer vazamento de memória ou aumento do tempo de execução. Essa análise será tão precisa que sinalizará a linha ou os caracteres específicos que causaram o vazamento e sugerirá uma correção que você só precisa aceitar.



Refatoração AST



A refatoração também será mais poderosa do que é hoje. Será baseado na Abstract Syntax Tree (AST). O IDE irá sugerir a melhor refatoração que você planeja fazer agora, com base em dados anônimos de todos os projetos abertos e fechados.



Em vez de se referir às melhores práticas, você saberá que:



  • a solução A custará US $ 3 por linha em débito técnico e será avaliada em 95 para eficiência e 45 para desempenho
  • A Solução B vai custar $ 1 por linha em dívida técnica, com uma classificação de eficiência de 70 e uma classificação de desempenho de 50


Você está construindo uma startup e quer testar sua ideia? Em seguida, você escolherá a opção A. E se sua empresa for estável e assim permanecer no futuro? Então, vale a pena mudar para a opção B, que é mais barata em suporte e desempenho, mas um pouco mais lenta no desenvolvimento.Você



não terá que discutir com um colega ou seu chefe por que você deve usar esta ou aquela solução. Você compara os números e decide com base em suas prioridades atuais.



Arquitetura de contexto



Seu código terá uma arquitetura contextual. A IA saberá quando se mover entre contextos com base em dados de outros projetos e o custo final de migração para eles. Você está iniciando um projeto WordPress? Está certo. Mas e se o seu projeto se tornar mais popular e você precisar mudar para algum framework PHP que se adapte melhor às suas necessidades? O IDE solicitará que você mude para o Laravel. Um clique e pronto.



Três anos depois, seu projeto está crescendo e você terá muitas tarefas para integrar serviços de terceiros que já estão integrados ao framework Symfony. O IDE solicita que você migre ... clique ... e bum, você está no Symfony 9. Você descobriu que não há desenvolvedores Symfony suficientes no mercado para lidar com o desenvolvimento do seu projeto? Um clique e o IDE transferirá o projeto para uma estrutura para a qual existem desenvolvedores suficientes a um custo razoável.



Respostas com controle de versão StackOverflow 



O IDE verificará seu código e analisará seus hábitos de codificação. Você geralmente escreve uma função em 15 minutos, mas agora leva quase 2 horas? Nos próximos anos, o IDE será tão bom que notará até mesmo uma ligeira diminuição na velocidade de escrita do código em questão de segundos.



O IDE irá então verificar seu código, varrer as respostas no StackOverflow, comparar as respostas com as versões em seu composer.lock e sugerir que você use uma parte específica do código como mais apropriada.



Você está preocupado que esse pedaço de código seja apenas copiado aleatoriamente e interrompa seu projeto? A classificação da resposta não é mais baseada na votação do usuário, mas agora leva em consideração a porcentagem de uso da resposta se ela for integrada com sucesso no código do projeto.



Snippets de código testados



Além disso, trechos de código são testados diariamente pelo próprio StackOverflow, e também antes de serem copiados em seu projeto. É com a versão do seu ambiente local, então você pode ter certeza de que o código funcionará. As pessoas não escrevem mais versões dessas respostas, como faziam no passado. O código na resposta é atualizado automaticamente com cada versão da tecnologia ou estrutura que usa. Algumas respostas foram dadas para o Symfony 5. O que acontecerá quando o Symfony 6 for lançado? O código antigo na resposta será atualizado com a receita AST que foi lançada com o Symfony 6. Dessa forma, o humano e o IDE podem trabalhar facilmente com ele.



Financiamento baseado em atividades de código aberto



Um novo projeto será criado para conectar empresas comerciais e colaboradores de código aberto. O projeto de código aberto será financiado pelas empresas que o utilizam. Os desenvolvedores que contribuem serão financiados por meio de um único sistema com base nos fluxos de caixa de entrada, sem taxas adicionais para cobrir os custos.



O financiamento será determinado usando métricas como impacto de recursos, carga de trabalho, tempo gasto, eficiência do código, etc. Assim, o código será desenvolvido de forma muito mais consistente do que quando foi desenvolvido por colaboradores independentes em seu tempo livre. Um desenvolvedor em um projeto de código aberto irá, de fato, conseguir um emprego em tempo integral financiado por esse projeto.



O que essas empresas receberão como recompensa? Promoção específica da comunidade, lançamentos de pré-lançamento de novas versões e acesso direto a consultores especializados que criaram os projetos de código aberto que eles (essas empresas) usam.



Consolidando estruturas



~ 10 frameworks PHP atualmente existentes serão consolidados. Comunidades em torno de frameworks PHP aprenderão a colaborar mais, em vez de desenvolver cópias quase idênticas de frameworks com uma abordagem MVC.



Graças às migrações AST, você pode mudar para qualquer estrutura PHP. Isso reduzirá a seleção para 3-4 estruturas. Se a migração entre frameworks é uma questão de 1 clique em seu IDE, então não haverá mais competição baseada na alegação de que "isso aconteceu historicamente" e hábitos, mas apenas na qualidade.



Reduzir o número de frameworks levará a sua estreiteza - um framework se destacará em API, outro em CLI e o terceiro em sites com grande UX.



Quando toda a comunidade PHP se concentra em menos estruturas, isso nos permite investir o esforço economizado no desenvolvimento de novas tecnologias e recursos.



Apenas 1 versão PHP estável



Graças às migrações AST automáticas, haverá apenas duas versões do PHP - stable e dev. Visto que atualizar qualquer pacote ou projeto se tornará muito rápido e barato, não há razão para não atualizar para a versão mais recente. A comunidade PHP pode levar um ou dois anos para aceitar isso e manter todos os projetos sincronizados. Mas quando isso acontecer, dentro de um mês após o lançamento de uma nova versão do PHP, todo o ecossistema de código aberto irá usá-lo como a versão mínima.



Atualizações de código totalmente automáticas e instantâneas



O código PHP não precisa ser atualizado manualmente. Cada versão do PHP terá uma "receita" de atualização baseada em AST completa que você pode usar para atualizar automaticamente o código em seu projeto. O GitHub tratará dessas "receitas", então, quando uma nova versão do PHP for lançada, o GitHub começará a enviar automaticamente uma solicitação pull para o seu repositório. Haverá atualizações automáticas não apenas para PHP, mas também para qualquer framework ou pacote. Como o Dependabot, que foi recentemente integrado ao GitHub, mas agora com uma atualização de código e todos os problemas de compatibilidade com versões anteriores.



Atualizador GitHub



Se você não quiser assumir todos os PRs sozinho, pode se inscrever no programa de atualização automática para que o GitHub faça isso por você. Ele também atualizará adequadamente os lançamentos e seu SemVer.



SemVer automatizado 



Não haverá debate se a mudança é uma quebra de compatibilidade com versões anteriores ou apenas um patch. A IA analisará o código antes e depois e, com base nisso, tomará decisões. Ele será tão inteligente que poderá determinar o impacto significativo de uma determinada mudança. Se isso não afetar nenhum código em outros projetos, ele será lançado como um patch.



RFC PHP baseado em lições aprendidas



A mesma análise de quebra de compatibilidade com versões anteriores seria possível para qualquer RFC no código principal de PHP. Quer sugerir constantes digitadas? AI dirá a você quantos projetos dos 10.000 melhores no Github serão quebrados como uma porcentagem. Algo semelhante agora está sendo feito manualmente em alguns RFCs.



Repensando a quebra de compatibilidade com versões anteriores



AI também ajudará você a gerar “receitas” de migração AST, de modo que uma atualização instantânea pode lidar totalmente com a interrupção da compatibilidade com versões anteriores. Isso levará a uma mudança no próprio conceito. As quebras de compatibilidade com versões anteriores ocorrerão apenas quando as atualizações automáticas não puderem ocorrer e uma pessoa for necessária para alterar o código.



Experimente RFC localmente



Como alternativa, qualquer pessoa pode experimentar o recurso RFC localmente logo após criar o PR no GitHub. Como? O Github criará automaticamente uma versão temporária com uma tag dev especial e enviará essa versão do PHP para o registro do pacote. Você cria um RFC para adicionar constantes digitadas, envia-o como um PR ao GitHub e, após 1 minuto, pode executar sudo apt-get install php-dev-typed-constant para obter o PHP com este RFC em sua máquina local.



Assim, os programadores poderão experimentar esse recurso antes mesmo de serem incluídos no branch principal e antes mesmo de votar na RFC. Nesse caso, até mesmo a votação de novos recursos será baseada em dados e experiências reais, e não em emoções, opiniões subjetivas e argumentos.



O que o futuro reserva para nós?



No futuro, nossos recursos não serão limitados por nossa história, escolhas anteriores ou tecnologias em rápida evolução que tornam nosso código rapidamente desatualizado. Com apenas um clique, todas as nossas ferramentas são as mais avançadas do mercado hoje.



Isso nos permitirá experimentar mais, testar nossas suposições e obter feedback real. Isso levará a uma automação ainda melhor dos processos de codificação e invenções na linguagem, padrões e arquitetura de aplicativos que nem mesmo podemos imaginar hoje.



"A melhor maneira de prever o futuro é criá-lo." 



Feliz criação!



All Articles