The Other Worlds Shrine

Your place for discussion about RPGs, gaming, music, movies, anime, computers, sports, and any other stuff we care to talk about... 

  • Thinking like a programmer

  • Somehow, we still tolerate each other. Eventually this will be the only forum left.
Somehow, we still tolerate each other. Eventually this will be the only forum left.
 #124398  by Kupek
 Tue Jul 22, 2008 10:39 am
Interesting blog post about the kind of thinking require for programming: http://esr.ibiblio.org/?p=316

The last line, in particular, concisely states what I've known I do for years: "[S]uccessful CS students are those who, given a set of facts, will instinctively seek a consistent generative model to connect them."

Give me a set of facts, and I'll try to construct rules around those facts. In real life, that's sometimes not a good idea because most sets of facts are inadequate to represent what's going on. But in a computer system, it sometimes is enough.

Similarly, when I pick up a new programming language, the best thing for me to do is look through examples that solve a simple problem I understand. Since programming languages are simple compared to natural languages, I can usually extract the general rules.

Figured this might be of interest to the programmers here.

 #124399  by Lox
 Tue Jul 22, 2008 11:11 am
I'll have to check out the article later when I'm not busy fixing memory leaks. :p It sounds very interesting though.

Yeah, I completely get what you mean about trying to instinctively fit all of the known facts into a model. I know that as I began my CS Bachelor's degree, I did not have that and it shows in old code that I wrote. It's much more strung together and less consistent. As I've grown as a programmer and practiced and learned, it's become kind of second nature to try to fit everything into those models.

I think I've actually changed in my personal life as a result. Kind of how you said you try to do the same thing with real world problems. I find myself doing the same thing and responding to other people in a way that tries to fit everything into a logical pattern.

 #124440  by SineSwiper
 Tue Jul 22, 2008 9:41 pm
I don't quite understand. I mean I probably act that way, but aren't rules and facts about the same thing?

 #124456  by Ishamael
 Wed Jul 23, 2008 12:02 am
Makes sense. In order to write decent software, this kind of skill is absolutely necessary, though most programmers probably don't conciously think about it.

 #124461  by Kupek
 Wed Jul 23, 2008 1:28 am
SineSwiper wrote:I don't quite understand. I mean I probably act that way, but aren't rules and facts about the same thing?
Not really. In this context, a fact is "this happened, that happened, and something else happened." The rules are figuring out the relationships among those facts; what caused what and why. That rule making is what they mean by "generative model."

The rules are different from straight facts because once you have rules in mind, you can propose different possibilities and figure out the implications.

 #124481  by SineSwiper
 Wed Jul 23, 2008 10:18 pm
Kupek wrote:The rules are different from straight facts because once you have rules in mind, you can propose different possibilities and figure out the implications.
Oddly enough, I work with people who think in the same fashion but are not programmers. They are project managers. It's truly a different language set, but the different types of project models are almost surreal and they have one for every situation. I'm actually going to go to a PM training class next week, so I'll learn more about them later.