<commit_before>= Por que Ruby?
:published_at: 2013-11-03
:uri-coding: http://www.codinghorror.com/blog/2013/03/why-ruby.html
:uri-basic: http://www.codinghorror.com/blog/2008/04/everything-i-needed-to-know-about-programming-i-learned-from-basic.html
:uri-wintel: http://pt.wikipedia.org/wiki/Wintel
:uri-discourse: http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html
:uri-anders: http://en.wikipedia.org/wiki/Anders_Hejlsberg
:uri-giveup: http://www.codinghorror.com/blog/2007/05/giving-up-on-microsoft.html
:uri-doninhas: http://www.codinghorror.com/blog/2009/07/oh-you-wanted-awesome-edition.html
:uri-ugly: http://www.codinghorror.com/blog/2009/03/the-ugly-american-programmer.html
:uri-briga: http://blog.stackoverflow.com/2012/02/stack-exchange-open-source-projects/
:uri-cc: http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/
:uri-5anos: http://www.codinghorror.com/blog/2007/05/giving-up-on-microsoft.html
:uri-ward: http://eviltrout.com/
:uri-yegge: https://sites.google.com/site/steveyegge2/tour-de-babel
:uri-respeito: http://www.codinghorror.com/blog/2012/07/but-you-did-not-persuade-me.html
:uri-inter: http://www.codinghorror.com/blog/2006/02/the-day-performance-didnt-matter-any-more.html
:uri-limite: http://meta.discourse.org/t/tuning-ruby-and-rails-for-discourse/4126
:uri-brilha: http://www.codinghorror.com/blog/2008/01/the-magpie-developer.html
:uri-fork: https://github.com/discourse/discourse
Este artigo foi traduzido do blog {uri-coding}[Coding Horror] com a devida autorização do autor <NAME>.

Esta é a primeira vez que estou traduzindo um artigo do Atwood e pretendo fazer isso mais vezes. Por favor, se houver algum erro de concordância e entendimento com relação o {uri-coding}[original], sintam-se a vontade para me escrever.

—

Tenho sido desenvolvedor Microsoft por algumas décadas até hoje. Eu dei meus primeiros passos em vários sabores do {uri-basic}[Microsoft Basic para PC], e recebi meu primeiro pagamento programando em Microsoft FoxPro, Microsoft Access, e Microsoft Visual Basic.Eu vi o futuro da programação, meus amigos, e ele é terriveis aplicações de CRUD rodando em maquinas {uri-wintel}[Wintel]!

É claro, construimos o Stack Overflow em Microsoft.NET. Este é o grande motivo de ele ainda ser tão rápido quanto é. Então uma das perguntas mais frequentemente feitas depois que anunciamos o {uri-discourse}[Discourse] foi:

    Por que vocês não desenvolveram o Discourse em .NET também?

Deixemos claro uma coisa: Eu amo .NET. Uma das grandes emoções da minha carreira profissional foi ter a oportunidade de colocar um adesivo do Coding Horror nas mãos de {uri-anders}[Anders Hejlsberg]. Perdoe meu fanboy interior por um momento, mas caramba, eu ainda me arrepio. Devem ter talvez uns cinquenta projetistas de linguagem de classes de computador pelo mundo. Anders é apenas um deles que criou o Turbo Pascal e o Delphi. É graças à experiência de Anders que o .NET começou com uma linguagem tão bem projetada – literalmente o que o Java deveria ter sido em todo o nível concebível – e tem evoluído extraordinariamente de modo continuo em meios práticos pelos últimos 10 anos, aproveitando os pontos fortes de outras linguagens dinamicamente influentes.
turbopascal

Dito tudo isso, é verdade que eu intencionalmente escolhi não usar .NET para o meu próximo projeto. Então você pode esperar encontrar alguém bravo arengando aqui sobre o quão mais feliz estou deixando as amarras opressoras dos meus senhores Microsoft para trás. Livre afinal, livre, pelo menos, graças a Deus todo-poderoso eu sou livre enfim!

Sinto muito. {uri-giveup}[Já escrevi este post cinco anos atrás].

Como qualquer programador pragmático, eu escolhi a ferramenta apropriada para o trabalho em mãos. E por mais que eu ame o .NET, ele **seria uma escolha extraordinariamente pobre para um projeto 100% software livre como o Discourse**. Por que? Três razões em especial:

