¿Es el lenguaje D una alternativa creíble a Java y C ++? ¿Qué se necesitará para convertirse en una alternativa creíble? ¿Debo molestarme en aprenderlo? ¿Merece evangelizar?
La razón principal por la que pregunto es que con el nuevo estándar C ++ (c ++ 0x) casi aquí, es claro para mí que el lenguaje ha superado el punto de no retorno con respecto a que alguien 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 en muchos aspectos deshizo C ++. ¿Qué es lo siguiente? ¿D llena la factura?
Respuestas:
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 posiblemente tenga muchas ventajas sobre C ++ y Java. Como mínimo, es una alternativa creíble como lenguaje puro, todas las demás cosas son iguales.
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, el desarrollador comunidad, impulso y soporte comercial, solo por nombrar algunos. En todos estos aspectos, D está irremediablemente detrás de Java, C ++ y C #. De hecho, diría que incluso está detrás de los llamados lenguajes de "scripting" como Python, Perl, PHP, Ruby e incluso JavaScript en este sentido.
Para ser franco, simplemente no puede construir una aplicación multiplataforma a gran escala usando D. Con una biblioteca estándar inmadura,
no hay soporte en ningún IDE moderno(hay complementos para Visual Studio y Xamarin Studio / MonoDevelop), limitado soporte de biblioteca dinámica / compartida, y pocos enlaces a otros idiomas, 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 llevarte mucho tiempo 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 lenguajes al permitir solo un subconjunto más pequeño y bien definido del lenguaje. Todavía es difícil vencer a C ++ cuando se requiere tanto el rendimiento sin procesar como el uso de memoria pequeña.
fuente
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 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 sobre todo por los beneficios que parece tener sobre C ++.
Nos encantó usarlo. Fue rápido de aprender y fácil de escribir. Muchas de sus características demostraron ser invaluables, y extraño que hayan vuelto a C ++.
Sin embargo, los siguientes puntos nos hicieron la vida más difícil:
En general, nos encantó escribir D. Realmente, escribir código fue fácil y fue rápido de aprender. Los problemas que he mencionado hacen eco de la respuesta que se ha aceptado para esta pregunta: son los bits "adicionales" los que deben abordarse en D, el núcleo es sólido.
fuente
Estoy de acuerdo en que C ++ se está convirtiendo en un lenguaje sin salida, y me duele decir eso, 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 de cada minuto). Creo que con C y C ++ en declive, no hay otro lenguaje de nivel de sistemas que realmente pueda hacer lo que hacen, mientras se mantiene en el mundo de los lenguajes modernos, ¡excepto D! D no solo cumple este rol, ¡también es excelente! Una mirada a D1.x debería ser suficiente para convencerte de eso, pero cuando miras a D2.0 te deja boquiabierto. En mi opinión, hoy en día no hay otro lenguaje que funcione tan bien como D2.0 para salvar los paradigmas de programación imperativos y funcionales, que solo se volverá más significativo en los próximos años.
La falta de aceptación general, o incluso visibilidad, así como las bibliotecas maduras y de gran escala, son un obstáculo, por supuesto. Sin embargo, no creo que puedas descartarlo por esto. Estoy convencido de que D va creciendo hasta convertirse en uno de los más importantes idiomas alrededor en los próximos años - y los que están tomando en serio ahora van a estar en buena posición para tomar la iniciativa cuando llegue ese momento.
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. Pero Alexandrescu es una figura importante y convincente en la comunidad de C ++, y allí es de donde vendrán la mayoría de los posibles 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 eso en los próximos dos años.
fuente
Me gusta que D sea obra de un genio, principalmente una mente: Walter Bright, cuyo compilador de Zortech fue fantástico en su día.
En contraste, C ++ es demasiado diseño por comité, incluso si Bjarne es una influencia. Demasiadas funciones complementarias y sintaxis nueva y 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 mayor productividad y alegría del programador, ¡pero esto es subjetivo y discutible! (Supongo que debería votar mi propia respuesta)
fuente
D es un buen lenguaje y decentemente popular , pero como todos los idiomas, es solo otra herramienta. La herramienta que debe usar depende del tipo de persona que sea, cómo piensa, el entorno en el que trabaja, qué restricciones de los idiomas aplica el programa y, lo 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 brilla más, y aprovechará eso para hacer nuevos programas.
Recomendaría mirar la tabla de comparación D para ver cuáles son las características del idioma y ver si suena bien para usted.
fuente
El lenguaje D es moderno. Ningún idioma es perfecto, y no hay duda sobre esto. Pero los idiomas 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. Participan muchas otras especialidades de combinación de idiomas, lo que ayuda a los codificadores a codificar más rápido, con las funciones TOP introducidas por otros idiomas. Consulte también: para obtener más detalles sobre D y otros idiomas
D vs C ++, es la compatibilidad, donde intervienen enormes lenguajes C ++ y requiere compatibilidad con D. D permite ya una compatibilidad del 100% con C, lo cual es una buena victoria aún.
D vs C ++, C ++ es mi opinión, un lenguaje muy agradable, pero es difícil de codificar y requiere mucho tiempo, requiere más y más experiencia 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 la asignación de variables de restricción de tipo usando "auto", que es bueno tener una dinámica variable, cuando se requiere puede hacer un tipo estricto
D vs C ++, si tiene experiencia en otro idioma, puede comenzar directamente con él, tiene un mapa de ruta de aprendizaje fácil y está diseñado por un equipo experimentado y un soporte de la compañía.
D vs C ++, lo más agradable que encontré de D, es el estilo de código, da la apariencia y sensación exactamente igual a C / C ++, mientras que la codificación recuerda que estoy haciendo C / C ++ realmente moderno que se 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.
fuente
Realmente depende de cuáles son sus necesidades - aplicaciones comerciales a gran escala escritos en D hacen existir en el lado del servidor, y para que la D (típicamente usando Tango / Mango) es un ajuste perfecto, y que es probable que sean capaces de servir más peticiones que con cualquier otro idioma / plataforma.
Para obtener soluciones más especializadas en términos de protocolos e interactividad (que son muchas), tendrá más problemas para encontrar las bibliotecas necesarias y es probable que la falta de herramientas lo afecte más.
fuente
D es bastante impresionante, y el libro de Andrei al respecto está bien escrito. Pero como han dicho otros, necesita las herramientas y el soporte de la plataforma. GDC puede, con el tiempo, ser la respuesta a ambas.
¿Has visto esto?
"GNU Debugger agrega soporte para 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 de C y C ++ (para aquellas bibliotecas sin las que no puede vivir). Me pregunto si hay alguna herramienta que, dado un archivo de encabezado C, apunte a escribir los prototipos D.
Personalmente no en este punto de empuje para hacer un gran proyecto en D, pero me gustaría utilizar D para herramientas internas, conseguir experiencia con ella y la introducción de otros a él.
La pregunta original era si D es una alternativa creíble a Java y C ++. No creo que D y Java realmente compitan mucho en la práctica; D compite con C ++ y ahora Go. 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 hay para respirar 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 de forma gratuita en línea. Definitivamente vale la pena leer!
Y aquí hay una discusión acerca de LOOOONG los relativos méritos / objetivos / enfoques de Go y D .
fuente
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 completamente nuevos sin ningún soporte alrededor de ellos D es el mejor idioma, ergo, es el mejor idioma.
fuente
Como lenguaje, siempre sentí que D está más cerca de C # que C ++. No en características y bibliotecas, sino en "sentimiento". Es mucho más limpio, más agradable ... divertido (que C ++). En mi humilde opinión, el mayor obstáculo para convertirse en una alternativa creíble es herramientas, IDE y 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 depurador utilizables).
fuente
Funciona muy bien para mis propios proyectos de mascotas. Lo usaría para proyectos de 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 que me mude. No hay razones técnicas para evitarlo, al menos en las plataformas compatibles. (toco madera)
fuente
Un enfoque es buscar trabajo en su área. Encuentre los trabajos que le gustaría hacer y vea qué habilidades están solicitando. Si están pidiendo C ++ o Ruby u Oracle o D, esa es la habilidad que es principalmente para ayudarte a conseguir el trabajo que deseas.
fuente
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.
Volveré en 6 meses ...
fuente