CodeNet, um projeto IBM para sistemas de aprendizado de máquina 

Logotipo da IBM

IBM revelou recentemente seu novo projeto chamado "CodeNet" Qual visa fornecer aos pesquisadores um conjunto de dados para experimentar o uso de técnicas de aprendizado de máquina para criar tradutores de uma linguagem de programação para outra, bem como geradores de código e analisadores.

CodeNet inclui uma coleção de 14 milhões de amostras de código que resolvem 4053 problemas comuns de programação. No total, a coleção contém cerca de 500 milhões de linhas de código e abrange 55 linguagens de programação, tanto linguagens modernas como C ++, Java, Python e Go, quanto legadas, incluindo COBOL, Pascal e FORTRAN.

“O software está devorando o mundo”, escreveu o famoso empresário americano Marc Andreessen em 2011. Avançando para os dias de hoje: o software é encontrado em serviços financeiros e de saúde, smartphones e casas inteligentes. Até os carros agora têm mais de 100 milhões de linhas de código.

Os desenvolvimentos do projeto são lançados sob a licença Apache 2.0 e os conjuntos de dados devem ser lançados em domínio público.

Os exemplos são anotados e implementam algoritmos idênticos em diferentes linguagens de programação. O conjunto proposto visa auxiliar no treinamento de sistemas de aprendizado de máquina e no desenvolvimento de inovações no campo da tradução e análise automática de código, por analogia com a forma como o banco de dados ImageNet de imagens anotadas auxiliou no desenvolvimento de sistemas de reconhecimento de imagem e visão artificial. Vários concursos de programação são mencionados como uma das principais fontes de construção de coleções.

O Project CodeNet pode impulsionar especificamente a inovação algorítmica para extrair esse contexto com modelos de sequência por sequência, muito parecido com o que aplicamos em linguagens humanas, para fazer um impacto mais significativo na compreensão do código por máquina em vez de no processamento do código. .

Ao contrário dos tradutores tradicionais com base nas regras de tradução, sistemas de aprendizado de máquina podem capturar e levar em consideração o contexto de uso do código. Ao converter de uma linguagem de programação para outra, o contexto é tão importante quanto ao traduzir de uma linguagem humana para outra. É a falta de consciência contextual que impede que o código seja convertido de linguagens legadas como COBOL.

A presença de uma grande base de implementações de algoritmos em várias linguagens ajudará a criar sistemas universais de aprendizado de máquina que, em vez de tradução ao vivo entre linguagens específicas, manipulam uma representação mais abstrata do código, independente de linguagens de programação específicas.

Esse sistema pode ser usado como um tradutor que traduz o código transmitido em qualquer um dos idiomas suportados em sua representação abstrata interna, a partir da qual o código em muitos idiomas pode ser gerado.

Incluindo o sistema, você pode realizar transformações bidirecionais. Por exemplo, bancos e agências governamentais continuam a usar projetos COBOL legados. Um tradutor de aprendizado de máquina pode converter código COBOL em representação Java e, opcionalmente, traduzir um fragmento Java de volta para código COBOL.

Além da tradução entre os idiomas, as áreas de aplicação da CodeNet são mencionadas como a criação de sistemas inteligentes de busca de código e a automação da detecção de clones, bem como o desenvolvimento de otimizadores e sistemas para correção automática de código.

Em particular, Os exemplos apresentados na CodeNet são fornecidos com metadados que descrevem os resultados dos testes de desempenho, o tamanho do programa resultante, o consumo de memória e o estado que permite distinguir o código correto do código errado (para distinguir o código correto do código incorreto, exemplos com erros são especialmente incluídos na coleção, cuja participação é de 29,5 , XNUMX%).

Um sistema de aprendizado de máquina pode levar esses metadados em consideração para gerar o código mais ideal ou para detectar regressões no código analisado (o sistema pode entender que o algoritmo não está implementado de maneira ideal no código transmitido ou contém erros).

Finalmente Se você estiver interessado em aprender mais sobre a CodeNet, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.