¿Cuál es una buena alternativa a C ++?

Creo que actualmente los tres principales contendientes son: Nim, D y Rust . Están en un empate estadístico en términos de rendimiento, pero difieren en varios otros méritos:

  • Nim : es mi alternativa favorita de C ++. Ofrece la sintaxis más concisa y legible de las tres (especialmente para las personas acostumbradas a Python), y produce los binarios más magros.

    También es uno de los lenguajes de programación más portátiles (no está casado con ningún back-end específico como LLVM, puede ejecutarse en cualquier plataforma que tenga ANSI C, JavaScript o PHP). Otra cosa que me gusta de Nim es que tiene el mayor grado de simplicidad de licencia: todos los componentes principales y casi todos los módulos tienen licencia MIT.

    La desventaja de Nim es que aún no ha alcanzado el hito de la versión 1.0, y tiene una popularidad menor que los otros dos contendientes.

  • Dlang : tiene muchas de las mismas virtudes que Nim, pero con una sintaxis tipo C.

    Creo que D tiene características de metaprogramación menos sofisticadas que Nim, y se queda corto en términos de algunas características, aunque personas razonables podrían estar en desacuerdo. D ha existido durante mucho tiempo, pero su popularidad se ha mantenido estable durante los últimos años, mientras que los otros dos contendientes tienen un mayor impulso de crecimiento.

  • Rust : un lenguaje diseñado con más énfasis en la seguridad de la memoria manual que la recolección de basura, es de nivel algo inferior y tiene una sintaxis más detallada.

    De los tres, Rust parece estar progresando más en la sustitución de C / C ++ como el lenguaje para implementar núcleos y otros componentes del sistema operativo de nivel inferior (por ejemplo, Redox OS).

Aquí hay algunos contendientes populares que NO creo que hagan un reemplazo viable de C / C ++:

  • Swift: un lenguaje decente, pero no llega a los tres contendientes principales mencionados anteriormente. Indica puntos de referencia muy por debajo de Rust, y por lo tanto probablemente también por debajo de Nim y Dlang. Se basa en LLVM, que es menos portátil que poder usar cualquier compilador ANSI C con Nim (incluidos innumerables OS oscuros y arquitecturas de CPU). La licencia también está más gravada que Nim.
  • Go: un lenguaje muy desequilibrado que ofrece un rendimiento mucho más pobre, archivos binarios muy gruesos y una sintaxis más torpe que el top 3. Fue diseñado para rascarse una picazón en una estética de diseño minimalista (ridículamente más allá del punto de impracticabilidad), tiempo de compilación rápido ( lo que importa cada vez menos a medida que las CPU y la compilación basada en la nube se vuelven más rápidas) y la concurrencia: falla en todo lo demás.
  • Java, C #, etc. – casado con máquinas virtuales; mucho más detallado con menor rendimiento que los tres contendientes.
  • Delphi, Pascal, Ada: la disminución de la popularidad, la falta de una implementación con licencia permisiva, la sintaxis muy detallada, se han reemplazado en todos los sentidos.
  • Haskell, ML, etc. – la programación funcional es un nicho de investigación que solo una pequeña fracción de personas aprecia y no es muy práctico en muchos dominios problemáticos con los que trata C / C ++.
  • Erlang, Elixir, Chapel – especializado, malo en muchas cosas.
  • Julia: se centró en algunas cosas específicas, e incluso construir ejecutables independientes no es una de ellas.
  • Crystal, Pony, Beast, Haxe, etc., etc., etc., casi tan oscuro como Nim, pero en mi humilde opinión, menos brillante y menos probable que tenga éxito.
  • Todos los lenguajes de script, por razones obvias.

C ++ es un GRAN lenguaje, me gusta su poder, las bibliotecas eficientes y ampliamente utilizadas en diferentes dominios.

También creador de C ++: Bjarne Stroustrup es un GRAN maestro, me gusta su forma de presentar ideas

Si desea consultar otros idiomas, para conocer nuevas ideas, consulte

Inicio – Lenguaje de programación D

El lenguaje de programación Go

El lenguaje de programación Rust

Lenguaje de programación Nim | Nim

Lenguaje de programación Jai (En desarrollo – por Jonathan Blow)

Un lenguaje de programación para juegos – YouTube

Todo depende de lo que esté codificando y no lo especificó.

C ++ es excelente cuando el rendimiento es importante o si necesita “estar cerca” del hardware de la computadora. C ++ se utiliza en Google, en videojuegos, sistemas integrados y aplicaciones como navegadores web y bases de datos.

En algunos círculos, el lenguaje llamado Rust está ganando impulso en los últimos años. Sin embargo, tengo la sensación de que los desarrolladores hardcore de C ++ no se van a saltar pronto.

