D é uma alternativa confiável para Java e C ++? [fechadas]

163

A linguagem D é uma alternativa confiável para Java e C ++? O que é preciso para se tornar uma alternativa credível? Eu deveria me preocupar em aprender isso? Merece evangelizar?

A principal razão pela qual pergunto é que, com o novo padrão C ++ (c ++ 0x) quase aqui, fica claro para mim que a linguagem passou do ponto de não retorno em relação a alguém que a entenda. Eu sei que C / C ++ nunca morrerá, mas em algum momento precisamos seguir em frente. Até o COBOL teve seu dia e o Java, em muitos aspectos, desfez o C ++. Então o que vem depois? D preenche a conta?

Mark Kegel
fonte
23
COBOL está voltando, mas vá em frente e aprenda D se isso lhe agradar. Ler folhas de chá é tão importante quanto prever o próximo grande idioma.
Shog9
5
Não estou preocupado com o que é o próximo grande idioma, estou mais preocupado em dizer que se eu dissesse ao meu empregador que queria usar D no meu próximo projeto, não seria levado a sério porque o idioma não é ' ainda não.
Mark Kegel
22
deve-se notar que as páginas "D vs. C ++" da marte digital são altamente discriminatórias contra C ++. muitas vezes eles dizem "c ++ não pode fazê-lo", C ++ pode fazê-lo
Johannes Schaub - litb 27/12/08
23
@ Johnnes: Não é sobre o que a linguagem torna possível, é o que a linguagem facilita. - Brian dano
missingfaktor
9
@Rahul, concordou, mas então eles deveriam dizer isso. como "isso não é fácil de fazer em C ++" e não que isso não seja possível.
Johannes Schaub - litb 26/03

Respostas:

130

O que determina o sucesso e a popularidade de uma linguagem de programação para o desenvolvimento de software no mundo real está apenas parcialmente relacionado à qualidade da própria linguagem. Como uma linguagem pura, D sem dúvida tem muitas vantagens sobre C ++ e Java. No mínimo, é uma alternativa credível como linguagem pura, sendo todas as outras coisas iguais.

No entanto, outras coisas são importantes para o desenvolvimento de software - quase mais do que a própria linguagem: portabilidade (em quantas plataformas ele é executado), suporte a depurador, suporte a IDE, qualidade de biblioteca padrão, suporte a biblioteca dinâmica, ligações para APIs comuns, documentação, desenvolvedor comunidade, dinâmica e suporte comercial, apenas para citar alguns. Em todos esses aspectos, D está irremediavelmente atrás de Java, C ++ e C #. Na verdade, eu argumentaria que está mesmo por trás das chamadas linguagens de "script", como Python, Perl, PHP, Ruby e até JavaScript nesse sentido.

Para ser franco, você simplesmente não pode criar um aplicativo de plataforma cruzada em larga escala usando D. Com uma biblioteca padrão imatura, não há suporte para IDEs modernos (existem plugins para o Visual Studio e o Xamarin Studio / MonoDevelop), limitado suporte de biblioteca dinâmica / compartilhada e poucas ligações a outros idiomas, D simplesmente não é uma opção hoje.

Se você gosta do que vê de D, por todos os meios, aprenda - não demorará muito se você já conhece Java e C ++. Eu não acho que o evangelismo seria útil - neste ponto, se D vai ter sucesso, o que ele realmente precisa é de mais pessoas que o usem silenciosamente e abordem suas principais deficiências, como biblioteca padrão e suporte a IDE.

Finalmente, como no C ++, enquanto a maioria concorda que a linguagem é muito complexa, milhares de empresas estão usando com êxito o C ++ como parte de uma mistura saudável de linguagens, permitindo apenas um subconjunto menor e bem definido da linguagem. Ainda é difícil superar o C ++ quando o desempenho bruto e o uso pequeno de memória são necessários.

