Re: Some errors in MIT's intro C++ course
On Sep 18, 12:42 pm, Christian Hackl <ha...@sbox.tugraz.at> wrote:
James Kanze ha scritto:
On Sep 11, 10:44 pm, Christian Hackl <ha...@sbox.tugraz.at> wrote:
[...]
I meant "preferred form" in the sense that it is preferred
over at().
If the profiler says that you can't afford bounds checking
(and on most systems, it can only be turned on or off
globally, with a lot of other, far more expensive tests),
then you can't afford it, and you have to turn it off. In
that case, however, you generally can't use at() either.
Hold on, I was still talking about students in their first
programming course! :) If you tell them this early about
profiling and different ways of toggling bounds checking, then
they will run away screaming and give up CS...
I totally agree. But when one talks about "preferred form", one
does have to consider more global scope. IMHO, regardless of
the context, compiling without bounds checking before you have a
proven execution time problem is just stupid. (And of course,
studends in their first programming course won't have execution
time probems. At least not ones that can be solved by turning
off bounds checking.)
(Of course, as a teacher you should be able to explain those
things on demand even in a beginner's class, even if you don't
require students to be familiar with any details.)
I tend to agree, but I'm not 100% sure. Knuth certainly argued
for "white lies" at the beginning, until the student is ready
for more complexity, and I can easily consider that in some
cases, just telling the student that he's not ready for that
sort of thing might be appropriate.
int main()
{
std::vector<int> v;
v.reserve(100);
v[0] = 1;
}
If you compile this just with "cl test.cpp", then you probably
won't get a crash.
But if you use the IDE, with the default settings, you probably
will. (I don't have any compilers installed on my machne here,
so I can't check.)
OK, so the question is what to consider the default settings.
Those in the compiler itself or those the IDE invokes it with
if you don't change any options.
In which case, the default settings are different between the
IDE and the command line invocation. For VC++, I'm willing to
bet that most students are using the IDE.
But to get back to your "students in their first course": the
professor should provide the environment, with whatever settings
he deems appropriate. Even in a command line environment under
Linux, an alias or a shell script will provide whatever options
are needed for [] to trigger a core dump.
--
James Kanze