Jump to content

  • Log In with Google      Sign In   
  • Create Account


the importance of understanding theory?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
22 replies to this topic

#1 Aspirer   Members   -  Reputation: 544

Posted 01 December 2013 - 06:29 PM

Do you believe it's important to understand the theory behind your applications? For instance, using state machine to control animation. Unity uses a graphical representation of it to help set your animations. My understanding of what a state machine even was, was nil when I started, but I still managed to use it correctly without understanding it. I have a habit of needing to understand those things though, if just for peace of mind, so I learned a bit about it. Its not rnoiugh for me personally to understand "this works," I need to know "why and how does this work?"

Any of you feel that way, or do you feel that its pointless to research theory so long as you manage to accomplish your goal?

Sponsor:

#2 sunandshadow   Moderators   -  Reputation: 4582

Posted 01 December 2013 - 07:15 PM

I love studying theory.  Though, I'm interested in writing rather than programming, so I'm mostly interested in theories of how fiction operates in the human mind and in culture, and the evolutionary psychology and biology behind the development of novels, movies, and games from prehistoric myths and folktales.  I'm also interested in art theory, since I dabble at making art.  But for fiction and art its more of a fuzzy, relative question whether any piece "works".


I want to help design a "sandpark" MMO. Optional interactive story with quests and deeply characterized NPCs, plus sandbox elements like player-craftable housing and lots of other crafting. If you are starting a design of this type, please PM me.

#3 Shippou   Members   -  Reputation: 1336

Posted 01 December 2013 - 07:41 PM

I personally have never seen anything I learned in theory, that applied to the real world application.

 

 Real life example:

 In theory I had to learn expansion rates of different metals under different temperatures, and using that info calculate their voltage output to determine if a thermistor was operating in range.

 In real life I stick the thermistor into an oven, and than plug it into a meter that tells me if it's working properly.


 Reactions To Technologies:
1. Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works.
2. Anything that's invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it.
3. Anything invented after you're thirty-five is against the natural order of things.

- Douglas Adams 2002


 


#4 Bregma   Crossbones+   -  Reputation: 4768

Posted 01 December 2013 - 07:49 PM

The problem is that in theory, theory and practice are the same.  In practice, they're different.

 

Seriously, knowing and understanding the theory behind something will let you do more, do better.  It's the difference between a 'C' student and an 'A' student (are letter grades a valid cultural referent any more?).  You can get by without knowing the theory.  You can excel if you know the theory.  It's up to you.


Stephen M. Webb
Professional Free Software Developer

#5 Icebone1000   Members   -  Reputation: 981

Posted 01 December 2013 - 08:27 PM

I also feel very uncomfortable using something I dont understand, even if I manage to make it work correctly.

If its a personal project, I dig on the subject till I get whats going on, if is work I only dig enough to make it work well.

Thats the main motive of why Im so less productive with my personal projects, the second being procrastination.

 

example: I tried physics engines like ode and physx, I was so damn curious about the kind of monstrosity needed to make all that stuff work, that I started making my own physics engine. My intention was never have a working one to use in my projects, I knew I was too noob for that, I just wanted to know. So I learnt all the stuff about rigid bodies, inertia tensors, mass-spring engines, the problem with euler and its alternatives (rk4/verlet), broad phase collision detection, etc, etc.. Than I went back to physx, and its wonderful, cause even if you dont know how exactly theyr doing something, you know what theyr doing, and why..You dont go like "whats there to use so I can do this", you go like "wheres the stuff that do that". Really enlightening, you know what to look for, and you dont get lost. 

Knowing whats going on makes everything easier and more efficient.



#6 slicer4ever   Crossbones+   -  Reputation: 3211

Posted 01 December 2013 - 08:52 PM

example: I tried physics engines like ode and physx, I was so damn curious about the kind of monstrosity needed to make all that stuff work, that I started making my own physics engine. My intention was never have a working one to use in my projects, I knew I was too noob for that, I just wanted to know. So I learnt all the stuff about rigid bodies, inertia tensors, mass-spring engines, the problem with euler and its alternatives (rk4/verlet), broad phase collision detection, etc, etc.. Than I went back to physx, and its wonderful, cause even if you dont know how exactly theyr doing something, you know what theyr doing, and why..You dont go like "whats there to use so I can do this", you go like "wheres the stuff that do that". Really enlightening, you know what to look for, and you dont get lost. 
Knowing whats going on makes everything easier and more efficient.


pretty much this.

yes going down that rabbit hole generally means you well come out the other side with little to show, the tools people have made, are dedicated for the task they are designed to do, and it's unlikely you are going to be able to develop an competitive alternative anytime soon when you go on that journey. But what you do gain can be quite immense in understanding how to use the existing tools to their fullest. I think this type of attitude is very prominent in system/game engine engineers, which want to know ever little facets, and try to work as close to the ground as possible(i.e not simply using frameworks like SDL/SFML, or pre-built engines like Unity, panda3D, or Ogre3d). This isn't to say that those who don't look deeply into how something works can't produce amazing results, or don't have that similar level curiosity, but it's to say it's pretty easy to get lost in making a game, only to end up working on say an IK controller for game animations weeks later.

For example, i was fed up with using libpng to do a simple load of a png file, so i set off to write my own png loader, weeks of studying the specs, and figuring out how things work, in the end i was mostly successful(some png images i never got to load, but many did). however, this gave me the insight as to many of the reasons for the complexity of what libpng is doing, and gave me a much richer understanding of compression, and image data layout's.

But this type of questioning is defiantly the longer path to your goal, you might be able to reach the destination via a shorter route, but you might not have the knowledge you would have gained going down pointless paths, that don't really lead anywhere.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

#7 ChaosEngine   Crossbones+   -  Reputation: 2142

Posted 01 December 2013 - 08:54 PM

It depends. Ideally, you would know the theory behind everything. In practice, you have limits on your time.

 

You should definitely know the theory in your particular field of expertise. If you are a game designer, you should absolutely understand game design theory inside and out, but you don't need to be a 3d math genius to use your teams engine.


if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight

#8 Postie   Members   -  Reputation: 864

Posted 01 December 2013 - 09:02 PM

You can go your entire life without having to learn much theory and function perfectly well. However, you may have trouble explaining your work to anyone else, since theory also provides common terminology.


Edited by Postie, 01 December 2013 - 09:02 PM.

Currently working on an open world survival RPG - For info check out my Development blog: ByteWrangler

#9 Buster2000   Members   -  Reputation: 1419

Posted 03 December 2013 - 10:04 AM

I worked on an RPG where the designer had added a puzzle that involved breeding various creatures.  No matter how much the designer tried they just couldn't get it to work or be fun.  Somebody bought the designer a book on genetics and after a couple of days of learning the theory behind progressive and reggresive genes we had a fun mini game.  Just saying "if you mix this red sheep and this blue sheep you get a purple sheep" just wasn't fun.  When a proper genetic simulation was added it became a lot more sticky.
Without the theory it sucked with the theory it didn't.



#10 Orymus3   Crossbones+   -  Reputation: 6334

Posted 03 December 2013 - 11:27 AM

I tend to let most of the theory in the blackbox. The reason for this is that, as soon as I believe I understand something, I need to refactor/optimize it. This would lead to me developing an engine instead of a game, and this would be counter-productive for what I'm trying to achieve.

My mind does wonder though...



#11 Ravyne   Crossbones+   -  Reputation: 6774

Posted 03 December 2013 - 12:48 PM

Sometimes the Hows are necessary, particularly when you want to make leaps within a field of study or of practice; other times, the Whos, Whats, Whens, and Wheres are sufficiently clear for practice on their own. Knowing the Hows can be interesting, and will never leave you worse-off, but they're not the goal or the means behind every journey.

 

In a vacuum, knowing How is always better, but outside the vacuum, knowing How thing X works is an opportunity cost -- knowing means learning, and learning takes time, energy, and perhaps money. Learning X is time away from Learning Y, or practicing Z. In the end, we only have so much time, so much energry, and so much money, and you need to choose what things you will invest those resources in.



#12 Paradigm Shifter   Crossbones+   -  Reputation: 5149

Posted 04 December 2013 - 04:39 PM

If they'd told me Fourier Transforms were going to be responsible for real time streaming of mucky videos instead of saying they were optional and not on the exam I probably would have gone to more lectures!


"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#13 L. Spiro   Crossbones+   -  Reputation: 12290

Posted 04 December 2013 - 09:23 PM

Until you understand the theory behind what you are doing you will always be at the mercy of others.  Instead of solving problems on your own you will create problems for others to solve and your productivity will drop heavily when you have to wait for a reply/someone to help each and every time.
 
Although you may be able to contribute to the general community a fun game once-in-a-while, you will never contribute to the research community that allows games to continue to be more advanced.  Your games will most-often feel scraped together rather than clean, polished, and technically balanced.
 
You will never be the highest paid programmer in your company, never be CTO, etc.
On the plus side, companies love low-cost employees who can do the grunt work.
 
 
 
In contrast, knowing theory leaves you perfectly able to also make fun games for the general populace once-in-a-while, but also the ability to contribute to the progress of gamekind.
Even without a Bachelor’s you can show enough insight and problem-solving skills to reach top positions such as CTO and earn a much higher salary.  You can lead others.  You can use those same problem-solving skills to more efficiently solve your own problems without having to wait on others to get around to you.
You can invent new rendering techniques or help to solve problems that have yet to be solved (of which there are too many to count).
 
 
Fairly obvious when you look at it that way.
 
 

The reason for this is that, as soon as I believe I understand something, I need to refactor/optimize it. This would lead to me developing an engine instead of a game, and this would be counter-productive for what I'm trying to achieve.