1 **O licenciamento.** Meu Deus, o licenciamento. Nem é tanto pelo dinheiro, como é infernal o alucinante nível de complexidade em ter certeza de que todo o seu software é licenciado apropriadamente: determinando em qual nível e edição você está licenciado, quem é licenciado para usar o que, qual servidores são licenciados… Han? Que? Desculpa, passei lá por um minuto, quando fui atacado por {uri-doninhas}[doninhas raivosas do licenciamento].

Eu não estou inclinado a fazer grandes declarações sobre o futuro do software, mas se há algo que vai mata o software comercial, deixe-me dizer-lhe, não será um software de código aberto.

2 **O atrito.** Se você quer construir um software open source verdadeiramente viável, você precisa de pessoas para contribuir com o seu projeto, de modo que se trate de uma coisa vivente, respirando e crescendo. E a não ser que você possa baixar todo o software que precisa para hackear o seu projeto de forma livre por toda a Internet, sem amarras, haverá atrito demais.

Se Stack Overflow me ensinou algo, é que hoje nós vivemos num mundo onde o próximo engenheiro de software brilhante pode vir de qualquer lugar do planeta. Estou falando de lugares que esse {uri-ugly}[programador americano e feio] nunca escutou falar, onde se fala línguas doidas e sem sentido que eu não entendo. Mas entenda. Afaste-se um pouco enquanto eu explodo seus cérebros, gente: esses programadores brilhantes ainda desenvolvem usando as mesmas palavras-chave que nós! Eu sei, louco né?

Levantar e rodar em um ambiente Microsoft é simplesmente muito difícil para um desenvolvedor, digamos, na Argentina, ou no Nepal, ou na Bulgária. Cadeias de sistemas Operacionais, linguagens e ferramentas livres são os grandes equalizadores, a base para a nova grande geração de programadores por todo o mundo onde estão em vias de nos ajudar a mudar o mundo.

3 **O Ecosistema.** Quando eu estava no Stack Exchange, {uri-briga}[nós brigamos] para fazer o máximo que podiamos para que a nossa infraestrutura fosse open source. Foi algo que deixamos explícito nas nossas orientações de compensação, essa ideia de que nós seriamos (parcialmente) julgados pelo quanto poderíamos fazer em público, e tentar deixar o quanto de artefatos públicos e úteis do nosso trabalho quanto podíamos. Mas por que todo o Stack Exchange não foi criado sob {uri-cc}[Creative Commons contributions] desde o primeiro dia?

Você pode certamente desenvolver software código aberto em .Net. E muitos o fazem. Mas isto nunca parece natural. Isto nunca parece correto. Ninguém aceita uma correção para uma biblioteca de classe do core do .Net, não importa o quanto você tente. parece que você está nadando contra a corrente, em um mundo de pequenas e grandes empresas usando .Net onde elas não estão de fato interessadas em compartilhar o códigos com o mundo – provavelmente porque eles sabem que seriam ruim se o fizessem de qualquer forma. É que não faz parte da cultura do Microsoft .Net fazer coisas open source, especialmente coisas ruins. Se você tem medo de que as coisas que você compartilha sejam ruins, este medo vai te tornar incapaz de realmente e profundamente retribuir. O aspecto mais, digamos delicioso… das comunidades de código aberto é como eles não têm medo de deixar “tudo para fora”, por assim dizer.

Então como resultado, para qualquer tarefa em .Net você deve ter – se tiver sorte – de escolher entre talvez duas bibliotecas talvez decentes. Por outro lado, em qualquer linguagem open source popular, você terá facilmente uma dúzia de alternativas para a mesma função. Sim, talvez seis delas quebrem, seja obsoletas, não funcionem, ou sejam absolutamente loucas. Mas ei, mesmo levando em conta algumas deteriorações naturais de fonte aberta, você ainda está à frente por um fator de três! Você que sai ganhando!

Eu escrevi há {uri-5anos}[cinco anos atrás]:

    Eu sou pragmático. No momento, eu escolho viver no universo Microsoft. Mas isso não significa que sou ignorante de como os outros vivem. Sempre há mais de um jeito de fazer, e só porque eu escolhi uma em particular não quer dizer que seja a certa – nem mesmo uma maneira particularmente boa. Escolher ser provincial e insular é um caminho infalível para a ignorância. aprenda como os outros vivem. Tente conhecer alguns desenvolvedores que não vivem exatamente no mesmo mundo que você. Procure as ferramentas que estão usando, e porque. Se depois de molhar o seu pé nos dois lados da cerca, você decidir que o outro lado está vivendo melhor e deseja se juntar a eles, então te desejo um amoroso adeus.

