quarta-feira, 8 de maio de 2013

Delphi Prism, porque não vale a pena

Update
O Prism nunca foi da Embarcadero, ele pertence a Rem Objects, que tinha um contrato com a Embarcadero até esse ano, mas esse contrato já expirou e as duas empresas vão seguir seus caminhos.
O último Delphi Prism foi a versão XE3, se não me engano, mas o Rad Studio XE4 não virá com o Prism, como diz o Andreano Lanusse e o próprio pessoal da Rem Objects.
O Prism foi descontinuado na Embarcadero, mas continuará a evoluir na Rem Objects sob o nome de Oxygene (seu verdadeiro nome).
http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/
http://blogs.remobjects.com/blogs/mh/2013/04/17/p5822
http://www.itwriting.com/blog/7338-no-more-delphi-for-net-prism-removed-from-rad-studio-xe4.html
A partir desse momento a Embarcadero e a RemObjects não são mais parceiras, mas sim concorrentes, mas acredito que o Prism agora irá evoluir, implantando melhorias que não poderia antes devido às políticas da Embarcadero.
Sobre o velho assunto da "Morte do Delphi", eu acredito que o Delphi não irá morrer nunca, assim como o Cobol e o Clipper, mas está fadado à essa letargia: crescimento lerdo e muitas vezes na contra-mão. Todas as melhorias do Rad Studio 4 são tardias em comparação com outros ambientes, além de serem fortemente dependentes de aplicações / módulos de terceiros.
----------------------------------------------------


Antes de mais nada, Delphi Prism é uma excelente linguagem. Tem todos os recursos que uma linguagem moderna deve ter, é totalmente OO, tem sobrecarga de operadores, Generics, Lambda Expressions, Funções anônimas, é fortemente tipada mas permite type inference etc...

Longe de criticar a linguagem em si e quem investe nela, ou quem a concebeu, tenho algumas criticas com relação ao Delphi Prism que me levam a ponderar se vale mesmo a pena investir na linguagem, já explico o porque.

1) Você não vai economizar na curva de aprendizado. Se você acha que sendo um "Delpheiro" vai economizar na curva de aprendizado do Delphi Prism está enganado. Ao aprender, treinar e desenvolver em Delphi Prism você enfrentará os mesmos desafios que enfrentaria aprendendo C#. Isso se dá porque a maior parte desse aprendizado é referente à semântica (conjunto de bibliotecas, o como fazer) do que à sintaxe. A sintaxe você pega em um dia.

2) O Delphi Prism não é o Delphi .Net. O Delphi .Net (8, 2005, 2006 etc) morreu/foi descontinuado, uma pena. Mas este porduto ERA delphi. Não somente em termos de sintaxe e recursos da linguagem, mas em termos de semântica também. Afinal ele tinha uma "VCL", ou uma tentativa de se reimplementar a VCL no .Net Framework. Era um Framework dentro de outro. A migração do Delphi Win32 para o Delphi .Net era POUCO menos trabalhosa, e a curva de aprendizado um pouco mais suave.

3) Delphi Prism, ou Oxygene, é baseado em pascal, mas muito diferente se comparado com o Object Pascal. Não estou falando em termos de bibliotecas e frameworks que vem no pacote, mas sim de sintaxe. O uso da palavra method no lugar de function ou procedure na minha opinião é desnecessário. Agora, lembra do pascal? Para retornar o valor de uma função você fazia, no final do código da função, NomeFuncao := valor. Muito intuitivo, didático e inteligente. Internamente à função você pode usar o nome dela para atribuir-lhe o valor de retorno, como se ela fosse uma variável local dela mesma. Isso não impedia que se usasse chamadas recursivas ou ponteiros para função. No Delphi/Object pascal tivemos a introdução da variável artificial/implícita Result. Então se você tem uma função Soma, ela pode retornar o valor da maneira Soma := valor ou Result := valor. Result nada mais era do que um atalho, já que na época do pascal até meados do Delphi 1 todo mundo usava uma variável Result como acumulador temporário antes de retornar o valor da função. Mesmo assim Result ainda tem mais "cara" de variável do que de comando.
No Delphi Prism não existe mais a forma Soma := valor, ou método := valor. Você DEVE OBRIGATORIAMENTE usar Result. Result passou do status de "variável" para "comando". Result agora é para o prism o que o return é para as linguagens c-like. Só que sem a vantagem de abandonar imediatamente. Para isso você ainda deve forçar a saída do método. Na minha opinião tirar a sintaxe tradicional do pascal É UMA VIOLAÇÃO DO QUE É SANTO, sim, uma heresia.

