Alguns dias em Moscou sediarão a conferência
RubyRussia . Nosso convidado
Charles Nutter (trabalhando no suporte ao JRuby e JVM na Red Hat) respondeu algumas perguntas.
Como você entrou no mundo da programação e do Ruby?Em 2004, contratei uma empresa do governo como arquiteto Java Enterprise. Eu trabalhei em um projeto para o USDA e passei algumas semanas por mês em Washington. Uma dessas viagens coincidiu com o RubyConf 2004 e, como um de meus amigos havia recomendado há muito tempo que eu prestasse atenção ao Ruby, decidi ir à conferência. Então, acabei em um evento dedicado ao Ruby, sem ter idéia sobre essa linguagem ... mas entendi cada pedaço de código, cada exemplo dado. Fiquei surpreso e prometi a mim mesmo encontrar uma maneira de trazer Ruby para o meu mundo Java.
Em quais projetos você está trabalhando agora?Sou um dos dois gerentes de projeto do JRuby. Este trabalho inclui vários projetos relacionados, por exemplo, suporte a bibliotecas nativas (suportamos Ruby FFI no JRuby) ou conversão de string (portando lógica semelhante do CRuby). Além disso, trabalho com a comunidade para garantir que nossos usuários sempre possam obter ajuda de nós. Em geral, o trabalho está sempre cheio!
Qual desses projetos tem o futuro mais brilhante?Eu acho que esse é o JRuby, embora esse não seja o idioma mais popular na plataforma JVM.
Pelo menos, contribuímos para as mudanças positivas na própria JVM. Em grande parte graças à nossa colaboração com a Sun Microsystems e Oracle, a JVM agora se tornou uma plataforma conveniente para muitas linguagens dinâmicas, não apenas para Java. Espero que tenhamos desempenhado um papel importante nessa mudança.
Quais idiomas você escreve com mais frequência? Qual você mais gosta e por quê?Eu escrevo principalmente em Ruby e Java, já que o JRuby é escrito usando os dois. Cada um desses idiomas é adequado para suas tarefas. Ruby - para criar aplicativos que precisam se desenvolver e se adaptar rapidamente. Java - para criar serviços e bibliotecas confiáveis e de alta velocidade. E o JRuby combina o melhor dos dois mundos!
Você gosta de programar em Java?Sim, especialmente considerando todas as melhorias de idioma adicionadas recentemente, como lambdas (fechamentos ou blocos em Ruby), e a nova sintaxe para declarar variáveis locais (var) quando o tipo estático é único.
O que você acha do Rust?Ferrugem é uma ótima linguagem! Na faculdade, eu usei muito C ++, mas posso dizer com certeza que se eu conhecesse Rust naquela época, preferiria escrever sobre ele. Gosto especialmente do modelo de propriedade com tipo estático, que nos permite escrever programas paralelos estáveis e garante acesso seguro à memória. Eu acho que outras línguas deveriam adotar isso no futuro.
Quais são seus pensamentos sobre as perspectivas de Ruby? Por muitos anos, muitas pessoas acreditam que o idioma e sua comunidade "morrem" ...Depois de muitos anos trabalhando no JRuby, me apaixonei pela sintaxe do Ruby e como ela funciona. Mas receio que o problema de desempenho realmente exista e seja importante. O JRuby está lutando para tornar encadeamentos paralelos uma realidade para os desenvolvedores do Ruby, mas até agora, a grande maioria dos serviços Ruby usa vários processos isolados, gastando uma enorme quantidade de recursos de CPU e memória. Eu acho que isso se deve à API C excessivamente grande e invasiva para escrever extensões Ruby, que não permitem a implementação de melhorias como threads paralelos.
Mas não perco a esperança de que um dia ainda veremos mudanças.
Quais dos recursos menos populares do Ruby você deve considerar no futuro?Estou ansioso para que as strings se tornem imutáveis por padrão, como é o caso na maioria dos outros idiomas. A programação simultânea seria muito mais simples se mais objetos Ruby pudessem ser congelados profundamente. Pode se parecer com o modelo usado no Rust ... se você compartilhar um objeto em fluxos, deverá escolher a versão do objeto que não será modificada exatamente. Isso se estende a matrizes, hashes e quase qualquer outro objeto mutável no Ruby: precisamos simplificar o bloqueio das alterações de dados.
Eu tenho um grande projeto Ruby monolítico antigo. Gostaria de saber se poderia traduzi-lo para o JRuby. Como isso pode ser feito e isso faz algum sentido?A primeira pergunta, de fato, é se esta etapa o ajudará.
Argumentos significativos para a mudança para o JRuby podem ser:
- Reduzindo o custo dos recursos quando há uma desvantagem, por exemplo, se vários aplicativos estiverem hospedados no mesmo servidor ao mesmo tempo
- Implementando um aplicativo Ruby em um ambiente pesado de JVM usado por grandes organizações financeiras e governamentais
- A necessidade de acessar bibliotecas que existem apenas em Java ou que são mais fáceis de portar para a JVM do que seus equivalentes em Ruby ou C
- Um ligeiro aumento no desempenho em aplicativos com computação pesada (que carrega o processador) ou com um grande número de tarefas paralelas.
Eu diria que, se o aplicativo é escalável e não custa muito, talvez você não deva fazer nada. Mas se você decidir obter mais do Ruby, aqui está o processo de migração:
- Reúna todas as bibliotecas de terceiros que seu aplicativo usa.
- Destaque entre eles aqueles que usam extensões C.
- Encontre o equivalente ao JRuby para cada extensão. Nós temos vários
- páginas no wiki do JRuby sobre isso. As bibliotecas mais populares têm versões do JRuby. Se não houver uma versão do JRuby, você poderá usar uma versão pura do Ruby (será rápida o suficiente no JRuby) ou bibliotecas da JVM (em Java, Scala, Clojure etc.), que podem ser usadas como substitutas.
- Assim que todas as suas gemas ganharem no JRuby, todo o aplicativo funcionará! Prestamos muita atenção à compatibilidade e tentamos levar em conta os novos problemas que nossos usuários estão prestando atenção. Portanto, com uma alta probabilidade, se você tiver um pacote configurável no JRuby, o aplicativo funcionará.
Bem, então começa a parte mais difícil - o que fazer com os recursos liberados. Quantos threads para paralelizar o aplicativo, como gastar o dinheiro economizado ... :)
O que os alunos precisam saber para se tornarem bons programadores?Quando eu estava na universidade, minhas aulas de ciência da computação ensinavam o Scheme, uma linguagem funcional como o Lisp, excelente para aprender o básico da programação. Eu ainda recomendo que programadores iniciantes estudem pelo menos parte do livro Estrutura e Interpretação de Programas de Computador, publicado pelo Massachusetts Institute of Technology (MIT). Bem, em geral, quanto mais idiomas você souber, melhor. Isso fornece novas idéias e permite que você procure a solução para seus problemas de diferentes ângulos.
Onde você obtém motivação para trabalhar? Você já enfrentou o problema do esgotamento profissional?O burnout é um problema real em nossa indústria. Especialmente trabalho em código aberto
Isso traz muito estresse. Acho que isso aconteceu com todo mundo ... quando há muito trabalho, você não tem tempo para fazer tudo, sacrifica tempo com a família e os amigos, esquece a sua saúde para corrigir outro erro comum. Para combater isso, tento me concentrar em um hobby: jogar jogos de computador e tabuleiro, aprender a tocar violão,
Aprenda línguas estrangeiras e viaje pelo mundo, conheça novas pessoas. Um workaholic resmungão sempre viverá em mim, me convencendo a voltar ao trabalho, mas ainda tento manter o equilíbrio certo.
Qual a sua opinião sobre a Rússia e o que você espera do próximo evento RubyRussia?Eu amo a Rússia, e todas as minhas viagens à conferência aqui nos últimos anos foram muito úteis. Esta será a minha quarta visita, antes eu estava em São Petersburgo, Moscou e até em Novosibirsk (!!!). Estou ansioso para voltar a Moscou e me encontrar com a comunidade Ruby russa, sobre a qual ouvi falar muito.
As perguntas foram preparadas por
Dmitry Matveev , PM da
Evrone . E você pode fazer sua pergunta já no dia 6 de outubro. Então, até a conferência! Todos os detalhes no
site .
Você pode ler o original em inglês em
hype.codes .
E muito obrigado às empresas que apoiam o principal evento Ruby na Rússia:
Parceiro Geral -
ToptalParceiros Gold -
Gett e
CookpadParceiros Silver -
Instamart ,
UCHi.ru ,
JetBrains e
QleanParceiro de
pós -
festa -
TeachbaseParceiros Bronze -
Bookmate e
InSales