Você acredita em mágica?

Você acredita em mágica?

Alguns meses atrás, um pró-Django, mesa anti-Rails me incomodou, mas não pelas razões normais. Eu tenho nenhum problema com pessoas que escrevem essas argamassas. Enquanto há pessoas, a maioria será sempre tergiversar sobre minúcias e escolhendo a finalidade maior será sempre incomum.

A maioria das pessoas que usam uma ou outra língua não fazer pleno uso dos seus recursos avançados, e programação de código macaco simples em Python é tão semelhante à programação de código macaco simples em Ruby que pode muito bem ser a mesma língua, a esse nível. Meu Hacker Jornal mini-site é executado em ambos Python e Ruby , e não vale a pena fazer merda de diferença. Mas X vs Y é uma pergunta razoável, para as muitas pessoas cuja ambição não-los e fios eles nos pântanos da mediocridade. Tenho pena deles, mas eu não acho que haja algo de errado com a comparação notas sobre os tamanhos dos mosquitos do pântano para o pântano. Sem problemas com qualquer dos habituais "Python vs Ruby" blá, blá, blá, exceto pelo fato de que toda a questão é chato e mesquinho. Diga o que você quer, escolher o idioma que preferir.

O que realmente me incomodou foi o título:

Eu Odeio Magic: Por Rochas Django!

Especificamente, o horrível termo "mágica".

Então, eu tenho o meu chapéu em Rantin, pisou pela seção de comentários, e eu ranted me um discurso retórico:

O conceito de que as características linguísticas específicas são mais "mágica" do que os outros é insano besteira. Nada disso envolve pó de fada ou nada particularmente complicado, mas é tudo apenas Ruby. Não há tal coisa como metaprogramação. É toda a programação apenas.
Isso é uma coisa que está me incomodando ultimamente. Não tenho nenhum interesse nesta coisa do Rails vs Django. Use o que te faz feliz. Mas não há absolutamente nenhuma lógica em chamar recursos de linguagem "mágicas". Isso implica que certas técnicas de programação são inerentemente fantástica e estranha. Isso é apenas o caso se você não entender o idioma.
Se você tomar essa atitude que alguns recursos de linguagem são "reais" e alguns recursos de linguagem são "mágica" você não vai fazer escolhas racionais quando se trata de decidir o que caracteriza a linguagem a usar. Você está indo para fazer escolhas supersticiosas, porque essa divisão entre o "real" eo "mágico" é uma visão de mundo supersticioso.
A racionalidade é uma atitude mental melhor para a programação de superstição.

Se você quiser ver a minha previsão sobre decisões de programação supersticiosos realidade, encontrar um lugar onde não há razão lógica para não usar eval() no seu código, coloque eval() lá, e motherfuckers relógio surtar como se você estivesse jogando elefante esterco para o Papa. Há uma abundância de lugares onde é intensamente perigoso e tolo de usar eval() . Eu não estou discutindo isso. Mas é tão fácil de encontrar maneiras de usar eval() que são completamente imune a qualquer perigo de qualquer espécie, e ainda que ainda desencadear paranóia em programadores supersticiosos.

O problema é muito mais profundo do que isso, no entanto. Pergunte a si mesmo esta pergunta: se você fosse um programador Lisp vindo a Ruby, você descreveria qualquer das características de Ruby como mágica? De um ponto de vista Lisp, Python tem mais magia nele do que Ruby. De um ponto de vista Lisp, ambas as línguas apresentam um certo número de paredes invisíveis, bloqueando você (sem razão compreensível) de tomar caminhos simples, diretos de A para B. Python é mais mágico do que Ruby, de um ponto de vista Lisp, porque ele apresenta um grande número de paredes invisíveis, e os caminhos em torno deles são menos consistentes .

