Pascal e o nerd tiraninho

Monsieur Pascal

E não é que Pascal, no século XVII, ao expor o seu conceito de tirania sem querer descreve os nerds tiraninhos que implicam com todos aqueles que usam tecnologias diferentes das suas favoritas em pleno século XXI?

A definição é feita no fragmento 58 da sua obra inacabada “Pensées” (em português “Pensamentos”). Segue o fragmento:

“A tirania consiste no desejo de domínio universal e fora da sua ordem.

Diversos comportamentos de fortes, de belos, de bons espíritos, de piedosos, dos quaqis cada um reina na sua parte, não noutra parte. E às vezes se encontram, e o forte se bate com o belo como tolos disputando quem terá o domínio do outro, porque o seu domínio é de gênero diverso. Não se entendem. E o erro deles está em querer reinar por toda parte. Nada o pode, nem mesmo a força: ela nada faz no reino dos sábios, ela só tem o domínio das ações exteriores. – Assim, estes discursos são falsos…”

Resumindo, para Pascal a tirania consiste na tentativa de se negar a natureza própria das coisas – toscamente falando, consiste em tentar encaixar retãngulos em circulos. O tirano pode até mesmo conseguir, mas nunca terá um resultado BOM de fato.

E aonde o nerd tiraninho entra nesta?

Com certeza você já viu discussões em fórums do tipo “Java vs. .net”, “Mac vs. PC”, “Linux vs. Windows”, “X vs Y” que raríssimas vezes (eu nunca vi) resultam em alguma conclusão válida. E a razão é muito simples: uma tecnologia é criada visando resolver um conjunto de problemas (ou apenas um) específico, e não todos. A negligência deste fato é que torna a discussão idiota.

Será que estes tiraninhos tiveram brinquedos de encaixe na infância?

Nesta nossa área de TI é muito comum a ocorrência deste sentimento infantil de fascinação por uma tecnologia específica. A impressão que tenho é a de que os “profissionais” se tornam crianças, e a tecnologia em foco passa a ser vista como um martelo para o qual todos os problemas são pregos.

Vou dar um exemplo (é apenas um exemplo, por favor não vamos abordar este tema aqui ok?) de discussão recente: “.net é melhor que Java porque se integra melhor em forma nativa com Windows”. Fica nítido aqui o que Pascal disse acima?

  • Java foi criado para ser multiplataforma, e não oferecer integração nativa profunda com nenhum sistema operacional específico (até consegue, mas não é algo nativo da plataforma).
  • .net foi criado com o objetivo de substituir a API Win32 do Windows e oferecer um novo ambiente de execução/desenvolvimento para o ecosistema Microsoft (o papo multiplatforma sempre foi balela desde o início, convenhamos)

Percebem? Objetivos distintos. Não há como dizer que um seja superior ao outro levando este aspecto em consideração. Se a discussão fosse algo do tipo “qual ambiente de código gerenciado oferece maior segurança”, ai sim um poderia ser superior ao outro, pois um dos objetivos em comum entre as duas plataformas é justamente oferecer melhor segurança. Infelizmente, ESTE tipo de discussão é raro.

Não: o seu Java não vai resolver todos os problemas do mundo, assim como o seu .net, e o seu amado Delphi não é a ferramenta mais produtiva do universo em todos os aspectos, assim como o seu Ruby on Rails ou Grails. A tecnologia só se destaca de FATO para o conjunto de objetivos ao qual VISA atender.

Sendo assim, por favor, lembre-se: no mundo não há só pregos: há porcas, parafusos e muitas outras pecinhas.

PS:

e convenhamos, tiraninhos normalmente são muito chatos…

PS2:

e este papo de que “linguagem é tudo igual” também é furado demais da conta…