Eu não vivo mais no universo Microsoft. Certo, errado, bom, mau, é assim que ele saiu para o projeto que queríamos construir.


Contudo, eu estaria mentindo se não falasse que eu realmente acredito que o tipo de projeto que estamos construindo no Discourse representa sim o futuro do software. Se você olhar de soslaio um pouco, eu acho que você pode ver um futuro não muito distante onde o .Net é um nicho especializado fora do mainstream.

Mas **por que Ruby?** Bem, a menor resposta e não muito glamorosa é a de que eu reduzi a lista a Python ou Ruby, e meu co-fundador original {uri-ward}[Robin Ward] vem construindo grandes aplicações em Rails desde 2006. Então isso me conquistou.

Eu sempre fui um pouco intrigado com o Ruby, principalmente por causa do {uri-yegge}[absolutamente transbordante louvor que <NAME> fez com a linguagem muito tempo atrás em 2006]. Eu nunca esqueci disso.

    Na maior parte, Ruby pegou o processamento de string e integração com o Unix do Perl, o que significa que a sintaxe é idêntica, e assim por ali mesmo, antes de qualquer coisa acontecer, você já tem o melhor de Perl. E isso é um grande começo, especialmente se você não pega o resto do Perl.

    Mas então Matz pegou o melhor de processamento de listas do Lisp, o melhor de Orientação a Objetos do Smalltalk e outras linguagens, e o melhor de iterators do CLU, e basicamente o melhor de tudo de todos.

    E ele de alguma forma fez com que tudo funcionasse junto tão bem que você nem percebe que é tudo isso. Eu aprendi Ruby mais rápido do que qualquer outra linguagem, de umas 30 ou 40 no total: levou uns 3 dias para que eu me sentisse muito mais confortável usando Ruby, do que em Perl, depois de oito anos de codificação em Perl. Ele é tão consistente que você começa a ser capaz de adivinhar como as coisas vão funcionar, e na maioria das vezes você está certo. É lindo. E divertido. E prático.
<commit_msg>Update 2013-11-03-Por-que-Ruby.adoc<commit_after>= Por que Ruby?
:published_at: 2013-11-03
:hp-image: http://sd.keepcalm-o-matic.co.uk/i/keep-calm-and-code-in-ruby-13.png
:uri-coding: http://www.codinghorror.com/blog/2013/03/why-ruby.html
:uri-basic: http://www.codinghorror.com/blog/2008/04/everything-i-needed-to-know-about-programming-i-learned-from-basic.html
:uri-wintel: http://pt.wikipedia.org/wiki/Wintel
:uri-discourse: http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html
:uri-anders: http://en.wikipedia.org/wiki/Anders_Hejlsberg
:uri-giveup: http://www.codinghorror.com/blog/2007/05/giving-up-on-microsoft.html
:uri-doninhas: http://www.codinghorror.com/blog/2009/07/oh-you-wanted-awesome-edition.html
:uri-ugly: http://www.codinghorror.com/blog/2009/03/the-ugly-american-programmer.html
:uri-briga: http://blog.stackoverflow.com/2012/02/stack-exchange-open-source-projects/
:uri-cc: http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/
:uri-5anos: http://www.codinghorror.com/blog/2007/05/giving-up-on-microsoft.html
:uri-ward: http://eviltrout.com/
:uri-yegge: https://sites.google.com/site/steveyegge2/tour-de-babel
:uri-respeito: http://www.codinghorror.com/blog/2012/07/but-you-did-not-persuade-me.html
:uri-inter: http://www.codinghorror.com/blog/2006/02/the-day-performance-didnt-matter-any-more.html
:uri-limite: http://meta.discourse.org/t/tuning-ruby-and-rails-for-discourse/4126
:uri-brilha: http://www.codinghorror.com/blog/2008/01/the-magpie-developer.html
:uri-fork: https://github.com/discourse/discourse
Este artigo foi traduzido do blog {uri-coding}[Coding Horror] com a devida autorização do autor <NAME>.

Esta é a primeira vez que estou traduzindo um artigo do Atwood e pretendo fazer isso mais vezes. Por favor, se houver algum erro de concordância e entendimento com relação o {uri-coding}[original], sintam-se a vontade para me escrever.

—

Tenho sido desenvolvedor Microsoft por algumas décadas até hoje. Eu dei meus primeiros passos em vários sabores do {uri-basic}[Microsoft Basic para PC], e recebi meu primeiro pagamento programando em Microsoft FoxPro, Microsoft Access, e Microsoft Visual Basic.Eu vi o futuro da programação, meus amigos, e ele é terriveis aplicações de CRUD rodando em maquinas {uri-wintel}[Wintel]!