dmazzoni
fonte
8
dizer que "não há suporte para nenhum IDE moderno" está exagerando um pouco. Há suporte no eclipse. Ainda não é de 1ª classe, mas está lá e está melhorando.
BCS
46
Ausência de evidência não é evidência de ausência.
FeepingCreature
29
Se alguém faz uma afirmação positiva como 'existem unicórnios cor de rosa', deve oferecer evidências antes que seja razoável aceitá-las. É verdade que isso não significa que não haja unicórnios cor de rosa como o @FeepingCreature afirmou, mas simplesmente afirmando que esse não é um argumento convincente ou válido.
JoshD 01/10/10
8
@ Feeping: É um ditado engraçado que James Randi gosta de brincar, mas simplesmente não é verdade. Seus testes têm evidências razoáveis ​​que sustentam que o teste deve encontrar algo, mas não, isso é evidência de ausência.
GManNickG 25/02
9
Quero acrescentar que criamos aplicativos de grande escala com D1 e Tango. Ok, não somos multiplataforma, mas apenas linux, mas ainda assim. Toda a nossa infra-estrutura está escrito em D e processar mais de 30 mil pedidos por hora com um back-end grande DHT também escrito em D.
Marenz
108

Apenas para adicionar minhas próprias experiências à mistura:

Há cerca de um ano, trabalhei em um projeto de jogo em pequena escala (3 codificadores) com duração de 3 meses, onde usamos o D como idioma principal. Nós o escolhemos em parte como um experimento, em parte porque ele já tinha ligações para SDL e algumas outras ferramentas que estávamos usando, e principalmente pelos benefícios que parece ter sobre o C ++.

Adoramos usá-lo. Foi rápido para aprender e fácil de escrever. Muitos de seus recursos se mostraram inestimáveis, e sinto falta deles voltando ao C ++.

No entanto, os seguintes pontos tornaram nossa vida mais difícil:

  1. Não havia um bom IDE na época, o que era um grande problema. Acabamos criando o nosso próprio personalizando Scite. Isso funcionou bem, mas não era o ideal.
  2. Não havia depurador no momento. Conseguimos fazer com que o WINDBG trabalhasse de acordo com o objetivo, mas não era confiável. Depurar código sem um depurador tornava a vida infernal às vezes.
  3. Havia duas bibliotecas padrão para escolher na época (Tango e Phobos). Começamos com um, mudamos para o outro e realmente precisamos de uma mistura de recursos de ambos (Tangobos!). Isso causou dores de cabeça e algum código foi reescrito.
  4. Ligações a outras ferramentas não disponíveis. No final, tivemos que mudar para o DirectX (por razões que não abordarei). Como não havia ligações disponíveis para o DirectX, tivemos que escrever nossas próprias em C ++, compilar como uma DLL e vincular a isso. Este foi um trabalho bastante desagradável e levou algum tempo.

No geral, adoramos escrever D. Tornou realmente fácil escrever código e foi rápido em aprender. Os problemas que mencionei ecoam a resposta que foi aceita para essa pergunta - são os bits "extras" que precisam ser abordados em D, o núcleo é sólido.

xan
fonte
4
entrada legal ... agora existe um depurador !! :)
bbqchickenrobot
13
Não entendo por que o DirectX é um problema. Eu não sou um programador de D, mas pensei que D pudesse entender C? E o DirectX tem uma API C?
é relativly fácil de usar o material DirectX com interfaces D nativas, assim que escrever um wrapper em C ++ não é necessário, exceto para alguns casos especiais
Quonux
@Quonux: Essa foi a nossa experiência na época, em 08. Não há dúvida de que as coisas mudaram muito desde então. Não me lembro mais dos detalhes sangrentos.
xan
1
Atualização de 2019: a linguagem de programação D expandiu-se significativamente. Agora você pode usar o GDB pronto para uso com o Dlang. O DPP permite incluir diretamente qualquer cabeçalho C em Dlang. O Calypso permite que você use qualquer biblioteca C ++ em Dlang, incluindo o Qt - ele tem alguns bugs, mas funciona em grande parte.
noɥʇʎԀʎzɐɹƆ 5/09/19
60

Concordo que o C ++ está se tornando uma linguagem sem saída - e me custa dizer isso, depois de usá-lo nos últimos 17 anos.

