Olá pessoal, hoje começarei uma série de quickTips sobre as diferenças entre o desenvolvimento desktop em Delphi e C#, começando por alguns prós e contras de cada uma delas e dando sequência com diferenças entre as duas linguagens, demonstrando como fazer em C#, coisas que fazemos em nosso dia-a-dia em Delphi. A idéia é inicializar os desenvolvedores que estão em fase de migração ou que desejem migrar do Delphi para o C#.

Ambiente

A principal diferença em o Delphi e o C# é o ambiente em que eles rodam. O Delphi utiliza-se da API nativa do Windows para construção de suas telas e também para uso de algumas funções internas, já o C# roda sobre o ambiente .Net o que significa dizer que ele usa os recursos da Framework .net que está “acima” do Sistema Operacional. Isso é o que teoricamente tornaria o .Net multiplataforma, mas na prática isso não funciona pois não temos frameworks .Net escritas para N sistemas operacionais.

Existe uma iniciativa chama projeto Mono mas que sinceramente nunca vi rodar em ambiente de produção.

Essa diferença de ambiente de execução faz com que o Delphi seja mais rápido, porém essa diferença é imperceptível e a cada dia se torna ainda mais com a evolução dos desktops de hoje.

Paradigma

Outra diferença é em relação ao paradigma. O Delphi apesar de permitir desenvolver aplicativos orientados a objetos não é completamente orientado a objetos, ele ainda possui tipos primitivos, enquanto que no C# esses tipos não existem mais, eles estão encapsulados em classes que possuem diversos métodos relacionados a cada tipo.

Comparativo de recursos

O Delphi possui componentes que auxiliam muito na produtividade, com pouquíssimo tempo você consegue fazer uma aplicação acessando banco de dados e se bobear sem escrever nenhuma linha de código, esse é o jeito RAD(Rapid Applications Development) de ser do Delphi. No C#, em um primeiro momento, as aplicações podem parecer mais improdutivas, devido à este paralelo traçado entre as duas linguagens, mas com o tempo e com o desenvolvimento de sua própria framework, o desenvolvimento C# pode se tornar mais produtivo e mais elegante do que no Delphi.

O Delphi possui um mecanismo de herança visual mais eficiente do que o do C#/Visual Studio, no Delphi quando herdamos um formulário temos total liberdade para manipular os controles e alterar as propriedades enquanto que no C# não é possível alterar em tempo de design as propriedades dos controles herdados, o que para mim foi uma grande decepção por sinal (aproveito para pedir aos amigos que se souberem uma forma de fazer isso, por favor me avisem J).

O C#/.Net em contrapartida possui um recurso que sinto muita falta no Delphi, que é o uso de atributos que nos permitem inserir informações em classes, interfaces, métodos, e acessar estas informações posteriormente via Reflection.

A API de reflection do C#/.Net é fantástica, mesmo com a nova RTTI do Delphi, ainda considero a API de Reflection do C#/.Net fantástica, muito intuitiva e fácil de usar, além de não precisar de nenhuma diretiva ou escopo de visibilidade específicos.

Uma vantagem do Delphi sobre o C#/.Net é o DataSnap, o C#/.Net ainda não possui nada tão eficiente, rápido e estável quanto o DataSnap do Delphi para desenvolvimento de aplicações 3 camadas.

É isso aí pessoal, essas são algumas das diferenças de alto nível que tenho notado nesta minha migração, nas próximas quickTips desta série estarei mostrando diferença entre Delphi e C# porém mais no nível de sintaxe e API básica, e outras coisas simples que precisamos para fazer um sistema simples.