É claro, construimos o Stack Overflow em Microsoft.NET. Este é o grande motivo de ele ainda ser tão rápido quanto é. Então uma das perguntas mais frequentemente feitas depois que anunciamos o {uri-discourse}[Discourse] foi:

    Por que vocês não desenvolveram o Discourse em .NET também?

Deixemos claro uma coisa: Eu amo .NET. Uma das grandes emoções da minha carreira profissional foi ter a oportunidade de colocar um adesivo do Coding Horror nas mãos de {uri-anders}[Anders Hejlsberg]. Perdoe meu fanboy interior por um momento, mas caramba, eu ainda me arrepio. Devem ter talvez uns cinquenta projetistas de linguagem de classes de computador pelo mundo. Anders é apenas um deles que criou o Turbo Pascal e o Delphi. É graças à experiência de Anders que o .NET começou com uma linguagem tão bem projetada – literalmente o que o Java deveria ter sido em todo o nível concebível – e tem evoluído extraordinariamente de modo continuo em meios práticos pelos últimos 10 anos, aproveitando os pontos fortes de outras linguagens dinamicamente influentes.

image::https://arthurmolina.github.io/images/turbopascal.png[]

Dito tudo isso, é verdade que eu intencionalmente escolhi não usar .NET para o meu próximo projeto. Então você pode esperar encontrar alguém bravo arengando aqui sobre o quão mais feliz estou deixando as amarras opressoras dos meus senhores Microsoft para trás. Livre afinal, livre, pelo menos, graças a Deus todo-poderoso eu sou livre enfim!

Sinto muito. {uri-giveup}[Já escrevi este post cinco anos atrás].

Como qualquer programador pragmático, eu escolhi a ferramenta apropriada para o trabalho em mãos. E por mais que eu ame o .NET, ele **seria uma escolha extraordinariamente pobre para um projeto 100% software livre como o Discourse**. Por que? Três razões em especial:

1 **O licenciamento.** Meu Deus, o licenciamento. Nem é tanto pelo dinheiro, como é infernal o alucinante nível de complexidade em ter certeza de que todo o seu software é licenciado apropriadamente: determinando em qual nível e edição você está licenciado, quem é licenciado para usar o que, qual servidores são licenciados… Han? Que? Desculpa, passei lá por um minuto, quando fui atacado por {uri-doninhas}[doninhas raivosas do licenciamento].

Eu não estou inclinado a fazer grandes declarações sobre o futuro do software, mas se há algo que vai mata o software comercial, deixe-me dizer-lhe, não será um software de código aberto.

2 **O atrito.** Se você quer construir um software open source verdadeiramente viável, você precisa de pessoas para contribuir com o seu projeto, de modo que se trate de uma coisa vivente, respirando e crescendo. E a não ser que você possa baixar todo o software que precisa para hackear o seu projeto de forma livre por toda a Internet, sem amarras, haverá atrito demais.

Se Stack Overflow me ensinou algo, é que hoje nós vivemos num mundo onde o próximo engenheiro de software brilhante pode vir de qualquer lugar do planeta. Estou falando de lugares que esse {uri-ugly}[programador americano e feio] nunca escutou falar, onde se fala línguas doidas e sem sentido que eu não entendo. Mas entenda. Afaste-se um pouco enquanto eu explodo seus cérebros, gente: esses programadores brilhantes ainda desenvolvem usando as mesmas palavras-chave que nós! Eu sei, louco né?

Levantar e rodar em um ambiente Microsoft é simplesmente muito difícil para um desenvolvedor, digamos, na Argentina, ou no Nepal, ou na Bulgária. Cadeias de sistemas Operacionais, linguagens e ferramentas livres são os grandes equalizadores, a base para a nova grande geração de programadores por todo o mundo onde estão em vias de nos ajudar a mudar o mundo.

3 **O Ecosistema.** Quando eu estava no Stack Exchange, {uri-briga}[nós brigamos] para fazer o máximo que podiamos para que a nossa infraestrutura fosse open source. Foi algo que deixamos explícito nas nossas orientações de compensação, essa ideia de que nós seriamos (parcialmente) julgados pelo quanto poderíamos fazer em público, e tentar deixar o quanto de artefatos públicos e úteis do nosso trabalho quanto podíamos. Mas por que todo o Stack Exchange não foi criado sob {uri-cc}[Creative Commons contributions] desde o primeiro dia?

