DEV Community

loading...

Sotaques em programação

graciano profile image graciano codes Originally published at graciano.me on ・3 min read

Originalmente postado no meu site

Qual sua linguagem favorita?

Escuto tanto esta pergunta que já me acostumei a responder na ponta da língua: a que paga o meu salário. Não significa que não tenho preferências. Definitivamente quero distância de coisas mais antigas da microsoft como Visual Basic, SQL Server ou .NET.

Entretanto, a ideia aqui não é resmungar ou ser clubista. Quero propor a ideia de que existe um “sotaque” em programação. Na minha caminhada, observei esse “fenômeno” acontecer muitas vezes em circunstâncias parecidas:

  • quando a pessoa trabalhou muitos anos numa única linguagem e de repente precisou mudar
  • quando se usa uma tecnologia que poucas pessoas na equipe tem conhecimento básico
  • algumas outras circunstâncias somadas a prazos apertados demais, impossibilitando que os trabalhadores possam estudar os conceitos

Quando um “javeiro raíz” não pegou a ideia do node

Injeção de dependência

Observe este pedaço de código:

const { createReadStream } = require('fs')
const { createInterface } = require('readline')
const { sqsPush } = require('../service/sqsPush')

const dependencies = {
    sqsPush,
    createReadStream,
    createInterface,
}

const processaArquivo = async (file) => {
    const { sqsPush, createReadStream, createInterface } = Object.assign({}, dependencies)
    // ... código que usa as funções sqsPush, createReadStream, createInterface...
}

Enter fullscreen mode Exit fullscreen mode

O autor deste código quis reproduzir um conceito de frameworks MVC (principalmente java) chamado injeção de dependência. Este conceito foi feito para facilitar testes automatizados instanciando objetos automaticamente. Também há o uso curioso do desctruct com o Object.assign({}, ... que mostra a intenção de copiar os valores das funções importadas no require para um novo bloco de memória dentro apenas do escopo da função que se deseja implementar.

O que acontece é que o javascript não é uma linguagem fortemente tipada ou mesmo que obrigue todas as variáveis a serem um objeto de uma classe. Funções são um tipo em javascript. Logo, todas as “dependências” que estão ali não precisam ser instanciadas e aplicação deste conceito se torna desnecessária. O código abaixo funciona do mesmo jeito e tem exatamente o mesmo nível de dificuldade de ser testado num jest da vida:

const { createReadStream } = require('fs')
const { createInterface } = require('readline')
const { sqsPush } = require('../service/sqsPush')

const processaArquivo = async (file) => {
    // ... código que usa as funções sqsPush, createReadStream, createInterface...
}

Enter fullscreen mode Exit fullscreen mode

DAO

Um outro exemplo seria alguém criar um objeto DAO para abstrair chamadas do sequelize ou qualquer outra lib ORM. Esse anti-pattern eu já vi mais vezes do que gostaria e vou poupar o leitor de um exemplo em código.

A chegada

Num outro lado da moeda, trazer conceito de uma linguagem para outra pode nem sempre ser algo negativo como os exemplos acima. O Coffescript foi inspirado em Ruby e Python. E acabou influenciando os rumos do javascript moderno (es6+), com a criaçao das arrow functions. Conceitos do Rust como o enum Option, que remove a necessidade de um ponteiro nulo podem ser reproduzidos em praticamente qualquer linguagem e facilitar a vida do coleguinha.

No filme A Chegada (2016), é apresentada a tal “Hipótese Sapir-Whorf”, que diz que o idioma que falamos determina a maneira como pensamos. Um exemplo muito citado é o número muito grande de termos diferentes que esquimós têm para neve. Porém, a hipótese é uma afirmação bem extrema e no mínimo controversa. Segundo as ideias do Chomsky citadas no link anterior, que tem muito a ver com linguagens de computação todas as linguagens têm uma base gramatical comum. E a explicação do fenômeno da neve dos esquimós vêm mais do uso, ou seja: a hipótese confunde causa com consequência. De qualquer forma, no filme isso é representado de uma maneira mais prática interessante: a cientista só entende as atitudes aparentemente hostis dos aliens quando ela entende o idioma deles. Talvez aprender outras linguagens diferentes das que estamos acostumados nos ajudem a usar essas perspectivas novas para o bem.

Discussion

pic
Editor guide