Um programador supersticioso pode responder que o ponto de vista Lisp é um ponto de vista estranho. A implicação é que um ponto de vista que considera "normais" várias restrições arbitrárias no poder uma linguagem de programação é o ponto de vista racional. Discordo. Pode ser o ponto de vista comum, ou o popular ponto de vista, mas não é do ponto de vista racional. Se fosse o ponto de vista racional, não seria incluir a crença em magia.

Como muitos da geração, nova corrente de Rubistas, eu vim para Ruby por causa do Rails. No entanto, ao contrário de muitos da minha geração, eu fiquei porque Ruby é uma Lisp aceitável . Antes de descobrir Ruby, fascínios meus programação eram inteligência artificial e Lisp. Se usar Ruby como uma Lisp foram tão pesado como usar Python como Lisp (ou como indisciplinado como usando Perl como Lisp ), é muito provável que eu teria seguido em frente.

Uma das grandes coisas sobre Ruby é que você pode vir a Ruby Lisp, e ser feliz, e você pode vir ao Ruby por PHP, e ser feliz. Ruby é um caldeirão fantástico, a este respeito. Mas vamos dar essa metáfora um pouco mais. Aqui está o que está acontecendo, se você reclamar "mágica" em Ruby. Alguns de nós veio ao Ruby por lugares mais sofisticados e sabemos que este assim chamado "mágica" é um pouco sobre o lado pitoresco e limitado, mas nós não fazemos uma grande coisa sobre ele. Mas se você está vindo para Ruby PHP, que é como voltar para Nova York a partir de Palookaville, Omaha. Você está olhando para as luzes elétricas e você está se perguntando se há algum tipo de bruxaria envolvidos.

Eu sou de Chicago. Eu morava em San Francisco. San Francisco é uma cidade bonita, mas eu sempre pensava que era bobagem quando pessoas de cidades menores chamados de San Francisco "a cidade grande." População de Chicago é cerca de 40 vezes a população de São Francisco, e me senti pequena para mim. Bonito, sem dúvida, mas pequenas. Isso é como eu me sinto quando ouço mesquinhas programadores chamando alguns principalmente elegante atalhos "mágica". Porque, se você acha que é mágica, você ainda não viu nada. Isso é algum Palookaville, Omaha besteira, e você precisa ver o maldito mundo .

Agora, novamente, quando as pessoas se queixam "mágica" a razão que eles fazem é porque atalhos principalmente elegante Ruby não são tão elegante como poderiam ser, e também porque já que tudo no nível iniciante em Ruby é fácil de obter o direito de primeira vez, um monte de novatos rubi assumir a sua "magia" será também, e bases de código sofrer como resultado - porque "mágica" Ruby é só fácil de ir direto para a Lispers e Smalltalkers que viram tudo isso antes e já aprendi a habilidades necessárias. Para todos os outros, não há dor, não há bases de código caindo aos pedaços, há erros ridículos incompreensíveis. Eu não estou discutindo isso. Eu entendo isso. Eu simpatizo. Eu senti que a dor.

No entanto, um ponto de vista racional irá atendê-lo muito melhor, como um programador, que um supersticioso. Não é mágica. Não há magia envolvida. É só que, se você nunca aprendeu Lisp, então você nunca aprendi a programar, e poder de Ruby está expondo uma deficiência em suas habilidades. Isto é tudo. E com tantas pessoas PHP antigos e pessoas de Java que nunca aprendeu a programar entrando na onda Ruby, não é nenhuma surpresa que um monte de código está quebrando em que ponto exato em Ruby onde o macaco código-end características ea linguagem real características começar.

A resposta correta não está chamando características arbitrárias "mágicos". A resposta correta é terminar aprender a escrever código. E, por favor acredite em mim, você não vai ser capaz de dominá-lo até que você parar de chamar de mágica. Reconhecê-lo pelo que ele é. É a programação. Isso é tudo.

Comentários

Postagens mais visitadas deste blog

Rails CanCan

Meus insights mais valiosos sobre criptomoedas para 2018 e além

Como pegar a senha do Whatsapp de um Android ou Iphone