Justin Gottschlich, da Intel Labs, lidera uma equipe de pesquisadores de programação de máquinas. Seu objetivo é automatizar o desenvolvimento de software para reduzir erros de codificação e resolver a falta de programadores especializados treinados. Crédito:Walden Kirsch / Intel Corporation
Nosso especialista:Justin Gottschlich lidera a equipe de Pesquisa de Programação de Máquina (MPR) no Laboratório de Pesquisa de Sistemas e Software. O grupo de pesquisa recém-formado de Justin concentra-se na promessa pioneira de programação de máquinas, que é uma fusão de aprendizado de máquina, métodos formais, linguagens de programação, compiladores e sistemas de computador.
Sua explicação simples sobre programação de máquina:MPR usa formas de aprendizado de máquina e outros métodos automáticos para criar software capaz de criar seu próprio software. É chamado de programação de máquina e trata fundamentalmente de automatizar o desenvolvimento e a manutenção de software. Quando totalmente realizado, a programação da máquina permitirá que todos expressem sua criatividade e desenvolvam seu próprio software sem escrever uma única linha de código.
A promessa da programação de máquina:no cenário tecnológico de hoje, o software está integrado em quase tudo o que fazemos. Ele controla muitos aspectos de nossos dispositivos móveis - laptops, tablets, telefones. Ele nos conecta à Internet e direciona nossos feeds de mídia social. Ele virtualiza nossos data centers e torna nossas casas mais inteligentes. Mas desenvolver e manter software é um processo demorado e sujeito a erros, Justin diz. "Acredito que podemos criar uma sociedade onde todos podem criar software, mas as máquinas vão lidar com a parte de 'programação', "ele diz." Assim, 'programação da máquina.' "
Uma escassez de programadores humanos:um problema central para a Intel e outras empresas líderes de tecnologia, de acordo com Justin, é que eles estão com poucos desenvolvedores seniores - uma escassez que prejudica a quantidade de programação em todos os setores. De acordo com code.org, existem 500, 000 posições de programação abertas disponíveis apenas nos EUA - em comparação com uma safra anual de 50, 000 graduandos em ciências da computação. Uma escassez semelhante pode ser encontrada em toda a União Europeia. No mercado de trabalho de programação, Justin diz, na melhor das hipóteses, apenas 10% das pessoas que ocupam esses cargos têm treinamento em ciência da computação para se tornarem desenvolvedores avançados de nível superior. Com o hardware heterogêneo de hoje - CPUs, GPUs, FPGAs, ASICs, neuromórfico e, breve, chips quânticos - vai se tornar difícil, talvez impossivel, para encontrar desenvolvedores que podem corretamente, eficientemente, e programar com segurança em todo esse hardware.
Agora é a hora:a programação de máquina é uma fusão de diferentes campos. Ele usa técnica de programação automática, de preciso (por exemplo, síntese de programa formal) para probabilística (por exemplo, programação diferenciável). Ele também usa e aprende com tudo o que construímos em hardware e software até o momento. Os pesquisadores se envolveram com programação de máquinas desde a década de 1950, Justin diz. "Mas hoje é diferente. Estamos em um ponto de inflexão com novos algoritmos de aprendizado de máquina, hardware novo e aprimorado, e dados de programação ricos e densos. Esses são os três ingredientes essenciais que acreditamos possibilitar a programação da máquina. "Um exemplo é ilustrado pela recente pesquisa de algoritmo genético (GA) da equipe de Justin, que ilustra como a função de adequação de um algoritmo genético - uma complicada heurística de aprendizado de máquina desenvolvida por programadores especialistas - pode ser automatizada. Justin diz que esse trabalho provavelmente não teria sido possível apenas alguns anos atrás.
Recusando-se a aceitar bugs:quase todos os softwares de grande escala hoje (por exemplo, sistemas operacionais, navegadores, plataformas de mídia social) inclui precisão, bugs de desempenho ou segurança. "Nosso último artigo NeurIPS '19 fornece evidências iniciais de que certos tipos de bugs que historicamente evadiram até mesmo a detecção de programador especialista podem ser detectados automaticamente com a programação da máquina, exigindo zero intervenção humana, "Justin diz." O próximo passo é consertá-los automaticamente. "
De 500, De 000 linhas de código a 500:Justin aponta para um exemplo bem conhecido dos benefícios da programação de máquina. Google Tradutor, um serviço que traduz automaticamente entre os idiomas, foi construído por engenheiros que codificaram manualmente cerca de 500, 000 linhas usando técnicas de programação clássicas. Com o advento da programação da máquina, O Google reescreveu seu código, parcialmente usando programação diferenciável (uma pequena fatia do bolo geral de programação da máquina). Essa reescrita diminuiu a base de código de 500, 000 linhas a 500 linhas, a 1, Redução de 000x. "Não só o tamanho do código diminuiu em 1, 000 vezes, "Justin diz, "a precisão do sistema realmente melhorou - é incrível."
Mais trabalhos de programação, não menos:a programação da máquina não eliminará trabalhos, Justin afirma, mas, em vez disso, crie-os - possivelmente milhões deles. Os aspectos mais servis da programação serão automatizados, ele diz, qual é o objetivo. Com a programação da máquina, ele adiciona, "nossa visão do céu azul é desde que você possa expressar suas idéias (como a chamamos - intenção) de alguma forma que a máquina possa reconhecer - seja em linguagem natural, diagramas visuais ou gestos - a programação da máquina constrói um caminho para você criar seu próprio software. "Para começar a construir esses sistemas de programação de máquina avançados, Justin diz, vamos contar muito com uma comunidade de programadores e cientistas - aqueles que podem trabalhar em várias plataformas, aprendizado de máquina e técnicas formais, hardware heterogêneo, e muitas linguagens de programação. Justin e sua equipe descrevem sua visão futura da programação de máquinas em um artigo publicado em conjunto com pesquisadores do MIT, "Os três pilares da programação da máquina."