Mi escuela comienza el plan de estudios de informática con cursos de programación en C ++, lo que significa que este es el primer idioma que aprenden muchos de los estudiantes.
He visto que a muchas personas no les gusta C ++, y he leído una variedad de razones por las cuales. Casi parece ser una opinión popular que C ++ no es un lenguaje muy bueno. Tengo la impresión de que no le gusta mucho en base a algunas preguntas sobre StackExchange, así como a publicaciones como:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ nodo / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
etc.
(Nota: no es mi opinión que C ++ sea un mal lenguaje. De hecho, es el idioma principal que uso. Sin embargo, Internet y algunos profesores me han dado la impresión de que no es un lenguaje muy querido. De hecho , uno de mis profesores constantemente critica C ++, ¡pero sigue siendo el idioma de inicio en mi universidad!)
Con eso en mente, ¿por qué es este el primer idioma que se enseña en muchas escuelas? ¿Cuáles son las razones para comenzar un programa de programación con C ++?
Nota: Esta pregunta es similar a "¿Es C ++ adecuado como primer idioma", pero es un poco diferente ya que no me interesa saber si es adecuado, sino por qué se ha elegido?
Respuestas:
Cada idioma tiene un seguimiento de culto de amantes y enemigos por igual; Esto es cierto para C ++, Java, C #, Haskell, Objective-C, lo que sea.
Hay muchas razones válidas para que le guste o no un idioma.
Al final, hay algunas razones por las cuales C ++ se enseña predominantemente en las universidades:
Se construye encima de C; por lo tanto, la transición de C a C ++ no es demasiado dolorosa. Muchas universidades enseñan C antes que C ++ (lo cual tiene mucho sentido IMO).
Es uno de los lenguajes más populares en la industria (está comenzando a cambiar con Java, desarrollo móvil, desarrollo web, etc., pero aún está allí)
Es un lenguaje escrito por un académico, con fines académicos (es decir, de investigación) ; por lo tanto, muchos profesores lo usan a diario y están muy familiarizados con él, lo que lo convierte en una opción obvia para el contenido de su curso.
No se apresure a descartarlo como un lenguaje "malo"; Te recomiendo que te sumerjas en él, realmente lo aprendas, construyas algunos proyectos de tamaño moderado a grande utilizándolo. Luego haz lo mismo con otros idiomas; en ese momento tendrá suficiente experiencia y conocimiento para decir "Creo que C ++ es malo porque X, Y, Z" o "Creo que C ++ es bueno porque A, B, C, que Java no tiene".
Todavía tienes mucho que aprender, joven saltamontes.
fuente
En pocas palabras, es un muy buen lenguaje de enseñanza porque no te sujeta la mano. Las personas que aprenden a conducir con una transmisión manual casi no tienen problemas su primera vez en una automática, pero lo contrario no es cierto. Toma más tiempo aprender, pero en la universidad tienes 4 años de programas de juguetes para practicar antes de tener que hacer algo útil.
fuente
Lo que se enseña en la escuela generalmente depende de lo que saben los profesores y de lo que se usaba en la industria y popular en ese momento.
Piense en las escuelas como una cápsula del tiempo al pasado. :)
Realmente desearía que fuera al revés.
fuente
El inglés también se ha descrito como un idioma realmente malo, pirateado e inconsistente, pero como mucha gente por aquí lo sabe, mis padres y maestros decidieron que era una buena idea enseñarlo.
Creo que es lo mismo con C ++. Es un lenguaje que mucha gente conoce, por lo que vale la pena obtener una fluidez básica.
También tiene la ventaja de ser lo suficientemente bajo como para darle una idea de lo que está sucediendo a nivel de hardware.
Finalmente, no tiene los problemas "comerciales" que tienen otros lenguajes (como Java-Oracle o .NET-MS). Sé que muchas universidades no querrían ser acusadas de enseñar el producto de una compañía específica sobre otra.
fuente
Si C ++ es tan malo, ¿cómo explica que la mayoría de los productos de software que usa en su vida diaria están escritos en C ++?
Puede haber varias razones para aprender C ++ en la universidad desde el primer año:
Es ampliamente utilizado. La base de código existente es simplemente enorme, e incluso ahora que hay lenguajes como Ruby, Python o C #, C ++ todavía se usa mucho incluso cuando se crean aplicaciones desde cero, incluso para los sitios web. En este caso, aprender C ++ es una buena opción. Al menos mejor que pasar dos años aprendiendo Ada, es decir, algo que nunca usará en su vida, a menos que desarrolle aplicaciones para naves espaciales.
No es muy abstracto. Por ejemplo, ¿cómo puede explicar a los estudiantes qué son los punteros si han aprendido solo C # o Java?
Es bastante difícil en comparación con, digamos, PHP. Significa que los estudiantes que no están hechos para la programación se irán pronto, lo que no es tan malo y evita que un estudiante pierda dos o tres años antes de comprender que el desarrollo de software no es para él.
Esto hace que C ++ sea más adecuado que Ada, Java o PHP.
fuente
En términos generales, si puede aprender y dominar C ++, puede aprender y dominar prácticamente cualquier otro idioma. La razón por la que no le gusta es porque, para dominarlo y tener un tiempo de lanzamiento rápido, debe estar muy familiarizado con el idioma y su biblioteca estándar.
Sin embargo, en un lenguaje como Java, puede tener un tiempo de implementación rápido con solo un conocimiento avanzado de los entresijos de la biblioteca de idioma / estándar. Demonios, solo sé cinco cosas de la biblioteca estándar de Java de memoria (aparte de las cosas básicas como las colecciones, por supuesto).
Dicho esto, C ++ sigue siendo un lenguaje ampliamente utilizado debido a su gran combinación de velocidad y metodologías orientadas a objetos. Si bien muchas personas creen que no es OOP completo, creo que le brinda la mayor parte de la flexibilidad de OOP sin obligarlo a ser un fanático total. La mayoría de los compiladores incluso te permiten escribir C. pura
Si tuviera la opción, tomaría C ++ sobre Java cualquier día, pero eso es solo que soy fanboy. En términos generales, Java es útil porque se ejecutará en casi cualquier arquitectura que tenga un intérprete de Java creado para ello. Por lo tanto, para las aplicaciones cliente que deben ser compatibles con múltiples plataformas, se considera la mejor herramienta para el trabajo y la mayoría de las nuevas aplicaciones escritas están basadas en la web de todos modos.
fuente
Como algunos de mis profesores me han dicho, es más fácil comenzar desde abajo, o un nivel bajo, y luego subir de nivel. Un lenguaje como C ++ le ofrece una excelente introducción a lo que realmente es ser un informático. Puede que no sea un lenguaje tan glamoroso como Java, Python, Ruby, etc., pero le permite obtener una comprensión central de las características importantes del programa, como los punteros y la administración de memoria. Incluso si no es un lenguaje que planea o quiere usar para el resto de su vida, apreciará en los próximos años cuando comience a encontrar la ruta de programación deseada.
fuente
C ++ puede ser uno de los lenguajes más simples para programas de consola de nivel principiante. Claro que el lenguaje es complejo, pero puede concentrarse en un subconjunto de procedimientos. Puede ignorar la existencia de punteros durante bastante tiempo. Puede comenzar de simple, luego construir.
Hay menos sintaxis "fluff" para poner en marcha ese programa inicial "hello world" en comparación con Java o C #. ¿Debería un principiante ver la palabra "estática" para una aplicación hello world? En java / C # lo hacen.
fuente
Cuando estudié ciencias de la computación, Java fue pensado primero, pero mi universidad ahora nos enseña dos idiomas a los lingüistas computacionales: primero Prolog y luego C ++.
C ++ se enseña por (al menos) las siguientes razones:
Es un lenguaje de propósito general, puede escribir software para cualquier sistema operativo con él (porque existen muchos compiladores). Está diseñado para ser un buen lenguaje de producción, hace que sea fácil reutilizar partes del programa, interoperar con hardware y software del mundo real, etc.
Es muy rapido. No puede usar Python o Scheme o Prolog para procesar grandes conjuntos de datos, que son comunes en estos momentos. Piense en algoritmos gráficos con millones de nodos. (Es por eso que los juegos de computadora generalmente se escriben en C ++).
Los estudiantes pueden aprender lo que hace el compilador. En realidad, mientras aprendí Java (comenzando en la escuela secundaria), el trabajo del compilador siempre me pareció mágico. Simplemente no aprende sobre la pila y el montón, todo el enlace estático frente a dinámico, etc. como un principiante de Java. C ++ desmitifica toda la computadora.
Por lo que puede hacer, está bien en el tiempo de aprendizaje (aunque es probablemente uno de los idiomas más complicados si realmente profundiza en él). Ofrece una buena biblioteca que ayuda con una curva de aprendizaje suave. (Sin embargo, hay diferentes enfoques para eso. En mi universidad, nos enseñaron cómo escribir nuestras propias clases de cuerdas y punteros inteligentes antes de que se nos permitiera usar la biblioteca; Bjarne Stroustrup, el inventor de C ++, alienta el orden opuesto).
fuente
C / C ++ es en realidad un lenguaje mejor que la mayoría de los demás, en primer lugar porque no agrega una falsa sensación de seguridad. En segundo lugar porque tienes que saber lo que estás haciendo.
De hecho, me encanta el idioma, y lo considero superior a la mayoría de las alternativas.
También es tan productivo como la mayoría de los otros idiomas, y no tan "loco" si sabes lo que estás haciendo, y piensas antes de copiar codez aleatorio.
También una buena lectura: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Sin embargo, algunas cosas en C ++ son realmente malas, por ejemplo, excepciones, y sobrecarga poco intuitiva en algunos casos. Esta es la razón, supongo, por qué Linus es tan negativo al respecto en la publicación que citó.
Una buena lectura para tocar uno de los temas relacionados: http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
fuente
fuente
Anteriormente estaba Pascal, antes Pascal había algo parecido a Basic. La parte interesante es: ¿qué sigue? Quizás nada. Tengo un pensamiento sobre "por qué c ++". Porque es difícil pero no es tan difícil el ceceo. No, realmente entiendo que C ++ es un buen lenguaje para la programación del sistema, sé que hay muchos proyectos codificados en C ++ y hay muchas bibliotecas para que los estudiantes puedan crear todo con él. Pero estamos hablando de los estudiantes y su posibilidad de crear lógicas y comprender el sistema. No puede ser un buen codificador de C ++ si no puede crear lógicas simples y entender cómo funciona el sistema y esa es una razón principal en mi opinión. Y sí, otra razón simple es el inicio estable de la carrera.
fuente