14 thoughts on “Pascal e o nerd tiraninho

  1. Poderia explanar melhor sobre o ponto levantado em PS2?

    Obrigado!

    Responda

    admin Reply:

    Opa: sim, claro!

    É bobagem este papo de que “linguagens de programação são todas iguais” pelo seguinte: toda linguagem de programação é feita visando resolver um conjunto de problemas (que pode ser unitário) específico.

    Sendo assim, nada mais natural que os conceitos adotados por cada linguagem varie. Se você tentar por exemplo programar em Java tal como faz em Delphi ou Visual Basic, achando que são “a mesma coisa”, acaba falhando miserávelmente por exemplo.

    Um bom fato que joga por terra este falso argumento é o número de linguagens existentes. Se fossem todas iguais, não deveriam haver menos linguagens ao invés desta multidão?

    (tenho um post neste blog sobre isto. vou ver se posto o link aqui nos comentários)

    Responda

    Fabiano Sobreira Reply:

    Na verdade acredito que as linguages de propósito geral como Java, Ruby, C# ou Delphi, nascem visando resolver problemas recorrentes em outra linguagem. Java (a linguagem) veio para resolver problemas do C++; Ruby é uma proposta mais simples a linguagens como Python e Smalltak; C# é uma melhor abordagem do que Java se propõe em relação ao C++.

    Questões como “é mais produtiva” ou “é mais fácil para fazer isso” acabam dependendo das ferramentas e frameworks disponíveis. A tendência que algumas linguagens têm de ser “melhor” em relação a outra quando utilizadas para um propósito específico está intimamente ligada a estas ferramentas e frameworks.

    Pode-se fazer sites inteiramente em Delphi. Você pode fazer programação de formulários usando a API WIN32 com Ruby. Muitos desenvolvedores Java trocam seus frameworks MVC e partem para o Grails/Rails.

    Discordando de você, linguagens sim são muito parecidas, o conjunto de frameworks é que fazem toda a diferença.

    Responda

    Fabiano Sobreira Reply:

    “Pode-se fazer sites inteiramente em Delphi. Você pode fazer programação de formulários usando a API WIN32 com Ruby. Muitos desenvolvedores Java trocam seus frameworks MVC e partem para o Grails/Rails.”

    Correção:

    Pode-se fazer sites inteiramente em Delphi, mas você criaria um monstro difícil de manter, lento cheio de bugs e limitações.

    Você pode fazer programação de formulários usando a API WIN32 com Ruby, mas não conheço ninguém que o faça.

    Assim como muitos desenvolvedores Java trocam seus frameworks MVC e partem para o Grails/Rails, pelo fator produtividade.

    Responda

  2. Kico, gostei muito do post, velho. O uso de Pascal foi uma sacada massa.
    Abração!

    Responda

    admin Reply:

    Igolinus!!! Quanto tempo!
    Fico feliz que tenha gostado. Isto me incentiva a trazer mais alguns dos nossos “velhos conhecidos” para o meu campo profissional. :)

    Responda

  3. Kico, sobre o P.S 2, “linguagem é tudo igual”, existe uma parte da comunidade que prefere usar este argumento:

    “De acordo com a teoria da completude de Turing, tudo que uma linguagem Turing-complete(linguagens que usamos hoje: C, java, .net, ruby) pode fazer teoricamente pode ser feito por qualquer outra linguagem Turing-complete, mas de um jeito diferente. Você pode fazer tudo em Assembler, mas ninguém quer programar em Assembler. Do ponto de vista do que você pode fazer, entretanto, as linguagens diferem entre si – mas as diferenças são limitadas. Por exemplo, Python e Ruby fornecem quase o mesmo poder para o programador.”

    http://en.wikipedia.org/wiki/Turing_completeness

    Mas, sempre lembrando que uma coisa é ser possível, outra bem diferente, é ser viável.

    Responda

    admin Reply:

    O que continua com o argumento básico: ferramenta certa pro trabalho certo.

    Sim: eu posso bater um prego com um alicate se quiser, mas é muito mais fácil com o martelo.

    É furada este papo de todas as linguagens serem iguais por uma razão muito simples: quando alguém cria uma linguagem, o faz visando resolver um domínio específico de problema (seja ele por exemplo aprimorar a qualidade de uma linguagem já existente (vide C++) ou mesmo solução de problemas estatísticos (vide R)).

    É fato: eu não contrataria para desenvolver o meu sistema web quem me dissesse que ele seria inteiramente feito em Visual Basic 6. Seria possível, sim. Seria viável. Nem um pouco! :)

    Responda

  4. Adorei o post!

    Concordo que cada FRAMEWORK seja feito para resolver problemas específicos, mas acho que as linguagens C# (que eu uso), VB (não uso) e Java (aprendendo) tem os mesmos ideais. Prefiro (não só uso) usar framework .NET mesmo programando em Java (J#) com Visual Studio. Acho que é mais por costume e praticidade, pois acho uma ferramenta mais produtiva (pra mim) do que o NetBeans, por exemplo.

    Parabéns pelo post! :)

    Responda

    admin Reply:

    Oi Rafael, que legal que gostou. Sim, eu concordo com você a respeito destas linguagens que citou: realmente, são mais de uma alternativa para o mesmo problema. Isto é ótimo, pois assim é possível selecionar aquele com a qual nos sentimos mais à vontade, não é mesmo?

    Grande abraço e obrigado pelo incentivo!

    Responda

  5. Parabéns pelo post é por aí mesmo, não adianta ser tirano ou evangelizar uma única ferramenta.

    Existe ferramentas que são como furadeiras ou parafusadeira, com diversas brocas/pontas para diversas funções diferentes. E outras são mais como um simples martelo. Cada uma tem seu lugar.

    Usar a ferramenta certa para o trabalho, sempre traz um resultado mais eficiente. Notando que eficiente, nem sempre significa melhor. Um buraco cavado com colher pode ser mais perfeito, mas a escavadeira é muito mais rápida. E a escavadeira não servirá para cavar um buraco para plantar uma semente.

    Ou seja, não há uma linguagem que seja a melhor em tudo: produzir grandes e pequenos sistemas, sistemas web, embarcados, para desktop e celular, sejam rápidos, consumam pouco recurso, o tempo de desenvolvimento seja mínimo, a atualização do sistema seja fácil e rápida, sejam genéricos e customizados etc.

    Responda

  6. Olá Kiko. Parabéns pelo post. Tenho lido muita coisa por aqui e tenho me admirado com a sutileza dos detalhes. Fica na Paz e vamos lá. \\//_

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Oi Iratuã, valeu!

    Responda

Leave a Reply

Your email address will not be published. Required fields are marked *