{"id":27811,"date":"2020-11-26T14:25:52","date_gmt":"2020-11-26T17:25:52","guid":{"rendered":"https:\/\/blog.locaweb.com.br\/?p=27811"},"modified":"2020-11-26T14:25:52","modified_gmt":"2020-11-26T17:25:52","slug":"ruby-3-0-o-que-sabemos-ate-agora","status":"publish","type":"post","link":"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/ruby-3-0-o-que-sabemos-ate-agora\/","title":{"rendered":"Ruby 3.0: o que sabemos at\u00e9 agora?"},"content":{"rendered":"<p><span style=\"font-weight: 400\">O final deste ano pede que a gente fale sobre a linguagem Ruby. Em Outubro tivemos a tradicional <\/span><a href=\"https:\/\/online.rubyconf.com.br\/?utm_source=Locaweb&amp;utm_medium=post&amp;utm_campaign=e-como-vai-o-ruby\"><b>RubyConfBrasil<\/b><\/a><span style=\"font-weight: 400\">. Em Dezembro teremos a <\/span><a href=\"https:\/\/ruby.com.br\/?utm_source=Locaweb&amp;utm_medium=post&amp;utm_campaign=e-como-vai-o-ruby\"><b>RubySummitBrasil<\/b><\/a><span style=\"font-weight: 400\">, um evento completamente organizado pela comunidade brasileira. Ambos os eventos s\u00e3o patrocinados pela Magrathea. Al\u00e9m disso, h\u00e1 a promessa de lan\u00e7amento da vers\u00e3o est\u00e1vel do Ruby 3.0, um evento esperado a alguns anos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ruby tem um hist\u00f3rico interessante de inova\u00e7\u00f5es que foram sendo absorvidas, e tamb\u00e9m criticadas, pela nossa ind\u00fastria. O grande atrativo do Ruby est\u00e1 na sua expressividade, o que d\u00e1 uma grande velocidade de desenvolvimento, mas al\u00e9m disso, a sua miss\u00e3o de tornar a vida dos profissionais melhor. Tecnologia \u00e9 dif\u00edcil, e uma linguagem f\u00e1cil de ler diminui o esfor\u00e7o cognitivo, fazendo com que a gente foque menos nas tecnicalidades e mais no valor que queremos gerar.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A linguagem ganhou popularidade por causa do seu uso no framework <\/span><a href=\"https:\/\/rubyonrails.org\/\"><b>Rails<\/b><\/a><span style=\"font-weight: 400\">, lan\u00e7ado em 2003, apenas dois anos ap\u00f3s o lan\u00e7amento do <\/span><a href=\"https:\/\/agilemanifesto.org\/iso\/ptbr\/principles.html\"><b>manifesto para desenvolvimento \u00e1gil de software<\/b><\/a><span style=\"font-weight: 400\">. N\u00e3o existe coincid\u00eancia aqui, os valores e princ\u00edpios do movimento se refletem diretamente na forma de desenvolver software dentro da comunidade Ruby. N\u00e3o s\u00f3 tecnicamente, mas tamb\u00e9m na busca por gera\u00e7\u00e3o de valor. N\u00e3o \u00e9 a toa que muitos dos manifestantes originais abra\u00e7aram profissionalmente o Ruby on Rails.<\/span><\/p>\n<h2><b>Cont\u00ednua aten\u00e7\u00e3o \u00e0 excel\u00eancia t\u00e9cnica e design aumenta a agilidade<\/b><\/h2>\n<p><span style=\"font-weight: 400\">V\u00e1rias das pr\u00e1ticas de qualidade que hoje s\u00e3o amplamente difundidas no nosso meio come\u00e7aram a ser apresentadas para uma nova gera\u00e7\u00e3o de desenvolvedores atrav\u00e9s do Ruby e do Rails. TDD, BDD, an\u00e1lise est\u00e1tica de c\u00f3digo e integra\u00e7\u00e3o cont\u00ednua s\u00e3o alguns exemplos. Toda uma gera\u00e7\u00e3o de desenvolvedores frustrados migrou de tecnologias baseadas na JVM para essa nova cole\u00e7\u00e3o de tecnologias muito mais conectada com o jeito de fazer as coisas do nosso tempo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nossa maior prioridade \u00e9 satisfazer o cliente atrav\u00e9s da entrega cont\u00ednua e adiantada de software com valor agregado.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Al\u00e9m das pr\u00e1ticas de qualidade de desenvolvimento, a comunidade Ruby tamb\u00e9m puxou a ideia do foco na entrega de valor para o cliente. Diversos produtos digitais, como Resultados Digitais, Vindi, Rock Content, Shopify, Zendesk, Square, Heroku e o pr\u00f3prio GitHub, para citar alguns, s\u00e3o exemplos de sucesso no uso da tecnologia, n\u00e3o s\u00f3 para <\/span><a href=\"https:\/\/rubyonrails.org\/doctrine\/#optimize-for-programmer-happiness\"><b>maximizar a felicidade do profissional que desenvolve software<\/b><\/a><span style=\"font-weight: 400\">, mas tamb\u00e9m para maximizar a entrega de valor para o cliente.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com prefer\u00eancia \u00e0 menor escala de tempo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ideias como o <\/span><a href=\"https:\/\/rubyonrails.org\/doctrine\/#convention-over-configuration\"><b>Convention over Configuration<\/b><\/a><span style=\"font-weight: 400\">, Integra\u00e7\u00e3o Cont\u00ednua e Testes Automatizados hoje em dia nem s\u00e3o mais discutidas como algo que devemos ou n\u00e3o fazer, viraram um padr\u00e3o intr\u00ednseco da nossa ind\u00fastria. Junto com uma pitada de outras inova\u00e7\u00f5es, isso possibilita que hoje a gente fa\u00e7a a entrega da primeira vers\u00e3o de um sistema em 5 minutos usando um Platform as a Service como a Heroku. Em aproximadamente 10 anos movemos a nossa ind\u00fastria de um padr\u00e3o de entrega de meses para horas ou minutos.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<h2><b>Um momento de incerteza<\/b><\/h2>\n<p><span style=\"font-weight: 400\">Em 2009 o Ruby sofreu a sua grande crise. O Twitter, antes desenvolvido inteiramente em Rails e outras tecnologias do ecossistema, anuncia que est\u00e1 migrando seu back-end de mensageria para tecnologias baseadas na JVM devido a problemas de escalabilidade. A mensagem foi mal interpretada, dando a entender que produtos desenvolvidos em Rails n\u00e3o pudessem escalar.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nessa \u00e9poca estava acontecendo uma transforma\u00e7\u00e3o que nossa ind\u00fastria ainda n\u00e3o entendia muito bem. Falamos sobre ela na nossa <\/span><a href=\"https:\/\/mailchi.mp\/magrathealabs\/the-magrathea-times-09\"><b>\u00faltima newsletter<\/b><\/a><span style=\"font-weight: 400\">, onde trouxemos as mudan\u00e7as arquitet\u00f4nicas que surgiram nos \u00faltimos anos decorrente da grande quantidade de dados com a qual precisamos lidar atualmente. Para esses tipos de problemas, onde h\u00e1 processamento de\u00a0 quantidades massivas de dados em tempo real, existe toda uma outra categoria de tecnologias, majoritariamente desenvolvidas em cima da JVM. A escolha era \u00f3bvia.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Essa categoria de problemas enfrentados no desenvolvimento de produtos digitais \u00e9 completamente diferente dos problemas endere\u00e7ados por tecnologias como o Ruby e o Rails. O Rails est\u00e1 focado em entregar produtos na m\u00e3o dos usu\u00e1rios, gerando o m\u00e1ximo de valor poss\u00edvel em ciclos de valida\u00e7\u00e3o r\u00e1pida.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Da influ\u00eancia do Ruby, e da necessidade em lidar problemas que exigem sistemas de baixa lat\u00eancia, distribu\u00eddos e tolerantes a falhas, nasce em 2011 a linguagem Elixir. Essa linguagem se inspira em muitos aspectos da expressividade da linguagem Ruby, com o poder da m\u00e1quina virtual do Erlang. Elixir surge como uma alternativa para lidar com problemas de processamento massivo e streaming de dados.<\/span><\/p>\n<h2><b>Onde estamos agora?<\/b><\/h2>\n<p><span style=\"font-weight: 400\">Colheu das cr\u00edticas e inova\u00e7\u00f5es que sa\u00edram dele para melhorar. O Ruby 3, que sai daqui a algumas semanas, promete uma mudan\u00e7a arquitetural da linguagem que pode aumentar seu desempenho em at\u00e9 3 vezes (projeto chamado de \u201cRuby 3&#215;3\u201d). O time de desenvolvimento vem trabalhando nos \u00faltimos anos no compilador just-in-time que gera c\u00f3digo nativo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para os antigos problemas de concorr\u00eancia, o Ruby est\u00e1 introduzindo a abstra\u00e7\u00e3o de fibers, um jeito melhor para o controle de fluxos ass\u00edncronos. Recentemente foi inclu\u00edda na distribui\u00e7\u00e3o padr\u00e3o o <\/span><a href=\"https:\/\/github.com\/ruby\/ruby\/blob\/master\/doc\/ractor.md\"><b>Ractor<\/b><\/a><span style=\"font-weight: 400\">, uma biblioteca que implementa a abstra\u00e7\u00e3o de Atores em Ruby. O modelo de atores foi uma das grandes sacadas do Erlang, e que ajuda no desenvolvimento de aplica\u00e7\u00f5es distribu\u00eddas.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A terceira grande inova\u00e7\u00e3o dessa vers\u00e3o est\u00e1 relacionada com a corretude de c\u00f3digo, com a inclus\u00e3o de um type profiler que ir\u00e1 auxiliar na checagem de erros em tempo de compila\u00e7\u00e3o.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para quem desenvolve e mant\u00e9m produtos digitais desenvolvidos em Ruby, as novas atualiza\u00e7\u00f5es trazem mudan\u00e7as que podem impactar significativamente o desenvolvimento. \u00c9 cedo para dizer, mas com as mudan\u00e7as que est\u00e3o vindo, pode deixar de ser necess\u00e1rio recorrer a outras tecnologias para resolver alguns problemas, como os de concorr\u00eancia.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Hoje v\u00e1rias das inova\u00e7\u00f5es que a comunidade Ruby trouxe est\u00e3o difundidas em outras tecnologias. Apesar disso, o Ruby, o Rails e o ecossistema ao seu redor continuam sendo \u00f3timas op\u00e7\u00f5es para cria\u00e7\u00e3o de produtos digitais. Ruby \u00e9 uma linguagem com capacidade de dinamismo e metaprograma\u00e7\u00e3o dificilmente superadas por outras tecnologias. Para velocidade de desenvolvimento, MVPs e valida\u00e7\u00f5es r\u00e1pidas, ainda consideramos ela uma das melhores op\u00e7\u00f5es.\u00a0<\/span><\/p>\n<p>E antes de encerrarmos esse artigo, quero te fazer 2 convites: o primeiro \u00e9 para fazer a sua inscri\u00e7\u00e3o e vir com a gente para <a href=\"https:\/\/ruby.com.br\/?utm_source=Locaweb&amp;utm_medium=post&amp;utm_campaign=e-como-vai-o-ruby\">RubySummitBrasil<\/a> e para ficar por dentro dessas novidades, <a href=\"https:\/\/dontpanic.magrathealabs.com\/the-magrathea-times?utm_source=Locaweb&amp;utm_medium=post&amp;utm_campaign=e-como-vai-o-ruby\">assine a newsletter The Magrathea Times<\/a>.<\/p>\n<p>At\u00e9 breve!<\/p>\n<p><span style=\"font-weight: 400\"><em><strong>+Esse artigo produzido em parceria com<\/strong><\/em> Alan Rafael Fachini, fundador e diretor da <\/span><a href=\"https:\/\/magrathealabs.com\/\"><span style=\"font-weight: 400\">Magrathea Labs<\/span><\/a><span style=\"font-weight: 400\">, uma consultoria em desenvolvimento de software que ajuda empresas em fase de crescimento acelerado a resolverem problemas complexos com tecnologia. Ajudamos nossos clientes a escalarem sua tecnologia para atingirem seus objetivos de crescimento.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O final deste ano pede que a gente fale sobre a linguagem Ruby. Em Outubro tivemos a tradicional RubyConfBrasil. Em Dezembro teremos a RubySummitBrasil, um evento completamente organizado pela comunidade brasileira. Ambos os eventos s\u00e3o patrocinados pela Magrathea. Al\u00e9m disso, h\u00e1 a promessa de lan\u00e7amento da vers\u00e3o est\u00e1vel do Ruby 3.0, um evento esperado a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":27815,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-27811","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/27811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=27811"}],"version-history":[{"count":0,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/27811\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media\/27815"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=27811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=27811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=27811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}