Page 1 of 2 12 LastLast
Results 1 to 10 of 16

Thread: Your Relationship and Perception of Programming

  1. #1
    Meae Musae Servus Hephaestus's Avatar
    Type
    eNTP
    Join Date
    Dec 2013
    Location
    Ceti Alpha V
    Posts
    14,519

    Your Relationship and Perception of Programming

    What is your view of what programming is?

    That's not the best way to phrase the question... but I'm not sure how to phrase it without introducing my own underlying biases, which defeats the purpose of the question, which is "do other people who are better programmers see programming remotely similar to how I do?"

    For example, my next best iteration would be "What is your meta-cognitive relation to programming and your paradigm for viewing programming languages as an abstract concept?"

    It's a more accurate question, but it's a bit unwieldy to unpack and once unpacked... a bit leading. But if you're the sort of person for whom that question makes the world go a little "Whoah" then I'm definitely interested what your reply would be.
    People think they understand their own mortality, even when that understanding has just changed.

    --Meditations on Uncertainty Vol ξ(x)

  2. #2
    Sysop Ptah's Avatar
    Type
    INTP
    Join Date
    Dec 2013
    Location
    Chicago
    Posts
    5,276
    Programming is telling a computer what to do.

  3. #3
    Meae Musae Servus Hephaestus's Avatar
    Type
    eNTP
    Join Date
    Dec 2013
    Location
    Ceti Alpha V
    Posts
    14,519
    Quote Originally Posted by Ptah View Post
    Programming is telling a computer what to do.
    And all books are just words strung together--but the mental response is more than that.

    Programming involves telling a mental model what to do first, and that, for me, has a mind-feel that has changed over the years, as has the way I percieve the end state of "telling the computer what to do".

    It was a coin flip whether you in particular would go pithy or Tron.

    Does that help explain what I'm poking at?
    People think they understand their own mortality, even when that understanding has just changed.

    --Meditations on Uncertainty Vol ξ(x)

  4. #4
    Faster. Than. Ever. Sloth's Avatar
    Type
    INTP
    Join Date
    May 2014
    Location
    Somewhere, I'm sure.
    Posts
    2,611
    I wish I had something more profound to write, but my programming experiences are limited.

    I took it as an elective in high school, and I forget which language we were learning. I was very good at it at first, I was picking it up as fast as the kids who had already taught themselves some programming languages prior. I hit a wall towards the end of the course though when things started to get really advanced, and I found myself in the majority that was thoroughly confused about why our programs weren't working the same way that the kids who already knew some programming did.

    I think if I was more passionate about it I could have powered through. I wish I had a deeper interest in it because at the time there were A TON of scholarships and opportunities for female programmers (trying to get more into the field) that my teacher encouraged me to look into when he saw I was picking it up quickly for most of the semester. I found it very interesting, and I'm glad I took that class because it did give me an appreciation for what goes into even simple programs.

    Funnily enough though, even though that course didn't lead to a career in programming it ended up being a major catalyst in my console FPS career

    I made friends with the programming dweebs of the class, and during lunch the teacher would allow them and a few others from other classes he taught to come in and have Counter Strike and Quake lan parties (he'd let students he wasn't teaching join too, they would just have to talk to him first). I eventually got invited to this and it was amazing! I'll never forget the day when I had one of the best glory moments of the entire year: we were playing CS and decided to play a round with AWPs only, and I was the last person alive on my team with 3 enemy players still alive.

    I only took 3 shots -

    *Boom* 1st head shot.

    -small cheer-

    Turn the corner, *boom* 2nd head shot.

    -medium cheer-

    Turn back around, and *boom* 3rd head shot, won the match.

    Spoiler:



    Ah anything to tell that story.

  5. #5
    Sysop Ptah's Avatar
    Type
    INTP
    Join Date
    Dec 2013
    Location
    Chicago
    Posts
    5,276
    Quote Originally Posted by Hephaestus View Post
    And all books are just words strung together--but the mental response is more than that.

    Programming involves telling a mental model what to do first, and that, for me, has a mind-feel that has changed over the years, as has the way I percieve the end state of "telling the computer what to do".

    It was a coin flip whether you in particular would go pithy or Tron.

    Does that help explain what I'm poking at?
    Um. Not sure?

    My internal mental state is irrelevant to (and has no bearing on) the objective, observable facts (qua cause->effect) of the matter, and so my statement to and of the latter, with regard to "my view of programming".

  6. #6
    Meae Musae Servus Hephaestus's Avatar
    Type
    eNTP
    Join Date
    Dec 2013
    Location
    Ceti Alpha V
    Posts
    14,519
    Quote Originally Posted by Ptah View Post
    Um. Not sure?

    My internal mental state is irrelevant to (and has no bearing on) the objective, observable facts (qua cause->effect) of the matter, and so my statement to and of the latter, with regard to "my view of programming".
    Ok. It's one of the possible views, and one I suspect is very common. I'm very introspective and it flows into my coding and perception of coding, and learning about programming.

    Question--how low level of code have you written? I remember you said you wrote your own CLI, so I assumed you had done some serious bit-twiddling and register fiddling in addition to the higher level stuff like JS.

    To what degree do you consider what "telling the computer what to do" means?

    I'm a "electron up" kind of guy.

    Quote Originally Posted by Sloth View Post
    I wish I had something more profound to write, but my programming experiences are limited.

    I took it as an elective in high school, and I forget which language we were learning. I was very good at it at first, I was picking it up as fast as the kids who had already taught themselves some programming languages prior. I hit a wall towards the end of the course though when things started to get really advanced, and I found myself in the majority that was thoroughly confused about why our programs weren't working the same way that the kids who already knew some programming did.
    Yeah--that wall is a sumbitch. I've had similar experiences with coursework. I do really well when we're talking abstract stuff, string manipulation, and text input/output type things, but then they suddenly leap into making GUI's without the intermediate step of how the fuck you do that and exploring how the bits and bobs do their shit and I get stumped fast.

    At one point in time I could make a multi-meter from components (no promises about accuracy or precision) but I get blocked if I have to do anything that displays something other than text to stdout, or a writes to a file.

    (Note: sort of. I can do some stuff if I can spot an API handle for it, but that's not really the same thing IMSO.)
    People think they understand their own mortality, even when that understanding has just changed.

    --Meditations on Uncertainty Vol ξ(x)

  7. #7
    Sysop Ptah's Avatar
    Type
    INTP
    Join Date
    Dec 2013
    Location
    Chicago
    Posts
    5,276
    Quote Originally Posted by Hephaestus View Post
    Question--how low level of code have you written? I remember you said you wrote your own CLI, so I assumed you had done some serious bit-twiddling and register fiddling in addition to the higher level stuff like JS.
    Low-level? Assembler on 6502-type chips, X86 chips, etc. Or in the case of 6502 (still as an active hobby), just plain bytecoding often enough. Yes, I'm familiar with programming ala processor-level registers, interrupts, and so on. Not what I spend most of my time doing anymore, but it was my "sophomore" phase of programming as a teen, and carries through as a hobby pursuit today. Most of what I do, professionally, is Java, C#, web stuff (javascript, etc), and so on; boring business applications mostly. Hobby-wise, I play around in things from assembler to Lisp to C++, depending on what I'm pursuing/tinkering with at the time.

    To what degree do you consider what "telling the computer what to do" means?
    I guess I don't quite get your question, but I'll try to answer anyhow.

    It means: programming is an activity, as in a physical activity -- actions conveyed through my body into/upon a device. Say, typing on a computer's keyboard. Through this activity, I am entering instructions into the machine, taken together as "programs" which reduce to telling it, "in response to this input/event, perform these operations".

    That's programming -- the activity of entering instructions (well ... and debugging them, although that's a bit of its own thing, see below). Of course, there's a whole universe of mental activity, in terms of abstractions, philosophical ideas, etc, etc. But that's not programming. That's brainstorming. Similar brainstorming activity, albeit in terms of different mental models, occurs when writing fiction, or devising session material to GM in an RPG, etc. Brainstorming != programming.

    As for debugging, yes it leverages and involves programming knowledge and activity, but I assess it as a distinct skill, for it also involves troubleshooting, problem-solving, and knowledge about computers that is beyond any given programming language (assembler included).

    That is to say, I've seen people who are decent programmers in a sense, but terrible debuggers. And vice-versa. Personally, my mind moves through similar, but distinct mental spaces and operations between the two, programming vs. debugging (just as it does between writing and editing prose, etc).

    If I want to use a term that includes both (along with some other related skills, such as design), I'd say something like "software development" or "software engineering", depending on the details and context.

  8. #8
    Faster. Than. Ever. Sloth's Avatar
    Type
    INTP
    Join Date
    May 2014
    Location
    Somewhere, I'm sure.
    Posts
    2,611
    Quote Originally Posted by Hephaestus View Post
    Yeah--that wall is a sumbitch. I've had similar experiences with coursework. I do really well when we're talking abstract stuff, string manipulation, and text input/output type things, but then they suddenly leap into making GUI's without the intermediate step of how the fuck you do that and exploring how the bits and bobs do their shit and I get stumped fast.
    Wow that is exactly where I started getting lost, when we started scratching the surface of making GUI's.

    I remember there was one day when we had to program a random color generator, and I could tell that was the beginning of the end of the small edge my smarts gave me. We had the entire class period to do it, and what I was supposed to do just went over my head. I'm a damned good problem solver if I may say so, and so I managed to figure out how to create a color generator, but not a random color generator. So I tried to game the system by using my color generator and manually adding in about 100 color hex codes, hoping my teacher wouldn't notice (he would usually check if our programs worked by actually using our programs. He only checked the code if he thought there was something suspicious or if that student had asked for his help repeatedly throughout the class).

    So he came up to my computer and starting using my "random" color generator. He kept pressing the button that generated the color, and after a bit he tilted his head slightly and opened up my code and laughed. He sat with me and helped me through it, I sort of got it by the end. The programs we had to make after that were very confusing from there on out.


    I did something very similar in my physics class that same year (not to get the thread off topic, but I'm kind of proud of this one and anything to tell this story too lol, plus it's kind of the same thing just in a different class). I somehow wiggled my way into honors physics (I should not have been there having only taken Algebra II). I was completely lost for most of the class because physics, calculus, and trigonometry go together like peas and carrots. There was one day when we had to solve a problem that stumped the entire class, and after about 30 minutes I said "screw it" and broke from the formula we were supposed to use and made my own that seemed to make sense given the problem we were solving. I was one of the first people to finish, took it up to the teacher, he saw my circled answer and said "that's the correct answer" and as I was about to take my paper from him he pulled away and said "wait a minute." and looked through how I got there.

    He also laughed in a not so different way from my programming teacher and said "Hm. I'm only going to give you half credit because the way you solved this only works with this exact problem. The formula I taught you can be applied to this type of problem when the parameters change, your way doesn't work once the parameters change."



    If anyone reads that and thinks "but Sloth! You could be a physics prodigy!" I'd like to re-emphasize that I only did that because I had no idea what the hell was going on, and I passed the class with a C-

    I think back on that whenever I hear someone talking about learning to do things the "correct" way. I was frustrated and proud at the same time.

  9. #9
    Sysop Ptah's Avatar
    Type
    INTP
    Join Date
    Dec 2013
    Location
    Chicago
    Posts
    5,276
    Quote Originally Posted by Hephaestus View Post
    Yeah--that wall is a sumbitch. I've had similar experiences with coursework. I do really well when we're talking abstract stuff, string manipulation, and text input/output type things, but then they suddenly leap into making GUI's without the intermediate step of how the fuck you do that and exploring how the bits and bobs do their shit and I get stumped fast.
    If I'm interpreting that correctly, that sounds like something that causes a knee-jerk itch in me ... when I'm confronted by a black-box of a library or platform that intrudes its way into my being productive on some desired front. Hell, even some higher-level languages cause this itch. The scratch? I do all I can to pull it apart, learn how it works. That may take the form of dissecting any available documentation, etc. I may -- and often enough do - resort to poking at building my own version of whatever is balking me as a black box. Not to use (necessarily), just for the sake of the knowledge-exploration of it. Hence, I've written (or prototyped) GUI layers, CLIs, whole languages (interpreters if not compilers), file systems, and such -- just so I can grok, hands-on grok qua appreciate/understand, what a given library or platform must be doing under the hood. This allows me accept it, but also arms me with a kind of educated-guesswork of knowledge about it, such as becomes handy in debugging the real-deals. Nowadays, with the advent of open-source and matured decompiling tools, prying at the original source can greatly alleviate the itch, although not entirely or always. Sometimes looking at the source (or decompiled equiv) of a given library will inspire me to go poke at trying to make my own. Not to improve on it or anything like that necessary, just to see if I can do it myself.

    I remember when I first saw a GUI OS, it was GEOS on the C64, I think. I was blown away, but given one hell of the itch, as such. That put me on a years-long passion project to reverse-engineer and/or re-invent the wheels of such a GUI, as such, ha. Just so I could have some claim to truly understanding it.

  10. #10
    Meae Musae Servus Hephaestus's Avatar
    Type
    eNTP
    Join Date
    Dec 2013
    Location
    Ceti Alpha V
    Posts
    14,519
    Quote Originally Posted by Ptah View Post
    Most of what I do, professionally, is Java, C#, web stuff (javascript, etc), and so on; boring business applications mostly. Hobby-wise, I play around in things from assembler to Lisp to C++, depending on what I'm pursuing/tinkering with at the time.
    This is the dream I'm pursuing at the moment with a prospective employer I'll be interviewing with early next year. I really like what they've shown regarding their culture. Checks a lot of the right boxes for me. They seem to favor the sort of person who wants to spend their time tinkering--my pitch is: I'll do this work for you, learn from it, and use my paychecks as a warchest to make my own shit.



    I'm thinking I should probably keep the "MwahHahaHAH!" silent.

    Just because it's boring business crap doesn't mean I can't learn cool tricks and elevate my fluency for the fun stuff at home.


    If I want to use a term that includes both (along with some other related skills, such as design), I'd say something like "software development" or "software engineering", depending on the details and context.
    I think we've successfully debugged the conversation. It's a semantic issue. What I mean is "software engineering". The meta-landscape of how you think about code, data structures and whatnot. One of the things I like about it is the feel of scientifically carving out a reality of my own design. The structures I create feel like actual things inside my head. I'm mentally manipulating ideas much as one might manipulate a raw material, but I'm also summoning the raw material into existence as well--BUT there are rules that have to be grokked to get there. It's like the promise of mathematics, but without all the physical sweat once you work out the equations.

    Unless you need to build a physical machine to run your code--and that's a blast in and of itself.

    Quote Originally Posted by Sloth View Post
    Wow that is exactly where I started getting lost, when we started scratching the surface of making GUI's.

    I remember there was one day when we had to program a random color generator, and I could tell that was the beginning of the end of the small edge my smarts gave me. We had the entire class period to do it, and what I was supposed to do just went over my head. I'm a damned good problem solver if I may say so, and so I managed to figure out how to create a color generator, but not a random color generator. So I tried to game the system by using my color generator and manually adding in about 100 color hex codes, hoping my teacher wouldn't notice (he would usually check if our programs worked by actually using our programs. He only checked the code if he thought there was something suspicious or if that student had asked for his help repeatedly throughout the class).

    So he came up to my computer and starting using my "random" color generator. He kept pressing the button that generated the color, and after a bit he tilted his head slightly and opened up my code and laughed. He sat with me and helped me through it, I sort of got it by the end. The programs we had to make after that were very confusing from there on out.


    I did something very similar in my physics class that same year (not to get the thread off topic, but I'm kind of proud of this one and anything to tell this story too lol, plus it's kind of the same thing just in a different class). I somehow wiggled my way into honors physics (I should not have been there having only taken Algebra II). I was completely lost for most of the class because physics, calculus, and trigonometry go together like peas and carrots. There was one day when we had to solve a problem that stumped the entire class, and after about 30 minutes I said "screw it" and broke from the formula we were supposed to use and made my own that seemed to make sense given the problem we were solving. I was one of the first people to finish, took it up to the teacher, he saw my circled answer and said "that's the correct answer" and as I was about to take my paper from him he pulled away and said "wait a minute." and looked through how I got there.

    He also laughed in a not so different way from my programming teacher and said "Hm. I'm only going to give you half credit because the way you solved this only works with this exact problem. The formula I taught you can be applied to this type of problem when the parameters change, your way doesn't work once the parameters change."



    If anyone reads that and thinks "but Sloth! You could be a physics prodigy!" I'd like to re-emphasize that I only did that because I had no idea what the hell was going on, and I passed the class with a C-

    I think back on that whenever I hear someone talking about learning to do things the "correct" way. I was frustrated and proud at the same time.
    I can relate! Though it sounds like the part you stumbled over was the psuedo-random part. Technically () you did make a psuedo-random table, you just failed to insert a source of entropy. Lemme esplain:

    Back in the days of pocket-protectors, when birth control glasses weren't hip and the most common aid for doing arithmetic was a slide-rule, there was a method for generating random numbers that is quite similar to the setup you've described. People put together books of numeric sequences. Pages and pages of just numbers. You worked it in a manner a bit like a Chinese dictionary--the first thing you looked up gave you the place to look for your random number.

    The basic idea was you flopped it open, closed your eyes and stabbed at the page with a pencil. That would give you your first five digit random number. You then did an algorithm on that five digit sequence to tell you what page, line and column to get your real random number(s) from.

    An interesting related topic: the Numbers game--where we get mob jobs like numbers runners, and ultimately state lotteries from. Obviously if your work requires more random numbers than you can get from race results, you need something like these compendiums.

    I recommend clicking on the cover image and checking out the sample of the contents. In addition to a portion of the tables, they have some of the instructions, including recommendations to avoid consistency (it's supposed to be an entropy maker!) and descriptions of how the numbers were made in the first place.

    At any rate, the relation to what you attempted is that with an entropy source you could have picked from your colour table at random, but it's not necessary because colours are just numbers so if you get a rando number you have a rando colour. Your instructor was probably familiar with books like the one I linked, and that may have factored in to his bemusement.


    I've also had similar experiences to the one you describe about figuring out how to solve a problem because you didn't remember or understand the "right" way. I passed a couple tests because I was able to metaphorically re-invent the fucking wheel in time--which really helped on those nights studying higher maths when my brain was fried, my proofs weren't coming, and I was too tired and caffeinated to read. When you're struggling with the work, your mind tends to look for an easier problem like: "Why am I doing this to myself?"

    Those little victories were my candle of faith on those dark nights.

    Quote Originally Posted by Ptah View Post
    If I'm interpreting that correctly, that sounds like something that causes a knee-jerk itch in me ... when I'm confronted by a black-box of a library or platform that intrudes its way into my being productive on some desired front. Hell, even some higher-level languages cause this itch. The scratch? I do all I can to pull it apart, learn how it works. That may take the form of dissecting any available documentation, etc. I may -- and often enough do - resort to poking at building my own version of whatever is balking me as a black box. Not to use (necessarily), just for the sake of the knowledge-exploration of it. Hence, I've written (or prototyped) GUI layers, CLIs, whole languages (interpreters if not compilers), file systems, and such -- just so I can grok, hands-on grok qua appreciate/understand, what a given library or platform must be doing under the hood. This allows me accept it, but also arms me with a kind of educated-guesswork of knowledge about it, such as becomes handy in debugging the real-deals. Nowadays, with the advent of open-source and matured decompiling tools, prying at the original source can greatly alleviate the itch, although not entirely or always. Sometimes looking at the source (or decompiled equiv) of a given library will inspire me to go poke at trying to make my own. Not to improve on it or anything like that necessary, just to see if I can do it myself.

    I remember when I first saw a GUI OS, it was GEOS on the C64, I think. I was blown away, but given one hell of the itch, as such. That put me on a years-long passion project to reverse-engineer and/or re-invent the wheels of such a GUI, as such, ha. Just so I could have some claim to truly understanding it.
    Yeah, I get that itch too. Though my itches are usually oriented more toward "Is it possible?". It caused me to have poor grades in math and science in high school because I'd pursue the itch, but fall behind because I was pursuing that itch. I did much much better in uni because I swallowed my pride and started taking things on faith first, mastering the mechanics, and then spending my free time picking them apart. It was one of those paradigm shifts that involves admitting you're an idiot.


    The situation I'm talking about though is more akin to spending a bunch of time learning all kinds of interesting things about chess, and then being told to drive a car, but there isn't even a car in sight. Just a picture of the car you're supposed to drive, and a note saying there are directions from Mapquest on how to get to the next destination in the glove box of a car they don't even tell you where is--and you've never driven before in your life.

    That is to say, I know there is a black box. But I don't know where it is, or what it is. If I knew any of that, I would do as you say: rip it apart until I understood it inside and out, then I'd make a goddamn Maserati with it (to shamelessly abuse the preceding metaphor).

    I think my current favorite story of such a victory was in my probability class. The first test came along, and I was one of five people who failed it. That's not how things usually went for me, so it was rough for a moment. The professor called us in for private consultations in office hours and he expressed his bafflement at my failure because I'm an active student. I speak up in class and ask good questions because I pay attention--I was one of the last people he expected to do poorly. I was one of the last people he expected to not excel.

    I went out and bought a "For Dummies" book to supplement my material because it couldn't embarrass me any more than I already was. It was pretty damn good too. I read it cover to cover, and I not only did all the homework exercises from class and all the example problems in the book, I recognized some recurring patterns in the book and I made my own derivations of the advanced concepts from the most elemental principles.

    By the time the next mid-term rolled around I had mastered everything we'd covered so far, and was a bit ahead of the class in material--and light years beyond in comprehension because no matter what the problem was, I didn't even need to memorize the different equations. I could build them on demand, and see how they were the same thing. It was like there was this one equation made of modular parts, and depending on the problem, you turned on different modules, and I grokked why.

    Can't do it now though!

    Haven't needed or used the skills in too long, and that level of mastery requires maintenance.
    People think they understand their own mortality, even when that understanding has just changed.

    --Meditations on Uncertainty Vol ξ(x)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •