Es D una alternativa creíble a Java y C++? [cerrado]


¿Es el lenguaje D una alternativa creíble a Java y C++? ¿Qué se necesita para convertirse en una alternativa creíble? ¿Debería molestarme en aprenderlo? ¿Merece evangelizar?

La razón principal por la que pregunto es que con el nuevo estándar de C++ (c++0x) casi aquí, está claro para mí que el lenguaje ha pasado el punto de no retorno con respecto a cualquiera que lo haya entendido. Sé que C/C++ nunca morirá, pero en algún momento tenemos que seguir adelante. Incluso COBOL tuvo su día y Java ha deshecho C++en muchos aspectos. Entonces, ¿qué sigue? ¿D llena la cuenta?

 157
Author: nbro, 2008-09-29

13 answers

Lo que determina el éxito y la popularidad de un lenguaje de programación para el desarrollo de software en el mundo real está solo parcialmente relacionado con la calidad del lenguaje en sí. Como lenguaje puro, D podría decirse que tiene muchas ventajas sobre C++ y Java. Por lo menos es una alternativa creíble como un lenguaje puro, todas las demás cosas siendo iguales.

Sin embargo, otras cosas importan para el desarrollo de software, casi más que el lenguaje en sí: portabilidad (cuántas plataformas ejecuta on), compatibilidad con depuradores, compatibilidad con IDE, calidad de biblioteca estándar, compatibilidad con bibliotecas dinámicas, enlaces para API comunes, documentación, la comunidad de desarrolladores, momentum y compatibilidad comercial, solo por nombrar algunos. En cada uno de esos aspectos, D está irremediablemente detrás de Java, C++ y C#. De hecho, yo diría que incluso está detrás de los llamados lenguajes de "scripting" como Python, Perl, PHP, Ruby e incluso JavaScript en estos aspectos.

Para ser franco, simplemente no se puede construir una gran escala, multiplataforma aplicación que usa D. Con una biblioteca estándar inmadura, sin soporte en ningún IDE moderno (hay complementos para Visual Studio y Xamarin Studio/MonoDevelop), soporte limitado para bibliotecas dinámicas/compartidas y pocos enlaces a otros lenguajes, D simplemente no es una opción hoy en día.

Si te gusta lo que ves de D, por supuesto, apréndelo - no debería tomar mucho tiempo si ya conoces Java y C++. No creo que evangelismo sería útil-en este punto si D va a tener éxito, lo que realmente necesita más gente que lo use silenciosamente y aborde sus principales deficiencias, como la biblioteca estándar y el soporte IDE.

Finalmente, en cuanto a C++, aunque la mayoría está de acuerdo en que el lenguaje es demasiado complejo, miles de empresas están utilizando con éxito C++ como parte de una saludable mezcla de lenguajes al permitir solo un subconjunto más pequeño y bien definido del lenguaje. Todavía es difícil superar a C++ cuando se requiere un rendimiento raw y un uso de memoria pequeño.

 125
Author: dmazzoni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-04 19:37:03

Solo para agregar mis propias experiencias a la mezcla:

Hace aproximadamente un año trabajé en un proyecto de juego a pequeña escala (3 codificadores) que duró 3 meses, donde usamos D como nuestro lenguaje principal. Lo elegimos en parte como un experimento, en parte porque ya tenía enlaces para SDL y algunas otras herramientas que estábamos utilizando, y sobre todo por los beneficios que parecía tener sobre C++.

Nos encantó usarlo. Fue rápido de aprender y fácil de escribir. Muchas de sus características resultaron invaluables, y las echo de menos volviendo a C++.

Sin embargo, los siguientes puntos hicieron nuestras vidas más difíciles:

  1. No había un buen IDE en ese momento, lo que era un problema importante. Terminamos haciendo la nuestra personalizando Scite. Esto funcionó bien, pero no era ideal.
  2. No había depurador en ese momento. Nos las arreglamos para conseguir que WINDBG trabajara en una base de hit-or-miss, pero no era confiable. Depurar código sin un depurador hizo la vida infernal a veces.
  3. Había 2 bibliotecas estándar para elegir de la época (Tango y Fobos). Comenzamos con uno, cambiamos al otro, y realmente necesitábamos una mezcla de características de ambos (¡Tangobos!). Esto causó dolores de cabeza y algo de reescritura de código.
  4. No se dispone de enlaces a otras herramientas. Al final tuvimos que cambiar a DirectX (por razones en las que no entraré). No había enlaces para DirectX disponibles, así que tuvimos que escribir el nuestro en C++, construirlo como a .dll y enlace a eso. Este fue un trabajo bastante desagradable y tomó algunos tiempo.

