Pascal Deveria ser Modernizado?


Ao longo dos anos, desde Turbo Pascal até as versões mais atuais do Delphi e Lazarus, temos visto muitas mudanças na linguagem.

Você acha que estamos modernizando a linguagem Object Pascal?

Unsplash image
Photo by Hayes Potter on Unsplash

Introdução

É incrível como até hoje eu ainda tenho que responder perguntas sobre os motivos de continuar utilizando a linguagem Object Pascal.

Vou desenvolver utilizando Object Pascal — eu digo a um possível cliente.

  • Object Pas… Ah, aquela linguagem da Apple? (Objective C)
  • Acho que você quer dizer Delphi, não é?
  • Por quê você continua utilizando “isso”?
  • Por quê não utilizar C# ou Java?
  • Você ainda consegue achar emprego?

Eu já escrevi meus motivos mas entendo como pode ser difícil para a maioria das pessoas acreditarem.

Talvez eles pensem que Object Pascal não é tão moderno quanto as linguagens mainstream.

Quando o Concorrente é Prioridade

Existem linguagens muito mais “modernas” hoje em dia e escolher uma que “está morta” não parece uma opção razoável para aqueles que só sabem seguir cegamente o que a maioria diz.

Se você quer chegar onde a maioria não chega, faça o que a maioria não faz — Bill Gates

Talvez esse sentimento de modernização está abalando até mesmo os diretores e desenvolvedores do atual Delphi.

A “modernização” a que me refiro pode ser simplificada dessa forma:

  • Se meu concorrente tem tal feature, eu preciso ter também.

E isso pode matar a linguagem.

Inline Variable Declarations

A alguns dias recebemos a notícia que a linguagem Delphi irá ter Inline Variables.

Marco Cantu — respeitado e conceituado no mundo Delphi — já começou a “matar” a sintaxe Pascal clássica de declaração de variáveis quando inicia seu artigo escrevendo “Old Style Var Blocks”.

Então é oficial, estamos defasados?

Na linguagem Object Pascal, declaramos as variáveis em blocos bem definidos e organizados, diferentemente de outras linguagens onde pode-se declarar onde quiser. Entretanto, agora isso parece ser ruim, já que a maioria faz diferente.

Solução? Ora, vamos copiar o concorrente!

O foco parece ser mais no que o concorrente anda fazendo nos compiladores deles do que nos seus fieis usuários e desenvolvedores Pascal.

Type Inference for Inline Variables

Na linguagem Pascal, tudo deve ser previamente declarado.

Tudo.

Isso é algo intrínseco a linguagem desde o seu nascimento e é um dos pontos fortes dela, pois minimiza qualquer ambiguidade na declaração de tipos.

Tem quem goste, tem quem odeie. Não importa. Ela foi feita dessa forma e deve ser respeitada.

Mas, agora temos a inferência de tipo.

Isso existe em outras linguagens mas é provável que você conheça através do C#.

E as pessoas “aplaudiram”…

Sim, pode ser considerada uma facilidade. Você irá escrever menos. E 99% dos programadores Object Pascal — especialmente Delphi — adoram uma facilidade sem se preocupar com o custo. Sim, o custo, por quê na engenharia nada vem de graça.

A compilação pode ficar mais lenta; pode haver erros de conversão obscuros; o código pode ficar menos legível… além de ir contra a própria filosofia da linguagem, que é declarar tudo antes.

Mesmo assim, se é fácil para escrever e o concorrente tem… por quê não?

Conclusão

Não há problemas com a declaração de variáveis atual. Esse é o estilo Pascal. Entretanto, parecem que estão mais preocupados em adicionar mais features a linguagem do que corrigir bugs. Bem, cada um sabe o que é melhor para sua empresa.

Trabalho com sistemas de alta performance que ainda utilizam a sintaxe clássica do Delphi 7. Então, posso afirmar que não é isso que irá deixar a linguagem melhor que seus concorrentes.

Não me entenda mal. Não estou dizendo que não podemos alterar a linguagem. Existem algumas features ou acertos que que seriam muito bem vindos como, por exemplo, a correção da sintaxe WITH-DO ou uma nova sintaxe para para determinar um alias para uma Unit. Esses seriam melhorias que iriam corrigir problemas no design da linguagem, melhorando a leitura do código e tudo de acordo com a filosofia e estilo Pascal.

Não quero um Frankenstein de várias linguagens. Quero um design limpo, simples e eficiente.

Não quero copiar o concorrente. Quero escrever código Object Pascal.

Não faz sentido levar seu BMW clássico ao mecânico dizendo para deixá-lo mais parecido com uma Mercedes-Benz mais moderna. Você acabará ficando com nenhum dos dois, apenas sucata.

Até logo.

Posts Relacionados

  • Memória Segura Utilizando Instâncias de Interfaces

  • Classes Mutáveis vs Objetos Imutáveis

  • Implementando Interfaces Utilizando Diferente Assinaturas de Métodos

  • Usando Paths ao invés de Diretivas de Compilação

  • Trabalhando com Exceções em Requisições HTTP

  • Tipo object Continua Vivo

  • Array de Objetos

  • Variáveis Locais Deveriam ter Nomes Curtos

  • Como Dividir e Organizar o Código em Formulários com Muitos Widgets

  • Records - Antiga Nova Tecnologia