Pergunta

Eu sou um programador Java bastante experiente que vem fazendo um pouco de coisas Win32 no último par de anos. Principalmente eu tenho usado VB6, mas eu realmente preciso para passar para algo melhor.

Eu passei um mês ou assim jogar com Delphi 2009. Eu como o material VCL GUI, Delphi parece mais adequado para chamadas API do Windows que VB6, eu realmente gosto do fato de que é muito melhor em OO do que VB6, e eu como o framework de teste de unidade que vem com o IDE.

Mas eu realmente luta com o fato de que há coletor de lixo não amplamente utilizada para Delphi - Tendo em libertar todos os objetos manualmente ou usar interfaces para tudo parece ter um impacto muito grande sobre a maneira que você pode fazer as coisas de forma eficaz em uma objeto maneira orientada. Também não estou particularmente interessado sobre a sintaxe, ou o fato de que você tem que declarar todas as variáveis ??no topo de um método.

Eu posso lidar com Delphi, mas eu estou querendo saber se C ++ Builder 2009 pode ser uma escolha melhor para mim. Eu sei muito pouco sobre C ++ Builder e C ++, mas então eu sei muito pouco sobre Delphi quer. Eu sei que há muito a linguagem C ++, mas eu suspeito que é necessário apenas saber um subconjunto dele para fazer as coisas de forma produtiva ... Ouvi dizer que o C ++ de hoje é muito mais produtivo para o programa em que o C ++ de 10 anos atrás.

Eu vou estar fazendo novo desenvolvimento só assim eu não teria necessidade de dominar todos os aspectos da linguagem C ++ - se eu posso encontrar um equivalente para cada uma linguagem de Java características que eu vou ser bastante feliz, e como eu progredir I poderia começar a olhar para as coisas mais avançado um pouco mais. (Desculpe se isso soa dolorosamente ingênuo - se então por favor me definir reta)

Assim, para um programador Java que é novo para Delphi e C ++ Builder, o que você considera ser uma escolha melhor para o desenvolvimento produtivo de exes e dlls Win32, e por quê? O que você vê para ser os prós e contras de cada um?

Foi útil?

Solução

Delphi ou C ++ Builder - é uma escolha difícil

Como você está ciente, eles são basicamente muito semelhantes, a partir do IDE e ponto de vista RAD.

Os prós e contras de cada um - independentemente do fundo - são um pouco como isso. Ambos compartilham uma grande 2-way designer de formulário RAD e enquadramento (VCL), que são ideais para o desenvolvimento Windows nativo.

Delphi:

  • PARA: Grande, Ativo, comunidade entusiasta
  • PARA: Delphi 2009 é a melhor versão por muitos anos
  • PARA: "unidades" Delphi pares de arquivo make fonte C / cabeçalho parece arcaico
  • CONTRA: Não destruição automática como objetos deixar alcance, portanto, muita 'finalmente está em seu código
  • CONTRA: A linguagem pode ser 'prolixo', que é uma questão de gosto
  • CONTRA: Usando DLL ou bibliotecas em outros idiomas (. Esp C) de terceiros requer arquivos de cabeçalho Delphi a ser escrito

C ++ Builder

  • PARA: C ++ Builder 2009 é provavelmente a melhor versão já
  • PARA: RAII idiom simplifica o gerenciamento de memória extremamente
  • PARA: Os modelos são incrivelmente útil e poderosa, mesmo se a implementação C ++ Builder tem alguns bugs com eles
  • .
  • FOR: Suporte para BOOST e outras modernas bibliotecas baseado em modelo (embora o apoio impulso não é 100%)
  • PARA:. Grande interoperabilidade com o Delphi significa a maioria dos componentes Delphi podem facilmente ser usado
  • PARA:. Fácil de usar com DLLs de terceira parte / bibliotecas com cabeçalhos de C / C ++
  • PARA: C ++ pode parecer melhor em um CV de Delphi.
  • CONTRA: CB2009 é "única unicode" - as implicações desta para a portabilidade de código são diferentes e menos bem pensada do que para Delphi
  • CONTRA: C ++ Builder base de usuários é muito menor do Delphi. Talvez 20% ou menos.
  • CONTRA: Borland / Inprise quase morto BCB há alguns anos atrás, e só foi ressuscitado após grandes esforços da comunidade. (No entanto, o compromisso Codegear / Embarcadero não parece impressionante)
  • CONTRA: C ++ Builder não está no topo da pilha dentro Codegear.
  • CONTRA: de terceiros fornecedores de componentes nem sempre entendem / suporte C ++ Builder