En general, nos encantaba escribir D. En realidad, escribir código era fácil y rápido de aprender. Los temas que he mencionado hacen eco de la respuesta que ha sido aceptada para esta pregunta - son los bits "extra" que deben abordarse en D, el núcleo de la misma es sólido.

 103
Author: xan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-13 10:46:48

Estoy de acuerdo en que C++ se está convirtiendo en un lenguaje sin salida, y me duele decirlo, después de haberlo usado durante los últimos 17 años.

Creo que D es el sucesor legítimo de C++. Desde la perspectiva del lenguaje "hace todas las cosas correctas" (incluso si no estoy de acuerdo con cada decisión minuto). Creo que con C y C++ en declive no hay otro lenguaje a nivel de sistemas que realmente pueda hacer lo que hacen, mientras se mantiene en el mundo de los lenguajes modernos, excepto D! No sólo D llenar este papel-se destaca en él! Una mirada a D1.x debería ser suficiente para convencerte de eso, pero cuando miras D2. 0, te deja boquiabierto. Es mi opinión que no hay otro lenguaje alrededor de hoy que funciona tan bien como D2.0 en el puente entre los paradigmas de programación imperativo y funcional - que solo va a conseguir más significativo en los próximos años.

La falta de aceptación general - o incluso de visibilidad -, así como las bibliotecas maduras a gran escala - son un obstáculo por supuesto. Sin embargo, no creo que puedas cancelarlo por esto. Estoy convencido de que D crecerá hasta convertirse en uno de los idiomas más importantes dentro de los próximos años, y aquellos que lo están tomando en serio ahora estarán bien posicionados para tomar la iniciativa cuando llegue ese momento.

Creo que la diferencia se va a producir debido, en gran parte, a la participación de Andrei Alexandrescu. Eso no es para desacreditar a Walter Bright de ninguna manera, que ha hecho un trabajo trascendental en bring D al mundo. Pero Alexandrescu es una figura importante y convincente en la comunidad de C++, y ahí es de donde vendrán la mayoría de los potenciales conmutadores D. Y también ha hecho una contribución significativa e importante a D2.0 en su apoyo a la programación funcional.

Todavía puede resultar que D está condenado a ser el Betamax de los lenguajes de nivel de sistemas, pero mi dinero está en ello dando la vuelta dentro de los próximos dos años.

 59
Author: philsquared,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-01 10:39:19

Me gusta que D sea el trabajo de un genio, principalmente una mente - Walter Bright, cuyo compilador Zortech era fantástico en su día.

En contraste, C++ es demasiado diseño por comité, incluso si Bjarne es una influencia. Demasiadas características adicionales y nueva sintaxis extraña. Esta diferencia se refleja en la facilidad de aprendizaje y facilidad de uso diario, menos errores.

Los lenguajes más coherentes conducen a una mejor productividad y alegría del programador, ¡pero esto es subjetivo y discutible! (supongo debería votar mi propia respuesta)

 20
Author: DarenW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-11 02:00:40

D es un buen lenguaje y decentemente popular, pero como todos los idiomas, es solo otra herramienta. Qué herramienta usar depende del tipo de persona que eres, cómo piensas, el entorno en el que estás trabajando, qué restricciones de los idiomas aplican el programa y, lo más importante, el programa en sí. Si tienes tiempo, definitivamente recomendaría aprender D. En el peor de los casos, nunca lo usarás. Es más probable que aprenda qué aspectos de la misma le gustan más, y bajo qué condiciones brilla más brillante, y aproveche eso para hacer nuevos programas.

Recomendaría mirar la tabla de comparación D para ver cuáles son las características para el idioma y ver si suena bien para usted.

 14
Author: Spodi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-28 22:10:13

D el lenguaje es moderno. Ningún idioma es perfecto, y no hay duda de esto. Pero los idiomas nacen para hacer la vida más fácil. Donde el lenguaje D comparado con C++ tiene muchas buenas características, en términos de complejidad. Muchas otras especialidades de combinación de idiomas están involucradas, lo que ayuda a los codificadores a codificar más rápido, con las principales características introducidas por otros idiomas. Por favor vea también: para más detalles sobre D y otros idiomas

  • D vs C++, es la compatibilidad, donde C++enorme idiomas están involucrados y requiere compatibilidad con D. D permitir ya 100% compatibilidad con C, que es una buena victoria todavía.

  • D vs C++, C++ es mi opinión un lenguaje muy agradable, pero es difícil de codificar, y consume mucho tiempo, requiere más y más experiencia para obtener el éxito, pero D permite hacer lo mismo con simplicidad

  • D vs C++, no estoy seguro de si C++ lo hace, pero D no permite ninguna asignación de variables de restricción de tipo usando "auto", que es bueno tener una variable dinámico, cuando sea necesario puede hacer un tipo estricto

  • D vs C++, si tiene experiencia en otro idioma, puede comenzar directamente con él, tiene una hoja de ruta de aprendizaje fácil y está diseñado por un equipo fuerte y experimentado y soporte de la compañía

  • D vs C++, lo muy bueno que encontré de D, es el estilo de código, da el aspecto y la sensación exactamente igual que C / C++, mientras que la codificación recuerda que estoy haciendo C / C++ realmente moderno que se llama D

