O Legado Delphi – Vale migrar para Java ou CSharp (C#) ?

Publicado: 28 de abril de 2014 em C#, C/C++, Java

O que a linguagem de programação Delphi tem em comum com Java e C#? A resposta é tudo? Ou nada? Quem sabe!. Estranho? Com certeza! E a resposta correta depende da versão do Delphi do qual estamos nos referindo. Ou não?

O Delphi nasceu em 1995 como uma linguagem de programação Object Pascal para o Windows 16 bits e foi o primeiro a ser descrito como ambiente RAD (em português, Desenvolvimento Rápido de Aplicações), seu nome faz alusão ao banco de dados Oracle, pois na mitologia grega o Oraculo (Oracle) podia ser encontrado no templo de Delphi.

Delphi - Win32

Delphi – Win32

O Delphi se difundiu pelo mundo na sua versão para Windows 32 bits,  justamente por fazer realmente o que prometia, era rápido para desenvolvimento em grandes equipes, podia se conectar com qualquer banco de dados e de vários modos diferentes, além de possuir uma gama de componentes de todos os tipos, desde os Open Source, como o famoso pacote de componentes Russo chamado RX, até componentes empresariais relacionado a dados e ao visual da aplicação como o InfoPower e 1st Class da empresa Woll2Woll.

O Delphi também possuía vários componentes para relatório onde podia-se  utilizar o poder da sua conexão com o banco de dados Oracle, unidos aos recursos de seus componentes, também possuía integração com o gerador de relatório mais famoso do mundo o Cristal Reports que hoje pertence a SAP.

Outro ponto forte do Delphi é que era possível programar rotinas em Assembler dentro do Object Pascal apenas abrindo um bloco ASM e dizendo direto ao hardware o que o desenvolvedor gostaria de fazer. O Delphi também possuía várias rotinas Assembler como parte de seus comandos como o caso do comando Abort, para ver estas rotinas bastava clicar em cima do comando em questão escrito de qualquer Unit pascal  e pressionando o botão Control (CTRL + Click)  e automaticamente você seria levado ao código que o originava, assim como nas IDEs de hoje em dia.

Assembler Delphi: http://docwiki.embarcadero.com/RADStudio/XE3/en/Using_Inline_Assembly_Code

Com o “Boom” do Linux em 2001 foi lançada uma versão para esta plataforma chamada Kylix,  com o lançamento do Delphi 8 a linguagem passou a suportar o .NET Framework, podendo-se escrever programas C# direto de sua IDE, mas não vingou e  muitas empresas estacionaram seu desenvolvimento na versão 7 do Delphi. O Delphi hoje é marca registrada da empresa Embarcadero e está na sua versão XE10 (emprestando a estratégia de versão do Windows 10) no qual pode-se desenvolver aplicações verdadeiramente nativas para Windows, Mac, Android e iOS a partir de uma única base de código.

Delphi 7 - Win32

Delphi 7 – Win32

Desenvolvimento em Delphi vale a pena migrar para Java ou C#?

Bom,  então, para quem migrou da versão 7 do Delphi para suas versões superiores e utilizou o suporte a plataforma .Net não temos muito o que falar, pois C# lembra muito o Java que por sua vez bebeu da fonte do C++ e assim por diante, mas para aqueles que continuam desenvolvendo em Delphi para Win32 a coisa é bem diferente.

Existe até uma URL estratégica da Embarcadero preparada para as pesquisas do Google:

UpGrade Delphi 7 para XE10: http://www.embarcadero.com/br/products/rad-studio/upgrade-from-delphi7

Programas escritos em Delphi 7, suas versões anteriores ou versões superiores mas utilizando projetos de código nativo ainda são comuns e a pergunta mais frequente é se vale a pena migrar para Java ou C#?

A resposta é simples, sim! Vale a pena mudar!

Por que ?

Ao contrario do que a maioria pensa (que me digam os proprietários de software houses que ainda desenvolve em Delphi código nativo)  desenvolver para Win32 exige um conhecimento muito técnico das APIs do Windows, apesar do Delphi transformar esta programação em uma tarefa extremamente fácil (vide Visual Studio MFC C++ para Win32) o resultado algumas vezes pode não ser aquele desejado pelos proprietários de software house, nem pelos clientes e nem pelos programadores.

Na pratica existem muitos programas escritos em Delphi para Win32 que são lentos, mesmo usando o melhor banco de dados do mundo, o Oracle, sem entrar no mérito das melhores praticas para um banco de dados. Muitos programas geram erros de memoria sozinhos, apenas com o usuário o utilizando, são difíceis de dar manutenção e não são projetados para o crescimento da base de dados, e pasmem, existem programas que param de funcionar devido a lentidão quando utilizados em bases de dados de grande porte (entrando no mérito das melhores praticas para um banco de dados), gerando para as empresas uma legião de clientes insatisfeitos, se identificou?

Mas o problema não é do Delphi e nem das APIs do Windows e sim da técnica dos programadores principalmente de programas que já foram migrados do Cobol, Clipper, DataFlex entre outras linguagens na qual se utiliza bases de dados relativamente grandes. Um erro comum era não conhecer o sistema operacional e não usar Dlls e ActiveX, criando Units de código pascal para as bibliotecas e programas reutilizáveis que eram referenciadas entre si e compiladas junto com o executável o tornando enorme, além disto, necessitando deste modo criar grande quantidade de procedimentos e funções publicas para estas Units ou Forms também referenciados (quando a convenção para qualquer linguagem orientada a objeto diz que você deve sempre criar métodos privados e usar métodos públicos somente quando realmente for necessário). A consequência deste tipo de programação é sem duvida, vazamento de memoria (Memory Leak), visto que apenas o Delphi com suporte ao .NET Framework possui o Garbage Collector, além de códigos fonte crescendo desordenadamente ao longo dos anos, sem contar outros inúmeros conceitos da programação para Win32 que continuaram sendo completamente ignorados.

Dinamic-Link Library: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681914(v=vs.85).aspx

Component Object Model: http://msdn.microsoft.com/en-us/library/windows/desktop/ms694363(v=vs.85).aspx

Delphi ActiveX Framework: http://docwiki.embarcadero.com/RADStudio/XE3/en/Overview_of_COM_Technologies

Memory Leak Delphi: http://delphi.about.com/od/oopindelphi/a/memoryleak.htm

Para quem não teve estes problemas ainda possui um software plenamente funcional, rápido e com um pouco mais de trabalho pode se desenvolver qualquer coisa que é feita hoje em dia, pois a Microsoft garante a compatibilidade da API Win32 (conceito que significa código nativo e não só para 32 bits). Assim como o modelo de  programas em Delphi escritos em código nativo, nos dias hoje a Microsoft disponibiliza este tipo de  ferramenta apenas para C++, e este tipo de programação não pode ser desenvolvida à partir de uma versão Express do Visual Studio, pois a aplicação nativa é ideal para softwares coorporativos por ser consideravelmente mais rápida do que aplicações utilizando o framework.

Código Nativo – Win32 : http://msdn.microsoft.com/pt-br/library/hh875053.aspx

Delphi possui a melhor IDE RAD de todos os tempos, suporta vários tipos de conexões incluindo os melhores bancos de dados do mundo, é multi-plataforma, possui código nativo com acesso pleno a API de plataforma, incluindo plataformas mobiles.

Embarcadero: https://www.embarcadero.com/br

Delphi Language: http://docwiki.embarcadero.com/RADStudio/XE3/en/Language_Overview

Rad Studio XE7

RAD Studio XE7

Migração Delphi – Java ou C#

Muitos proprietários e gerentes de TI se deixam levar por toda propaganda em torno das linguagens Java e C#, o que você deve lembrar é que você esta lidando com a Oracle e a Microsoft e um orçamento enorme para marketing mundial, isto significa que os softwares principais ou seja, produtos de primeira linha para o segmento empresarial que fazem praticamente tudo e estão no topo da tecnologia, os “ERPs” das grandes empresas fornecidos pela Oracle e Microsoft que provavelmente são concorrentes direto, senão em um todo em algum módulo do produto que você planeja desenvolver e possivelmente são vendidos por um valor muito maior do que seu produto final será, estes produtos topo de linha não foram desenvolvidos e nem utilizam Java e .NET, o Oracle JDEdwards utiliza Event Rule Language, C e C++ e o Microsoft Dynamics AX (C++) utiliza sua IDE MorphX e a linguagem X++ e foi desenvolvido originalmente pela IBM, então você não deve tornar nenhuma das marcas registradas seu time do coração antes de conhecer as mesmas razoavelmente. Não pense que você vai desenvolver o próximo JDE ou Dynamics usando Java ou C#, até porque os bancos de dados renomados fabricados pelas mesmas empresas detentoras dos ERPs possuem Features exclusivas para os mesmos e assim também acontece com o SAP R/3 que é líder no mercado empresarial e a Oracle e a Microsoft se orgulham em dizer que seus bancos de dados são certificados para as aplicações SAP.

É claro que você pode desenvolver ótimos e robustos softwares com as linguagens Java e C# mas tenha em mente que investir em infraestrutura, conhecimento técnico e funcional é muito importante, por isto se você é testemunha de problemas descritos no tópico acima simplesmente migrar para uma destas linguagens por si só não vai resolver seu problema, muito pelo contrario, Java é baseado em C++ e C# é baseado em Java, assim o conceito de objetos, classes, coleções, iteradores entre outros, demanda uma curva de aprendizado relativamente maior que o aprendizado exigido pela linguagem Object Pascal, sem contar que o programador também deve conhecer como funciona o sistema operacional em questão independente da linguagem ser ou não multi plataforma.

Dependendo do tipo de projeto, hoje, também vale a pena utilizar linguagens que vem ganhando muito espaço no mercado internacional e no Brasil, como Ruby e Python que possuem uma comunidade muito ativa. No exterior Python é ensinado a crianças nas escolas e muitos a veem como uma linguagem do futuro. Estas linguagens são multi plataforma, muito versáteis e puramente orientadas a objeto, apesar do Python não possuir oficialmente esta classificação é bem similar ao Ruby, na verdade Ruby que foi inspirado em Python, e de qualquer modo Python e Ruby possuem uma orientação a objeto mais pura que Java e C# pois não possuem tipos primitivos possibilitando cortar alguns caminhos na hora da codificação, além do beneficio de que as duas linguagens possuem uma sintaxe simples e minimalista, fazem a mesma coisa requerendo muito menos linhas de código e ainda por cima de um modo mais fácil.

Já o Java e o C# herdam a sintaxe e conceitos do C++, inclusive o C# trouxe do C++ muita coisa que o Java aboliu, como ponteiros e Structs, as duas linguagens na pratica são muito similares e ambas já são linguagens conceituadas. Uma vantagem é que Java, Ruby e Python são linguagens que possuem muitos frameworks de código aberto sob diversas licenças, evoluem mais rápido do que o C# que vai incorporar as novidades só em sua próxima versão ou na próxima versão do Windows que agregará novas tecnologias, muitas delas vindas ou inspiradas no código aberto, como vários frameworks Java que também foram escritos para C# mais tarde, e o próprio ASP.NET MVC que foi e ainda é altamente influenciado pelo framework Rails.

Entretanto a Microsoft já se mobilizou para tentar mudar esta situação criando uma serie de medidas, lançando uma versão comunitária do Visual Studio, adotando o Python e outras linguagens e as integrando ao Visual Studio, firmando parcerias com empresas como a Apache incorporando o Apache Córdoba e a empresa Xamarim que patrocina o Mono (Linux) e é proprietária da plataforma Xamarim (OS X e Android), outra medida também foi abrir o código fonte da tecnologia ASP.NET tornando seus frameworks abertos sob a licença Apache, para que possam sofrer mais influencias da comunidade de código aberto, pretende também em um futuro próximo, abrir o código do núcleo do .Net Framework para que se torne autossuficiente em outras plataformas. Influencia esta que o Java e outras linguagens já possuem e atuam fortemente em todas as plataformas (Unix, Linux, Windows, OS X e diversos devices), inclusive na tecnologia Cloud, onde a Oracle proprietária do Java há tempos já lançou o primeiro sistema operacional exclusivo para as nuvens, o Oracle Solaris 11, em contrapartida as varias distribuições Linux Enterprise como a RedHat também estão investindo fortemente na plataforma Cloud, como por exemplo a plataforma hibrida OpenShift que suporta serviços em varias linguagens e bancos de dados diferentes, enquanto a Microsoft foca exclusivamente na sua tecnologia Azure, MSSQL Server, na interoperabilidade com o sistema operacional Linux Suse Enterprise e em suas novas parcerias.

Durante todas estas reviravoltas tecnológicas no universo do código aberto e no mundo proprietário, batalhas judiciais pelas patentes de softwares e devices, o Delphi apenas corre atrás das velhas novidades, ainda tentando mover usuários (sem perde-los) de sua plataforma Win32 para as suas novas plataformas proprietárias (livre somente de royalts) que competem com vários outros frameworks mais atuais, muitos deles de código aberto e ou gratuitos.

Conectividade Delphi: http://www.embarcadero.com/br/products/delphi/connect

Uma das mais famosas bibliotecas C++ no qual Java e C# foram baseados:

Standard Template Library: http://msdn.microsoft.com/en-us/library/c191tb28.aspx

STL/CLR Library: http://msdn.microsoft.com/en-us/library/bb385954.aspx

JCF – Framework: http://docs.oracle.com/javase/tutorial/collections/intro

No Brasil a linguagem de programação C# é a queridinha das empresas de pequeno e médio porte, isto é devido as diversas ações que a Microsoft executa no mercado nacional com seus programas, entre eles as certificações com escolas credenciadas, Microsoft Partners e inúmeras convenções e encontros, já o Java atua soberano no mercado de software para Main Frames e Devices, desenvolve-se em Java também dentro de softwares de grande porte, incluindo softwares da Oracle, IBM, Google e SAP, como no banco de dados Oracle e IBM DB2, que rodam rotinas em Java, além destas quatro companhias também possuírem uma IDE exclusiva para programar em Java, elas são NetBeans (Oracle), Eclipse (IBM), Android Studio (Google) e NetWeaver para Java da SAP, em sua nova tecnologia para as nuvens SAP HANA a SAP adota a IDE Eclipse como sua nova plataforma de desenvolvimento. Sem contar outras inúmeras tecnologias profissionais e servidores de aplicações Enterprise para Java como Oracle WebLogic, IBM WebSphere, TomCat da Apache, JBoss da Red Hat.

Fora do Brasil o C# esta qualificado com apenas 7.4% no ranking de linguagens mais procuradas pelas empresas, enquanto Java possui 19,6%, segundo o site CodeEval o ranking das linguagens mais populares de 2015 são: Ranking Code Eval.

Já no Tiobe Index 2015, a linguagem Java aparece em segundo lugar, C# ocupa a quarta posição enquanto Delphi desde 2013 se localiza abaixo da decima sétima posição, você pode conferir o ranking mensal da Tiobe aqui: Tiobe Index 2015. Nos dois índices Java e C# ocupam posições similares no ranking.

Uma ótima ilustração para os parágrafos acima pode ser utilizando a ótica da empresa SAP (Lider mundial de software corporativo). Seu principal produto o SAP R/3 para grandes empresas utiliza opcionalmente Java como linguagem de desenvolvimento e também no núcleo algumas de suas aplicações, já seu produto para pequenas empresas chamado Business One utiliza .NET. Independe dos motivos quem conhece as duas aplicações sabe da diferença enorme da tecnologia entre elas.

Para uma comparação técnica completa entre Java e C#, utilize o link a seguir:

C# for Java Developers: http://msdn.microsoft.com/en-us/library/ms228358(v=vs.90).aspx

Legados do Delphi

Java

Se tratando do Java seu conceito de objetos e sintaxe são baseados em C++ e em bibliotecas como a STL (Standard Template Library), mas o Delphi deixou um importante legado que é a IDE visual do NetBeans, originalmente denominada Xelfi e desenvolvida na República Tcheca em 1996. O objetivo era escrever uma IDE Java similar ao Delphi. O Xelfi foi a primeira IDE escrita em Java e posteriormente comprada pela SUN, que hoje pertence a Oracle e os exemplos oficiais são escritos para está IDE, inclusive a plataforma Java SEEE podem ser baixadas em pacotes (Bundle) que já contemplam o NetBeans, o servidor de aplicação GlassFish e os plugins para sua interface RAD (Desktop com Java Swing, Java FX e Web).

NetBeans History: https://netbeans.org/about/history.html

C#

Microsoft já namorava o arquiteto por trás do Delphi e de seu predecessor Turbo Pascal foi Anders Hejlsberg, onde se tornou o arquiteto responsável pelo projeto do C# e foi peça chave na criação do ambiente Microsoft .NET. Então é de se supor que o C# leva um pouco do Delphi dentro de si e podemos ver isto claramente na sintaxe de algumas instruções, principalmente no que se refere ao conceito de Eventos (Sender) e Setter (Getter e Setter).

C# Language: http://msdn.microsoft.com/pt-br/library/z1zx9t92.aspx

Métodos Getter e Setter

Em Java, C++ e C# existe o conceito de Getter e Setter  (inclusive sintaxe idênticas) para métodos de classe que em Delphi seria “equivalente” a uma Function e uma Procedure. Java e C++ seguem o padrão comum para o método Setter, em C# a Microsoft ensina o conceito como do Java quando você cria uma classe, o Visual Studio possui um atalho para criar Getter e Setter automaticamente mas não utilizando métodos, assim como os objetos do framework usam a sintaxe do Delphi, embutindo o conceito de Getter e Setter dentro de uma propriedade ou seja um método Getter para Java e C++, exemplo:

Getter e Setter  – Java: http://docs.oracle.com/javaee/6/tutorial/doc/gjbbp.html

Getter e Setter – C#: http://msdn.microsoft.com/en-us/library/w86s7x04.aspx

Então em C# é possível utilizar o conceito comum de Getter e Setter baseado em C++ e Java, utilizar o conceito de Get e Set embutido dentro de um método Getter (propriedades em C#) é meramente opcional e apenas uma questão de sintaxe do objeto, no qual desenvolvedores Delphi estão bem familiarizados. Inclusive o conceito propriedades nos objetos C#, torna a IDE do Visual Studio, na questão pratica do ponto de vista do desenvolvedor muito similar a IDE do Delphi.

Delphi Properties: http://docwiki.embarcadero.com/RADStudio/XE3/en/Properties

Código Fonte Java e C#


// Java

Objeto.setVisible(True); // Setter

// C# e Delphi (Propriedades)

Objeto.Visible = True; // Setter porem igual ao Delphi*

// * O conceito de operadores Java e C# são iguais
//   Delphi usa := para atribuir um valor

Eventos – Windows (Win32) – Java – C#

Outra similaridade do C# com o Delphi são os eventos, o conceito de eventos do Windows a grosso modo é uma fila de mensagens que pode ser utilizado pela API através da função WindowProc ou WndProc e é mais similar ao Java que utiliza tipos de mensagens implementadas na classe (ActionListener, ItemListener, MouseListner e outros) por exemplo, o Java possui um ActionListner que identifica o evento de  clique de qualquer botão independente da quantidade de botões em um formulário utilizando apenas um método, já o C# assim como Delphi e a IDE RAD do NETBEANS para JAVA tornam está funcionalidade mais fácil porem geram um código maior criando um evento de clique para cada botão da tela.

WindowProc: http://msdn.microsoft.com/pt-br/library/ms633573.aspx

Windows Messages: http://msdn.microsoft.com/pt-br/library/ms644927.aspx

Java Event Listner: http://docs.oracle.com/javase/tutorial/uiswing/events/intro.html

C# Event Handler: http://msdn.microsoft.com/en-us/library/system.eventhandler(v=vs.110).aspx

Assim, você pode testemunhar a “semelhança” do conceito de Object Sender entre Delphi e o .Net Framework (VB.NET e C#), utilize os links abaixo para entender a sintaxe final do evento de clique de um botão.

Object Sender Delphi: http://docwiki.embarcadero.com/RADStudio/XE4/en/Using_the_Sender_Parameter

Object Sender .NET Framework: http://msdn.microsoft.com/en-us/library/aa457091.aspx

Soluções e Projetos

Um ponto muito importante no desenvolvimento para o C# (Java já utilizava o Apache Ant e soluções recentes utilizam o Apache Maven) é que a Microsoft sabia da dificuldade de muitos programadores em utilizar o conceito Win32 na arquitetura do software e estruturação do código fonte, então o que em Delphi exigia abrir um projeto tipo Dll (não gerenciado) escrever uma biblioteca adequada, importar as funções para seu projeto principal e assim por diante. No Visual Studio surgiu o conceito de solução, que unido a um ambiente gerenciado torna possível criar vários projetos por solução,  onde o projeto principal contendo um Windows Form,  por exemplo gera um executável e os projetos desta solução contendo apenas biblioteca de classes geram automaticamente uma Dll (ambiente gerenciado) que é referenciada ao projeto principal e esta resolvido o problema que possuíamos no Delphi de alguns desenvolvedores criando executáveis enormes e códigos redundantes.

Solution and Project Basics: http://msdn.microsoft.com/en-us/library/b142f8e7.aspx

Concluindo

Vale a pena migrar para uma linguagem mais moderna sempre, inovação faz parte da área de software, todos nós só temos a ganhar, melhores ferramentas, técnicas mais modernas, maior produtividade, o importante é avaliar caso a caso e criar um projeto consistente e na medida para que este processo se realize da melhor maneira possível.

O que vimos neste post é apenas uma primeira visão da importância do Delphi e como o Delphi influenciou outras linguagens de programação. Para uma comparação mais precisa é necessário um projeto bem elaborado e fica a mensagem de que o Delphi  pode ter desaparecido da grande mídia mas continuará vivo por muito tempo.

comentários
  1. Muito profissional e bem elaborado. Só enriquece os conhecimentos e dá uma visão ampla do que acontece por traz das grandes corporações. De qualquer forma, com menos ou mais ardor, é fundamental que o ambiente de desenvolvimento escolhida seja algo de pleno domínio para as propostas do projeto e da empresa. Não costumo me levar por apelos de marketing e muito menos por produtos que são impostos apenas pelos nomes que os carregam. O ambiente proposto pela Embarcadero é e sempre será meu preferido, não porque sou contrário as grandes empresas, mas por acreditar que existe uma maior responsabilidade, não somente pela necessidade de se firmar no mercado, mas também com a classe exigente que busca alternativa. O salto dado pelo Delhi nas versões XE? é gigantesco se comparado as versões anteriores. Isso prova que o pessoal não está dormindo e que muita coisa boa ainda virá. Não se trata de custo, mas também por ele e o fato de correr atrás não significa atraso, mas talvez cautela. Se não fosse pelo Orkut não existiria o Facebook. O lançamento casado de novos recursos dos sistemas operações e as linguagens proprietária dos mesmos, não indica que usuários de outras linguagens ficarão atrás. Ninguém em sã consciência, que detém uma carteira de cliente e projetos que os atendam, fazem uso de novas tecnologias na mesma velocidade do lançamento. Esse intervalo é mais que o suficiente para que os demais se adequem e disponibilize os recursos, talvez até com mais eficácia. Dentro de tudo que oferece cada linguagem de programação, considerando as necessidades de pequenas, médias e grandes empresas desenvolvedoras, não tenho o menor receio em afirmar que a melhor proposta ainda é da Embarcadeiro com o RAD XE8. Trabalhar em equipe em um produto que disponibiliza com segurança suas aplicações para as diversas plataformas é mais do que o ideal: é a unificação de profissionais e redução de custo. Considere também um resultado mais rápido, de fácil manutenção e de custo menor para clientes, mesmo que tenha um valor maior de profissionais e de ambiente. Minha empresa desenvolve profissionalmente há 24 anos e temos clientes que processam mas de 5 milhões de registros e nunca tivemos qualquer problema de velocidade ou performance pelo uso do Delphi. Vamos migrar nossos sistemas para multi-plataformas e após meses de avaliação, não encontramos de forma comparativa, qualquer outra linguagem que possa superar o que temos a disposição no ambiente XE?. Muitos amigos e pequenos empresários já estão se preparando para migrar para o RAD da Embarcadeiro por conta disso e também de dificuldades que eles tem para criar aplicações para diversas plataformas. Acredito piamente que a versão mais recente não tardará a ganhar credibilidade e o ranking das linguagens sofrerá grandes alterações em curto espaço de tempo. Para quem se pergunta se vale a pena migrar, minha resposta é: Sim, vale e muito. De qualquer forma, somente fazendo avaliações próprias é que se chegará a essa conclusão. Meus comentários a todos os programadores é direito: Não se deixem influenciar, façam testes, avaliem todos os pontos e fujam de pesquisas que apontam isso ou aquilo, pois em tudo existe um tendencionismo que favorece a quem de interesse. Um grande abraço e boa sorte em suas escolhas.

  2. Nossa… realmente você nunca programou em delphi ou “interpretou” tudo errado que “ALGUÉM te disse ou LEU em algum lugar”… eu programo em DELPHI desde a versão 3.0 e atualmente programo nas versões delphi 5, 7, 2007 e XE8 … e praticamente NÃO TENHO QUE SABER NADA das API do WINDOWS… e sei programar em JAVA e C# … mas JAMAIS trocaria o DELPHI por estas linguagens, visto que : o DELPHI GERA CÓDIGO FONTE NATIVO para WINDOWS, ANDROID, IOS, WINDOWS PHONE, ao contrário do JAVA que é COMPILADO e ainda não é uma linguagem difícil de programar como o C# … bem… não é À TOA que a EMBARCADERO HOJE, DIA 26/10/2015, possui mais de 3 milhões e 500 mil usuários (isto de LINGUAGENS ORIGINAIS, não PIRATAS…) … quanto a LENTIDÃO… só RINDO MESMO … e problemas de memória… eu tenho atualmente 140 clientes mensalistas, com a média de 3 computadores cada cliente (tenho cliente com 10 computadores em rede)…. e com apenas 3 funcionários e meu sócio damos CONTA DA ASSISTÊNCIA deles… e NÃO DÁ ERRO DE MEMÓRIA NÃO (só se você gerar um VETOR não dinâmico e tentar colocar numa posição não definida um certo valor, ou abrir um FORM que NÃO FOI enviado para memória)… bem… tem que PENSAR antes de escrever algo… ABRAÇOS… (Sou Analista de Sistemas, tenho 44 anos, já programei em Clipper, Cobol, C, Visual Basic, Java, Delphi (considero a melhor)… sou um dos sócios e desenvolvedores da Ferreira & Souza Informática Ltda…)

    • Olá Carlos,

      Primeiramente obrigador por acessar nosso blog, mas acho que você não entendeu o contexto do post ou não conhece sobre o que estamos falando. Nossa experiência data de mais de 20 anos de TI, usamos Delphi desde sua primeira versão, desenvolvemos softwares em Delphi para a área publica no qual foi responsável pela gestão de varias grandes cidades do país, sofwares em Delphi para área privada para empresas nacionais e multi-nacionais. Todos eles em 3 camadas, com padrões de Design e sempre seguindo as melhores praticas.

      Somente um de nossos clientes rodou Delphi em suas 98 empresas, cujo só a matriz possuía cerca de 150 computadores, todos interligados, inclusive suas filiais através da tecnologia DCOM utilizada na época. Nossos softwares em Delphi executavam auditorias em sistemas fiscais SAP, Oracle JDE e vários outros ERPs de grande porte, onde somente os lançamentos contábeis possuíam cerca de 5 milhões de registros/mês e a obrigatoriedade IN68 e IN86 da época exigiam os últimos 5 anos sob intimação. Foram migrados para Java, alguns clientes exigiram C#, investimos em Python e Ruby. E podemos afirma que Delphi não faz nem metade do que fazemos hoje com baixo custo, tempo de desenvolvimento e melhor qualidade.

      Quanto ao seu comentário, bom se nunca usou APIs é porque está claro que usa somente componentes de terceiros e outras pessoas já o fizeram pra você (Delphi possui o Windows SDK no seu help dentro da IDE dá uma olhadinha). Também não existe ou não conhece sobre vazamento de memória? O Garbage Collector de diversas linguagens mais modernas não serve pra nada? Nem mesmo os vários frameworks que detectam vazamento inclusive os existentes para Delphi? Pelo nível do seu comentário da pra imaginar a qualidade do software da sua empresa. Mas o pior de tudo é querer fazer um Benchmark de uma linguagem/produto, testes de stress ou algo do tipo para três à dez computadores em rede. Ainda bem que não mencionou Web, Delphi é “ótimo” na Web!

      Quanto a sua experiência o comentário já nos mostrou, não vale nada, 70% dos visitantes deste blog são universitários, estagiários ou pessoas com media de cinco anos de carreira em programação, desenvolvem para Windows, Linux e OSX e muitos deles entram em contato conosco, nos mostrando seus projetos, ideias, alguns são proprietários de StartUps e posso afirmar com toda certeza possuem produtos com muito mais tecnologia e qualidade que muitas “empresas” por ai.

      Bom deveria ter clicado nos links dos sites oficiais no post acima pra estudar um pouco mais e comentar com mais embasamento, alguns estão em inglês.

      Abraços.

    • Ricardo de Oliveira Alves disse:

      Carlos,
      Me desculpe também sou de Guaxupé, mas sou forçado a desconsiderar os seus comentários.
      Não dá para fazer um teste mínimo de stress ou benchmark com três usuários em rede… é no mínimo risível… Migrei para Java faz algum tempo e posso dizer com certeza, Delphi não tem nem chance contra Java. Python, então, nem se fale!
      Delphi me deu muito dinheiro, mas sinceramente o ambiente peca em muitos aspectos. Você disse que nunca precisou saber nada das APIs do Windows? Acho, então que você não programa bem em Delphi ou então só faz o feijão com arroz. Imagino a qualidade do software…
      Com respeito aos clientes, apenas um dos clientes da empresa onde trabalho tem mais de cento e cinquenta estações de trabalho! Você disse que programa em C, então deveria no mínimo saber a estrutura básica de um programa Windows ou você só programou em C usando o console? Eu programo em C, C++, sei do que estou falando, já criei softwares em C, só usando a API do Windows (uma experiência excruciante!).
      Memory Leaks? A RTL está cheia deles, você pode vê-los ao usar as ferramentas: EurekaLog, AQTime, MADExcept… Você pode inclusive desenvolver sua própria ferramenta de captura de leaks, mas acho que, pelo nível do seu comentário, vai ser difícil.
      Seu software pelo jeito, é duas camadas né (com muita sorte deve ser)? Já ouviu o termo multicamadas, DataSnap, SOAP, REST? Sabe do que se trata? Web? Já tentou usar Delphi para Web? Eu já, e não foi nem um pouco agradável.
      E ainda tem os problemas de bugs não corrigidos. Quer vê-los? É só entrar no site Quality Central, da Embarcadero: http://qc.embarcadero.com/wc/qcmain.aspx?p=10.
      Admiro-o por defender sua linguagem de preferência, mas sinceramente, tenha argumentos melhores. Delphi foi e ainda é minha linguagem preferida, mas tenho que reconhecer, Java, Python e C++ são de longe muito mais superiores e avançadas e fáceis. O único ponto que temos que reconhecer: a IDE do Delphi foi a inspiração para as novas IDEs.
      Abraço,

      • Galera de Guaxupé saudações,

        Conheço a cidade, muito bonita, a prefeitura de Guaxupé foi um dos meus últimos clientes em Delphi 7 em uma empresa no qual desenvolvia na área pública a 11 anos atrás.

        Abraços.

  3. Easton disse:

    Pra quem esta começando agora não recomendo nem Delphi, nem C#, nem Java, nem nada de TI, no Brasil é melhor ser Médico, Advogado ou Engenheiro (de preferencia civil), o ultimo é uma profisão relativamente fácil, com salario piso de mais de R$ 6.000,00, quantos de TI saem da faculdade e já vão ganhando R$6mil? Bom na Eng.Civil tem muitos e muitos casos, todos que forem corretamente registrados ganharão isso logo de cara.

  4. Mark disse:

    Ricardo: Como você mencionou, a grande sacada do Delphi foi a introdução do RAD na programação em um tempo que tudo era feito via código. Mas me parece que David Intersimone & Cia se perderam durantes os anos.

    Quem não se lembra das produtos que lançaram e naufragaram como: Kylix, Prisma entre outros. E quantos componentes trocados de uma hora para outra sem explicação alguma aos clientes? Recentemente substituíram o conjunto de conexão a dados DBExpress (que nunca funcionou corretamente por falta de manutenção) por um componente de terceiro AnyDac renomeado FireDac. Infelizmente é assim a mentalidade de quem comanda o Delphi. Deixar de lado, jogar fora e apresentar algo novo.

    Não há como comparar um programa para Smartphones feito em JQuery+Css+PHP+Js com Delphi Mobile… Delphi perde feio, em performance, design, código etc… Você foi bonzinho no seu post por não apresentar os diversos erros que perduram de versão em versão na IDE do Delphi, no seu código nativo, functions, procedures, sintaxes, etc. Nunca corrigem nada na própria versão, os bugs sempre ficam para a próxima versão.

    Hoje, comprar uma cópia Delphi Enterprise (única que permite uso corporativo) requer investimento mínino de R$ 10.000,00 sem qualquer garantia de correção de bugs ou melhoria na IDE. Ao contrário, parecem estar tão focados em novas tecnologias e componentes que não consertam o básico do sistema. Eu mesmo parei na versão 2009 do Delphi e só mantenho sistemas em Delphi para Win32, o restante: Web, Mobile já migrei tudo para outras tecnologias open-source e infinitamente melhores que o delphi.

    Na minha humilde opinião, o Delphi deveria se focar em Win32/64 e lançar Mobile, Linux, OSx como AddOn, pois ao contrário do que falam, programar em FireMonkey é um desastre e não há como migrar quase nada da VCL para FireMonkey, então a historinha da carochinha que se utiliza um código para todas as plataformas é a maior mentira Delphi. FireMonkey não possui muitos componentes, e para uma linguagem que se diz um universo RAD, ter que fazer tudo na mão (código) é um retrocesso!!!

    • Eneias disse:

      Concordo com tudo que o Mark disse. Além disso, a Embarcadero tem uma política de lançamento de uma nova versão do delphi a cada 6 meses. Adquirimos a versão XE6 do Delphi, e durante o desenvolvimento de um novo produto, detectamos vários bugs. Entramos em contato com a Embarcadero, e nos disseram que a correção seria feita na próxima versão do Delphi.

      Acontece que para receber a nova versão, temos que pagar o upgrade, sendo que o valor do upgrade é quase o mesmo valor de adquirir uma nova versão. Ora, se eu adquiri a versão XE6, e ela tem bugs reconhecidos pela Embarcadero, nada mais justo do que efetuar as correções e liberar as atualizações para os clientes. Caso contrário, os clientes deveriam poder baixar a próxima versão gratuitamente, uma vez que pagaram por uma versão com defeitos (apesar de que a nova versão sempre vem com novos bugs).

      Eu considero isso uma tremenda falta de respeito com os clientes. Como confiar em uma empresa que não tem compromisso com seus clientes ?

      Em novos projetos de minha empresa, já ficou definido que não usaremos o Delphi. Ainda não sabemos qual ferramenta adotar, mas não confio mais na Embarcadero.

  5. Luiz disse:

    Artigo bom, mas na questão do Delphi foram abordados vários assuntos com desconhecimento de causa, por exemplo, o uso de DLL para segmentar um projeto grande que no Delphi não é possível, no entanto se estudar mais a fundo existe uma prática de particionar em BPL runtime que funcionam melhor que usar DLL pois o projeto interage durante o desenvolvimento permitindo distribuir apenas a parte alterar. Com relação ao Delphi há muitos erros de argumentação onde diversos pontos considerado negativos da IDE na verdade é desconhecimento de quem escreveu, pois não existem.

    • Olá Luiz,

      Discordo totalmente do seu comentário, não sei em qual sistema operacional BPL (Borland Package Libraries) funciona melhor do que DLLs, cujo faz parte da arquitetura nativa do SO em questão, além da arquitetura também conceber padrões para componentes distribuídos, no caso a tecnologia COM no qual também faz parte a COM+ e DCOM, que também podem ser utilizadas em Delphi usando o framework citado acima, o Delphi ActiveX framework que se utiliza através de Dlls, ocx e etc. Também é possível utilizar os padrões CORBA desde o Delphi 5 que define padrões para arquitetura BROKER também para componentes distribuídos.

      A simples ideia de arquitetar grandes projetos de software usando a obsoleta e quase extinta BPL seria o mesmo que acessar banco de dados através da BDE (Borland Database Engine).

      Em nenhum momento foi citado nenhum ponto negativo na IDE do Delphi, alias muito pelo contrario, a IDE é o que o Delphi sempre teve de melhor.

  6. jose neto disse:

    Olá

    Primeiro, gostei muito do artigo, e me interessei em aprender ruby, conhecimento nunca é demais
    entretanto gostaria da opinião dos colegas no que diz respeito ao seguinte:

    1. temos aproximadamente 800 clientes, todos com s.o. windows e desktop, dois clientes utilizam força de vendas com android.

    2.com o delphi eu consigo deixar o sistema com uma “cara bonita” o que influencia muito na hora de negociar um novo contrato.

    3. com o delphi temos uma gama de componentes de terceiros que são muito úteis na hora de gerar sped fiscal, nfe, gnre nfce utilizar ecfs e por ai vai.

    4. agora pergunto com ruby posso desenvolver para desktop?, gerar relatórios para impressoras matriciais?, utilizar ecfs, sem falar no TEF e PAF ECF.

    grato por sua atenção.

    j.neto

    ps: mas ja estou estudado ruby.

    • Olá José,

      Você pode fazer tudo com Ruby, por exemplo você pode usar entre vários toolkits, o GTK com Glade, que é um toolkit super poderoso, multi-plataforma, em conjunto com a IDE Glade e programar RAD ao estilo Delphi, você pode acessar as Dlls do Windows e fazer praticamente qualquer coisa.

      http://visualruby.net/

      Alem disso você pode utilizar o famoso framework RAILS que inspira vários frameworks web por ai, além de ter os recursos do ActiveRecord um poderoso framework ORM para trabalhar com dados e muitas outras facilidades.

      Você também conta com uma comunidade que disponibiliza uma infinidades de Gems (bibliotecas Ruby), que tanto podem ser escritas em Ruby ou em C.

      https://rubygems.org/

      Quanto as obrigatoriedades fiscais nacionais são mais facilmente encontradas em Java e C#, mas desenvolver os layouts em Ruby certamente é muito mais simples que desenvolver em Java, C# e Delphi, devido a linguagem ser minimalista e puramente orientada a objeto, se possuir um banco de dados bem normalizado e enxuto não terá problemas em desenvolver suas próprias rotinas,

      Existem projetos de ERPs e CRM inteiros em Ruby, como por exemplo:

      http://xlsuite.org/

      Espero ter ajudo,
      Abraços.

  7. Marcello Dias disse:

    Finalmente eu achei uma alternativa viável para migrar minhas antigas aplicações
    Delphi.
    O Delphi+UNIGUI

  8. Is anyone using Raudus ??
    I looked at a comparison between Unigui and Raudus:
    Unigui uses ExtJS
    Raudus has a vcl.js javascript itself, does not depend on third party, Mobile and Desktop;
    Webservice itself ported from a version of the fantastic mongoose;
    Support D7 to XE10 through Lázarus;
    Every project developed in Lazarus.

  9. Marcello Dias disse:

    Quem esperou até agora,deve dar uma olhada no IW17.
    Não consigo comparar com o que existe hoje em dia.

  10. raul disse:

    viva o delphi kk, brincadeira pessoal , quem sabe um dia até o Lazarus de código aberto chega lá também só que tem muito bug,
    será que o delphi é um produto da microsoft, porque o delphi tem acesso a tudo windows desde da primeira versão, onde tem fumaça tem fogo?

  11. Luciano disse:

    Sabe eu entendo como as pessoas se prendem emocionalmente a uma linguagem… a minha se deu assim com o delphi … o ano era 2001 a 2003 curso tecnico no centro paula souza de sp.. a primeira linguagem visual foi delphi e vb… amei o delphi… mas o inocente aqui so foi entender em 2006 com a compra do primeiro computador… que o delphi era caro pra caramba… e que o meu delphao querido no curso tecnico sempre foi piratao.. assim como os livros que foram utilizados todos copiados via xerox… nessa epoca php engatinnhando… c# nao existia… java so pela IDE era um monstro para o meu pobre micro windows xp 512 de ram hd de 120 gb… pensava comigo.. isso nunca vai funcionar !!! Ninguem vai usar isso!!!

    (…)
    Os anos passaram e as necessidades da vida me obrigaram a vir pra sao paulo o ano era 2010 o sonho de ser empreendedor sempre continuou.. aqui em sao paulo eu entendi e tive nocao do aquario em que fui criado….

    1- Minhas crenças limitam minhas escolhas e ate a altura que posso ir… agora eu trabalhava como analista de sistemas senior levantando requisitos e criando toda a diagramacao em UML que aprendi na faculdade e tudo ja saia pronto em java… o mundo corporativo… vivia de java e oracle… os contratos de medios da empresa fechadas em base de 45 a 120 milhoes de reais.. dezenas de consultores…e eu fazendo analise e especificacao detecnica que ia da base de dados as classses que os developers java iriam criar…

    2 – A distopia… ali ficou claro que o meu veio delphi perdeu o rumo programacao distriuida ele nunca ia dar conta… ja em 2010… rodar em linux servidor preferido das grandes empresas… e ficou claro tambem que eu nunca e as empresas nunca conseuiriam fechar contratos milionarios que fechavam se fosse em delphi… equipe remota distribuida testes integrados… sistemas para celulares… sincornizacao… a linguagem… nao comportava ali.. ficou claro porque empresas utilizavam java e C# e nunca usavam ides pagas.. meu vocabularuio tambem cresceu.. foram acrescetadas palavras como.. “vendor Lock in” e eu entendi o que significava… ali estava claro que eu estava preso numa matrix no inicio de minha vida profissional…

    3 – Nunca um delphi seria usado para criar Ifood .. 99 taxis… Easy taxi… airbnb… nunca iria ser usado para criar o tinder… ou criar o facebook entao ??? jamais ! ou seja a minha amada primeira linguagem me limitaria a sempre ser uma software house… 200 “criente” 4 funcionario.. ganhar com muito suor.. 20 k no maximo … nunca eu seria um empreendedor revolucionario que teria um sistema em escala mundial ou nacional valendo milhoes de dolares…

    4 – Se o lider do mercado mudou e eu continuo na mesma eu nao evolui… algo de errado esta comigo.. algo precisa ser analisado… pois sempre estarei congelado no que a linguagem me permite alcançar…

    5 – Comparar linguagens e como comparar.. veiculos… delphi e uma moto…de entregador de pizza uma cg 150 basica.. eu posso adaptar e carregar tres pessoas fazer ate um tuktuk com ele… mas nunca sera uma ferrari uma lambourghini.. ou mesmo um f15… ou jato comercial… a ferramenta me comporta o tamanho da carga que preciso ter.. e delphi… nao escala… simples assim…

    6 – Como foi triste… entender isso ! Mas como foi Libertador sentir isso na pele! Hoje sou arquiteto de sistemas desenho solucoes para Bayer… santander.. bradesco.. itau… senado.. governo federal… e olha so… tudo em java ou python em alguns trechos e tudo cloud! E o delphi ? Que delphi ?

    7 – Se eu nao tivesse passado por essa fase de vir pra um grande centro vejo que estaria eu defendendo meu pequeno aquario que dentro dele eu nado igual a qualquer tubarao em qualquer mar… Mas sem jamais entender que no final desse meu aquario ha um vidro,…sou limitado.. jamais entenderia o toque desse tamanho de ignoracia que me separa do mundo… e estaria feliz.. com meus 200 “criente” ate 10 desktops…. vivendo no interior… sem nunca ter inovado.. e sem nunca ter fechado contratos milionarios… e assim e a vida… vc volta pra caverna e explica queo mundo e maior.. quem ta na caverna ri.. te acha louco… ou tenta te calar… e eu poderia ser um desses loucos presos na caverna…

  12. wilson405 disse:

    Tenho que deixar meu comentário simples e rápido, sou Engenheiro de Eletrônica na qual trabalho em uma Multi conhecida no seguimento de televisores. Mas somente quero deixar meu pitaco aqui, que estou anos luz de distância de vocês da área software Mobile ou Desktop, minha área é Hardware puro, Assembly, C, C++ , FPGA …. conheço bem C#, JAVA, porém o Delphi pra mim é que nem uma droga, tudo que preciso interagir de Hardware uso ele como um “frontend”, escrevi meus próprios componentes que utilizo e serei sincero, nunca tive nenhum problema, tanto que hoje tenho o RIO 10.3, um abraço a todos.

  13. Steve B disse:

    This advise is true today as at anytime…. If you can modernise your existing code base with the existing tools, it makes business sense to do it. If you are using Delphi…. keep using it!

    Things You Should Never Do, Part I

Deixe um comentário