¿Por qué se enseña predominantemente C / C ++ en universidades / escuelas como idioma de partida?

No estoy totalmente de acuerdo con la premisa de que C ++ no es un lenguaje ideal para comenzar. Aquí hay algunas razones por las cuales cada persona que quisiera hacer algo de programación debería conocer C ++:

1) Manipulación del puntero

Ningún otro lenguaje proporciona la flexibilidad de manipulación de punteros como lo hace C ++. Esto proporciona mucha información sobre cómo funciona la administración de memoria en general y cómo usar los recursos de manera eficiente. Esto es lo más cercano al hardware de la computadora que uno puede obtener usando un programa de alto nivel. Las infinitas horas de depuración de una falla de segmentación debido a un puntero mal ubicado enseña mucho cómo funciona un programa / compilador que el tiempo equivalente dedicado a leer un libro. Y la gestión de la memoria es algo que todo programador debe saber obligatoriamente. La flexibilidad que brindan estos lenguajes para asignar memoria / memoria libre cuando sea necesario enseña mucho sobre la administración de memoria y la eficacia del código que generalmente tiene un cuello de botella en la memoria asignada descuidadamente.

2) Soporte de biblioteca enriquecida para implementar algoritmos en términos de STL

      Este es otro factor importante por el que alguien a nivel de escuela / pregrado debería aprender C ++. STL proporciona una abstracción diversa para usar las bibliotecas para las estructuras de datos más comunes (por ejemplo, cola, pila, montón, BST, etc.). Y a nivel escolar, la razón principal por la que uno aprendería a programar es usarlos para implementar los algoritmos básicos que se enseñan como parte del trabajo del curso. Por lo tanto, la disponibilidad de un rico soporte de biblioteca es útil.

3) tiempos de ejecución más rápidos

      La mayoría de los compiladores de C ++ producen un código de salida de máquina, que se ejecuta mucho más rápido que un código python de JAVA correspondiente. Aunque esta no es una razón principal por la que se debe enseñar C ++, solo agrega a la causa 😉

4) Patrones de diseño de software

       Aunque este punto no es un factor distintivo de C ++, sigue siendo importante. La asignación de herencia múltiple permite a los programadores implementar muchos de los patrones de diseño de software que de otro modo en lenguajes como JAVA deben implementarse a través de una interfaz.

Para resumir, C ++ es un lenguaje muy poderoso que todo programador debería saber. Y ser enseñado como un lenguaje de programación básico ayuda a comprender múltiples aspectos de una manera agradable. Según el uso del compilador turbo C ++, es algo de elección. No debería ser realmente difícil para uno cambiar el uso de turbo C ++ a gcc con algunos pequeños cambios en la sintaxis. Las construcciones clave se conservan a través de ellas.

No estoy de acuerdo con la respuesta de Karthik. Es cierto que C ++ es un muy buen lenguaje e incluso el mejor en algunos de los escenarios, aún así no compensa los criterios de un lenguaje inicial. Quiero aclararlo con los puntos que mencionó:

1) Manipulación del puntero: por lo tanto, desea enseñar la manipulación del puntero a un estudiante de primer año, que podría haber visto una computadora por primera vez (fue el caso en mi universidad para la mayoría de los compañeros de lote). Suena como un gran comienzo. Para el punto, si la manipulación del puntero fue una gran cosa, ¿por qué los lenguajes modernos no tienen la misma característica? (Sugerencia: porque la manipulación del puntero está desactualizada y no es necesaria)

2) Soporte de biblioteca enriquecida: por lo que sé, Turbo C ++ no admite STL.

3) Tiempo de ejecución más rápido: el lenguaje ensamblador se ejecuta más rápido que C ++, ¿por qué no se nos enseña eso? (Ni siquiera comenzaré sobre el lenguaje de máquina) Aprenderemos mucho de esta manera.

4) Patrón de diseño de software: seamos sinceros, la herencia múltiple era algo malo y propenso a errores. Era un patrón de diseño incorrecto y nunca debería incorporarse en absoluto. Es por eso que ningún lenguaje moderno lo admite. Sin embargo, la interfaz es un concepto muy bueno y puede ahorrarle horas y horas de depuración (más si los punteros estaban involucrados).

No estoy en contra de C ++, fue el lenguaje más poderoso que he visto. Mi argumento es en contra de empujarlo a nuevos estudiantes. Es como poner una barra de 110 libras en una persona el primer día en el gimnasio. Pruebe con lenguajes más simples como Python, JavaScript o Ruby. Los estudiantes no odiarán el tema al menos y aprenderán programación. Los punteros y otras cosas se pueden incluir en años posteriores.

A menudo me lo he preguntado, y creo que la razón más plausible es que las personas que deciden el contenido de nuestro curso no siempre tienen sus prioridades correctas.

(Ah, y esto no es solo India. Por ejemplo, seguramente estás bromeando, el Sr. Feynman tiene un capítulo en el que decidieron qué textos de ciencias usar para enseñar a los niños de la escuela sobre la base de sus portadas, y más tarde, los precios).

En mi opinión, hay 3 razones principales para que las personas enseñen C ++ como lenguaje introductorio.

En primer lugar, eso es lo que ellos (los instructores y / o los creadores de contenido) aprendieron primero y / o saben mejor. Bastante práctico, pero triste, creo.

En segundo lugar, eso es lo que todos hacen y / o han estado haciendo durante mucho tiempo. ¿Por qué pensar? Solo sigue a la manada.

En tercer lugar, C ++ ES bastante útil y tiene muchas bibliotecas, bla, bla, bla.
Entonces, aunque no es el mejor lenguaje de programación para comenzar, en un escenario en el que los estudiantes podrían no aprender otro idioma después del primero (o aprenderlos lo suficientemente bien), no es muy extraño que quieran que aprendas un idioma que , si se entiende lo suficientemente bien, no solo sería muy útil en sí mismo, sino que también haría que muchos (¿la mayoría?) otros idiomas sean relativamente fáciles de acostumbrar.

No creo que C ++ se enseñe a menudo como lengua materna en la mayoría de las universidades. Java parece ser el estándar, seguido de C. C está muy cerca del hardware y lo ayuda a aprender cómo funciona realmente una computadora, mientras que Java es multiplataforma, libre y estable, y es una de las mejores formas de aprender orientado a objetos. programación.