Eu acho que D é o sucessor legítimo do C ++. Do ponto de vista da linguagem, "faz todas as coisas certas" (mesmo que eu não concorde com cada decisão minuciosa). Penso que, com C e C ++ em declínio, não há outra linguagem de nível de sistema que possa realmente fazer o que faz, enquanto se mantém no mundo das linguagens modernas - exceto D! D não apenas desempenha esse papel - ele se destaca! Uma olhada no D1.x deve ser suficiente para convencê-lo disso - mas quando você olha para o D2.0, você fica impressionado. É minha opinião que hoje não existe outra linguagem que funcione tão bem quanto o D2.0 para superar os paradigmas de programação imperativos e funcionais - o que só será mais significativo nos próximos anos.

A falta de aceitação convencional - ou mesmo a visibilidade -, bem como bibliotecas maduras e em larga escala - são um obstáculo, é claro. No entanto, acho que você não pode escrever por causa disso. Estou convencido de que D irá crescer para se tornar um dos mais importantes idiomas ao redor dentro dos próximos anos - e aqueles que estão levando a sério agora vão ser bem colocado para assumir a liderança quando essa hora chegar.

Penso que a diferença se deve, em grande parte, ao envolvimento de Andrei Alexandrescu. Isso não é para desacreditar Walter Bright, que fez um trabalho importante em trazer D ao mundo. Mas Alexandrescu é uma figura importante e convincente na comunidade C ++ - e é aí que a maioria dos possíveis comutadores D virá. E ele também fez uma contribuição significativa e importante para o D2.0 em seu suporte à programação funcional.

Ainda pode acontecer que D esteja fadado a ser o Betamax das linguagens de nível de sistemas - mas meu dinheiro está voltando nos próximos dois anos.

philsquared
fonte
20
C não está em declínio para a programação no nível de sistemas. Linux, Windows e OS X são todos desenvolvidos em C. Da mesma forma, muitos micro-controladores e sistemas operacionais para micro-controladores são programados usando C.
Kevin
12
Eu não acho que D "faz todas as coisas certas". A coisa certa seria começar do zero, não tentar criar um C ++ melhor. Penso que são necessárias mudanças mais radicais para justificar uma mudança em larga escala do C ++.
jalf
9
Kevin: Windows e OS X não são desenvolvidos no C. Os pedaços do kernel são, é claro, mas o Windows usa montes de C ++ e OS X Obj-C. O Linux é o único SO que conheço onde C foi elevado ao status de One True Language e nada mais é usado.
jalf
16
Previsão agradável. Faz dois anos desde este post, e D não está mais próximo da adoção convencional.
mikerobi
18
@mikeobi LOL! Os dois anos começa a partir de quando você ler essa frase ;-)
philsquared
20

Gosto que D seja o trabalho de um gênio, principalmente uma mente - Walter Bright, cujo compilador Zortech foi fantástico em sua época.

Em contraste, o C ++ é muito elaborado pelo comitê, mesmo que Bjarne seja uma influência. Muitos recursos adicionais e nova sintaxe estranha. Essa diferença reflete na facilidade de aprendizado e no uso diário, menos bugs.

As linguagens mais coerentes levam a melhor produtividade e alegria do programador - mas isso é subjetivo e discutível! (acho que devo votar minha própria resposta)

