Hablemos del Lenguaje D

Walter Bright created D to combine C++ power with simpler syntax and modern features like garbage collection. After founding Northwest Software and building compilers at Symantec, he launched DMD in 2001. D aimed to fix C++'s problems while keeping its performance.
Chapters
¡Estamos de enhorabuena!
¿Y eso?
¡Hemos conseguido que gane! ¡Por fin! ¡El lenguaje D!
¿El lenguaje D? ¿Qué lenguaje es ese? ¿Una mejora sobre C?
No, ni siquiera fue creado en los laboratorios Ball.
Pero... ¿pretende ser una evolución sobre C?
Se creó sobre las carencias que la empresa Digital Mars detectó sobre C y C++.
¿C++? ¿Entonces se trata de un lenguaje orientado a objetos?
¡Totalmente!
Aunque no debería haberse llamado D. Si hubiese surgido en los laboratorios Bell hubiese tenido otro nombre.
¿Por qué otro nombre? ¿Después de C no viene D?
Te lo cuento tras el inciso. ¿Te gustaría decidir los temas que trataremos en el canal?
Pues lo tienes muy fácil.
Entra en nuestra página web, accede con tu cuenta de Google y vota por tu favorito.
Puedes votar una vez al día para que gane el tuyo.
Eso no es trampa.
Serán tomadas en cuenta todas vuestras sugerencias en comentarios en publicaciones y vídeos además.
Y ya que estamos, ¿por qué no darle me gusta, suscribirse y hacerse miembro?
Eso ya saben cómo hacerlo, Violeta. Estamos hablando de votos.
Totalmente. Hagamos que ganen esos lenguajes de bajo nivel, chicos.
Sigamos con el vídeo. El nombre: Delang.
¿Delang? ¿También le pasa como a Gou que la gente asume que hay que agregar lang?
En verdad, en este caso son ellos los que lo proponen porque simplemente D en un buscador es tremendamente difícil para localizar el lenguaje.
Pero en lo que estábamos, Pro, dijiste que el lenguaje D no sería el nombre del sucesor del lenguaje C. ¡Exacto!
Si recuerdas nuestro capítulo sobre el lenguaje C, no hubo lenguaje A.
No, porque el lenguaje original y la base de todo fue BCPL.
De ese lenguaje, como versión reducida, el gran Ken Thompson creó el lenguaje B.
¡Exacto! No hubo lenguaje A. Todo comenzó desde BCPL, se creó B y después Ritchie junto a Thompson crearon el lenguaje C.
El lenguaje C tuvo ese nombre porque es la siguiente letra en BCPL.
¿Estáis diciendo que el siguiente lenguaje creado en los laboratorios Bell hubiese sido el lenguaje P?
Totalmente, aunque en 1988 un tal Dave Sill escribió un hilo de conversación que abría con el asunto el lenguaje de programación D. Y donde indicaba que era bonito y general y por supuesto que debía llamarse D y no P. ¿Por qué no P? Porque P en inglés suena a pis.
¿A ella no le cortáis cuando dice esas cosas?
No es tan grave y es relevante. Pero has dicho 1988.
Exacto. Toda la historia gira en torno a Walter Brecht. En el documento de los orígenes del lenguaje D hacen un pequeño recorrido a su historia personal.
No me digas. Otro jugador de videojuegos que aspiraba a hacer sus propios videojuegos.
¡Casi! A Walter le gustaban los videojuegos, pero principalmente crearlos. Comenzó a finales de los años 70 con BASIC y de ahí pasó a FORTRAN, lo que había en ese momento en Caltech, mientras estudiaba ingeniería mecánica.
En 1979 supo que quería dedicarse al software y entró a trabajar para la empresa Boeing dejando la universidad.
Aunque tuvo claro desde el principio que le fascinaban los compiladores. De hecho, tomó nuevas clases en la universidad sobre compiladores para aprender mucho más y desarrollar su propio compilador.
No me consta que hiciera ningún compilador en Boeing.
Aún no, pero lo tenía en mente. ¿Las carencias de C? ¿Carencias? No creo que C tenga carencias. Está bien tal y como está.
Características le faltan, hay que reconocerlo.
Accesorios innecesarios. Pero si falta algo siempre se puede crear haciendo uso de la imaginación. Y algo de preprocesador.
En verdad con las carencias me refería a la falta de compiladores en las nuevas plataformas que comenzaron a popularizarse en la década de los 80.
Eso es muy diferente. Es verdad que PC comenzó a surgir y solo había unos compiladores de Pascal y Fortran de mala calidad.
¿De mala calidad? No te referirás a los compiladores de Borland.
No, pro, tranquilo. Esos aún no habían salido. Estamos hablando de 1982, un año antes de que Borland comenzase su andadura.
Aunque dejemos Borland para otro capítulo, que parece que ha sido elegido como vídeo para nuestros historiadores y cronistas.
Vale, vale, si no se critica a Borland, todo está bien.
Walter creó la empresa Northwest Software en la que comenzó a vender su propio compilador de lenguaje C. Fue en este momento cuando tomó esas clases de compiladores en Stanford para estar seguro de hacer su trabajo lo mejor posible.
¡Muy profesional! ¿Cómo llamó a su compilador?
Pues hasta 1985 no tuvo su compilador. Cuando firmó un contrato con Datalight, y dado que fue contratado por esta empresa, pues llamó a su compilador Datalight C.
¿Lo vendió únicamente a un cliente?
No tenía mente de tiburón.
En verdad sí, implementó una técnica llamada Data Flow Analysis y renombró el compilador como Datalight Optimum C. Era el único compilador con esta característica y muchos se hicieron eco de este avance.
¿Hubo entonces más clientes?
¡Exacto! Una empresa llamada Thorland.
¿Thorland? ¿En serio? Es casi ¡Igual que Borland! No me digas que le hicieron también un compilador con su nombre.
De hecho, sí, lo hicieron: Zorlan C.
Si los de Borland fuesen como los de Nintendo, seguro que los demandarían.
Totalmente. Por el parecido con el nombre y porque en esas fechas ya había un Borland C, Quarter tuvo que cambiar el nombre del compilador a Zortec C.
Pero en esas fechas, Jarnes Trostrup, tal y como vimos en otro capítulo, ya había hecho sus avances y había presentado el documento sobre C++. Walter se topó con este documento en 1987 y pensó que era justamente lo que había que hacer.
Zortech C++.
Exacto, en 1988 lanzó Zortech C++.
En ese momento fue cuando sucedió la famosa frase que vimos antes de llamar al nuevo lenguaje D, porque en el hilo de correo estaban hablando de las características que les gustaría tener en el lenguaje.
Supongo que, al igual que pasó con BASIC cuando decidieron si modificar Fortran, en este caso tuvieron claro que modificar C++ Derivaría en crear un lenguaje nuevo.
Totalmente. Y eso no fue todo. En 1991, la empresa Symantec le hizo una oferta millonaria a Walter para comprar su empresa y su compilador. Walter había conseguido ser el primer compilador de C++ en DOS, en Windows y quizás cualquier otra plataforma.
Un momento, ¿en 1991 había Windows? ¿Windows 95 no fue el primero?
No, Chip. Hubo Windows mucho antes de Windows 95, aunque esto sería tema para otro vídeo, quizás el de IBM contra Microsoft.
Rumbo a Marte.
¿Qué tiene que ver IBM con Windows? ¿Por qué hablamos ahora de Marte? Hablar de lenguajes de bajo nivel comienza a afectarme.
Lo de IBM lo dejamos de momento, y... ¿lo de Marte tiene que ver con la nueva empresa que creó Walter?
Exacto, pero no adelantamos acontecimientos. Walter vendió la empresa, pero se mantuvo trabajando en su compilador de C++ cuando comenzó a surgir la competencia.
Ni más ni menos que Microsoft C++ y Watcom C++, dos titanes.
¿Y qué hizo Symantec ante la amenaza?
La verdad es que sus movimientos vistos en retrospectiva no se ven muy inteligentes.
Totalmente. Se dedicaron a mejorar su compatibilidad con Microsoft, C++ para no salir del tablero de juego en Windows.
Parece que dejaron de liderar en el sector. ¿No hubiese sido mejor adherirse al estándar?
No había estándar aún. En la Wikipedia podemos leer que C++ no fue estandarizado hasta 1998, así que cada empresa implementó lo que consideró oportuno.
El trabajo de Walter se centró en el mantenimiento de C++ y el contacto con los clientes tanto por email como por Usenet. Y antes de que lo preguntes, sí, hoy en día no es tan popular, pero antes los centros de noticias eran los foros de consulta obligada para aprender y resolver dudas.
Vale, vamos, el Stack Overflow de la época.
En mayo de 1996, Symantec decidió adentrarse en el negocio de Java, haciéndole la competencia a Sun Microsystems creando su Symantec Café.
Todo el ecosistema Java gira en torno al café, O haciendo referencia a la isla o islas cercanas a Java.
El aprendizaje le fue bien a Walter porque era la primera vez que se acercaba a un lenguaje con recolector de basura.
¿Y qué impresión le dio? ¿Lo estudió en profundidad?
Totalmente. Se hizo con el libro de referencia y autoridad indiscutible en su día sobre recolectores de basura: Algoritmos para gestión automática de memoria dinámica, de Richard Jones y Rafael Lins.
Ya lo veía apuntándose alguna clase en la universidad para poder abarcar el problema.
Es decir, ¿se decidió implementar y usar los recolectores de basura a partir de entonces?
¡Exacto! Walter consideraba a los recolectores de basura como unos enemigos del rendimiento.
¡Y nadie quiere eso! Pero su experiencia le demostró que, contraintuitivamente, los programas con recolectores de basura tienen muchas ventajas y beneficios. Entre ellos, los programas pueden ser más rápidos.
Pues ya te digo yo que Python tiene recolector de basura y lo tachan de lento al igual que a muchos otros lenguajes como JavaScript, PHP o Ruby.
No es lo mismo, Chip. ¿No te has dado cuenta de que has citado solo lenguajes de scripting?
Ah.
Walter estuvo manteniendo Symantec C++ y Symantec Café hasta que abandonó la compañía en 1999.
¿Fue entonces cuando creó su compañía de Marte?
Digital Mars. Tras un tiempo descansando, se aburrió y quiso hacer algo nuevo. Tenía los mensajes aún presentes desde 1988 donde había sugerido junto con usuarios de sus compiladores ciertos cambios en los lenguajes y se decidió a hacer un lenguaje.
Entonces aquí llegó el lenguaje D. En verdad no.
En 1999 Walter presentó su nuevo lenguaje Mars y para ahorrar tiempo en la implementación se decidió a tomar parte de los compiladores previos a su venta a Symantec de C y C++ y continuar desde ese punto agregando las nuevas características.
¿Symantec le dejó sin más?
No, tuvo que pedir una licencia y permiso. Obviamente, aunque el compilador fue anterior, era parte de la compra que hizo Symantec, pero recibió la licencia en abril del año 2000 y recibió un gran apoyo. De hecho, Jan Neppl había oído los planes de Walter y decidió ayudarle alojando la página web del proyecto y el grupo de noticias.
Aunque hay que decir que esta primera versión aún tenía mucho sabor a C++ y pocos cambios.
Chromium.
¿Te refieres al proyecto libre de Google relacionado con el navegador Chrome?
No, no tiene nada que ver. Era una startup contratada por Sun Microsystems para desarrollar una implementación de JavaScript durante la primavera de 2000.
Pero estaba en pleno lanzamiento de Mars.
No era problema. Walter quería probarse a sí mismo y ver si podía hacer otra implementación de un recolector de basura, así que aceptó.
Fue un pequeño receso, pero productivo.
Totalmente. La implementación de ese recolector de basura se lo llevó consigo.
Ahora sí. Mente de tiburón.
De Marte a D. Cada vez que Walter pedía opiniones, sugerencias y en definitiva retroalimentación sobre Mars, los usuarios se referían al lenguaje como D. El nombre se quedó y fue difícil llamarlo de otra forma a finales de 2001, cuando fue lanzado a Digital Mars D o DMD.
Su texto de lanzamiento fue potente haciendo alusión al impacto que fueron tanto los lenguajes C como C++, pero también lo complejos que se habían vuelto. No en vano, C tenía 30 años y el código con un par de décadas ya se consideraba obsoleto.
¿Y cómo pensaba arreglar esto D?
¿Arreglarlo? No, bueno, el lenguaje D daba una nueva opción más fácil, pero igual de potente.
No lo veo, pro. Sigue siendo un trabajo considerable tener que escribirlo todo. Quizás simplemente actualizar la versión de C tenga más sentido.
Puede que tenga sentido cambiar a D si es fácil de aprender.
Bueno, fácil fácil no era. Es decir, no es el típico lenguaje que enseñarías a alguien que no sabe nada de programación.
¿Quizás alguna promesa de no cambio pudiese mantener a estos usuarios contentos con reescribir código a D?
Tampoco. Es verdad que la comunidad de programadores en D creció, pero me temo que al igual que Python tuvo su pesadilla con la migración de Python 2 a Python 3, el lenguaje D también tuvo su propia pesadilla.
No te adelantes, Hexa. Digamos que Walter cometió algunos errores como él mismo reconoce. Por ejemplo, no usó un sistema de control de versiones.
¿No? ¿Ni tan siquiera subversión?
No, de hecho debido a este fallo no hay histórico de las primeras versiones del compilador. Pero también cometió el error de subestimar el poder del movimiento de código abierto y hacer cerradas esas primeras versiones.
Afortunadamente, entre 2001 y 2003 lanzó su trabajo como código abierto, lo que ayudó a incrementar el ritmo de crecimiento del compilador, el lenguaje y sus herramientas al recibir mucho más apoyo de su comunidad.
No hay nada como que te hagan el trabajo.
Chip, eso pasa incluso en Python.
Y no digo que esté mal. A mí me gusta que en Python esté todo hecho. Yo solo tengo que preocuparme de unir las piezas.
No obstante, no todo era bueno siempre. Muchas veces tenían charlas acaloradas donde intentaban persuadirlo de agregar una característica al lenguaje que no había sido planificada inicialmente.
Su enfoque de diseño podría resumirse en: inténtalo y mira a ver si funciona.
De hecho, Dr. Dobbs hizo una publicación acerca del lenguaje D, en la que decía que el lenguaje D se parece mucho a C y C++ de forma intencionada, pero elimina características de estos que hacen que escribir programas sea difícil y agrega otras para facilitar la labor.
Conclusiones.
Chip, que aún no hemos dicho todo acerca de las versiones 1 y 2 de D, sus problemas de compatibilidad y...
No hace falta, eso puede caer en otro capítulo. He tenido suficiente de lenguajes de bajo nivel y doy gracias a que no hemos visto código.
Pues yo no, quería hacer una revisión a las características.
Podemos hacerlo en la página web, que tenemos el blog un poco abandonado.
Buena idea. Finalizamos el capítulo entonces diciendo que el lenguaje D es uno de esos esfuerzos nacidos de querer mejorar el estado del arte en el ecosistema donde se utiliza C y/o C++. Y que tantos ejemplos tenemos a lo largo de la historia como en el caso de Vala, V, Her o Carbón.
Ya podrían ponerse de acuerdo y aunar esfuerzos.
Es muy difícil, porque Vala busca simplificar el desarrollo de aplicaciones de escritorio, V de programas únicamente hechos en C, Her también de programas en sistemas hechos en C, y Carbón y D de código hecho en C++.
Quizá los esfuerzos de Carbón podrían ser invertidos ¿Qué opináis vosotros?
Sí, sobre todo los que habéis votado por ver el lenguaje D. ¿Creéis que el esfuerzo dedicado a Carbón debería invertirse en D?
¿Habéis probado este lenguaje? Y en ese caso, ¿lo veis muy diferente a C++?
¿Habéis visto las votaciones? La gente se está volviendo loca votando una misma opción desde varias cuentas.
¿Deberíamos evitarlo? ¿Ponerle límites?
¿Para qué?
No les damos ningún premio. ¿Cómo que no?
Nuestros vídeos son un premio muy cotizado.
¡Hala, hala! Pues si tanto te incordia, pídele a Pro que haga algo.
Ya sé exactamente lo que vamos a hacer.
Continuará.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








