¿Qué falta en go que tiene C++? [cerrado]
Frecuentes
Visto 290 equipos
0
Go está destinado a ser un lenguaje simple y hay alrededor de 25 palabras clave. Debido a que es simple, me preguntaba qué no tiene en comparación con otros lenguajes como C ++ o C # (que, en mi opinión, es más complejo que C ++)
Entiendo que es simple porque tiene menos palabras clave y otras cosas, pero no sé el idioma, entonces, ¿qué tuvo que compensar o dejar de lado debido a esa decisión?
1 Respuestas
3
Como comentaron otros, la cantidad de palabras clave no es una métrica de simplicidad, pero tiene razón en que Go es simple. No sé C#, pero aquí hay algunas características esenciales de C++ que no están disponibles en Go:
- Genéricos (plantillas). Ha habido una larga discusión sobre cómo tener soporte para genéricos en Go. Puede que lleguen algún día, pero todavía no.
- Herencia. El modelo de escritura de Go simplemente no funciona así. Eso significa que no hay sobrecarga, ni campos protegidos, ni polimorfismo, etc.
- Manejo de excepciones. Panic and Recover cubre eso, pero no es un manejo de excepciones.
- Constructores y destructores. Los tipos tienen valores iniciales y eso es todo.
- Macros C.
Puedo estar olvidando algo.
EDIT: Me perdí aritmética de punteros.
contestado el 05 de mayo de 12 a las 10:05
Tenía miedo de perder la herencia y el polimorfismo. Los estoy usando mucho para este proyecto :(. Supongo que es por eso que dicen usar la herramienta correcta para el trabajo correcto - usuario34537
Le recomendaría que echara un vistazo más profundo al sistema de tipos de Go. La idea de Go de interfaces e incrustaciones es más simple pero también más poderosa que la herencia y el polimorfismo (también cubren algunos de los casos en los que otros lenguajes generalmente requieren genéricos). Solo se necesita algo de tiempo para olvidar todo lo que has oído antes sobre la programación orientada a objetos :) - tux21b
@oers: Go tiene aritmética de punteros. Solo tiene que lanzar un puntero Go a un "unsafe.Pointer" antes, si realmente quiere usar la aritmética de punteros (usualmente no quiere hacer eso). - tux21b
@acidzombie24 Supongo que usamos la herencia y el polimorfismo y esas cosas en los proyectos porque los conocemos y estamos acostumbrados a resolver problemas con ellos, no porque el problema real los exija. La mayoría de las veces un mismo problema puede ser abordado desde otra perspectiva y resuelto de manera profunda. - Mostafa
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas go or haz tu propia pregunta.
Un lenguaje puede ser bastante complejo y tener muy pocas palabras clave (stricto sensu, PL/1 no tenía palabras clave, ya que podría emplearse en el papel de identificadores). - Basile Starynkevitch
Gran parte de la complejidad de C++ está relacionada con el hecho de que quiere ser compatible, o al menos interoperable, con C; Go no tiene tal requisito. - Basile Starynkevitch
ok, pero aún así, deja de lado las plantillas (afaik) y estoy seguro de muchas otras cosas. Simplemente no tengo idea de qué. cc @BasileStarynkevitch - user34537