Allí son muchas más buenas razones para el lenguaje D, no hay razón para subestimar cualquier idioma, siempre es la elección del usuario.

 9
Author: YumYumYum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:23

Realmente depende de cuáles sean sus necesidades: las aplicaciones comerciales a gran escala escritas en D existen en el lado del servidor, y para eso D (típicamente usando Tango/Mango) es un ajuste perfecto, y es probable que pueda servir más solicitudes que con cualquier otro lenguaje/plataforma.

Para soluciones más especializadas en términos de protocolos e interactividad (que muchos son) tendrá más problemas para encontrar las bibliotecas necesarias, y la falta de herramientas es probable que le afecte mas.

 7
Author: larsivi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-17 21:58:36

D es bastante impresionante, y el libro de Andrei al respecto está bien escrito. Pero como otros han dicho, necesita las herramientas y el soporte de la plataforma. GDC puede, con el tiempo, ser la respuesta a ambos.

¿has visto esto?

" GNU Debugger añade compatibilidad con el lenguaje D": http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

Además, el sitio de digitalmars tiene páginas que discuten la interfaz con C y C++ (para esas bibliotecas simplemente no se puede vivir sin). Me pregunto si hay alguna herramienta que, dado un archivo de cabecera C, tendrá una puñalada en la escritura de los prototipos D.

Personalmente en este punto no presionaría para hacer un gran proyecto en D, pero usaría D para herramientas internas, obteniendo experiencia con él e introduciendo a otros en él.

La pregunta original era si D es una alternativa creíble a Java y C++. No creo que D y Java realmente vayan a competir mucho en la práctica; D compite con C++ y ahora Vete. Otras preguntas abordan las diferencias entre D y Go, pero Go generalmente se considera más fácil de usar. Así que sospecho que el futuro de D depende mucho de cuánto espacio haya para respirar entre C++, el actual rey de la colina, y Go, la alternativa mucho más fácil que cuenta con el respaldo de Google.

ACTUALIZACIÓN: Acabo de descubrir que mi capítulo favorito del libro de Andrei, el de la concurrencia, está disponible de forma gratuita en línea. Definitivamente vale la pena ¡lee!

Y aquí hay una loooong discusión sobre los méritos/objetivos/enfoques relativos de Go y D.

 6
Author: AmigoNico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-26 04:46:50

Parece Que la pregunta ha sido contestada. D es el mejor lenguaje comparado con C++.

La cuestión de si, a efectos prácticos, D tiene una mejor infraestructura es secundaria.

En resumen, si ambos son idiomas nuevos sin ningún soporte a su alrededor, D es el mejor idioma, ergo es el mejor idioma.

 4
Author: vfclists,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-05 01:01:08

Funciona muy bien para mis propios proyectos favoritos. Lo usaría para los proyectos de los empleadores, pero por no saber lo difícil que sería para ellos encontrar a alguien que se haga cargo de la fuente después de seguir adelante. No hay razones técnicas para evitarlo, al menos en las plataformas soportadas. (toco madera)

 3
Author: DarenW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-29 04:48:01

Un enfoque es buscar empleos en su área. Encuentre los trabajos que le gustaría hacer y vea qué habilidades están pidiendo. Si están pidiendo C++ o Ruby u Oracle o D, entonces esa es la habilidad que es principalmente para ayudarlo a obtener el trabajo que desea.

 3
Author: Peter Lawrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-08 07:59:15

Como lenguaje, siempre sentí que D está más cerca de C# que de C++. No en características y bibliotecas, sino en "feeling". Es mucho más limpio, más bonito ... divertido (que C++). En MI humilde opinión, el mayor obstáculo para convertirse en una alternativa creíble son las herramientas,el IDE y el depurador. Si D supera algunos obstáculos de uso/adopción generalizada, se manifestarán más herramientas y bibliotecas. (Yo mismo volveré a D, si habrá un IDE y depurador utilizables.)

 3
Author: gerleim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-05 03:43:14

Parece un lenguaje muy bien diseñado; mucho mejor que C - C++ - Objective C. Puedo vivir sin un IDE o un depurador por un tiempo, pero no sin una buena biblioteca documentada para D 2.0.

Volveré en 6 meses...
 2
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-08 13:17:16