no creo que pueda (o quiera) para darle a este una manta "sí". Creo que es una cuestión de pragmatismo combinado con las necesidades del lenguaje individual, y también depende de si se trata de un lenguaje compilado (o código de bytes compilado) o interpretado, o ...
Si está tratando de escribir código de plataforma, encontrará que el mínimo común denominador suele ser un compilador de C (debido a las diferentes arquitecturas de CPU, los ensambladores no son adecuados para implementar en muchas plataformas).Dado que C++ se codificó para situarse en la parte superior de la mayoría de la infraestructura C (como usar el nombre de manipulación para adaptar las sobrecargas de tipo en algo que un enlazador C entiende), suele ser el lenguaje de OO de menor denominador común disponible incluso en sistemas integrados. Eso lo convierte en una opción popular para las personas que desean escribir su idioma de una manera fácil de mantener y de alto nivel. También, la mayoría de los lenguajes de programación tienen una razón para existir, quieren resolver problemas de una manera diferente (mejor significa necesariamente diferente, después de todo), lo que significa que tienen necesidades bastante inusuales con respecto a lo que su código necesita para poder hacer. , y no use muchas de las instalaciones de soporte que ofrece otro lenguaje de implementación, porque no tendría suficiente control sobre él. Entonces, dado que querrá volver a implementar una gran cantidad de, por ejemplo, el modelo de objetos y los tipos de datos de todos modos, los aspectos de bajo nivel de C++ en realidad son una ventaja.
Dicho esto, muchos idiomas comienzan con su primera versión escrita en C++, un primer compilador simple por ejemplo, y luego escriben la próxima versión en esa versión simple ("arranque"). Esto tiene la ventaja de que puedes usar tu propio idioma para ampliarlo. Para convertirlo en puerto, luego modifican solo su compilador para realizar una compilación cruzada a la plataforma deseada, luego compilan el compilador con este compilador cruzado y el resultado es una versión nativa del lenguaje completo para la nueva plataforma.
Las lenguas que tienden a no hacer esto por lo general son principalmente los lenguajes de script, que tienden a permanecer como interpretado C++ - implementadas idiomas (Aunque otros han mencionado excepciones populares).
Otra razón común para recoger C++ es la infraestructura existente. P.ej. si desea vincularse a los marcos del sistema existentes, a menudo debe desplegar en C++, o si desea aprovechar los back-ends existentes del compilador (como LLVM, que está escrito en C++), o incluso si solo usan C, a menudo C++ es el lenguaje de implementación de OO más adecuado que puede comunicarse fácilmente con las partes C de un sistema.
Así que la pregunta que desea que preguntarse es probable: ¿Cuáles son mis necesidades, y en qué idioma se adapta mejor a las personas?
Algunas lenguas son simplemente pre-procesadores en otro idioma (C++ y Objective-C, tanto comenzaron como preprocesadores en la parte superior de C). Agregan su propia sintaxis o características, las traducen al lenguaje de implementación y luego compilan ese código modificado utilizando un compilador existente. Si un idioma ya hace todo lo que desea, puede ser un mejor enfoque, y le permite aprovechar la experiencia de los ingenieros que trabajan en ese otro idioma, combinando sus horas de trabajo en más de lo que usted solo podría proporcionar.
Sus carreras intérprete? ¿Es estable? Utilizado por la gente? ¿Por qué reescribirlo todo? –
Si ya tiene una implementación C, esa es una excelente razón para no volver a escribirla en C++. – jalf
Sin duda, mi intérprete se ejecuta, pero hay una serie de problemas, en particular, manejo de símbolos torpes y numerosas pérdidas de memoria. Estos defectos son tales que creo que la mejor manera de abordarlos es volver a escribir el intérprete desde cero. Dado que los dos únicos contendientes reales para el lenguaje de reescritura son C y C++, me pregunto si C++ sería el mejor lenguaje para implementar el intérprete, teniendo en cuenta que proporciona (lo que parece ser) facilidades más intuitivas para la gestión de memoria y la cadena tratamiento. –