Si está escribiendo código para administrar un negocio, hay otros idiomas más adecuados para el trabajo. Para tomar prestado del Dr. Mark Tarver, “Escribir en C es como construir un mosaico de lentejas con pinzas y pegamento”. Algunas opciones populares incluyen Python, Ruby, Go, Java y C #.

Primero responderé la segunda parte de tu pregunta:

Después de ganar mucha experiencia a lo largo de los años en programación, me he dado cuenta de que los lenguajes de programación son simplemente herramientas.

Nunca oirá a un mecánico presentarse como alguien que usa una llave inglesa, siempre se presentará como alguien que repara autos / vehículos / etc. Ergo, no debemos restringirnos a las herramientas que usamos, sino que debemos definirnos por el dominio de los problemas que resolvemos.

Conocer C ++ siempre será beneficioso, y en muchos casos he encontrado que es la herramienta perfecta. Uno que sea de bajo nivel, es decir, lo suficientemente rápido, pero que no requiera mucha abstracción repetitiva para comenzar a trabajar con él (algo que preveería la necesidad en un lenguaje como C o Go).

Además, nunca usarías un destornillador para clavar un clavo en la pared. Siempre usarías un martillo, incluso si un destornillador pudiera clavar el clavo con un esfuerzo adicional. Por lo tanto, seleccionar la herramienta adecuada para un trabajo en particular es extremadamente importante. C ++ definitivamente es la herramienta “perfecta” para algunos de ellos, por lo tanto, “vale la pena aprender”, pero principalmente para aquellos que realmente requieren dicha herramienta.

Ahora, para responder a su pregunta si hay una alternativa a C ++. Por supuesto que sí, pero como cualquier herramienta, ofrecería un conjunto ligeramente diferente de pros y contras.

Alternativas que uno puede considerar:

  1. Óxido: bajo nivel, sobrecarga de abstracción cero, sintaxis semi complicada
  2. Ir: nivel muy bajo, sin abstracción incorporada y azúcar sintáctica
  3. D: se supone que es un reemplazo para C ++, sintaxis innecesariamente complicada

A diferencia de algunas de las otras respuestas, no recomendaría Java o C # como alternativa, porque no están tratando de resolver los mismos problemas que C ++, aunque uno puede usarlos. Si el problema no requiere una solución de muy bajo nivel, entonces uno puede estar satisfecho fácilmente con un lenguaje que se ejecuta en una VM moderna (Java, Kotlin, Scala, C #, etc.).

Sí. Vale la pena aprender C ++ si eres un principiante en programación, ya que es una base para todos los demás lenguajes de programación orientados a objetos.

Te lleva a través de un inmenso viaje desde las variables hasta la creación de plantillas (por cierto, que son ampliamente utilizadas).

Una cosa que no me gusta de C ++ es cómo maneja las excepciones. Java en este caso es bueno.

Prefiero C ++ para principiantes y Java si eres intermediario y conoces algunas habilidades básicas.

Depende de lo que estés haciendo. Muchas de las cosas para las que la gente alguna vez usó C ++ son mucho menos comunes, por ejemplo, no muchas aplicaciones de escritorio que se están desarrollando en estos días, y en Mac Land usará Objective C y en Windows, podría estar haciendo .net en C # – o aún podría estar en C ++ haciendo aplicaciones para Windows o Linux.

O puede estar haciendo IA, aprendizaje automático, procesamiento de señales o visión por computadora en Python, ya que ahí es donde viven todas las matemáticas, y su ciclo interno crítico probablemente vive en una función de biblioteca, no es algo que codificó, por lo que ser un lenguaje interpretado no es Es un gran problema.

O su aplicación puede estar en un iPhone en Swift o Android en Java, o en la web en JavaScript, Ruby o Python.

O podría estar codificando para sistemas embebidos, que todavía están en C, o han adoptado algunos bits de C ++, pero aún se ejecutan por temor a muchas funciones centrales de C ++ debido a la ineficiencia, el riesgo y la dificultad de depuración.

o vaya más moderno con Go, Erlang, Haskell, Clojure, Rust, Julia o similares.

El punto es, elige el idioma que se adapte a tu tarea: hay toneladas de opciones.

No vale la pena aprender en el escenario actual donde todos se están moviendo hacia el desarrollo de Android y sitios web. Por lo tanto, elija un lenguaje de programación que tenga mucho más alcance que el C ++ tradicional. En mi opinión, Java es el mejor lenguaje de programación por el que debería optar.

Atentamente,
Crish Watson
Pase la certificación de Microsoft sin tomar el examen

Bueno, mi opinión es que C ++ es un poderoso lenguaje de programación. Además, es muy bueno para los principiantes, ya que le enseña el pensamiento necesario para la programación y las cosas que no ve en los lenguajes de nivel superior, como la gestión de la memoria, es decir, punteros, etc. Para responder más específicamente, no es necesario aprenderlo, pero obtendrá una información valiosa.