#118774 - shadowghost21 - Fri Feb 16, 2007 5:23 pm
I'm in college and I just wanted experienced programmers options. Will I need to use induction when I program in the real world? I don't use it now, I don't understand how to put crap into symbols or writing, but I can write the code that I need to process that information... Why is it necessary, and Do I really need it?
#118786 - Miked0801 - Fri Feb 16, 2007 6:41 pm
From someone who never took a class beyond Community college - what are you talking about? Induction to me is current generated from moving magnets in wires...
#118788 - Ant6n - Fri Feb 16, 2007 6:54 pm
its a proof technique where you can prove something is true for a large set of something by showing it is true for one element and then showing that if it is true for one element it has to be true for the next.
My point is that computer science is not programming, and I find it unfortunate that many 'cs degrees' degenerate to a coding degree.
#118790 - sajiimori - Fri Feb 16, 2007 7:01 pm
I've never used it at work, though I frequently do informal proofs of code correctness. Most of the correctness I'm concerned about is on a design and safety level as opposed to algorithmic.
For instance, I may want to prove that the red targeting icon appears on an enemy iff the player's 'target' data member points to that enemy. Those are the more difficult proofs, and it becomes very important to arrange code specifically to allow such things to be proven easily, e.g. by funneling all assignments to the 'target' variable through one method, and hiding the variable from all other code.
#118811 - keldon - Fri Feb 16, 2007 11:41 pm
If you are developing software for something life critical then you need to be certain there are no faults. Also think about a processor, they need to prove that the processor does everything on the tin.
#118824 - gauauu - Sat Feb 17, 2007 3:57 am
Also, the concepts of induction are very closely related to the concepts of recursion. Not that you have to know one to do the other (see Miked's post), but thinking through induction can make it easier to grasp recursion.
#118830 - keldon - Sat Feb 17, 2007 5:52 am
Maybe if I have time I can show you all the principles of specification and reasoning, but then again there is a pre requisite of knowing logic and proof and discrete structures, besides it's a whole semester! On second thoughts if you are in higher education just know to look out for those modules.
#119106 - poslundc - Mon Feb 19, 2007 7:47 pm
I have not yet in my career encountered a situation where I've been required to "prove a theorem" using sentential calculus. (I would not discount the possibility that it may be required of me some day. Perhaps if I ever work on something that isn't a game but is safety-critical. Or if I need to do automated proving for something like an AI system or optimizing compiler.)
That said, I use rules of inference every day in the code I write, although I don't usually bother to write things out with any formality (perhaps my code would have fewer errors if I did). I also do informal proofs on rare occasions (usually picking out a single method of proof) to test that my reasoning is sound.
Quote: |
I'm in college and I just wanted experienced programmers options. Will I need to use induction when I program in the real world? I don't use it now, I don't understand how to put crap into symbols or writing, but I can write the code that I need to process that information... Why is it necessary, and Do I really need it? |
Speaking as someone who interviews programmers fairly often, one of the things that tires me greatly is the frequency with which I see programmers who went to a trade-based college (ie. Video Game Highschool), did a bunch of projects and doesn't have the slightest bit of formal training to allow them to extrapolate beyond any code they've already been asked to write.
As such, lately I've taken to asking for a simple demonstration of applying DeMorgan's Theorem in most interviews (although whether or not they know the theorem by name is moot; it just lets us speed through the question if they do). This was intended as a lowball, warm-up question until it became apparent just how few candidates could do it, even with coaching.
(I am of the opinion that any programmer worth their salt should be able to apply DeMorgan's Theorem in their head, whether or not you know how to do a formal proof or know any latin symbols.)
When you say "I don't understand how to put crap into symbols or writing" it smacks of the same kind of impatience, laziness and sense of entitlement that I see all too often in these second-rate candidates. You may spend a career in video games without ever having to do a formal proof. But if that's your attitude to doing things that are closely related to your field but don't involve specifically hammering out the code (and the interviewer in me wonders, how does he take to writing documentation, or doing thorough testing for errors in his code?), then I hope it isn't at my company.
Dan.
#119115 - Mighty Max - Mon Feb 19, 2007 9:32 pm
poslundc wrote: |
As such, lately I've taken to asking for a simple demonstration of applying DeMorgan's Theorem in most interviews (although whether or not they know the theorem by name is moot; it just lets us speed through the question if they do). This was intended as a lowball, warm-up question until it became apparent just how few candidates could do it, even with coaching.
(I am of the opinion that any programmer worth their salt should be able to apply DeMorgan's Theorem in their head, whether or not you know how to do a formal proof or know any latin symbols.) |
I was somehow allways under the impression that such problems were "typical german". Seems i was wrong.
And imnsho EVERYONE should be able to apply such simpliest logical transormation. How do such ppl understand "Don't drink and drive?".
_________________
GBAMP Multiboot
#119118 - sajiimori - Mon Feb 19, 2007 10:21 pm
Well Mighty Max, what fraction of people do you think can quickly rephrase "don't drink and drive" using "or" instead of "and"?
I suspect that the fraction is lower than you think. I just used my girlfriend as a test and she could hardly believe that "don't drink or don't drive" was an equivalent statement -- and she's no dummy!
#119132 - keldon - Tue Feb 20, 2007 12:45 am
We tend to take parenthesis for granted. The phrase "don't drink and drive" is actually "don't (drink AND drive)"; which is equivalent to "(don't drink) OR (don't drive)". And the phrasing of the question is important too, you may mean to create an equivalent statement to don't drink AND drive using only the OR statement instead of the AND statement.
#119148 - Ant6n - Tue Feb 20, 2007 3:49 am
people often use 'or' when the computer scientist would say 'xor'
#119158 - keldon - Tue Feb 20, 2007 9:47 am
Yes good point, having said that I think it may be context based because if you said, "I don't want to be shot, stabbed or alone" you'd probably mean OR and not XOR ^_^
And I think it would be more correct to say that in the pattern of speech that people simply use the context that they feel appropriate. I am a computer scientist but I still use OR contextually.
#119171 - Optihut - Tue Feb 20, 2007 12:56 pm
poslundc wrote: |
As such, lately I've taken to asking for a simple demonstration of applying DeMorgan's Theorem in most interviews (although whether or not they know the theorem by name is moot; it just lets us speed through the question if they do). This was intended as a lowball, warm-up question until it became apparent just how few candidates could do it, even with coaching. |
Perhaps it's the stress of the interview situation. If I am asked about stuff that I did years back in university, but haven't used since, odds are I might not remember off the top of my head. If I actually have time to think about it or reach for a book, I can do it, of course.
#119205 - poslundc - Tue Feb 20, 2007 7:58 pm
Optihut wrote: |
poslundc wrote: | As such, lately I've taken to asking for a simple demonstration of applying DeMorgan's Theorem in most interviews (although whether or not they know the theorem by name is moot; it just lets us speed through the question if they do). This was intended as a lowball, warm-up question until it became apparent just how few candidates could do it, even with coaching. |
Perhaps it's the stress of the interview situation. If I am asked about stuff that I did years back in university, but haven't used since, odds are I might not remember off the top of my head. If I actually have time to think about it or reach for a book, I can do it, of course. |
If you haven't been using DeMorgan's Theorem in years, then you either haven't been writing very much code, or haven't been putting much thought into it when you do. Either way, I'm a lot less likely to give you the thumbs up for hiring.
(Alternately, I suppose I could say that you have not been both writing much code and putting much thought into it.)
The question isn't whether or not they know DeMorgan's Theorem outright; as I said, that's just the fasttrack to the end of the question. The question is to perform a simple boolean transformation. And I'm not one to normally make generalizations, but whether it's through memory, technique, intuition or experience (and any of those four should be sufficient solve it), any competent programmer should be able to do it.
Dan.
#119214 - Optihut - Tue Feb 20, 2007 9:41 pm
poslundc wrote: |
If you haven't been using DeMorgan's Theorem in years, then you either haven't been writing very much code, or haven't been putting much thought into it when you do. Either way, I'm a lot less likely to give you the thumbs up for hiring.
(Alternately, I suppose I could say that you have not been both writing much code and putting much thought into it.) |
I guess that's the difference between engineers and computer science people then. If I am faced with changing AND into an equivalent OR expression, I am most likely already knee deep in some minute optimisation. For initial high level programming to solve a specific problem DeMorgan's Theorem certainly isn't needed (said the engineer).
But I see your point: If it's day to day stuff that comes with the formal training, then people being interviewed for a job should know it. I agree with you there.
#119215 - Mighty Max - Tue Feb 20, 2007 9:55 pm
Quote: |
For initial high level programming to solve a specific problem DeMorgan's Theorem certainly isn't needed (said the engineer).
|
doh.
For "initial high level programming" you should at least be able to tell if a solution to a problem is even computeable. Transformation of problems (and thus deMorgan) is certainly needed for this in the most cases.
It is a common technique to check wether a problem is not solveable in acceptable time by checking if this problem is aquivalent to a NP-hard problem like the SAT-Problem. To do so DeMorgan is nearly essential.
This allready applies to the design phase. I hope you dont blindly start to code for profesional (job) purposes.
_________________
GBAMP Multiboot
#119223 - Optihut - Tue Feb 20, 2007 10:29 pm
Yes.
Mighty Max wrote: |
For "initial high level programming" you should at least be able to tell if a solution to a problem is even computeable. |
Yes.
Mighty Max wrote: |
Transformation of problems (and thus deMorgan) is certainly needed for this in the most cases. |
No.
Mighty Max wrote: |
It is a common technique to check wether a problem is not solveable in acceptable time by checking if this problem is aquivalent to a NP-hard problem like the SAT-Problem. To do so DeMorgan is nearly essential. |
Maybe.
Mighty Max wrote: |
This already applies to the design phase. I hope you dont blindly start to code for profesional (job) purposes. |
Agreed.
Regarding the topic, so far induction has been in the realm of mathematics for me as well, but again it might be different for computer science people.
#119225 - poslundc - Tue Feb 20, 2007 11:14 pm
Optihut wrote: |
I guess that's the difference between engineers and computer science people then. If I am faced with changing AND into an equivalent OR expression, I am most likely already knee deep in some minute optimisation. For initial high level programming to solve a specific problem DeMorgan's Theorem certainly isn't needed (said the engineer). |
This engineer (and yes, I am very much an engineer, accredited so) says that if you never refactor a conditional pattern as it evolves then you probably aren't thinking about the readability and maintainability of your conditions. Which is something I've observed quite a lot in more amateur code, actually: complicated conditional expressions that nobody can hope to follow because the author couldn't be bothered (or didn't know how) to simplify as they went.
This is one of the reasons they teach sentential calculus to engineers.
Dan.
#119228 - Optihut - Tue Feb 20, 2007 11:34 pm
poslundc wrote: |
This engineer (and yes, I am very much an engineer, accredited so) says that if you never refactor a conditional pattern as it evolves then you probably aren't thinking about the readability and maintainability of your conditions. Which is something I've observed quite a lot in more amateur code, actually: complicated conditional expressions that nobody can hope to follow because the author couldn't be bothered (or didn't know how) to simplify as they went.
This is one of the reasons they teach sentential calculus to engineers.
Dan. |
In the case of formulae, a simple formula is easier to handle, but the first version is usually easier to understand, so I have to disagree on that point at least. I agree that the readability and maintainability of code certainly is very important, though. Imho, making people comment their code is more important to achieving that end, than thinking about how to simplify the odd section of code.
#119242 - sajiimori - Wed Feb 21, 2007 2:51 am
Optihut, those guidelines scare me. :P
I would hate to work with anyone who uses comments as a crutch for bad code rather than rewriting it.
I would also hate to work with someone who refused to iterate on their code because "the first version is usually easier to understand".
As for DeMorgan's, it's as valuable for a simple IQ test as anything. I agree with Dan that I wouldn't hire a programmer who couldn't reason that "if A and B aren't both true, then at least one of them is false."
#119257 - SeanMon - Wed Feb 21, 2007 5:29 am
sajiimori wrote: |
As for DeMorgan's, it's as valuable for a simple IQ test as anything. I agree with Dan that I wouldn't hire a programmer who couldn't reason that "if A and B aren't both true, then at least one of them is false." |
Many people are able to reason this but not prove it on paper.
_________________
null
#119261 - sajiimori - Wed Feb 21, 2007 7:12 am
Dan didn't ask for a proof. I wouldn't, either -- it's beyond the scope.
#119264 - Ant6n - Wed Feb 21, 2007 7:45 am
i dont think the question is really about whether one needs induction or not, or whether one needs to know de morgans law specificly, its more whether one needs the general knowledge of theory and math. in my school some people ask why they need all this logic, proof techniques, multivariable calculus, linear algebra, programming paradigms, lambda caculus etc. when they do some CS or software engineering degree.
i also know many students doing very similar programs and they ask why they have to learn all this hardware stuff like c-programming, assembler programming and logic gates.
i would say the more the training covers a big base in cs related fields, the better the background, the more you get the ability solve a wider range of problems, and have more opportunities for jobs, research or further academics etc.
#119276 - Optihut - Wed Feb 21, 2007 12:54 pm
sajiimori wrote: |
Optihut, those guidelines scare me. :P
I would hate to work with anyone who uses comments as a crutch for bad code rather than rewriting it. |
I agree with you there. Fortunately I did not advocate writing bad code and then saying "oh, but I put a comment next to it, so it's all right."
#119301 - poslundc - Wed Feb 21, 2007 6:57 pm
Optihut wrote: |
I agree with you there. Fortunately I did not advocate writing bad code and then saying "oh, but I put a comment next to it, so it's all right." |
You did, however, imply that comments are more effective than refactoring, and that simply isn't the case.
We aren't splitting hairs over what is and what isn't the right way (or the "engineering" way) to code here. I've got a stack of textbooks that can already disagree with each other plenty in that regard. It simply boils down to that whether you're taught it in school or not, effective, conscientious programming requires frequent logic transformations, be they in your head or in the code.
If I see a programmer that's written a lot of code while being able to bypass picking up those skills one way or another, it's almost invariably a positive indicator that this person lacks the experience, schooling or discipline to write code with the kind of ownership and responsibility I need from them.
(And as sajimori said, it has nothing to do with whether or not they can compose a proof of it. I think I made that abundantly clear.)
Dan.
#119954 - werty - Tue Feb 27, 2007 10:08 pm
Ant6n wrote: |
its a proof technique where you can prove something is true for a large set of something by showing it is true for one element and then showing that if it is true for one element it has to be true for the next.
My point is that computer science is not programming, and I find it unfortunate that many 'cs degrees' degenerate to a coding degree. |
______________________________________________________
Thats the left brain , textual "induction" .
The Right side is 1000 times faster at Induction ,
but does not use left side textual translation .
The Right side sees pictures , with "connected"
value judgements . "Imagination"
Left , sees values only . It gets values from
the public . I.E. the English grammar system .
Thus you can not program computers with the
left side .
In programming , we use the buzz word "symbolic"
to mean assigning an image to a memory location
or proceedure or anything you like .
To be 100% symbolic , is G.U.I. , but not the lies
you get from Bill Gates , a true GUI has NO text .
When i edit text , its a pain to put thought to
paper , but when i do symbolic , i can modify
the image , till anyone anywhere on earth will
instantly imagine it .
This is the future of software ! And its much easier
to create ur own G.U.I. , w/o C++ , nor Cobol ,
nor VBASIC .
Because once you imagine how to do it ,
it surprises you , there is NO translation in
your left side , it goes straigth to the Right
side and you code it without any reading
thick doc/manuals !!
1) Programming 1000 times faster than C++ !
2) NO arbitrary 101Key KB needed , cause you will
redefine the keys to suit you !
3) you can code lowest level , but think
at the highest level !
4) It reaches absurd levels , I.E. booting an
ARM7 with no opsys at all , using 2 keys and
a bw LCD ! You can route all the expensive s/w
on earth , you can disassemble copyrighted code
in seconds , because you dont do the hacking ,
the G.U.I. automates the code scan !
I dont want to delete the EEPROM in NDS , and
start at the bottom , because the DS BIOS is actually
very good .
So i need a Viewer/debugger/peek/poke .bin
to load into my 10 DS Lites . Im a developer .
I have M#-Simply-1GB-SD .
But everything i download , dont work !
Drunkencoders gave me "Memory Viewer"
but no info on who runs it !
The Japaneese MOONSHL , in the M3 ,
wont run .BIN .
Where can i get a RAM vu'r/debugger ?
Thomas L Scott systems programmer .
#119966 - gauauu - Tue Feb 27, 2007 11:48 pm
What in the world are you talking about?
#119967 - poslundc - Wed Feb 28, 2007 12:13 am
gauauu wrote: |
What in the world are you talking about? |
You took the words right out of my mouth.
Dan.
#119971 - Firon - Wed Feb 28, 2007 12:32 am
I think kusma explained it best.
kusma wrote: |
please give me the number to your dealer... |
#120043 - gauauu - Wed Feb 28, 2007 3:49 pm
Maybe some of the mods could come in and delete this guy's posts. I don't mind people posting nonsense if they must, but to take over every active thread with nonsense is a little annoying.
#120052 - sgeos - Wed Feb 28, 2007 4:37 pm
I think this guy should get a warning and have his account suspended if he does not stop being antisocial.
-Brendan
#120056 - werty - Wed Feb 28, 2007 5:02 pm
gauauu wrote: |
What in the world are you talking about? |
Easier method to program and interact and work
with computers . Unfortunately , it will remove
WIZARD status from millions of ppl employed in
computers , sorry abou that .
It removes all the detail , and leaves only the
logic , so we can program clearly and 100 times
faster .
Now its your turn ,
tell us about C++ and how powerful and fast it is !
And how anyone can script it to do powerful things !
Im developing s/w for the new ARM cpu's .
No need to learn modern language like English
or German , you can program it w/o text or
any schooling ...
Everything i do is free , ask and i will help .
#120062 - poslundc - Wed Feb 28, 2007 6:45 pm
werty wrote: |
Now its your turn ,
tell us about C++ and how powerful and fast it is !
And how anyone can script it to do powerful things ! |
Werty, this thread was about mathematical induction, not programming techniques. You've hijacked it with absolute nonsense.
Dan.
#120081 - sgeos - Wed Feb 28, 2007 11:47 pm
poslundc wrote: |
Werty, this thread was about mathematical induction, not programming techniques. You've hijacked it with absolute nonsense. |
I'm fairly sure this is a bot/script generated reply.
-Brendan
#120110 - SimonB - Thu Mar 01, 2007 2:16 am
Ive sent a PM to...him...if he doesnt reply Ill delete the account.
Simon
#120267 - werty - Fri Mar 02, 2007 4:13 am
gauauu wrote: |
Maybe some of the mods could come in and delete this guy's posts. I don't mind people posting nonsense if they must, but to take over every active thread with nonsense is a little annoying. |
------------------------------------------------------
"...every active thread " ? Gross lies .
You are an obstructionist . You protect your belabored
methods , to impress , to be a WIZARD , because you
can not compete .
I give new , easier methods to program the 10 DS Lites
i own .
These methods will cut waste by 500% , by eliminating
the "definition" of definitions , that all programmers ,
use . It will be a free method to use touch screen to
program in minutes , what takes you days !
No "commands" to learn , just drag your finger
across the screen and if you like what it did , use it ,
if you did not undestand , try something else .
This is the most productive programming .
No manuals , no tutrials , just get 'hands on"
and start programming .
Your job will be eliminated .
#120268 - tepples - Fri Mar 02, 2007 4:23 am
Your description of your system sounds as if it were inspired by LabVIEW or Widget Workshop. Are you familiar with those?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#120272 - werty - Fri Mar 02, 2007 4:34 am
When you say "I don't understand how to put crap into symbols or writing" it smacks of the same kind of impatience, laziness and sense of entitlement that I see all too often in these second-rate candidates. You may spend a career in video games without ever having to do a formal proof.
But if that's your attitude to doing things that are closely related to your field but don't involve specifically hammering out the code (and the interviewer in me wonders, how does he take to writing documentation, or doing thorough testing for errors in his code?), then I hope it isn't at my company.
Dan.[/quote]
--------------------------------------------------------------------
Scatter brain . Can he code , or can he write , which ?
Coders can't write , because coding is Right cerebral C'
100% of writters work from the Left C' C' .
I am a scientist , and progammer .
Would you care to compete with me ?
I do programming , im the worlds fastest systems
programmer .
What makes me the best , is , I toss anything that
interferes with clear , concepts and productivity .
The English language is a detour to good programming ,
it is ambigous , arbitrary , so i toss it , i dont use anything
that would be misunderstood .
I have no source code , you must get your hands
on my s/w and USE it , and if you have no imagination
, then you wont get anything from it .
Programming is ALL imagination and zero
copying .
This is a fast changing world of computers ,
very soon , no one will use Linux nor C .
Owners try to protect their h/w and s/w . It's
It is useless . New h/w , obsoletes old CPU's
and the fast programmers , create everything
new , and you end up with NOTHING to protect !
I've seen it many times , this time will be the elimination
of 99% of the people in computers .
You also . There will be no game programmers
no C/C++ programmers , BASIC will never be
heard of and ultimately the word Software will
be eliminated from the dictionary , the CPU will
be programmed at high level , using images ONLY .
You wont have a position as moderator , because
the arguements here will stop ...
I am the worlds fastest systems programmer ,
and i'm taking away your thunder !
#120273 - sajiimori - Fri Mar 02, 2007 4:52 am
Hey werty, almost everyone here thinks you're nuts. If you are so good at clarity, why doesn't anyone understand you?
Talk is cheap. Post some work you've done that you think is great.
#120276 - tepples - Fri Mar 02, 2007 5:59 am
sajiimori wrote: |
Hey werty, almost everyone here thinks you're nuts. If you are so good at clarity, why doesn't anyone understand you? |
I'm good at clarity, but when I play Animal Crossing on my GameCube, none of the animals in Chadonn really understand my letters.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#120280 - Ant6n - Fri Mar 02, 2007 8:21 am
this aint gangsta rap, its geek rap!
#120356 - poslundc - Sat Mar 03, 2007 4:07 am
Quote: |
I do programming , im the worlds fastest systems programmer . |
If one were to take your refusal to give a demonstration of a single system you've ever programmed as an indication that you haven't ever programmed a system of any kind, it would make you infinitely fast, even.
werty wrote: |
I am a scientist , and progammer .
Would you care to compete with me ? |
I don't really have time to compete; I'm too busy writing code at my job, where they pay me to do that sort of thing, mostly because it results in something tangible that can run on a computer and people can use.
Good to know that your non-source-code and imagination have made me obsolete, though! Let me know how that works out.
Dan.
#120357 - sajiimori - Sat Mar 03, 2007 4:50 am
Code: |
> let hoursPerSystem = totalCodingHours / numSystems
in print("I can program a system in " .. hoursPerSystem .. " hours!")
** Unhandled exception: divide by zero.
|
#120762 - Abscissa - Tue Mar 06, 2007 12:03 am
Sounds like a recruiter for some weird programmer cult.