Why do some colleges teach C++ instead of other programming languages?
I'm taking an introductory computer science course and was surprised to discover that the language we are learning is C++. There is a Python class, but it apparently is designed for non-computer science majors/minors and is not the main track. Any insight into the advantages or disadvantages of teaching C++, and whether this is an outdated language that might actually hurt students when they graduate?
Answers ( 3 )
For a few years I taught Physics 210 ("Computational Physics") at UBC -- see http://jick.net/p210/ I tried to expose my second-year students to as many different ways of solving the same problems as I could, from shell scripts to HTML to PHP to python to C to FORTRAN. The idea being that whatever programming language you are taught today will not be the one you will need next year when you join a research group or get a summer job or want to build your own app. As Sergey says, what you need to learn about computing is how it works in principle, not a particular implementation. Arguments about "which language is best" can occasionally be rational if "best" is followed by "for..." followed by a particular class of]tasks. The rest of the time they simply reveal the ignorance of the advocates.
Those are two different questions:
> whether this is an outdated language that might actually hurt students when they graduate?
It is one of the most widely used languages, driving major industries like auto, air&space, transportation, energy, oil&gas, telecom, manufacturing, finance, movie VFX. People interact with C++ programs in everyday life, but they don't realize that. There also are major apps such as browsers, graphics editors, word processors, Java VMs, as well as major websites such as Google and Facebook that are largerly driven by C++ and that's not going to change.
That said,
> introductory computer science course
is not a good place to learn C++, and almost certainly won't teach you anything useful about it. There is an unfortunate ever-widening gap between what professors think programming is and what industry requires.
To quote Bjarne Stroustrup, creator of C++, from
https://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext
As far as I can tell, many CS professors use what they call "C++" just because that's what they were taught as students decades ago, even if C++ looks nothing like it did back then, and even back then it looked very different when used to make software. This gets to notable extremes in India, where standard curriculum uses 1992 development environment running in MS-DOS emulators.
I'd say if you look to program in future, focus on learning CS concepts in a CS class (it doesn't matter what language is used to present them), and learn programming on your own.
I was just speaking to my neighbor this weekend about his upcoming move. He and his family are heading out to California where he will be starting a job as a senior developer for Google. He told me that it's all C++ for the part they are working on, and that many of Google's backend systems continue to rely on C++ as their primary coding language.
So I guess my thoughts on this would be that it's great that you're taking a coding language that is still being so widely deployed as your freshman year intro to programming. When I started college as a computer engineering major, our first programming language was Fortran. Yes, this was a long time ago (1994), but even then, Fortran wasn't being used, except in the deep dark recesses where people don't talk about. It wasn't until my 2nd semester sophomore year that we started programming in C, and then C++.
I'd say congratulations on working in a language that is still so widely used. Also, object-oriented concepts translate to so many of today's modern languages that you will never be wasting your time in C++. Good luck!