So writing reusable optimized code that may or may not be classified as an engine is counter-productive for your goal, but writing unoptimized and non-reusable code that is in need of refactoring is…productive/conducive of your goal?  blink.png 
 
 
L. Spiro


Edited by L. Spiro, 04 December 2013 - 09:27 PM.

It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#14 ChaosEngine   Crossbones+   -  Reputation: 2142

Posted 04 December 2013 - 10:35 PM


Until you understand the theory behind what you are doing you will always be at the mercy of others.  Instead of solving problems on your own you will create problems for others to solve and your productivity will drop heavily when you have to wait for a reply/someone to help each and every time.

 

Again, it's a question of how deep you need to go. You will never understand all the theory. You should understand the tools you're working with, but you probably don't need to understand how the compiler, os, cpu, transistors, semi-conductive materials and quantum physics at anything other than a superficial level. Really, it's turtles all the way down. :P

 

 


So writing reusable optimized code that may or may not be classified as an engine is counter-productive for your goal, but writing unoptimized and non-reusable code that is in need of refactoring is…productive/conducive of your goal?   

 

If his goal is to get some software to market, then possibly yes.

 

As a general rule programmer time is more valuable than cpu time. Not everything needs to be reusable and super-optimised. If the existing code is Good Enough*, then really you're just wasting time (which is fine as long as the time is your own). 

 

Of course, if the code in question is used a lot and time critical... refactor away.

 

* good enough = works as expected and isn't causing a performance issue. 


if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight

#15 alnite   Crossbones+   -  Reputation: 2054

Posted 04 December 2013 - 10:53 PM


Unity uses a graphical representation of it to help set your animations. My understanding of what a state machine even was, was nil when I started, but I still managed to use it correctly without understanding it.

 

People love to label something that is actually simple in nature and practice with a name and theory that make it sound so complicated.  The term "state machine", or as Wikipedia says it, "Finite State Automata" makes it sounds so complex.  Then, people love to define and and give names to the little things happening in the system, e.g.  "It can change from one state to another when initiated by a triggering event or condition; this is called a transition."

 

Or this:

"Running is a means of terrestrial locomotion allowing humans and other animals to move rapidly on foot"

 

While this formalizes the field, and thus make it easier to discuss and write about, I personally feel that learning from theory to practice takes a much larger mental effort.  I certainly belong to the learn-by-doing camp.  My brain can't handle too much theory or instructions.  I need to back them up with practical experiences.


Edited by alnite, 04 December 2013 - 10:55 PM.


#16 TheChubu   Crossbones+   -  Reputation: 3723

Posted 05 December 2013 - 02:17 AM

I like knowing shit. Simple as that.

 

Off the top of my head, I more or less know how a refrigerator works, I more or less know how a microwave works, do I fix microwaves and refrigerators for a living? No. Does this knowledge helps me better utilize both things? Nope. Do I care? Nuh huh. I just like to know. It feels good to know, it gives a little bit of context to a little bit of a part of your life.

 

So keep calm and know stuff.


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#17 sunandshadow   Moderators   -  Reputation: 4582

Posted 05 December 2013 - 02:39 AM

I like knowing shit. Simple as that.

 

Off the top of my head, I more or less know how a refrigerator works, I more or less know how a microwave works, do I fix microwaves and refrigerators for a living? No. Does this knowledge helps me better utilize both things? Nope. Do I care? Nuh huh. I just like to know. It feels good to know, it gives a little bit of context to a little bit of a part of your life.

 

So keep calm and know stuff.

Well, it might help you not blow up the microwave or refrigerator by misusing them...


I want to help design a "sandpark" MMO. Optional interactive story with quests and deeply characterized NPCs, plus sandbox elements like player-craftable housing and lots of other crafting. If you are starting a design of this type, please PM me.

#18 ambershee   Members   -  Reputation: 524

Posted 05 December 2013 - 03:46 AM

Not everyone is the same, but I usually find the best way to understand a theory, is to try and employ it rather than to try and understand it before employing it.



#19 Aspirer   Members   -  Reputation: 544

Posted 07 December 2013 - 06:03 PM

Not everyone is the same, but I usually find the best way to understand a theory, is to try and employ it rather than to try and understand it before employing it.

 

This I think is true only for the most simple things, but the more complex you get, the more likely it is to end badly....

 

Playing with a television remote before understanding how to use the remote-- Okay

Microwaving things before knowing what happens when you microwave metal-- Potentially not okay.

Driving a car before knowing how to drive a car-- potentially less okay.



#20 TheChubu   Crossbones+   -  Reputation: 3723

Posted 07 December 2013 - 07:17 PM

Well, it might help you not blow up the microwave or refrigerator by misusing them...
Yeah, if you try really hard you can come up with practical applications for everything. Point is, I don't actively seek practical applications of what I learn. Some things I just like to know.

 

I often think, when I hear people say "Why are we learning these things if we're never going to use them?", which happens in the context of school and university (prolly we all have heard/thought the same thing more than once), I simply don't like to look at it that way.


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS