¿Por qué a menudo C ++ es el primer idioma que se enseña en la universidad? [cerrado]

12

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?

Casey Patton
fuente
66
¿Qué escuelas y dónde? Todos los que están cerca de mí (3 en la ciudad y algunos otros dentro de un par de horas en automóvil) enseñan Java como primer idioma. C ++ entra en el último año o dos (dependiendo de los cursos que tome un estudiante). Ha sido así durante al menos los últimos 10 años.
FrustratedWithFormsDesigner
77
Los profesores son como otros programadores en tener gustos y disgustos moderadamente racionales. Al mismo tiempo, son como estudiantes en la privación de experiencia.
Mike Dunlavey
@Casey Probablemente te encuentres con un poco de fricción con otros usuarios aquí, ya que solo proporcionaste una afirmación de que C ++ no está de acuerdo pero no hay ninguna justificación para ello. Si su objetivo es descubrir por qué se elige C ++ en las universidades, le sugiero que edite las referencias que le gusten o no, ya que eso es irrelevante para su pregunta real.
Adam Lear
44
En el primer año, se trata de separar el trigo de la paja.
Steven Evers
2
Que sería interesante disponer de algunas estadísticas sobre el número de colegios / universidades utilizan lo que idiomas para sus cursos introductorios.
Jerry Coffin

Respuestas:

25

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.

Bitgarden
fuente
2
Puede que no sea un lenguaje "malo" si asciende a la filosofía "malo es subjetivo", pero para prácticamente cualquier combinación de preocupaciones técnicas, existe un lenguaje más productivo y seguro. En mi opinión, la razón por la que se enseña C ++ es porque es lo que la gente usa, y es lo que la gente usa porque es lo que la gente sabe, y es lo que la gente sabe porque es lo que enseñan las universidades. Aparte de la popularidad, C ++ no tiene ningún mérito sustancial que pueda ver, y programo con él profesionalmente.
weberc2
13

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.

Karl Bielefeldt
fuente
99
Me preocupa el hecho de que esta falsa analogía ha cosechado tantos votos positivos. Así no es como funciona el aprendizaje. Uno de los muchos conceptos erróneos de la didáctica.
Konrad Rudolph el
12
C++ isn't that bad. 

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.

programador de polvo
fuente
Un punto muy sensible! No me dieron ningún ejercicio sobre punteros inteligentes o RTTI o RAII en la universidad. WTF!
Chani
12

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.

Scott Whitlock
fuente
1
+1 para c ++ no es un lenguaje comercial. Es bueno aprender un idioma sin preocuparse por la política y las tácticas comerciales. <instalar Java7 en Linux, por ejemplo>
Chani
5

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.

Arseni Mourzenko
fuente
1
Parece que C sería mejor para tus segundos dos puntos. ¿Hay escuelas que enseñan a Ada? Definitivamente tomaría eso en C ++ pero, de nuevo, ¡soy raro!
Jetti
C ++ se selecciona para productos comerciales porque es lo que más gente sabe, no por sus preocupaciones técnicas. C ++ es un lenguaje inseguro y difícil de usar en comparación con muchos lenguajes modernos. Los idiomas no se seleccionan por sus méritos sino porque son populares.
weberc2
Además, no puedo pensar en muchas cosas que Ada hace peor que C ++, y preferiría usarlo que C ++ (mi código sería más simple y seguro, de todos modos), ¡y programo en C ++ profesionalmente! Y para enseñar a los estudiantes sobre punteros, siempre hay Ada, Go o cualquiera de varios idiomas sanos. Y con respecto a su último punto, C ++ es innecesariamente difícil. Muchos de los problemas que enfrentan los programadores de C ++ no tienen nada que ver con la programación, sino con la superación de C ++. La programación en cualquier nivel es bastante sencilla en un lenguaje sensato.
weberc2
5

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.

user32288
fuente
Puede que no sea cierto para el código objeto, pero la promesa de los lenguajes C, incluido C ++, era que había compiladores para casi todas las plataformas, por lo que el mismo código fuente podría usarse para compilar aplicaciones para una amplia variedad de plataformas.
JohnFx
De hecho, eso es cierto. La mayoría de las plataformas * NIX tienen compiladores integrados y eso tiende a tener un efecto psicológico en la mayoría de las personas en la forma de "Claro, podría descargar ESE compilador, pero este vino con mi sistema operativo, así que seguramente debe ser el mejor".
Debería probar otros lenguajes además de Java: existen alternativas que conforman lo mejor de ambos mundos. Go, por ejemplo, ofrece velocidad, portabilidad y simplicidad, y hace que la concurrencia sea muy fácil.
weberc2
4

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.

Miguel
fuente
Esto suena como un argumento para Ada, no para C ++ ...
weberc2
3

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.

jojo
fuente
3

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).

Felix Dombek
fuente
Esto no explica por qué Ada, por ejemplo, no se enseña como primer idioma.
weberc2
2

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

Descifrador
fuente
3
Esta respuesta es completamente incorrecta. Ante todo porque no hay un lenguaje llamado "C / C ++".
Konrad Rudolph el
1
  1. A los profesores no les gusta preparar un nuevo curso y hay límites en cuanto a lo que puedes ofrecer.
  2. Los idiomas van y vienen, por lo que dejaron de tratar de mantenerse a la vanguardia (Ver # 1)
  3. Es una universidad y no una escuela técnica. Más enfoque en proporcionar una base que en la capacitación laboral.
  4. Cubre una amplia gama de programación: servidor, escritorio, incrustado, UNIX, Windows.
  5. Lo usan como un curso de marihuana. Cada área principal de estudio tiene al menos uno.
JeffO
fuente
1

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.

cnd
fuente