4) Não existe (m) ferramentas, compiladores, alternativas gratuitas/open source para o Prism.  (o command line tools não conta, seu uso é muito restrito). Também não existem cursos/disciplinas dessa linguagem nos cursos técnicos ou tecnólogos. Logo, você não deve esperar facilidade em contratar um estagiário ou júnior nessa linguagem, muito menos um Sênior autodidata hobbista. A única maneira de ser um autodidata hobbista com Delphi Prism é com pirataria, e eu não faço apologia a pirataria.

Veja bem, continuo achando Delphi Prism demais, gosto muito mesmo, é uma iniciativa legal da Rem Objects e tem todo um histórico de coisas legais por trás disso, mas não programaria com ela se não fosse pago pra isso. Não que ela não tenha futuro, muito pelo contrário, ela pode ter um futuro promissor, mas tudo vai depender de como a dupla RemObjects Embarcadero divulgar e liberar a ferramenta. E não se iluda: Delphi Prism não é Delphi. Se você acha que pode fazer aplicações para IPhone / IPad / IPod no Delphi Prism muito mais facilmente simplesmente porque é "parecido" com Delphi está muito enganado. Utilizando C# você tem a mesma dificuldade, com a vantagem de instalar uma ferramenta a menos. (você não precisaria do prism, mas apenas do visual studio, mono develop, mono e monotouch). Mesmo assim desenvolver para IPhone / IPod / IPad é tão diferente do ambiente Delphi / Win32 que a acentuação na curva de aprendizado, ou seja, a sua dificuldade, estaria no ambiente, no sdk e nas api's da Apple, e não na linguagem. A dificuldade não mudaria muito se você escolhesse o objective-C. E não espere muita portabilidade do código feito em Prism para dentro e fora do windows/mac/linux. Isso porque as bibliotecas e apis que você usa em um não encontrará no outro. A unica coisa que dá para migrar são classes de negócio, as mais abstratas possíveis, e bibliotecas de serviços/funções feitas por você que são algoritmos puros, sem o uso de outras bibliotecas. Nada de GUI ou comunicações.

Basicamente é isso. Se por um acaso a linguagem ganhasse uma implementação open-source (GPL de preferência) e talvez um plugin para integrar sua sintaxe no Eclipse, Sharp Develop ou Mono Develop tudo bem. Enquanto esse dia não chega o Prism não passará de mais uma linguagem .Net entre tantas, com a desvantagem de ser para minorias e de ser só mais uma linguagem fechada e cara dentre tantas abertas e/ou gratuitas.

Críticas? Serão bem vindas. Trollagem? Dê-me audiência.

Postagens populares

Marcadores

delphi (60) C# (31) poo (21) Lazarus (19) Site aos Pedaços (15) sql (13) Reflexões (10) .Net (9) Humor (9) javascript (9) ASp.Net (8) api (8) Básico (6) Programação (6) ms sql server (5) Web (4) banco de dados (4) HTML (3) PHP (3) Python (3) design patterns (3) jQuery (3) livros (3) metaprogramação (3) Ajax (2) Debug (2) Dicas Básicas Windows (2) Pascal (2) games (2) linguagem (2) música (2) singleton (2) tecnologia (2) Anime (1) Api do Windows (1) Assembly (1) Eventos (1) Experts (1) GNU (1) Inglês (1) JSON (1) SO (1) datas (1) developers (1) dicas (1) easter egg (1) firebird (1) interfaces (1) introspecção (1) memo (1) oracle (1) reflexão (1)