 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Josh Mcfarlane Guest
|
Posted: Fri Oct 28, 2005 4:08 pm Post subject: Loops and compitency of recent CS grads |
|
|
Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
array[0] = 0;
for (int i =1; i < size; ++i)
{
array[i] = i;
}
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
|
|
| Back to top |
|
 |
int2str@gmail.com Guest
|
Posted: Fri Oct 28, 2005 5:58 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
It's "competency" ;)
Josh Mcfarlane wrote:
| Quote: | array[0] = 0;
for (int i =1; i < size; ++i)
{
array[i] = i;
}
|
I may be outing myself as incompetent here, but what's wrong with this
loop?
Cheers,
Andre
|
|
| Back to top |
|
 |
Josh Mcfarlane Guest
|
Posted: Fri Oct 28, 2005 6:55 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
[email]int2str (AT) gmail (DOT) com[/email] wrote:
| Quote: | It's "competency" ;)
Josh Mcfarlane wrote:
array[0] = 0;
for (int i =1; i < size; ++i)
{
array[i] = i;
}
I may be outing myself as incompetent here, but what's wrong with this
loop?
|
Sorry for the mispelling. =P
Basically, in this example it may have been misleading, but I see code
where they duplicate the initial value.
A better example may have been
array[0] += x
for (int i = 1; i < size; ++i)
{
array[i] += x;
}
Or some other common operation that needs to be performed on the entire
iteration. To me, it's code duplication and more of a hassle to
maintain code where the initial iteration (0) is outside of the loop,
while the remaining iterations are inside.
Josh McFarlane
|
|
| Back to top |
|
 |
Neil Cerutti Guest
|
Posted: Fri Oct 28, 2005 6:57 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
On 2005-10-28, [email]int2str (AT) gmail (DOT) com[/email] <int2str (AT) gmail (DOT) com> wrote:
| Quote: |
It's "competency" ;)
Josh Mcfarlane wrote:
array[0] = 0;
for (int i =1; i < size; ++i)
{
array[i] = i;
}
I may be outing myself as incompetent here, but what's wrong with this
loop?
|
He may wish it were the more idiomatic:
for (int i = 0; i < size; ++i)
{
array[i] = i;
}
If I were to see the original code, with
for (int i = 1;
at the beginning, little alarms would start going off in my head,
and I'd have to waste time proving to myself it wasn't wrong.
--
Neil Cerutti
|
|
| Back to top |
|
 |
Neil Cerutti Guest
|
Posted: Fri Oct 28, 2005 6:59 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
On 2005-10-28, Josh Mcfarlane <darsant (AT) gmail (DOT) com> wrote:
| Quote: | Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
|
The second loop just looks like nonsense. I can't think of an
improvement other than erasing it. ;-)
--
Neil Cerutti
|
|
| Back to top |
|
 |
Josh Mcfarlane Guest
|
Posted: Fri Oct 28, 2005 7:04 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
Neil Cerutti wrote:
| Quote: | On 2005-10-28, Josh Mcfarlane <darsant (AT) gmail (DOT) com> wrote:
Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
The second loop just looks like nonsense. I can't think of an
improvement other than erasing it.
|
It baffled me too, but more or less what they were trying to achieve
was
for(int i = 0; i < size; ++i)
{
dofunct(array[i]);
dootherfunct(array[i]);
}
Now, why they didn't do that, I have no clue.
|
|
| Back to top |
|
 |
Dave Townsend Guest
|
Posted: Fri Oct 28, 2005 7:14 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
"Josh Mcfarlane" <darsant (AT) gmail (DOT) com> wrote
| Quote: |
Neil Cerutti wrote:
On 2005-10-28, Josh Mcfarlane <darsant (AT) gmail (DOT) com> wrote:
Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
The second loop just looks like nonsense. I can't think of an
improvement other than erasing it. ;-)
It baffled me too, but more or less what they were trying to achieve
was
for(int i = 0; i < size; ++i)
{
dofunct(array[i]);
dootherfunct(array[i]);
}
Now, why they didn't do that, I have no clue.
Your original post was about efficiency, but you seem to be commenting on |
clarity
which is quite a different matter.
|
|
| Back to top |
|
 |
Josh Mcfarlane Guest
|
Posted: Fri Oct 28, 2005 7:32 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
Dave Townsend wrote:
| Quote: | Your original post was about efficiency, but you seem to be commenting on
clarity
which is quite a different matter.
|
Well, by efficiency I was more referring to the efficiency of the
programmer and the overall effect it had on the code / program
development (in this case, it made debugging it more pesky as I had to
check two areas instead of one.)
Adding a logic check each loop and looping twice as much as necessary
seems inefficient to me as you're executing 2x the instructions
necessary.
|
|
| Back to top |
|
 |
