Olá pessoal! Pouco mais de uma semana depois, a conferência
RubyRussia será realizada em Moscou. Na entrevista de hoje, o desenvolvedor da
Evrone ,
Mikhail Morgunov, conversou com um de nossos palestrantes,
Markus Schirp , criador da popular ferramenta
Ruby Mutation Testing .
A primeira pergunta é sobre mutantes . O que precisamos saber sobre essa ferramenta? Sobre o que será o relatório sobre RubyRussia?Vou contar a história da ferramenta de teste de mutação - Mutant. Quero apresentar ao público os principais conceitos: as pessoas aprenderão sobre os diferentes níveis de cobertura, seu significado e valor.
Isso esclarecerá as coisas em Ruby que estamos acostumados e consideramos corretos, mas, de fato, há problemas nelas. Porque Ruby muitas vezes nos dá uma grande oportunidade de nos dar um tiro no pé.
Como você começou a desenvolver mutantes?Esta história está relacionada ao meu trabalho no DataMapper e sua próxima implementação do DataMapper 2, que acabou sendo chamada de ROM.
O projetista Dan Kubb escreveu uma biblioteca de álgebra relacional chamada
axioma para apoiar esses novos desenvolvimentos. Quando ele escreveu o axioma, ele usou a estratégia de "desenvolvimento limitado". Inclui muitas ferramentas para trabalhar com métricas e testes mutacionais.
A ferramenta que usamos para o teste de mutação foi chamada Hackle. Ele tinha certas falhas operacionais e conceituais. Uma vez pensei: "Droga, nem vou tentar consertar! Vamos escrever um novo e resolver todos os problemas de dimensionamento de testes mutacionais que temos no DataMapper2. ”
Isso foi há 5 ou 6 anos, desde que o Mutant passou por várias iterações. Todos eles estão conectados não ao meu desejo de escrever código-fonte aberto, mas aos requisitos dos projetos comerciais em que trabalhei. Portanto, o desenvolvimento do Mutant depende muito das minhas atividades de consultoria.
Toda vez que inicio um novo projeto Ruby, preciso ter certeza de cada parte do código. E o Mutant é a ferramenta que eu uso para isso.
Ou seja, os clientes comerciais desejam usar o Mutant?Sim Isso é confirmado pelo fato de que todos os recursos que você vê são aqueles que os clientes comerciais me pediram para adicionar nos últimos anos. Existem algumas funções que não estão na versão pública, porque o cliente não me deu o direito de abrir seu código-fonte. Mas, às vezes, o cliente diz: "Não há problema se alguém se beneficiar disso", o que eu realmente gosto.
No momento, eu deixei o DataMapper2. Eu nunca escrevi recursos apenas por diversão. Estes são apenas efeitos colaterais do uso comercial.
Pessoalmente, não estou apaixonado por Ruby, é apenas uma ferramenta para mim. Mutant é uma maneira de tornar o Ruby mais eficiente. O limite para entrar no Mutant é muito alto, mas quando você inicia, ajuda muito. A necessidade de treinamento é algo para aturar.
Isso é da natureza das coisas quando se usa uma gema grátis :)95% das gemas grátis são apenas projetos de hobby. Eles não são adequados para uso comercial. Os autores os fazem por interesse pessoal. Eu não os culpo. Mas eu aconselho a equipe de desenvolvimento de projetos comerciais a manter isso em mente quando eles tirarem algo do RubyGems.
Eu só li o arquivo README Mutant no GitHub. Mas até agora eu entendi pouco.É por esse motivo que preciso gastar mais tempo escrevendo o leia-me e a documentação adicional de nível de entrada.
Por motivos pessoais, fiquei em silêncio na comunidade por três anos: tive mais dois filhos, mudei-me para outro país.
RubyRussia é a primeira conferência após o intervalo, quando eu posso conversar com a comunidade. E quero usar o tempo gasto na preparação de meu relatório e workshop como fonte de materiais para documentação adicional.
O que nos espera?No dia 6 de outubro, haverá uma palestra sobre Mutant, e no dia 7 de outubro, um workshop. Ele será baseado em exemplos do mundo real retirados de um projeto de código aberto que usa trilhos e rspec.
Tanto quanto eu entendo, você usa uma linguagem de programação diferente, não Ruby?Isto não é inteiramente verdade. Costumo usar Ruby, mas apenas se houver uma boa razão para isso. Geralmente, essa é a salvação de aplicativos herdados que estão prestes a falhar com o peso de seu próprio código.
Nesse caso, você não pode simplesmente substituir o Ruby em uma etapa. Fazer refatoração incremental / “estrangular” o código Ruby é o meu trabalho principal. E durante esse processo, minhas mãos estão ao meu lado em Ruby, e aqui o Mutant é minha principal ferramenta para vincular ciclos de refatoração / modificação.
Quais idiomas você prefere?Principalmente Haskell. Agora, para mim, é a linguagem mais equilibrada em termos de usabilidade e adequação para o desenvolvimento de programas de valor comercial. O Haskell Type Checker garante muitas propriedades imediatamente; propriedades pelas quais eu precisaria lutar em Ruby.
Existem várias outras linguagens e extensões interessantes no horizonte. Eu acho que os tipos dependentes terão "correção após passar a verificação de tipo" para um novo nível.
Você acha que Ruby e Rails têm futuro?Ruby e Rails têm um baixo limite de entrada, isso ajuda as pessoas a chegarem rapidamente ao ponto em que o aplicativo ganha dinheiro. Enquanto as pessoas acreditam que Ruby e Rails têm essa qualidade, essas tecnologias têm um futuro.
Uma pequena declaração herética: os aplicativos Rails não podem crescer devido à complexidade herdada do framework, devido às escolhas feitas pelos criadores da linguagem e do framework. Mas esse dever técnico é bom se você tiver um motivo comercial para fazê-lo. Basta ter um plano pronto para pagar esta dívida.
O que você acha do Rust?Eu realmente gosto dele. Agora, não o uso com frequência - não havia uma boa razão, pois os projetos em funcionamento não podiam obter nada das vantagens do Rust em comparação com outras opções que eu tinha.
Eu principalmente desenvolvo back-end. Ou vamos chamá-lo de "RPC massivo com lógica de assunto". Aqui, em primeiro lugar, é importante garantir a correção do programa, e somente no segundo é o seu desempenho. A ferrugem é computacionalmente muito eficiente, mas para isso requer controle manual de peças de baixo nível. Isso leva tempo, o que é melhor gasto otimizando padrões de E / S de alto nível (agrupamento de RPC, minimizando viagens de ida e volta, verificando propriedades transacionais etc.). É melhor fazer isso antes de otimizar primitivas individuais à custa do idioma, o que me oferece mais oportunidades de otimização.
Se eu estivesse fazendo algo mais pesado em termos computacionais, um codec de vídeo, por exemplo, Rust seria a ferramenta que eu escolhi.
E a última pergunta. O que você pode aconselhar programadores iniciantes?Como programador iniciante, encontre um projeto para animais de estimação e integre-o a interesses fora da programação. Isso é necessário para ser levado por tempo suficiente até que o aprendizado da programação comece a ganhar dinheiro.
Muito interessante! Isso deve funcionar!Sim, foi assim que eu comecei :)
Ótima dica! Obrigado pela entrevista! Vejo você em Ruby Russia.Também estamos esperando por você na conferência! A propósito, restam menos de 30 ingressos, por isso não recomendamos adiar o registro se você decidir ir. E se você quiser mergulhar mais profundamente no Mutant, então estamos esperando por Markus no workshop em 7 de outubro. Todos os detalhes no
site .
Você pode ler o original em inglês em
hype.codes .
E aqui está um lugar para agradecer às grandes empresas que apoiam o principal evento de Ruby na Rússia:
Parceiro Geral -
ToptalParceiros Gold -
Gett e
CookpadParceiros Silver -
Instamart ,
UCHi.ru ,
JetBrains e
QleanParceiros Bronze -
Bookmate e
InSales