Você pode certamente desenvolver software código aberto em .Net. E muitos o fazem. Mas isto nunca parece natural. Isto nunca parece correto. Ninguém aceita uma correção para uma biblioteca de classe do core do .Net, não importa o quanto você tente. parece que você está nadando contra a corrente, em um mundo de pequenas e grandes empresas usando .Net onde elas não estão de fato interessadas em compartilhar o códigos com o mundo – provavelmente porque eles sabem que seriam ruim se o fizessem de qualquer forma. É que não faz parte da cultura do Microsoft .Net fazer coisas open source, especialmente coisas ruins. Se você tem medo de que as coisas que você compartilha sejam ruins, este medo vai te tornar incapaz de realmente e profundamente retribuir. O aspecto mais, digamos delicioso… das comunidades de código aberto é como eles não têm medo de deixar “tudo para fora”, por assim dizer.

Então como resultado, para qualquer tarefa em .Net você deve ter – se tiver sorte – de escolher entre talvez duas bibliotecas talvez decentes. Por outro lado, em qualquer linguagem open source popular, você terá facilmente uma dúzia de alternativas para a mesma função. Sim, talvez seis delas quebrem, seja obsoletas, não funcionem, ou sejam absolutamente loucas. Mas ei, mesmo levando em conta algumas deteriorações naturais de fonte aberta, você ainda está à frente por um fator de três! Você que sai ganhando!

Eu escrevi há {uri-5anos}[cinco anos atrás]:

    Eu sou pragmático. No momento, eu escolho viver no universo Microsoft. Mas isso não significa que sou ignorante de como os outros vivem. Sempre há mais de um jeito de fazer, e só porque eu escolhi uma em particular não quer dizer que seja a certa – nem mesmo uma maneira particularmente boa. Escolher ser provincial e insular é um caminho infalível para a ignorância. aprenda como os outros vivem. Tente conhecer alguns desenvolvedores que não vivem exatamente no mesmo mundo que você. Procure as ferramentas que estão usando, e porque. Se depois de molhar o seu pé nos dois lados da cerca, você decidir que o outro lado está vivendo melhor e deseja se juntar a eles, então te desejo um amoroso adeus.

Eu não vivo mais no universo Microsoft. Certo, errado, bom, mau, é assim que ele saiu para o projeto que queríamos construir.

image::https://arthurmolina.github.io/images/iamok.png[]

Contudo, eu estaria mentindo se não falasse que eu realmente acredito que o tipo de projeto que estamos construindo no Discourse representa sim o futuro do software. Se você olhar de soslaio um pouco, eu acho que você pode ver um futuro não muito distante onde o .Net é um nicho especializado fora do mainstream.

Mas **por que Ruby?** Bem, a menor resposta e não muito glamorosa é a de que eu reduzi a lista a Python ou Ruby, e meu co-fundador original {uri-ward}[<NAME>] vem construindo grandes aplicações em Rails desde 2006. Então isso me conquistou.

Eu sempre fui um pouco intrigado com o Ruby, principalmente por causa do {uri-yegge}[absolutamente transbordante louvor que <NAME> fez com a linguagem muito tempo atrás em 2006]. Eu nunca esqueci disso.

    Na maior parte, Ruby pegou o processamento de string e integração com o Unix do Perl, o que significa que a sintaxe é idêntica, e assim por ali mesmo, antes de qualquer coisa acontecer, você já tem o melhor de Perl. E isso é um grande começo, especialmente se você não pega o resto do Perl.

    Mas então Matz pegou o melhor de processamento de listas do Lisp, o melhor de Orientação a Objetos do Smalltalk e outras linguagens, e o melhor de iterators do CLU, e basicamente o melhor de tudo de todos.

    E ele de alguma forma fez com que tudo funcionasse junto tão bem que você nem percebe que é tudo isso. Eu aprendi Ruby mais rápido do que qualquer outra linguagem, de umas 30 ou 40 no total: levou uns 3 dias para que eu me sentisse muito mais confortável usando Ruby, do que em Perl, depois de oito anos de codificação em Perl. Ele é tão consistente que você começa a ser capaz de adivinhar como as coisas vão funcionar, e na maioria das vezes você está certo. É lindo. E divertido. E prático.

{'fraction_non_alphanumeric': 0.057709648331830475, 'fraction_numerical': 0.010725641877461915, 'mean_word_length': 4.527806925498426, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 6, 'lorem ipsum': 0, 'www.': 20, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2996566', 'n_tokens_mistral': 7168, 'n_tokens_neox': 6687, 'n_words': 3035}