DarenW
fonte
9
Há outro gênio trabalhando nisso agora - Andrei Alexandrescu. O que ele fez com o D2.0 é, IMHO, pelo menos tão surpreendente quanto o que Walter fez com o D1.x. Entre os dois (sem descontar os inúmeros outros colaboradores), D está se tornando um idioma a ser considerado. Assista a este espaço
philsquared 30/10/08
5
faça com que 3 (ou mais) malditos bons programadores: Bartosz Milewski
BCS
7
Então o C ++ foi criado originalmente por um cara muito inteligente e agora é controlado por um comitê de pessoas realmente inteligentes, enquanto o D foi criado originalmente por um cara realmente inteligente, e agora está sendo controlado por um ... grupo de pessoas realmente inteligentes. Sim, vejo como isso faz D superior. ;) (dica: a feiúra de C ++ não tem nada a ver com comitês. É uma conseqüência dos objetivos de design da linguagem. Ele deveria ser (quase) um subconjunto de C. D não é, e não deveria ser assim. , o que significa que ele poderia evitar muitas das verrugas (com o custo de evitar também a popularidade que trouxe)
jalf
4
@ jalf, você está certo de que a "feiúra" do C ++ não deve ser projetada pelo comitê. É a lentidão na evolução, no entanto.
Phsquared 24/03/2013
15

D é uma boa linguagem e decentemente popular , mas como todas as línguas, é apenas mais uma ferramenta. Qual ferramenta usar depende do tipo de pessoa que você é, como pensa, o ambiente em que está trabalhando, quais restrições dos idiomas aplicam o programa e, o mais importante, o próprio programa. Se você tiver tempo, eu recomendaria definitivamente aprender D. No pior cenário, você nunca o usará. É mais provável que você aprenda quais aspectos você mais gosta e sob quais condições ele brilha mais e aproveite isso para criar novos programas.

Eu recomendaria olhar para o gráfico de comparação D para ver quais são os recursos do idioma e ver se ele soa certo para você.

Spodi
fonte
10

A linguagem D é moderna. Nenhuma linguagem é perfeita, e não há dúvida sobre isso. Mas as línguas nascem para facilitar a vida. Onde a linguagem D, comparada ao C ++, possui muitos recursos bons, em termos de complexidade. Muitas outras especialidades de combinação de idiomas estão envolvidas, o que ajuda os codificadores a codificar mais rapidamente, com os recursos TOP introduzidos por outros idiomas. Veja também: para mais detalhes sobre D e outros idiomas

  • D vs C ++, é a compatibilidade, onde grandes linguagens C ++ estão envolvidas e exigem compatibilidade com D. D já permitem 100% de compatibilidade com C, o que é uma boa vitória ainda.

  • D vs C ++, C ++ é minha opinião uma linguagem muito agradável, mas difícil de codificar e demorada exige mais e mais experiência para obter sucesso, mas D permite fazer o mesmo com simplicidade

  • D vs C ++, não tenho certeza se C ++ faz, mas D não permite atribuição de variável de restrição de tipo usando "auto", o que é bom ter uma variável dinâmica, quando é necessário fazer um tipo estrito

  • D vs C ++, se você tiver outra experiência com o idioma, pode começar com ele, ele tem um roteiro de aprendizado fácil e está sendo projetado por uma equipe experiente e forte suporte da empresa

  • D vs C ++, a coisa mais legal que encontrei em D, é o estilo do código, que dá a aparência e a aparência exatamente como C / C ++, enquanto a codificação lembra que estou fazendo um C / C ++ realmente moderno, chamado D

Há muitas outras boas razões para a linguagem D, não há razão para subestimar qualquer linguagem, é sempre a escolha do usuário.

Comunidade
fonte
7

Realmente depende de quais são suas necessidades - aplicativos comerciais em grande escala escritos em D do existir do lado do servidor, e para isso D (tipicamente usando Tango / Mango) é um ajuste perfeito, e que são susceptíveis de ser capaz de atender mais pedidos do que com qualquer outro idioma / plataforma.

Para soluções mais especializadas em termos de protocolos e interatividade (muitas delas), você terá mais problemas para encontrar as bibliotecas necessárias, e a falta de ferramentas provavelmente o afetará mais.

larsivi
fonte
1
você poderia fornecer um exemplo de um aplicativo comercial?
Alexander Malakhov
1
@ Alexander Malakhov: A ... hmm ... boa pergunta .... fico feliz que você tenha perguntado se existe um aplicativo comercial .... bem pensada ... certamente ..... eu admiro ... ... este é o tipo de perguntas que devemos fazer ... mostra seu intelecto ... hmm ... deixe-me pesquisar ... Aplicativo comercial em D ... hmm ... bem ... .apenas espere ... eu sei, mas ... simplesmente não consigo me lembrar ... certamente existem ... apenas espere ... ainda estou procurando ... espere!
Companheiro Simples
7

D é bastante impressionante, e o livro de Andrei é bem escrito. Mas, como já foi dito, você precisa das ferramentas e do suporte da plataforma. Com o tempo, a GDC pode ser a resposta para ambos.

você viu isso?

"O GNU Debugger adiciona suporte ao idioma D": http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

Além disso, o site digitalmars tem páginas que discutem a interface com C e C ++ (para as bibliotecas das quais você simplesmente não pode viver). Gostaria de saber se há alguma ferramenta que, dado um arquivo de cabeçalho C, seja difícil de escrever os protótipos D.

Pessoalmente eu gostaria de não neste impulso ponto para fazer um grande projeto em D, mas eu iria usar D para obter ferramentas in-house, ficando experiência com ele e introduzindo outros a ele.

A questão original era se D é uma alternativa confiável para Java e C ++. Eu não acho que D e Java realmente vão competir muito na prática; D compete com C ++ e agora Go. Outras perguntas abordam as diferenças entre D e Go, mas o Go geralmente é considerado mais fácil de usar. Por isso, suspeito que o futuro de D dependa muito de quanto espaço há para respirar entre C ++, o atual rei da colina, e Go, a alternativa mais fácil que tem o apoio do Google.

ATUALIZAÇÃO: Acabei de descobrir que meu capítulo favorito do livro de Andrei , o de simultaneidade, está disponível gratuitamente online. Definitivamente vale a pena ler!

E aqui está uma discussão loooong sobre os méritos / objectivos relativos / abordagens de Go e D .

AmigoNico
fonte
Eu não sei muito sobre Rust; Estou esperando que ele atinja 1.0. Mas você está certo, definitivamente parece que vale a pena assistir e parece jogar nesse mesmo espaço.
AmigoNico 16/10/12
1
A única coisa que eu não gosto em D é o sistema de tipos. Parece velho. Hierarquias OO são intrusivas. Eu não gosto disso como ponto de partida. Ferrugem é melhor nisso.
Germán Diago 11/12
4

Parece que a pergunta foi respondida. D é a melhor linguagem em comparação com C ++.

A questão de saber se, para fins práticos, D tem melhor infraestrutura ao redor é secundária.

Em suma, se os dois são idiomas novos em folha, sem nenhum suporte em torno deles, D é o melhor idioma, portanto, é o melhor idioma.

vfclists
fonte
4

Como linguagem, sempre achei que D é mais próximo de C # que C ++. Não em recursos e bibliotecas, mas em "sentimento". É muito mais limpo, mais agradável ... divertido (que o C ++). IMHO o maior obstáculo para se tornar uma alternativa credível são ferramentas, IDE e depurador. Se D superar alguns obstáculos de uso / adoção generalizados, mais ferramentas e bibliotecas se manifestarão. (Eu próprio retornarei a D, se houver um IDE e um depurador utilizáveis.)

gerleim
fonte
o que acontece com o plug-in mono-d ?: mono-d.alexanderbothe.com
user1284631
3

Funciona muito bem para meus próprios projetos de animais de estimação. Eu o usaria para projetos de empregadores, mas por não saber o quão difícil seria para eles encontrar alguém para assumir a fonte depois que eu seguisse em frente. Não há razões técnicas para evitá-lo, pelo menos nas plataformas suportadas. (bata na madeira)

DarenW
fonte
3

Uma abordagem é procurar empregos na sua área. Encontre os trabalhos que você gostaria de fazer e veja quais habilidades eles estão solicitando. Se eles estão pedindo C ++, Ruby, Oracle ou D, essa é a habilidade que é principalmente para ajudá-lo a conseguir o emprego que deseja.

Peter Lawrey
fonte
3

Parece uma linguagem muito bem projetada; muito melhor que C - C ++ - Objetivo C. Posso viver sem um IDE ou depurador por um tempo, mas não sem uma boa biblioteca documentada para o D 2.0.

Volto em 6 meses ...

Bill the Lizard
fonte