Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In with Facebook Sign In with Google Sign In with OpenID

Categories

We have migrated to a new platform! Please note that you will need to reset your password to log in (your credentials are still in-tact though). Please contact lee@programmersheaven.com if you have questions.
Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Data optimising?

IDKIDK Posts: 1,784Member
Should I use a variable at two places for different purposes?

Like this:
[code]
int main(){
int a = 0;
for(int i = 0; i < 10; ++i)
a *= i;

printf("%d", a);

for(int i = 0; i < 10; ++i)
a += i;

printf("%d", a);
}
[/code]

But sometimes a lot more complex.
I made a neural network program, and I had a neuron class, wich had a float called output. Then I needed to store the error of the next layer for each neuron in that layer, and I used that value to make it easier.
Should I have done that?

It saves a lot of memmory, and code.

Most programmers I've seen doesn't do it like that. They would make a temporary value, or have two values.

For another example see the 'Urgent help with something' thread. I posted a good sullotion that used one variable. Then Steph posted a sullotion with two variables.

The only bad thing with it is that it's a little harder to understand for the programmer.

Comments

  • stephlstephl Posts: 422Member
    : Should I use a variable at two places for different purposes?
    :
    : Like this:
    : [code]
    : int main(){
    : int a = 0;
    : for(int i = 0; i < 10; ++i)
    : a *= i;
    :
    : printf("%d", a);
    :
    : for(int i = 0; i < 10; ++i)
    : a += i;
    :
    : printf("%d", a);
    : }
    : [/code]
    :
    : But sometimes a lot more complex.
    : I made a neural network program, and I had a neuron class, wich had a float called output. Then I needed to store the error of the next layer for each neuron in that layer, and I used that value to make it easier.
    : Should I have done that?
    :
    : It saves a lot of memmory, and code.
    :
    : Most programmers I've seen doesn't do it like that. They would make a temporary value, or have two values.
    :
    : For another example see the 'Urgent help with something' thread. I posted a good sullotion that used one variable. Then Steph posted a sullotion with two variables.
    :
    : The only bad thing with it is that it's a little harder to understand for the programmer.
    :
    I agree with you. Most of the time I try to use the same variable for different purposes. But in this case it seems your solution does not work as wrote twik8701 in 'Urgent help with something'. I think there is an error in your conversion when you write:
    [code]
    cin >> ((char)title);
    [/code]

    I only use C, so I am not sure about this because references do not exist in C. I think that the right operand of >> used with cin has to be a reference. But after your cast to (char), I think it is no more considered as a variable, but as a value; in fact, the value that is currently stored in title. I hope I am not talking nonsense. I am sure a C++ expert is going to explain this much better than I.

    Steph.
  • anthrax11anthrax11 Posts: 511Member
    : Should I use a variable at two places for different purposes?
    :
    : Like this:
    : [code]
    : int main(){
    : int a = 0;
    : for(int i = 0; i < 10; ++i)
    : a *= i;
    :
    : printf("%d", a);
    :
    : for(int i = 0; i < 10; ++i)
    : a += i;
    :
    : printf("%d", a);
    : }
    : [/code]
    :
    : But sometimes a lot more complex.
    : I made a neural network program, and I had a neuron class, wich had a float called output. Then I needed to store the error of the next layer for each neuron in that layer, and I used that value to make it easier.
    : Should I have done that?
    :
    : It saves a lot of memmory, and code.
    :
    : Most programmers I've seen doesn't do it like that. They would make a temporary value, or have two values.
    :
    : For another example see the 'Urgent help with something' thread. I posted a good sullotion that used one variable. Then Steph posted a sullotion with two variables.
    :
    : The only bad thing with it is that it's a little harder to understand for the programmer.
    :

    I think it would be all right to use such a technique for larger data types like arrays and buffers. I don`t think it would be that benefitial for floats or integers, because 4 or 8 bytes is not such a large loss to worry about. Of course it depends on the compiler that puts it all together. I`d personally debug programs to see how they get compiled and act accordingly.

    You should surely use two variables if working on the program in a team with many people involved. Others might not understand what you`re doing, even though [b]you[/b] might have a pretty good idea. Either way you should add a comment explaining how you`ve used the variables in different places.

    As error codes aren`t floating point values in normal programs, integers should be used instead. Converting between floats and ints takes time and also more code.

    It`s good that you dare to think abstract, but sometimes simpler solutions work better. Good luck!
  • IDKIDK Posts: 1,784Member
    : : Should I use a variable at two places for different purposes?
    : :
    : : Like this:
    : : [code]
    : : int main(){
    : : int a = 0;
    : : for(int i = 0; i < 10; ++i)
    : : a *= i;
    : :
    : : printf("%d", a);
    : :
    : : for(int i = 0; i < 10; ++i)
    : : a += i;
    : :
    : : printf("%d", a);
    : : }
    : : [/code]
    : :
    : : But sometimes a lot more complex.
    : : I made a neural network program, and I had a neuron class, wich had a float called output. Then I needed to store the error of the next layer for each neuron in that layer, and I used that value to make it easier.
    : : Should I have done that?
    : :
    : : It saves a lot of memmory, and code.
    : :
    : : Most programmers I've seen doesn't do it like that. They would make a temporary value, or have two values.
    : :
    : : For another example see the 'Urgent help with something' thread. I posted a good sullotion that used one variable. Then Steph posted a sullotion with two variables.
    : :
    : : The only bad thing with it is that it's a little harder to understand for the programmer.
    : :
    : I agree with you. Most of the time I try to use the same variable for different purposes. But in this case it seems your solution does not work as wrote twik8701 in 'Urgent help with something'. I think there is an error in your conversion when you write:
    : [code]
    : cin >> ((char)title);
    : [/code]
    :
    : I only use C, so I am not sure about this because references do not exist in C. I think that the right operand of >> used with cin has to be a reference. But after your cast to (char), I think it is no more considered as a variable, but as a value; in fact, the value that is currently stored in title. I hope I am not talking nonsense. I am sure a C++ expert is going to explain this much better than I.
    :
    : Steph.
    :
    I wanted to use getChar(), but then I saw the program was in C++, so I made a quick conversion.
  • stephlstephl Posts: 422Member
    : : : Should I use a variable at two places for different purposes?
    : : :
    : : : Like this:
    : : : [code]
    : : : int main(){
    : : : int a = 0;
    : : : for(int i = 0; i < 10; ++i)
    : : : a *= i;
    : : :
    : : : printf("%d", a);
    : : :
    : : : for(int i = 0; i < 10; ++i)
    : : : a += i;
    : : :
    : : : printf("%d", a);
    : : : }
    : : : [/code]
    : : :
    : : : But sometimes a lot more complex.
    : : : I made a neural network program, and I had a neuron class, wich had a float called output. Then I needed to store the error of the next layer for each neuron in that layer, and I used that value to make it easier.
    : : : Should I have done that?
    : : :
    : : : It saves a lot of memmory, and code.
    : : :
    : : : Most programmers I've seen doesn't do it like that. They would make a temporary value, or have two values.
    : : :
    : : : For another example see the 'Urgent help with something' thread. I posted a good sullotion that used one variable. Then Steph posted a sullotion with two variables.
    : : :
    : : : The only bad thing with it is that it's a little harder to understand for the programmer.
    : : :
    : : I agree with you. Most of the time I try to use the same variable for different purposes. But in this case it seems your solution does not work as wrote twik8701 in 'Urgent help with something'. I think there is an error in your conversion when you write:
    : : [code]
    : : cin >> ((char)title);
    : : [/code]
    : :
    : : I only use C, so I am not sure about this because references do not exist in C. I think that the right operand of >> used with cin has to be a reference. But after your cast to (char), I think it is no more considered as a variable, but as a value; in fact, the value that is currently stored in title. I hope I am not talking nonsense. I am sure a C++ expert is going to explain this much better than I.
    : :
    : : Steph.
    : :
    : I wanted to use getChar(), but then I saw the program was in C++, so I made a quick conversion.
    :
    OK, but I think there is a problem in the cast. I am not sure the type is char. Do you know what the proper type is as the right-hand part of 'cin>>'?

    Steph
  • IDKIDK Posts: 1,784Member
    [b][red]This message was edited by IDK at 2006-6-3 8:16:22[/red][/b][hr]
    : Either way you should add a comment explaining how you`ve used the variables in different places.

    I thought so too. It's always good to explain wierd code.

    : As error codes aren`t floating point values in normal programs, integers should be used instead. Converting between floats and ints takes time and also more code.
    :
    When you speak of error in contex with neural networks, it means the difference between the guessed value and the right value. So it's a float.

    A non NN programmer wouldnt know this.


Sign In or Register to comment.