Pergunta

O linguagem D uma alternativa credível ao Java e C ++? O que será necessário para se tornar uma alternativa credível? Devo incomodá aprendê-lo? Será que mereço evangelizar?

A principal razão que eu peço é que, com o novo padrão C ++ (c ++ 0x) quase aqui, é claro para mim que a linguagem tem ido bem além do ponto de não retorno no que diz respeito a qualquer pessoa que nunca entendê-lo. Eu sei que C / C ++ nunca vai morrer, mas em algum momento temos de seguir em frente. Mesmo COBOL teve seu dia e Java tem em muitos aspectos desfeitas C ++. Então o que vem depois? Does D encher a conta?

Foi útil?

Solução

O que determina o sucesso ea popularidade de uma linguagem de programação para desenvolvimento de software do mundo real é apenas parcialmente relacionada com a qualidade da própria linguagem. Como uma linguagem pura, D tem indiscutivelmente muitas vantagens sobre C ++ e Java. No mínimo, é uma alternativa credível como uma linguagem pura, todas as outras coisas sendo iguais.

No entanto, outras coisas importantes para o desenvolvimento de software - quase mais do que a própria linguagem: portabilidade (quantas plataformas ele executado em), suporte depurador, suporte IDE, padrão de qualidade biblioteca, apoio de biblioteca dinâmica, ligações para APIs comuns, documentação , a comunidade de desenvolvedores, momento e suporte comercial, apenas para citar alguns. Em cada um desses aspectos, D é irremediavelmente para trás Java, C ++ e C #. Na verdade, eu diria que é mesmo atrás chamados "scripts" linguagens como Python, Perl, PHP, Ruby, e até mesmo JavaScript nestes aspectos.

Para ser franco, você simplesmente não pode construir uma aplicação em grande escala, multi-plataforma usando D. Com uma biblioteca padrão imaturo, nenhum apoio em qualquer IDEs modernos (existem plugins para ambos Visual Studio e Xamarin Estúdio / MonoDevelop), dinâmica limitada / suporte biblioteca compartilhada, e poucas ligações para outras línguas, D não é simplesmente uma opção hoje.

Se você gosta do que vê de D, por todos os meios, aprendê-lo - ele não deve demorar muito se você já sabe 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 tranquilamente a usá-lo e abordando suas principais deficiências como biblioteca padrão e suporte IDE

Finalmente, como para C ++, enquanto a maioria concorda a linguagem é muito complexo, milhares de empresas estão com sucesso usando C ++ como parte de uma saudável mistura de idiomas, permitindo que apenas um subconjunto menor, bem definida da língua. Ainda é difícil de bater C ++ quando ambos desempenho bruto e uso de memória pequeno são necessários.

Outras dicas

Só para acrescentar minhas próprias experiências na mistura:

Cerca de um ano atrás eu trabalhava em um projeto pequeno jogo de escala (3 codificadores) com duração de 3 meses, onde costumávamos D como nosso idioma principal. Nós escolhemos, em parte como uma experiência, em parte porque ele já teve ligações para SDL e algumas outras ferramentas que estávamos usando, e principalmente para os benefícios é parecia ter mais de C ++.

Nós amamos a usá-lo. Foi rápido de aprender e fácil de escrever. Muitas de suas características provou ser inestimável, e eu sinto falta deles ter de volta foi para C ++.

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

  1. Não houve boa IDE no momento que era um grande problema. Acabamos fazendo nossa própria personalizando Scite. Isso funcionou ok, mas não foi ideal.
  2. Não houve depurador no momento. Conseguimos obter WINDBG ao trabalho em uma base hit-or-miss, mas não era confiável. Depuração de código sem um depurador feita infernal a vida às vezes.
  3. Havia 2 bibliotecas padrão para escolher no momento (Tango e Phobos). Começamos com um, mudou para o outro, e realmente precisava de uma mistura de características de ambos (Tangobos!). Isso causou dores de cabeça e algum código re-escrever.
  4. Ligações para outras ferramentas não disponível. No final, tive que mudar para DirectX (por razões que eu não vou entrar). Não houve ligações para DirectX disponíveis por isso tivemos de escrever nosso próprio em C ++, construí-lo como um arquivo .dll e se ligam a isso. Este foi um trabalho bastante desagradável e levou algum tempo.

No geral, nós amamos a escrever D. Ele fez realmente escrever código fácil e foi rápido para aprender. Os problemas que eu mencionei ecoar a resposta que foi aceite para esta questão - é os bits "extra" que precisam enfrentar em D, o núcleo do que é sólido

.

Eu concordo que C ++ está se tornando uma linguagem sem saída - e custa-me a dizer que, após utilizá-la para os últimos 17 anos

.

Eu acho que D é o sucessor legítimo C ++. De uma perspectiva de linguagem que "faz todas as coisas certas" (mesmo se eu não concordar com todas as decisões minuto). Eu acho que com C e C ++ em declínio há nenhuma outra língua nível dos sistemas que podem realmente fazer o que eles fazem, mantendo-se acima no mundo das línguas modernas - exceto D! Não só D preencher esse papel - é excelente no que faz! Um olhar sobre D1.x deve ser suficiente para convencê-lo de que - mas quando você olha para d2.0 que sopra para longe. É minha opinião que não há nenhuma outra língua em torno de hoje que as obras, bem como d2.0 para colmatar o imperativo e paradigmas de programação funcional -. Que só vai ficar mais significativo nos próximos anos

A falta de aceitação mainstream - ou até mesmo a visibilidade -, bem como em grande escala, maduro, bibliotecas - são um obstáculo claro. No entanto, eu não acho que você pode escrevê-lo fora 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 esse tempo vem.

Eu acho que a diferença vai acontecer devido, em grande parte, ao envolvimento de Andrei Alexandrescu. Isso não é de descrédito Walter brilhante de qualquer forma, que tem feito um trabalho importante em trazer D para o mundo. Mas Alexandrescu é uma importante e convincente, figura no certamente a comunidade C ++ - e não há onde a maioria dos potenciais switchers D estão indo vir. E ele também fez uma contribuição significativa e importante para d2.0 em seu apoio à programação funcional.

Pode ainda acontecer que D está condenado a ser o Betamax de linguagens de nível sistemas -. Mas meu dinheiro está sobre ele se virar dentro dos próximos dois anos

Eu gosto que D é o trabalho de um gênio, principalmente uma mente - Walter Bright, cujo compilador Zortech foi fantástico em seu dia.

Em contraste C ++ é muito design por comitê, mesmo Bjarne é uma influência. Muitos add-on características e nova sintaxe estranho. Essa diferença reflete na facilidade de aprendizagem e facilidade de uso diário, menos bugs.

As línguas mais coerentes levar a melhor produtividade e alegria programador - mas isso é subjetivo e discutível! (Acho que eu deveria votar a minha própria resposta para baixo)

D é uma linguagem boa e decentemente populares , mas como todas as línguas, é apenas mais uma ferramenta. Qual ferramenta utilizar depende do tipo de pessoa que você é, como você pensa, o ambiente que você está trabalhando, quais as restrições das línguas aplicar o programa, e mais importante, o próprio programa. Se você tem o tempo, eu recomendaria definitivamente aprender D. No pior caso, você nunca vai usá-lo. O mais provável é que você vai aprender o que aspectos dela que você mais gosta, e em que condições ela brilha mais brilhante, e tirar proveito disso para quando fazer novos programas.

Eu recomendo a olhar para o D gráfico de comparação para ver o que as características são para a linguagem e ver se ele soa bem para você.

linguagem D é moderno. Nenhuma linguagem é perfeito, e não há dúvida sobre isso. Mas línguas nascem para tornar a vida mais fácil. Onde a linguagem D comparado com C ++ tem muito boas características, em termos de complexidade. Muitos outros combinação de idiomas especialidade é envolvido, o que ajuda programadores a código mais rápido, com principais recursos introduzidos por outras línguas. Por favor, veja também: para mais detalhes sobre D e outras línguas

  • D vs C ++, é a compatibilidade, onde as línguas enorme C ++ estão envolvidos e exige compatibilidade com D. D já permitem 100% de compatibilidade com C, que é um bom ganhar ainda.

  • D vs C ++, C ++ é minha opinião linguagem muito bom, mas é difícil de código, e demorado, exige mais e mais experiência para obter sucesso, mas D permitem fazer o mesmo com simplicidade

  • D vs C ++, eu não tenho certeza se C ++ faz, mas D não permitem atribuição de variável nenhum tipo de restrição usando "auto", o que é bom ter uma dinâmica variável, quando exigem que você pode fazer um tipo estrito

  • D vs C ++, se você tiver outra experiência idioma, você pode diretamente começar com ele, ele tem fácil roteiro de aprendizagem, e sua obtenção desenhado por uma forte equipe experiente e apoio da empresa

  • D vs C ++, o muito agradável coisa encontrei de D, é o estilo do código, que dá a aparência e sentir exatamente o mesmo como C / C ++, enquanto a codificação lembra eu estou fazendo realmente moderno C / C ++ que chamou D

Há um lote de mais uma boa razão para a linguagem D, não há motivo para subestimar qualquer idioma, é sempre a escolha do usuário.

Ela realmente depende de quais são suas necessidades - aplicações comerciais de grande escala escritas 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 solicitações do que com qualquer outra língua / plataforma.

Para soluções mais especializado em termos de protocolos e interatividade (que são muitos) você terá mais problemas para encontrar as bibliotecas necessárias, e a falta de ferramentas é susceptível de afectar-lhe mais.

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

Você já viu isso?

"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 discutindo interface com C e C ++ (para as bibliotecas que você simplesmente não pode viver sem). Gostaria de saber se há alguma ferramenta que, dado um arquivo de cabeçalho C, vai tomar uma facada em escrever os protótipos D.

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

A pergunta original era se D é uma alternativa credível para Java e C ++. Eu não acho que D e Java são realmente indo para competir tanto na prática; D compete com C ++ e agora Vai. Outras questões abordar as diferenças entre D e vão, mas Go é geralmente considerado mais fácil de usar. Então, eu suspeito que o futuro da D depende muito de quanto espaço há para ele respirar entre C ++, o atual rei da colina, e Go, a alternativa muito mais fácil que tem apoio do Google.

UPDATE: Acabei de descobrir que meu capítulo favorito do livro de Andrei , aquele em simultaneidade, está disponível gratuitamente online. Definitivamente vale a pena ler!

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

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

A questão de saber se para efeitos práticos D tem melhor infra-estrutura ao redor é secundário.

Em suma, se ambos são novos idiomas sem qualquer apoio em torno deles D é a língua melhor, ergo é a língua melhor.

Como uma linguagem, eu sempre senti que D está mais perto de C # de C ++. Não em características e bibliotecas, mas na "sensação". É muito mais limpo, mais agradável ... divertido (de C ++). IMHO o maior obstáculo para se tornar uma alternativa credível é ferramentas, IDE e depurador. Se D supera alguns obstáculos de generalizada de utilização / adoção, mais ferramentas e bibliotecas irá se manifestar. (Eu me voltará a D, se haverá um IDE utilizável e depurador.)

Funciona muito bem para meus próprios projetos de estimação. Eu usá-lo 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 de eu seguir em frente. Não há razões técnicas para evitá-lo, pelo menos nas plataformas suportadas. (Bata na madeira)

Uma abordagem é para procurar emprego em sua área. Encontre os postos de trabalho que você gostaria de fazer e ver quais são as competências que eles estão pedindo. Se eles estão pedindo C ++ ou Ruby ou Oracle ou D, em seguida, que é a habilidade que é principalmente para ajudar você a obter o emprego que deseja.

Parece que uma língua muito bem desenhado; muito melhor do que C - C ++ - C. Objective Eu posso viver sem um IDE ou um depurador por um tempo, mas não sem um bom, biblioteca documentado para D 2.0.

Vou verificar novamente em 6 meses ...

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