Isso é sobre ele. Só para afirmar minha posição, eu sou um feliz BCB2007 / 2009 usuário (desde BCB5), e eu também raramente uso Delphi. Alguns anos atrás, eu considerei um interruptor de C ++ para Delphi, mas a falta de RAII idiom era a única coisa que eu achei difícil chegar a um acordo com o.

Outras dicas

Vá com Delphi e você pode usar o Boehm Garbage Collector API escrito por Barry Kelly assim você pode ter a coleta de lixo em Delphi. Barry escreveu isso antes que ele foi trabalhar para CodeGear como arquiteto compilador. Ele tem problemas com realmente grandes aplicações, e muito provavelmente não irá trabalhar com 64 bits Delphi. Ele fala sobre isso um pouco neste podcast de entrevista .

Mesmo se você não usar esse gerenciador de memória coleta de lixo, eu ainda recomendar Delphi sobre C ++. A única vantagem C ++ lhe dá para o desenvolvimento geral é a sintaxe chaveta. Se você não se importa a sintaxe Delphi, em seguida, para a maioria das coisas que você vai encontrá-lo melhor. Concedido C ++ Builder tem toda a Delphi VCL e RTL, por isso não é tão ruim como Visual C ++, mas eu ainda acho Delphi seria uma escolha melhor.

Para o Excel add-ins (como você mencionou em seu comentário) Eu recomendaria Delphi sobre C ++ builder, porque tem melhor suporte COM (que eu acredito que você precisa para suplementos do Excel).

Delphi vai ser muito mais fácil para você chegar a um acordo com, certeza que você tem que gerenciar sua memória, mas é muito simples

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

Em Delphi todos os seus objetos são alocados na pilha, de modo que a regra é muito simples se você criá-lo você libertá-la.

C ++ com os seus meios OBJS pilha e heap com base você tem um pouco mais para aprender e mais espaço para se meter em encrencas.

Depois de trabalhar com Borland C e C ++ compliers desde BCC 4.1 / DOS e Delphi 3,0-2007 Posso dizer honestamente que você está em uma grande aventura de qualquer maneira. Movendo-se a partir de C / C ++ no construtor da Borland e RAD IDE é uma mudança substancial paradigma (e curva de aprendizagem) a partir de VC da Microsoft ++, C ++ e .NET (ter usado VC a partir da primeira versão do MS-DOS - o bege três anel mini-ligantes).

A escolha entre C ++ e Delphi é um que eu sugiro que você faça depois de obter seus pés molhados em algumas pequeno e médio porte projectos em ambas as línguas. Comecei um programador C e depois de cerca de cinco anos mudou para Delphi (V3.0) quando o VCL feito apenas o Windows programação muito mais fácil e mais produtivo.

Esteja avisado, Delphi é uma linguagem sedutora para programadores provenientes de outras linguagens como COBOL, Fortran, VisualBasic porque suas regras de sintaxe e de código impor um tipo de disciplina que mantém um fora de problemas. O poder concisão e metal bruto de C torna um grande sistemas de linguagem de programação (drivers de dispositivo, O / S código, em tempo real de programação incorporado), mas em mãos inexperientes pode mordê-lo.

C ++ Builder da Borland (VCL do Delphi adicionado ao compilador C ++) leva muitas das bordas afiadas C ++ fora e é minha segunda língua favorita. Desde Borland adicionou suporte .NET para ambas as línguas há um forte argumento para usar o Construtor em vez de VC ++ para MS quadro de programação. Embora C # tem uma boa quantidade de 'simpatia' construída em comparação com C ++, se empurrado eu ainda ficar com Delphi ou Construtor se eu estava apenas começando.

Para aprender as cordas, para prototipagem e programas conceito rápidas simplesmente não há uma linguagem lá fora, que pode bater Delphi especialmente com a VCL e os componentes de terceiros. Nenhuma campanha publicitária, apenas fatos.

Pessoalmente, eu acho que existem outras considerações importantes para além de as diferenças entre as línguas. Por exemplo, o Delphi IDE é totalmente freakin impressionante para a construção de GUIs de uma forma WYSIWYG. Eu não usei o C ++ Builder IDE, mas eu ficaria muito surpreso se ele tem um GUI Builder, que é tão bom como Delphi.

Embora superficialmente a sintaxe de olhares C ++ mais como a de Java, modelo de objeto de Delphi é realmente mais próxima da de Java. Embora existam ponteiros em Delphi, em referências a prática de objetos (como as de Java) são utilizados 99% do tempo. Mesmo em C ++ moderno, eu não acho que é possível ponteiros a evitar. Não que haja algo de errado com ponteiros em si, mas na prática ....

