Porcentagem de envios por idioma (esquerda) e status (direita).
- O conjunto de dados contém 13.916.868 visualizações, divididas em 4053 tarefas, cinco das quais não possuem visualizações.
- Google Code Jam 2008 2020 .
- 53,6% (7 460 588) , 29,5% « », - .
- 55 ; 95% C ++, Python, Java, C, Ruby C#.
- C++ — 8 008 527 (57% ), 4 353 049.
"O software devora o mundo ", escreveu o empresário americano Mark Andreessen em 2011. Hoje em dia, o software é usado em serviços financeiros e de saúde, smartphones e casas inteligentes. Mesmo os carros hoje contêm mais de 100 milhões de linhas de código.
No entanto, essas grandes quantidades de código são difíceis de depurar, manter e atualizar, especialmente quando as empresas estão procurando modernizar sua infraestrutura de software legado. Como resultado, estamos em uma nova era em que é importante aproveitar as vantagens de tecnologias modernas, como inteligência artificial e nuvem híbrida, para criar novas soluções que possam modernizar os processos no pipeline de tecnologia da informação.
Vá para o Projeto CodeNet... Um grande conjunto de dados dedicado ao ensino de programação de inteligência artificial, consiste em aproximadamente 14 milhões de exemplos de código e aproximadamente 500 milhões de linhas de código em mais de 55 linguagens de programação diferentes, desde as modernas como C ++, Java, Python e Go até linguagens legadas. como COBOL, Pascal e Fortran.
Mas para entender o significado desse conjunto de dados, devemos primeiro olhar para trás no tempo.
Próxima fronteira da IA: a linguagem das máquinas
Os cientistas da computação há muito tempo se interessam pela possibilidade de um computador programar computadores. A IA pode tornar mais fácil entender, desenvolver e implantar código - a linguagem das máquinas? É possível, mas não é fácil alcançá-lo.
O problema é com sistemas baseados em regras.
Vamos fazer uma tradução para uma linguagem de programação. Se fosse fácil, os sistemas baseados em regras funcionariam e as primeiras linguagens de programação, como COBOL, já teriam sido transformadas. Mas as linguagens de programação têm um contexto. O significado de qualquer declaração é contextualizado, e obtê-lo e traduzi-lo, como acontece com as línguas humanas, é difícil e demorado.
Quanto maior se torna o programa, mais difícil é traduzi-lo. Na linguagem humana, o contexto pode ser limitado a um parágrafo ou algo assim, aqui o contexto pode se referir a várias bibliotecas de código. O contexto é um desafio para a IA.
Grosso modo, os sistemas baseados em regras podem traduzir com sucesso 50 a 60 por cento de um programa. Parte do programa pode ser traduzido muito bem, o resto geralmente tem que ser traduzido à mão usando regras complexas.
Desenvolvimento de IA para código
É aqui que a IA pode ajudar porque pode agir como humanos.
O Project CodeNet, em particular, pode estimular a inovação algorítmica para extrair esse contexto usando modelos sequenciais, assim como usamos em linguagens humanas para trazer maior clareza ao entendimento do código por máquina, bem como ao processamento de código por máquina.
O Project CodeNet é único por seus exemplos de código selecionados em concursos de programação abertos ao longo dos anos. É único não apenas em tamanho e escala, mas também na qualidade dos metadados e anotações com um rico conjunto de informações, seja tamanho do código, tamanho da memória, tempo de CPU ou estado que indica aceitação ou tipos de erros.
Mais de 90 por cento dos problemas estão associados a uma descrição apropriada do problema, contendo uma breve declaração do problema, a especificação do formato de entrada e saída. Para mais da metade dos problemas de programação (ou seja, sete milhões de amostras de código), também selecionamos amostras de entrada e saída da descrição do problema, que é a chave para determinar a equivalência de duas amostras de código em linguagens diferentes, o que pode estimular o reforço métodos de aprendizagem para traduzir código.
Nós os fornecemos como parte do conjunto de dados - um recurso útil do Project CodeNet. Os usuários podem executar as amostras de código hospedadas para extrair metadados adicionais e validar a saída de modelos de IA generativos. Isso permitirá que os pesquisadores programem a equivalência de intenção ao traduzir uma linguagem de programação para outra.
Os metadados ricos e a variedade de exemplos de código e os problemas que eles resolvem abrem o Project CodeNet para uma infinidade de casos de uso. O conjunto de dados pode ser usado para pesquisar códigos e encontrar cópias. Os exemplos de código no Project CodeNet são marcados com um status de Aceitação e podemos explorar técnicas de inteligência artificial para distinguir o código correto do código do problema.
Os metadados do Project CodeNet também permitem que você acompanhe a evolução de uma visão do problema para uma visão aceita, que pode ser usada para aprender sobre a correção automática de código. Cada amostra de código é rotulada com o tempo de execução da CPU e o tamanho da memória, o que é útil para estudos de regressão e previsões.
Dada a abundância de programas escritos em muitas linguagens, acreditamos que o Project CodeNet pode servir como um conjunto de dados de referência para tradução de fonte em fonte e fazer para IA e código o que o conjunto de dados ImageNet fez para visão computacional há muitos anos.
Atualizar e manter a infraestrutura de software também é importante de uma perspectiva de negócios. Tocamos nisso no ano passado, quando a IBM anunciou vários novos recursos , incluindo IBM WatsonAIOps e Accelerator para modernizar aplicativos que automatizam o pipeline de tecnologia da informação.
Por exemplo, um grande cliente automotivo pediu à IBM para ajudar a atualizar um ativo de $ 200 milhões de 3.500 arquivos Java de várias gerações. Esses arquivos consistiam em mais de um milhão de linhas de código desenvolvidas ao longo de dez anos usando a tecnologia Java multigeracional.
Era um código de aplicativo complexo e monolítico que não era adequado para ambientes de nuvem. Ao aplicar nossa pilha de IA ao código, reduzimos nosso processo de negócios de migração de código de um ano para quatro semanas, modernizamos e construímos mais de 25 novos microsserviços em nuvem por meio da refatoração do código de aplicativo monolítico legado.
Nossa equipe tem o orgulho de fornecer aos pesquisadores e desenvolvedores um conjunto de dados e um conjunto de tecnologias fáceis de usar e entender, ao mesmo tempo que ajuda a projetar algoritmos que conduzirão a IA para o código. Esperamos que o Project CodeNet agregue valor comercial à medida que as empresas embarcam em sua jornada de TI.
Abra o Project CodeNet no GitHub e leia preprint .
Eu tinha cordas, mas agora estou livre. Não há amarras em mim