Pregunta

¿El D language es una alternativa creíble a Java y C ++? ¿Qué se necesita para convertirse en una alternativa creíble? ¿Debería molestarme en aprenderlo? ¿Merece la evangelización?

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

¿Fue útil?

Solución

Lo que determina el éxito y la popularidad de un lenguaje de programación para el desarrollo de software en el mundo real se relaciona solo parcialmente con la calidad del lenguaje en sí. Como lenguaje puro, D podría decirse que tiene muchas ventajas sobre C ++ y Java. Como mínimo, es una alternativa creíble como lenguaje puro, en igualdad de condiciones.

Sin embargo, otras cosas son importantes para el desarrollo de software, casi más que el lenguaje en sí mismo: portabilidad (en cuántas plataformas se ejecuta), soporte de depurador, soporte IDE, calidad de biblioteca estándar, soporte de biblioteca dinámica, enlaces para API comunes, documentación , la comunidad de desarrolladores, el impulso y el soporte comercial, solo por nombrar algunos. En cada uno de esos aspectos, D está desesperadamente detrás de Java, C ++ y C #. De hecho, yo diría que incluso está detrás de las llamadas " scripting " lenguajes como Python, Perl, PHP, Ruby e incluso JavaScript en estos aspectos.

Para ser franco, simplemente no puede crear una aplicación multiplataforma a gran escala utilizando D. Con una biblioteca estándar inmadura, no hay soporte en ningún IDE moderno (hay complementos para ambos Visual Studio y Xamarin Studio / MonoDevelop), soporte limitado de biblioteca dinámica / compartida, y pocos enlaces a otros idiomas, D simplemente no es una opción hoy.

Por supuesto, si te gusta lo que ves de D, aprende, no debería tardar mucho si ya conoces Java y C ++. No creo que el evangelismo sea útil. En este punto, si D va a tener éxito, lo que realmente necesita es que más personas lo utilicen en silencio y aborden 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 combinación saludable de idiomas permitiendo solo un subconjunto más pequeño y bien definido del idioma. Aún es difícil superar a C ++ cuando se requieren tanto el rendimiento en bruto como el uso de poca memoria.

Otros consejos

Solo para agregar mis propias experiencias a la mezcla:

Hace aproximadamente un año trabajé en un proyecto de juegos a pequeña escala (3 codificadores) durante 3 meses, donde usamos D como nuestro idioma principal. Lo elegimos en parte como un experimento, en parte porque ya tenía enlaces para SDL y algunas otras herramientas que estábamos usando, y parece que la mayoría de los beneficios tienen sobre C ++.

Nos encantó usarlo. Fue rápido de aprender y fácil de escribir. Muchas de sus características demostraron ser de un valor incalculable, y echo de menos haber vuelto a C ++.

Sin embargo, los siguientes puntos dificultaron nuestras vidas:

  1. No había un IDE bueno en ese momento, lo cual era un problema importante. Terminamos haciendo nuestro propio personalizando Scite. Esto funcionó bien, pero no era ideal.
  2. No había ningún depurador en ese momento. Conseguimos que WINDBG funcionara de forma aleatoria, pero no era confiable. El código de depuración sin un depurador hizo la vida infernal a veces.
  3. Había 2 bibliotecas estándar para elegir en ese momento (Tango y Fobos). Comenzamos con una, cambiamos a la otra, y realmente necesitábamos una combinación de características de ambas (¡Tangobos!). Esto causó dolores de cabeza y reescritura de código.
  4. Los enlaces a otras herramientas no están disponibles. Al final tuvimos que cambiar a DirectX (por razones en las que no entraré). No había enlaces para DirectX disponibles, por lo que tuvimos que escribir el nuestro en C ++, compilarlo como .dll y enlazarlo. Este fue un trabajo bastante desagradable y tomó algún tiempo.

En general, nos encantó escribir D. Realmente hizo que escribir código fuera fácil y fue rápido de aprender. Los problemas que mencioné se hacen eco de la respuesta que se ha aceptado para esta pregunta: es el " extra " Los bits que necesitan direccionamiento en D, su núcleo es sólido.

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