Julián Albo Guest
|
Posted: Fri Oct 28, 2005 7:50 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
Josh Mcfarlane wrote:
| Quote: | Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
|
I have seen many bad code over the years, don't think is a recent trend. In
C++, C, Java, Pascal, Basic....
--
Salu2
|
|
| Back to top |
|
 |
TIT Guest
|
Posted: Fri Oct 28, 2005 7:52 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
Josh Mcfarlane sade:
| Quote: | Neil Cerutti wrote:
On 2005-10-28, Josh Mcfarlane <darsant (AT) gmail (DOT) com> wrote:
Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
The second loop just looks like nonsense. I can't think of an
improvement other than erasing it. ;-)
It baffled me too, but more or less what they were trying to achieve
was
for(int i = 0; i < size; ++i)
{
dofunct(array[i]);
dootherfunct(array[i]);
}
Now, why they didn't do that, I have no clue.
|
A complex mind lacks simple thoughts =)
TIT
|
|
| Back to top |
|
 |
Josh Mcfarlane Guest
|
Posted: Fri Oct 28, 2005 8:28 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
TIT wrote:
| Quote: | A complex mind lacks simple thoughts =)
|
Sometimes, but rarely do these over-the-top cases work as intended,
which is part of what brought about this post.
|
|
| Back to top |
|
 |
puzzlecracker Guest
|
Posted: Sat Oct 29, 2005 12:39 am Post subject: Re: Loops and compitency of recent CS grads |
|
|
Josh Mcfarlane wrote:
| Quote: | TIT wrote:
A complex mind lacks simple thoughts =)
Sometimes, but rarely do these over-the-top cases work as intended,
which is part of what brought about this post.
Why don't you show us a sample of your code? Thus, the coding problems |
may be inherent to a completely different source. Additionally, your
English writing doesn't reflect any teacher/professorial
attributes...can't say no more, for it is already off-topic...
|
|
| Back to top |
|
 |
Ian Guest
|
Posted: Sat Oct 29, 2005 1:05 am Post subject: Re: Loops and compitency of recent CS grads |
|
|
Josh Mcfarlane wrote:
| Quote: | Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
Many people "know" a language, which often means one way of doing |
something and they are often unwilling to experiment or expand their
knowledge. I've seen this a lot over the years and not just with junior
staff.
Ian
|
|
| Back to top |
|
 |
Josh Mcfarlane Guest
|
Posted: Sat Oct 29, 2005 9:08 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
puzzlecracker wrote:
| Quote: | Why don't you show us a sample of your code? Thus, the coding problems
may be inherent to a completely different source. Additionally, your
English writing doesn't reflect any teacher/professorial
attributes...can't say no more, for it is already off-topic...
|
This wasn't about my code. This was about a common problem I noticed
with loops and some of the programmers around here. I end up having to
go in and fix things, not because they're unclear in meaning, but in
attempting to be complex or doing things in the first mentioned
example, they screw something up (such as record iteration) and it
brings in undefined behavior.
|
|
| Back to top |
|
 |
Jim Langston Guest
|
Posted: Sat Oct 29, 2005 9:43 pm Post subject: Re: Loops and compitency of recent CS grads |
|
|
"Josh Mcfarlane" <darsant (AT) gmail (DOT) com> wrote
| Quote: | Just sort of curious because of a trend I've been noticing.
Around here, most of the newer students and even some professionals
that pick up C++ or another similar language tend to do inefficient
things with loops / iterations, such as:
array[0] = 0;
for (int i =1; i < size; ++i)
{
array[i] = i;
}
|
A few ways this could come about. Some new programmer trying to think how
to do something to a variable. "lets see. I want to initialize it to 0.
That would be X = 0. Oh, X is an array, so I need X[0] = 0. There got it.
Oh, gotta do the rest. lets see, already did 0 so..."
Or, most likely. "Ahh, let me initialize my size variable array. for (int
i = 1; i < size; ++i)" later "Dang, what bug, oh, forgot to initialize 0.
Umm.. I'll just throw it up top."
| Quote: |
or my favorite
for (int i = 0; i < 2*size; ++i)
{
if (i % 2 == 0)
dofunct(array[i/2]);
else
dootherfunct(array[i/2]);
}
Is proper iteration really that hard of a concept to grasp?
|
Actually, for people new to programming iteration is a total mystery. They
still have a hard time understanding how X = X + 1 can be true when their
algebra teacher told them both sides need to be equal...
Just unlearning a lot of things and learning back over.
I remember going through this phase many many years ago. When I didn't even
understand 2/3 of what I wrote, but it worked dag nab it so it must be
right! I better not touch it or I might break it again...
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|