example - set icon java
¿Es D una alternativa creíble a Java y C++? (13)
¿Es el lenguaje D una alternativa creíble a Java y C ++? ¿Qué se necesitará 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í, es claro para mí que el lenguaje ha ido más allá del punto sin retorno con respecto a que alguien 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 cuenta?
Como lenguaje, siempre sentí que D está más cerca de C # que de 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 del uso / adopción generalizado, se manifestarán más herramientas y bibliotecas. (Yo mismo regresaré a D, si habrá un IDE y un depurador utilizables).
D el lenguaje es moderno. Ningún idioma es perfecto, y no hay dudas 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 buenas características, en términos de complejidad. Están involucradas muchas otras especialidades de combinación de idiomas, lo que ayuda a los programadores a codificar más rápido, con características TOP introducidas por otros idiomas. Ver también: para más detalles sobre D y otros idiomas
D vs C ++, es la compatibilidad, donde se involucran enormes lenguajes de C ++ y requiere compatibilidad con D. D ya permite una compatibilidad del 100% con C, que es una buena victoria.
D vs C ++, C ++ es mi opinión un lenguaje muy agradable, pero es difícil de codificar, y consume mucho tiempo, requiere cada vez más experiencia para tener éxito, pero D permite hacer lo mismo con simplicidad
D vs C ++, no estoy seguro si C ++ lo hace, pero D no permiten ninguna asignación de variable de restricción de tipo usando "auto", que es bueno tener una variable dinámica, cuando lo requiera puede hacer un tipo estricto
D vs C ++, si tienes otra experiencia en el idioma, puedes comenzar directamente con ella, tiene un mapa de ruta fácil de aprender, y está siendo diseñado por un sólido equipo experimentado y apoyo de la compañía
D vs C ++, lo muy bueno que encontré de D, es el estilo del código, le da el aspecto y la sensación exactamente igual a C / C ++, mientras que la codificación me recuerda que estoy haciendo un C / C ++ realmente moderno que llamó D
Hay muchas más buenas razones para el lenguaje D, no hay ninguna razón para subestimar ningún idioma, siempre es la elección del usuario.
D es bastante impresionante, y el libro de Andrei 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?
"El depurador GNU agrega soporte de 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 hablan de la interacción con C y C ++ (para aquellas bibliotecas de las que simplemente no puedes vivir). Me pregunto si hay alguna herramienta que, dado un archivo de encabezado C, apuñale la escritura de los prototipos D.
Personalmente, en este momento no me gustaría hacer un gran proyecto en D, pero usaría D para herramientas internas, adquirir experiencia e introducir 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 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 tiene el respaldo de Google.
ACTUALIZACIÓN: Acabo de descubrir que mi capítulo favorito del libro de Andrei , el de simultaneidad, está disponible de forma gratuita en línea. ¡Definitivamente vale la pena leerlo!
Y aquí hay una larga discusión sobre los méritos / objetivos / enfoques relativos de Go y D.
D es un lenguaje bueno 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 trabajas, qué restricciones de idiomas aplican al programa y, lo más importante, el programa mismo. 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 le gustan más y en qué condiciones brilla mejor, y aproveche eso para crear nuevos programas.
Yo recomendaría mirar la tabla comparativa D para ver cuáles son las características del idioma y ver si le parece adecuado.
Estoy de acuerdo en que C ++ se está convirtiendo en un lenguaje sin futuro, 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 todo lo correcto" (incluso si no estoy de acuerdo con la 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 sostiene en el mundo de las lenguas modernas, ¡excepto D! D no solo cumple esta función, sino que sobresale en ella. Una mirada a D1.x debería ser suficiente para convencerte de eso, pero cuando miras D2.0 te deja alucinado. En mi opinión, no existe otro lenguaje hoy en día que funcione tan bien como D2.0 al unir 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 de la corriente dominante -o incluso de visibilidad-, así como de 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 se convertirá en uno de los idiomas más importantes en los próximos años, y aquellos que lo toman en serio ahora estarán bien posicionados para liderar cuando llegue ese momento.
Creo que la diferencia va a surgir 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 llevar D al mundo. Pero Alexandrescu es una figura importante e irresistible en la comunidad de C ++, y de allí proviene la mayoría de los posibles D-switchers. Y también ha hecho una importante e importante contribución 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á volviendo en los próximos dos años.
Funciona muy bien para mis propios proyectos de mascotas. Lo usaría para proyectos de 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. (toco madera)
Lo que determina el éxito y la popularidad de un lenguaje de programación para el desarrollo de software del mundo real está relacionado solo parcialmente con la calidad del lenguaje en sí. Como un lenguaje puro, D tiene muchas ventajas sobre C ++ y Java. Por lo menos, es una alternativa creíble como un lenguaje puro, en igualdad de condiciones.
Sin embargo, otras cosas importan para el desarrollo de software, casi más que el lenguaje en sí: portabilidad (cuántas plataformas ejecuta), soporte de depurador, soporte IDE, calidad de biblioteca estándar, soporte dinámico de biblioteca, enlaces para API comunes, documentación, el desarrollador comunidad, ímpetu y apoyo 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 está incluso detrás de los denominados lenguajes "scripting" como Python, Perl, PHP, Ruby e incluso JavaScript a este respecto.
Para ser directo, simplemente no puede construir una aplicación multiplataforma a gran escala con 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 compatibilidad de biblioteca dinámica / compartida, y pocas ataduras a otros lenguajes, D simplemente no es una opción hoy en día.
Si le gusta lo que ve de D, aprenda, no debe tomar mucho tiempo si ya conoce 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 usen silenciosamente y solucionen 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 compañías están utilizando C ++ como parte de una combinación saludable de idiomas al permitir solo un subconjunto más pequeño y bien definido del idioma. Todavía es difícil vencer a C ++ cuando se requieren tanto el rendimiento bruto como el uso de poca memoria.
Me gusta que D sea el trabajo de un genio, principalmente una mente: Walter Bright, cuyo compilador de Zortech fue fantástico en su época.
Por el contrario, C ++ es demasiado diseño por comité, incluso si Bjarne es una influencia. Demasiadas funciones adicionales y una nueva sintaxis extraña. Esta diferencia se refleja en la facilidad de aprendizaje y la facilidad de uso diario, menos errores.
Los idiomas más coherentes conducen a una mejor productividad y al placer de los programadores, ¡pero esto es subjetivo y discutible! (Supongo que debería votar mi propia respuesta)
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 nuevos lenguajes sin ningún soporte a su alrededor, D es el mejor lenguaje, por lo tanto, es el mejor idioma.
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 ...
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 (normalmente usando Tango / Mango) es una opción perfecta, 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 muchas), tendrá más problemas para encontrar las bibliotecas necesarias, y es probable que la falta de herramientas le afecte más.
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 utilizando, 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 echo de menos haber vuelto a C ++.
Sin embargo, los siguientes puntos hicieron nuestras vidas más difíciles:
- No había un buen IDE en ese momento, que era un problema importante. Terminamos haciendo nuestra la personalización de Scite. Esto funcionó bien, pero no fue ideal.
- No hubo depurador en ese momento. Logramos que WINDBG funcionara por casualidad, pero no fue confiable. Depurar el código sin un depurador hizo la vida infernal a veces.
- Había 2 bibliotecas estándar para elegir en ese momento (Tango y Phobos). Comenzamos con uno, pasamos al otro y realmente necesitábamos una combinación de características de ambos (¡Tangobos!). Esto causó dolores de cabeza y algunos códigos reescribieron.
- Enlaces a otras herramientas no disponibles. Al final tuvimos que cambiar a DirectX (por razones que no entraré). No había enlaces disponibles para DirectX, así que tuvimos que escribir el nuestro en C ++, compilarlo como .dll y vincularlo a eso. Este fue un trabajo bastante desagradable y tomó algo de tiempo.
En general, nos encantaba escribir D. Realmente hizo que escribir código sea fácil y fue rápido para aprender. Los problemas que he mencionado hacen eco de la respuesta que se ha aceptado para esta pregunta: son los bits "adicionales" que deben abordarse en D, el núcleo es sólido.
Un enfoque es buscar trabajos 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, entonces esa es la habilidad que es principalmente para ayudarte a conseguir el trabajo que deseas.