Creo que D es el sucesor legítimo de C ++. Desde una perspectiva lingüística, " hace todas las cosas correctas " (Incluso si no estoy de acuerdo con cada decisión de minutos). Creo que con C y C ++ en declive, no hay otro lenguaje de nivel de sistemas que realmente pueda hacer lo que hace, mientras se sostiene en el mundo de los lenguajes modernos, ¡excepto D! No solo D cumple este rol, ¡es excelente! Un vistazo a D1.x debería ser suficiente para convencerte de eso, pero cuando miras D2.0, te sorprende. Mi opinión es que no hay otro lenguaje en la actualidad que funcione tan bien como el D2.0 para salvar los paradigmas de programación imperativa y funcional, que solo se volverá más significativo en los próximos años.

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

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

Puede que aún resulte que D esté condenado a ser el Betamax de los lenguajes de nivel de sistemas, pero mi dinero está girando en los próximos dos años.

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

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

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

D es un buen lenguaje y decentemente popular , pero como todos los idiomas, es solo otra herramienta. La herramienta a utilizar depende del tipo de persona que sea, cómo piensa, el entorno en el que está trabajando, qué restricciones de idiomas aplican el programa y, lo que es más importante, el programa en sí. Si tiene tiempo, definitivamente recomendaría aprender D. En el peor de los casos, nunca lo usará. Lo más probable es que aprenda qué aspectos de él le gustan más, y bajo qué condiciones se ve más brillante, y aproveche eso para crear nuevos programas.

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

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

  • D vs C ++, es la compatibilidad, donde están involucrados enormes lenguajes de C ++ y requiere compatibilidad con D. D ya permite una compatibilidad del 100% con C, lo que es una buena victoria aún.

  • D vs C ++, C ++ es, en mi opinión, un lenguaje muy agradable, pero es difícil de codificar y requiere mucho más tiempo para tener é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 variable de restricción de tipo usando "auto", lo que es bueno tener una variable dinámica, cuando sea necesario, puede hacer un tipo estricto

  • D vs C ++, si tiene experiencia en otro idioma, puede comenzar de inmediato, tiene un plan de trabajo de fácil aprendizaje y está diseñado por un equipo sólido y con el apoyo de la compañía

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

Hay muchas más buenas razones para el lenguaje D, no hay razón para subestimar ningún idioma, siempre es la elección del usuario.

Realmente depende de cuáles sean sus necesidades: existen aplicaciones comerciales a gran escala escritas en D do en el lado del servidor, y para esa D (que normalmente utiliza Tango / Mango) es un ajuste perfecto, y es probable que pueda atender más solicitudes que con cualquier otro idioma / plataforma.

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

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

¿Has visto esto?

" GNU Debugger agrega soporte de lenguaje D " ;: http: // www. linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

Además, el sitio digitalmars tiene páginas que tratan sobre la interfaz con C y C ++ (para aquellas bibliotecas sin las que no puedes vivir). Me pregunto si existen herramientas que, dado un archivo de encabezado C, intenten escribir los prototipos D

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

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 Go. Otras preguntas abordan las diferencias entre D y Go, pero en general se considera que Go es más fácil de usar. Así que sospecho que el futuro de D depende mucho de cuánto espacio haya para que respire entre C ++, el actual rey de la colina, y Go, la alternativa mucho más fácil que tiene el respaldo de Google.

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

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

Parece que la pregunta ha sido respondida. D es el mejor lenguaje en comparación con C ++.

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

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

Como lenguaje, siempre sentí que D está más cerca de C # que de C ++. No en características y bibliotecas, sino en " sensación " ;. Es mucho más limpio, más agradable ... divertido (que C ++). En mi 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 generalizados, se manifestarán más herramientas y bibliotecas. (Yo mismo volveré a D, si habrá un IDE y un depurador utilizables).

Funciona muy bien para mis propios proyectos de mascotas. Lo usaría para los proyectos de los empleadores, pero para 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 compatibles. (tocar madera)

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

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

Lo comprobaré en 6 meses ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top