2010-07-27 12 views
11

C++ a menudo se promociona como la evolución de C, que no lo es. Haciendo una analogía para el tipo de lenguaje que estoy buscando:¿Hay alguna alternativa a C?

  • Perl, Python, Ruby, Groovy
  • C++, D
  • Java, C#
  • C, Fortran, Modula-2 ?, Pascal ?, Ir ?, ¿Rust?

¿Alguno de los idiomas propuestos o implementados encajan en el mismo (enorme) nicho que C, con la intención de ser una alternativa, manteniendo toda la aplicabilidad al sistema operativo, alto rendimiento, integrado y otras funciones?

+11

¿De dónde surgieron estas "evoluciones"? – jtbandes

+5

Al menos parte de su premisa es defectuosa. Python no es y nunca ha sido algo remotamente como una evolución de Perl. De hecho, es casi tan antiguo como Perl. –

+10

* Java -> C# *? De Verdad? – detly

Respuesta

5

Tal vez Google Go language será. Al menos, eso es lo que esperaría que el equipo Go de Google espera que se convierta.

+2

Sí, parece ser lo más cercano que he oído hablar de un descendiente C. La única duda es su papel en el espacio integrado. –

+2

No puedo creer que un lenguaje con administración automática de memoria pueda sentarse al lado de C. De hecho, no lo creo. Por "lado a lado" no me refiero al rendimiento.Me refiero a la semántica. –

+0

Si tiene éxito, creo que Google puede dar un buen progreso para GO en el espacio incrustado también. ARM ya está allí. – Incognito

5

la siguiente imagen dice más de lo que podría escribir:

picture

+3

Más actual con 2500 idiomas http://www.levenez.com/lang/ – stacker

+0

Observe que los "descendientes" de C son C++, C# y Obj-C. No son los idiomas que estoy buscando. –

+0

@Matt: no has dicho * qué * estás buscando. Todo lo que has dicho es * "Quiero algo que haga lo que c hace, pero no es c". * – dmckee

4

Pascal sería un equivalente, por lo que lo haría Modula-2.

Mozilla también tiene un nuevo lenguaje llamado Rust, este es un muy buen lenguaje moderno que se dirige a los mismos tipos de aplicaciones como ++

https://www.rust-lang.org/

+0

Sí, parece que tienen el mismo paradigma. –

3

C tiene más de un nicho, en realidad C/C . Para la programación de sistemas de bajo nivel, C reemplazó los lenguajes de ensamblaje específicos de la plataforma, y ​​nada realmente ha desafiado a C en ese dominio. C++ sería el único candidato posible, allí (BeOS, muchos controladores de dispositivo, etc.).

C también se usaba mucho para código numérico de alto rendimiento. En ese dominio, FORTRAN todavía tiene la ventaja, y hay muchos otros desafíos (C++, Matlab, Numpy, Fortress, Scala).

En algún nivel, C es el mínimo común denominador que tiene portabilidad multiplataforma.

6

Creo que el problema con esta pregunta y la posterior discusión es que muy raramente los idiomas pretenden reemplazar a otros. Claro, cuando intentaron aclarar y defender algunas de sus agrupaciones, comparten conjuntos de características similares o cumplen cosas similares, pero en última instancia, no creo que nadie vaya a sentarse y escribir un lenguaje que está diseñado para reemplazar a otro . Lo que es mucho más probable es que los diseñadores de idiomas quieran lograr un objetivo y escojan y elijan aspectos de ciertos idiomas que ya lo hacen. Por ejemplo, eche un vistazo a Go que está diseñado para subir un poco la apuesta con respecto a la programación de sistemas de rendimiento ultra alto que, podría decirse, compite un poco con C. Sin embargo, si nos fijamos en las preguntas frecuentes sobre la misión del proyecto, no buscan reemplazar a C, sino simplemente aumentarlo y abordar los problemas que enfrenta (como la gestión de la dependencia para nombrar uno) (así que quizás esta es la respuesta 'que estas buscando).

De hecho, si algo es una evolución de otra cosa, depende por completo de la perspectiva desde la que se examina y evalúa la evolución. C++ se puede considerar una evolución de C porque introdujo un nuevo conjunto de características (programación OO) que muchos consideran un paso adelante en el diseño de sistemas, al mismo tiempo que conservan una sintaxis similar y compatibilidad con el código C. Sin embargo, no es completamente una evolución porque también le faltan algunas características que hacen que C sea un idioma actualmente utilizado en la actualidad. Ningún idioma puede hacer de todo (excepto tal vez Lisp ;-) Yo bromeo, bromeo) y nunca lo haré. Ningún idioma es sin concesiones. Las abstracciones que facilitan el desarrollo web son las mismas abstracciones que hacen que el desarrollo de sistemas de bajo nivel sea imposible (o prohibitivamente difícil). Así que realmente creo que es difícil decir que X es una evolución de Y. Más bien, diría "Quiero hacer W y sé que puedo usar el lenguaje X pero hay algo que logra mis objetivos de A, B y C mejor ? " Lamentablemente, los lenguajes de programación no son lo suficientemente blancos y negros como para hacer afirmaciones radicales como esa y, como cada decisión que se toma en la programación, se trata de intercambios.

+0

Ya lo sé. Ir es prometedor como una alternativa de C. –

+1

En realidad, * nos * sentamos y diseñamos un lenguaje específicamente para reemplazar C. Creo que hay otros que diseñaron con la misma intención. La nuestra es una revisión de Modula-2, una base ideal para un reemplazo de C, otros han comenzado con C en sí. Pero sí, la gente se da cuenta de que C es una parte importante del problema y tendrá que ser reemplazado. No por los lenguajes dinámicos de recolección de basura sino por algo que puede reemplazar todo o la mayoría de lo que C hace para la implementación de sistemas, idealmente seguro. – trijezdci

+0

"Ningún idioma puede hacer todo ..." No puedo estar de acuerdo con eso. En lo que respecta a las computadoras, según mi leal saber y entender, puedes hacer todo con ensamblaje, C o C++. – Andrew

Cuestiones relacionadas