Em uma nota pessoal, eu sou mais um Java cara estes dias, mas eu passei 2 anos trabalhando com Delphi e voltaria a ele num piscar de olhos. Em contraste, só tenho experiência muito limitada com C ++ e prefere banheiros limpos de retorno para esse idioma:)

É claro java sintaxe é mais como c ++ que como delphi, mas acho que o modelo de objeto é mais semelhante a Delfos:

  • herança simples. existem Interfaces mas são mais como COM que como interfaces Java.
  • objetos são alocados na pilha e acessado por referência

você pode encontrar um papel comparando as três línguas aqui

Eu acho que se você vai com Delphi você vai encontrá-lo mais fácil depois de alguns momentos de usar, também tem um apoio mais terceiros e alguns dos recursos introduzidos no Delphi antes de C ++ Builder

também ler este blog do ex-Java e agora o cara por trás da maioria dos banco de dados e DataSnap trabalho na Delphi Steve Shaughnessy, sobre a sua experiência sobre a programação Delphi após 10 anos de Java :-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/ 30193

Não há nada que eu não tenho sido capaz de fazer em C ++ VCL que eu não poderia fazer com Delphi VCL e quase todos Delphi fina componentes trabalho em C ++ Builder. Desde programa I para Windows e UNIX, C ++ é mais portátil.

Se você usar STL C ++ ou um outro biblioteca bem projetado para seus recipientes, coleta de lixo tipo de torna-se um ponto discutível, e GC outra forma manual não é difícil (se aprende rapidamente bons hábitos - que você deve estar praticando qualquer maneira, independentemente de um GC). Contanto que você use RAII sempre que possível, mantenha o seu gerenciamento de memória encapsulado em contentores, ser claro sobre a propriedade objeto e só usar os ponteiros como referências nilable (todos os quais você também deve estar fazendo, independentemente do idioma), GC realmente não deve ser um questão.

"Por exemplo, o Delphi IDE é totalmente freakin impressionante para a construção de GUIs de uma forma WYSIWYG. Eu não usei o C ++ Builder IDE, mas eu ficaria muito surpreso se ele tem um construtor de GUI que é tão bom quanto Delphi. "

Na verdade, o editor Builder GUI C ++ é exatamente o mesmo editor, e funciona da mesma forma. É fantástico.

Net tem um enorme número de classes, bem como Java. C # tem uma sintaxe semelhante ao Java e por causa das grandes obras de biblioteca classe bastante semelhante. E é um ambiente perfeitamente adequado para o programa. Mas, francamente Delphi é uma linguagem muito mais agradável, IDE e geral ambiente para trabalhar. C # foi projetado pela mesma pessoa que projetou Delphi e "sente" muito semelhantes em muitos aspectos, por isso não assuma que porque Delphi compila para código nativo (embora você pode usar Delphi Net também) é fundamentalmente mais difícil de usar. Não é, de todo.

A minha recomendação pessoal seria para Delphi, porque é uma linguagem legal. No entanto, se você estiver interessado em aprender C ++, C ++ Builder é provavelmente a maneira mais legal que você poderia fazê-lo.

Eu programa profissionalmente em Delphi para os últimos 10 anos e ter um bom conhecimento de C ++. Eu iria para o caminho Delphi. A sintaxe é muito mais simples e gerenciamento de memória também. Isso GC para o nativo Delphi eu não ter ouvido ainda ... Embora eu não gostava muito das armadilhas no código Delphi.Net introduzidas por causa do .NET gc, eu não sou muito Amante de GCS; -)

Uma coisa que eu esqueci de mencionar antes:

A partir de uma perspectiva de custo, você realmente não necessidade para escolher. Compre o RAD Studio pacote, e por um custo extra modesto sobre uma linguagem individual, você tem as duas Delphi e C ++ Builder personalidades no mesmo IDE.

E, vale a pena mencionar que o pacote C ++ Builder inclui o compilador Delphi, e você pode escrever / adicionar arquivos Delphi .pas e incluí-los como parte de sua C ++ projetos.

Se você vai fazer um monte de programação do Windows, aprender C ++. Você aprender alemão em preparação para uma viagem para a França? C / C ++ é a língua nativa da API do Windows. Lidar com estruturas de dados WinAPI e chamadas é muito mais simples em C / C ++. Quanto ao RAD, eu usei MSVC para cerca de 13 anos e eu posso chicotear juntos um aplicativo GUI tão rapidamente quanto qualquer um usando editor GUI do Visual Studio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top