Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. What every programmer should know about...

What every programmer should know about...

Scheduled Pinned Locked Moved The Lounge
csharpc++htmlcomtools
43 Posts 20 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D dojohansen

    Did you even read them yourself? I suspect you did not. Or do you seriously think that every programmer needs to know the circuit diagram for a 6-transistor SRAM cell? Or the capacitor charge and discharge timing of DRAM cells? The entire first part (which is substantial) consists of hardware details that are utterly irrelevant to the vast majority of programmers. In fact, only those who write assembly code (or compilers - i.e. programs that write assembly code) could even potentially use detailed knowledge about the internal caching design of modern CPUs. Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

    T Offline
    T Offline
    ToddHileHoffer
    wrote on last edited by
    #21

    Well said.

    I didn't get any requirements for the signature

    1 Reply Last reply
    0
    • N Nemanja Trifunovic

      Granted, our profession would benefit from increase in standards, but this is simply not realistic: What every programmer should know about memory[^] What Every Computer Scientist Should Know About Floating-Point Arithmetic[^]

      Programming Blog utf8-cpp

      C Offline
      C Offline
      Chris Losinger
      wrote on last edited by
      #22

      Nemanja Trifunovic wrote:

      What every programmer should know about memory[^]

      does .Net have classes to handle capacitor discharge and DRAM column de-multiplexer control, or do i have to handle this in C++ ?

      image processing toolkits | batch image processing

      1 Reply Last reply
      0
      • L Lost User

        dojohansen wrote:

        Did you even read them yourself? I suspect you did not.

        Of course I did.

        dojohansen wrote:

        Or do you seriously think that every programmer needs to know the circuit diagram for a 6-transistor SRAM cell? Or the capacitor charge and discharge timing of DRAM cells?

        No, they don't need to remember it, but they should know that it works that way (not the exact diagram and figures)

        dojohansen wrote:

        could even potentially use detailed knowledge about the internal caching design of modern CPUs.

        Cache trashing is far to easy to get, for example with naive large-matrix multiplication..

        dojohansen wrote:

        Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

        That is definitely true.

        D Offline
        D Offline
        dojohansen
        wrote on last edited by
        #23

        harold aptroot wrote:

        No, they don't need to remember it, but they should know that it works that way (not the exact diagram and figures)

        Why? Why should programmers have to even know that memory is implemented in transistors? I'm sure the article contains a lot of stuff that is of great use to some programmers. But like the OP, I take issue with the sweeping generalization that every programmer needs to know this. Perhaps I'm too generous in my usage of the term, but based on my sampling of code project articles I should think there are quite a few people out there who consider themselves programmers yet wouldn't know what a NorthBridge is. Personally, I think it is in many cases far better for the compiler to worry about hardware optimizations and for the programmers to worry about maintainable, reuseable code, extensibility, economy, useability, testability, and so on. Again, the priorities are not the same for ALL programmers, but I'd say that the majority of us need not and indeed should not assume anything about the CPU caching or other hardware implementation details when coding.

        L 1 Reply Last reply
        0
        • D dojohansen

          Yeah, but the fact that programming is becoming easier is a good thing. Maybe not for programemrs' salaries, but for society as a whole... surely a good thing.

          Steve EcholsS Offline
          Steve EcholsS Offline
          Steve Echols
          wrote on last edited by
          #24

          No, it's not a good thing. VB made programming easier, and it made a lot of people think they were programmers, which gave the programming profession as a whole a black eye. IMHO. Take a look at the questions being asked in the forums, and you'll see what making programming easier leads to. :)


          - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

          • S
            50 cups of coffee and you know it's on!
            Code, follow, or get out of the way.
          D 1 Reply Last reply
          0
          • D dojohansen

            harold aptroot wrote:

            No, they don't need to remember it, but they should know that it works that way (not the exact diagram and figures)

            Why? Why should programmers have to even know that memory is implemented in transistors? I'm sure the article contains a lot of stuff that is of great use to some programmers. But like the OP, I take issue with the sweeping generalization that every programmer needs to know this. Perhaps I'm too generous in my usage of the term, but based on my sampling of code project articles I should think there are quite a few people out there who consider themselves programmers yet wouldn't know what a NorthBridge is. Personally, I think it is in many cases far better for the compiler to worry about hardware optimizations and for the programmers to worry about maintainable, reuseable code, extensibility, economy, useability, testability, and so on. Again, the priorities are not the same for ALL programmers, but I'd say that the majority of us need not and indeed should not assume anything about the CPU caching or other hardware implementation details when coding.

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #25

            Have you ever noticed how the "programmers" who don't know how a computer even works are generally completely clueless when it comes to optimization? And don't tell me that optimization is not important, especially caching optimizations are getting more important by the day due to the growing speed gap between RAM and processors. Other optimizations are still relevant in games and other high-performance software.

            D 1 Reply Last reply
            0
            • L Lost User

              dojohansen wrote:

              Did you even read them yourself? I suspect you did not.

              Of course I did.

              dojohansen wrote:

              Or do you seriously think that every programmer needs to know the circuit diagram for a 6-transistor SRAM cell? Or the capacitor charge and discharge timing of DRAM cells?

              No, they don't need to remember it, but they should know that it works that way (not the exact diagram and figures)

              dojohansen wrote:

              could even potentially use detailed knowledge about the internal caching design of modern CPUs.

              Cache trashing is far to easy to get, for example with naive large-matrix multiplication..

              dojohansen wrote:

              Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

              That is definitely true.

              P Offline
              P Offline
              PIEBALDconsult
              wrote on last edited by
              #26

              I'm with you. Given a programmer who doesn't understand these subjects, even if he reads the articles and still doesn't understand them, he is better off than before he read them; now he knows he doesn't understand them. This is part of why I firmly believe that a formal education is required; the students will (should) be exposed to a lot of such information that they won't find on their own or in "Learn C# in 21 days". I also agree that not everyone should be able to give a class on such topics at the drop of a hat.

              1 Reply Last reply
              0
              • Steve EcholsS Steve Echols

                No, it's not a good thing. VB made programming easier, and it made a lot of people think they were programmers, which gave the programming profession as a whole a black eye. IMHO. Take a look at the questions being asked in the forums, and you'll see what making programming easier leads to. :)


                - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                D Offline
                D Offline
                dojohansen
                wrote on last edited by
                #27

                Well, it's true of anything that as it becomes easier to use some of those who do use them will be less proficient. But in my opinion it's no better blaming VB's possible* ease of use for bad programmers than it is blaming cars that are easy to drive for bad drivers. In both cases there's a grain of truth to it, but it doesn't mean the net effect is bad for everyone overall. Cars that are easy to drive enable a lot of people to get around, and VB perhaps enabled a lot of people to write macros for their spreadsheets. *) I personally find VB close to incomprehensible and think the lack of proper OOP features make it much *harder* to use than "real" programming languages. Let me be clear: I'm not talking about VB.NET here; VB.NET has little except name (for marketing reasons) in common with VB. As for the forums, I think "stupid questions", annoying as they can be, are partly a side effect of something rather beautiful: People all over the world can now take the initiative to learn a great many things, including programming, that were previously not available to so many. A bookstore or even a local library needs to have a certain number of people within a very local market interested in any particular title to be able to stock it. With the web, the playing field gets a bit more even. It's still awfully uneven, especially because of language bias (I'm no native user but was lucky enough to be born somewhere they at least taught me enough English in school that I am not too severely handicapped in this regard - with time I suppose this will be the case everywhere), but way better than it used to be. Lastly, 50 cups of coffee really is too much! Certainly if you (as I suspect) are American (due to American cup sizes, not your inability to cope with vast quantities of caffeine).

                S Steve EcholsS 2 Replies Last reply
                0
                • J Jim Crafton

                  Maybe because it's so epically full of failure? :)

                  ¡El diablo está en mis pantalones! ¡Mire, mire! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! Personal 3D projects Just Say No to Web 2 Point Blow

                  R Offline
                  R Offline
                  Rick York
                  wrote on last edited by
                  #28

                  And full of epic failures too. ;)

                  1 Reply Last reply
                  0
                  • D dojohansen

                    Did you even read them yourself? I suspect you did not. Or do you seriously think that every programmer needs to know the circuit diagram for a 6-transistor SRAM cell? Or the capacitor charge and discharge timing of DRAM cells? The entire first part (which is substantial) consists of hardware details that are utterly irrelevant to the vast majority of programmers. In fact, only those who write assembly code (or compilers - i.e. programs that write assembly code) could even potentially use detailed knowledge about the internal caching design of modern CPUs. Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

                    S Offline
                    S Offline
                    Shog9 0
                    wrote on last edited by
                    #29

                    dojohansen wrote:

                    In fact, only those who write assembly code (or compilers - i.e. programs that write assembly code) could even potentially use detailed knowledge about the internal caching design of modern CPUs.

                    dojohansen wrote:

                    Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

                    Your assumption here is that the fundamental concepts of OOP are somehow more important to producing quality software than a basic understanding of how *RAM works. IMHO, that's a dangerous assumption: just about every program written will make use of one or more types of RAM, with even programs written in the most common high-level languages still affected dramatically by the interactions between processor caches and main memory... OOP, though a common technique and a useful tool, is still considerably less fundamental. The truth of the matter is, many programmers will manage to get away without a basic familiarity with either one.

                    D 1 Reply Last reply
                    0
                    • L Lost User

                      Have you ever noticed how the "programmers" who don't know how a computer even works are generally completely clueless when it comes to optimization? And don't tell me that optimization is not important, especially caching optimizations are getting more important by the day due to the growing speed gap between RAM and processors. Other optimizations are still relevant in games and other high-performance software.

                      D Offline
                      D Offline
                      dojohansen
                      wrote on last edited by
                      #30

                      harold aptroot wrote:

                      Have you ever noticed how the "programmers" who don't know how a computer even works are generally completely clueless when it comes to optimization?

                      No, to be honest, I haven't. I do remember one instance of the opposite; my best friend at uni (who is now a chip designer) was a highly skilled assembly programmer and he knew a few tricks to minimize the cpu cycles needed to get something done. This mattered when he wrote code for things like 4K demos (where the aim is supposedly to demo what is possible to do with 4K of code, though we all know the true aim is to show how clever the contestants are - which is fine by me), and wasted a lot of time resulting in code noone except him understood in all other instances. In my experience, which is with application programming and mostly managed code, the programmers who are clueless about optimization are those who don't know anything about the *software* at a lower level. People who have never had to allocate and deallocate memory themselves may have a hard time understanding why using a StringBuilder is so much faster than using string, for example. But above all, the problem in my experience has been that performance is not taken into consideration *early* in the process - instead, people try to optimize their way out of problems that shouldn't have existed in the first place. For example, user interfaces designed with the "browse" mentality rather than search, or that fail to restrict the amount of data that can be displayed at once (works fine in dev when you have 10 records, and not so well at the bank which has 50,000 records), cause far more problems than ineffective use of the hardware. I could go on, and I'm sure you could too, but I don't really see the point. We're talking past one another. My main point was and still is that saying every programmer needs to know a lot about hardware implementation details is going much too far. Your main point is, if I can have a shot at describing it, that such things really matter because they sometimes make a huge difference. So in a way it seems to me we're both right and mostly agree, but we're debating different aspects of the same thing.

                      L 1 Reply Last reply
                      0
                      • D dojohansen

                        harold aptroot wrote:

                        Have you ever noticed how the "programmers" who don't know how a computer even works are generally completely clueless when it comes to optimization?

                        No, to be honest, I haven't. I do remember one instance of the opposite; my best friend at uni (who is now a chip designer) was a highly skilled assembly programmer and he knew a few tricks to minimize the cpu cycles needed to get something done. This mattered when he wrote code for things like 4K demos (where the aim is supposedly to demo what is possible to do with 4K of code, though we all know the true aim is to show how clever the contestants are - which is fine by me), and wasted a lot of time resulting in code noone except him understood in all other instances. In my experience, which is with application programming and mostly managed code, the programmers who are clueless about optimization are those who don't know anything about the *software* at a lower level. People who have never had to allocate and deallocate memory themselves may have a hard time understanding why using a StringBuilder is so much faster than using string, for example. But above all, the problem in my experience has been that performance is not taken into consideration *early* in the process - instead, people try to optimize their way out of problems that shouldn't have existed in the first place. For example, user interfaces designed with the "browse" mentality rather than search, or that fail to restrict the amount of data that can be displayed at once (works fine in dev when you have 10 records, and not so well at the bank which has 50,000 records), cause far more problems than ineffective use of the hardware. I could go on, and I'm sure you could too, but I don't really see the point. We're talking past one another. My main point was and still is that saying every programmer needs to know a lot about hardware implementation details is going much too far. Your main point is, if I can have a shot at describing it, that such things really matter because they sometimes make a huge difference. So in a way it seems to me we're both right and mostly agree, but we're debating different aspects of the same thing.

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #31

                        Yea ok. I won't argue with that :)

                        1 Reply Last reply
                        0
                        • S Shog9 0

                          dojohansen wrote:

                          In fact, only those who write assembly code (or compilers - i.e. programs that write assembly code) could even potentially use detailed knowledge about the internal caching design of modern CPUs.

                          dojohansen wrote:

                          Given how many programmers fail to grasp, not to mention make good use of, the fundamental concepts of OOP, I can think of a few things I'd recommend studying before this.

                          Your assumption here is that the fundamental concepts of OOP are somehow more important to producing quality software than a basic understanding of how *RAM works. IMHO, that's a dangerous assumption: just about every program written will make use of one or more types of RAM, with even programs written in the most common high-level languages still affected dramatically by the interactions between processor caches and main memory... OOP, though a common technique and a useful tool, is still considerably less fundamental. The truth of the matter is, many programmers will manage to get away without a basic familiarity with either one.

                          D Offline
                          D Offline
                          dojohansen
                          wrote on last edited by
                          #32

                          Shog9 wrote:

                          Your assumption here is that the fundamental concepts of OOP are somehow more important to producing quality software than a basic understanding of how *RAM works.

                          Except I tried to carefully include the qualifying "in many cases" or perhaps the slightly stronger "in most cases". I'm not so lost as to not understand that how a program achieves whatever it does matters - and ultimately that must come down to how it uses the hardware. But in the context of debating whether or not this is something *every* programmer *needs* to know (I refer to the original post) I think what I've said is fairly sensible.

                          Shog9 wrote:

                          OOP, though a common technique and a useful tool, is still considerably less fundamental.

                          I don't really agree with this. You don't need to know about p-channel doping (or other details about transistors, from which all integrated circuits are made) in order to understand the logic of, say, stack-based programming. In other words, electron physics is fundamental to assembly-level programming only in a *physical* sense, and only because of the particular physical implementation of computers that happens to be widespread. Stack-based programming works just as well on a mechanical or hydraulic computer, and is *logically* decoupled from the physical implementation. In a similar way, computer hardware is not fundamental to high-level programming. Much of the point after all is exactly to isolate the programmer from all the nitty-gritty details of how computers work and let him or her get on with thinking about the users and what they want the machine to do. Any programmer, high-level or low-level, needs to understand the cost of various operations. But it's strictly speaking irrelevant *how* those costs arise. I maintain that there are, for most programmers, most of the time, more pressing things to attend to than this. (Notice that this does leave room for programmers and situations when optimizing for hardware is worthwhile or even necessary).

                          Shog9 wrote:

                          The truth of the matter is, many programmers will manage to get away without a basic familiarity with either one.

                          Which, necessarily it seems to me, demonstates that not all programmers need to know these things. Which is all I'm saying.

                          S 1 Reply Last reply
                          0
                          • D dojohansen

                            Well, it's true of anything that as it becomes easier to use some of those who do use them will be less proficient. But in my opinion it's no better blaming VB's possible* ease of use for bad programmers than it is blaming cars that are easy to drive for bad drivers. In both cases there's a grain of truth to it, but it doesn't mean the net effect is bad for everyone overall. Cars that are easy to drive enable a lot of people to get around, and VB perhaps enabled a lot of people to write macros for their spreadsheets. *) I personally find VB close to incomprehensible and think the lack of proper OOP features make it much *harder* to use than "real" programming languages. Let me be clear: I'm not talking about VB.NET here; VB.NET has little except name (for marketing reasons) in common with VB. As for the forums, I think "stupid questions", annoying as they can be, are partly a side effect of something rather beautiful: People all over the world can now take the initiative to learn a great many things, including programming, that were previously not available to so many. A bookstore or even a local library needs to have a certain number of people within a very local market interested in any particular title to be able to stock it. With the web, the playing field gets a bit more even. It's still awfully uneven, especially because of language bias (I'm no native user but was lucky enough to be born somewhere they at least taught me enough English in school that I am not too severely handicapped in this regard - with time I suppose this will be the case everywhere), but way better than it used to be. Lastly, 50 cups of coffee really is too much! Certainly if you (as I suspect) are American (due to American cup sizes, not your inability to cope with vast quantities of caffeine).

                            S Offline
                            S Offline
                            Shog9 0
                            wrote on last edited by
                            #33

                            dojohansen wrote:

                            But in my opinion it's no better blaming VB's possible* ease of use for bad programmers than it is blaming cars that are easy to drive for bad drivers

                            Eh... We have licensing requirements for driving those easy-to-drive cars on public roads. If you can't / won't get a license, you pay someone else to drive for you. In some places, there are buses that will take you wherever you want to go... A program like Excel allows non-programmers to accomplish fairly complex tasks without requiring them to learn or understand programming in the traditional sense, or letting the lack of such knowledge cause serious problems. IMHO, that's what we should be striving for... More buses, fewer + better drivers.

                            D 1 Reply Last reply
                            0
                            • S Shog9 0

                              dojohansen wrote:

                              But in my opinion it's no better blaming VB's possible* ease of use for bad programmers than it is blaming cars that are easy to drive for bad drivers

                              Eh... We have licensing requirements for driving those easy-to-drive cars on public roads. If you can't / won't get a license, you pay someone else to drive for you. In some places, there are buses that will take you wherever you want to go... A program like Excel allows non-programmers to accomplish fairly complex tasks without requiring them to learn or understand programming in the traditional sense, or letting the lack of such knowledge cause serious problems. IMHO, that's what we should be striving for... More buses, fewer + better drivers.

                              D Offline
                              D Offline
                              dojohansen
                              wrote on last edited by
                              #34

                              Yes, we have licenses for driving. I'm not going to argue about why we shouldn't have any for programming; presumably you are aware of the differences and why driving licenses exist. Still, I don't see how your argument is in any way specific to programming. You're saying that ease of use leads to idiots using it (or at least users won't be educated about the thing they use; they don't need to be idiots for the theory to work), and therefore ease of use is bad. Jeg foreslår derfor at vi skaper et vanskelig språk i stedet; på den måten kan vi unngå mange tåpelige leserinnlegg. (I therefore suggest we create a difficult language instead; that way, we could avoid many stupid letters to the editor.)

                              S 1 Reply Last reply
                              0
                              • R Rama Krishna Vavilala

                                Christopher Duncan wrote:

                                people equate programming with putting up a web page

                                You never miss an opportunity to take a jibe on Web development?:)

                                C Offline
                                C Offline
                                Christopher Duncan
                                wrote on last edited by
                                #35

                                If I had started life as a web guy, I'm sure my perspective would be very, very different. Coming up from DOS and a brief affair with UNIX, C compiler in hand, gives you an incredible amount of power, all the way down to twiddling bits in a register if that's what it calls for. Entering the extremely constrained world of the web from this angle makes it all appear very limited in comparison. Yeah, a global TCP/IP network is pretty cool, but web development can't help but feel like you're playing with children's toys in contrast to what's truly possible. Knowing what's going on with a computer and being able to affect every aspect of it and then moving to a browser environment just feels like going backwards instead of forwards, i.e. a massive loss of power. That said, if there were no browser development and all the guys who do web dev now were working in hard core, native development, I have no doubt that the overwhelming majority of them would be fine programmers. The remainder, who get by today only because the web is sponsored by Fischer-Price, would simply drift away to another profession.

                                Christopher Duncan www.PracticalUSA.com Author of The Career Programmer and Unite the Tribes Got a career question? Ask the Attack Chihuahua!

                                modified on Friday, June 26, 2009 1:27 PM

                                J 1 Reply Last reply
                                0
                                • D dojohansen

                                  Well, it's true of anything that as it becomes easier to use some of those who do use them will be less proficient. But in my opinion it's no better blaming VB's possible* ease of use for bad programmers than it is blaming cars that are easy to drive for bad drivers. In both cases there's a grain of truth to it, but it doesn't mean the net effect is bad for everyone overall. Cars that are easy to drive enable a lot of people to get around, and VB perhaps enabled a lot of people to write macros for their spreadsheets. *) I personally find VB close to incomprehensible and think the lack of proper OOP features make it much *harder* to use than "real" programming languages. Let me be clear: I'm not talking about VB.NET here; VB.NET has little except name (for marketing reasons) in common with VB. As for the forums, I think "stupid questions", annoying as they can be, are partly a side effect of something rather beautiful: People all over the world can now take the initiative to learn a great many things, including programming, that were previously not available to so many. A bookstore or even a local library needs to have a certain number of people within a very local market interested in any particular title to be able to stock it. With the web, the playing field gets a bit more even. It's still awfully uneven, especially because of language bias (I'm no native user but was lucky enough to be born somewhere they at least taught me enough English in school that I am not too severely handicapped in this regard - with time I suppose this will be the case everywhere), but way better than it used to be. Lastly, 50 cups of coffee really is too much! Certainly if you (as I suspect) are American (due to American cup sizes, not your inability to cope with vast quantities of caffeine).

                                  Steve EcholsS Offline
                                  Steve EcholsS Offline
                                  Steve Echols
                                  wrote on last edited by
                                  #36

                                  I'm not saying having easy programming languages at all is a bad thing. They have their uses. I got my start using BASICA back in the 80's, and it taught me a lot, but I quickly moved on to asm, c, c++, pascal, etc. Because programming is so easy now, anyone can slap something together quickly with no regard to architecture, execution speed, and memory consumption. The more of these types of apps that are written, give the computer industry a bad rep. It makes my job harder because now I have to prove that I'm not just a script kiddie, and that I actually know what I'm doing. So, yeah, I'm just whining, because I have to work harder now :) 50 cups of coffee would probably make my arteries explode! (It's a Beastie Boys lyric: http://www.youtube.com/watch?v=1jGjv4hq_VA[^]).


                                  - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                                  • S
                                    50 cups of coffee and you know it's on!
                                    Code, follow, or get out of the way.
                                  D 1 Reply Last reply
                                  0
                                  • Steve EcholsS Steve Echols

                                    I'm not saying having easy programming languages at all is a bad thing. They have their uses. I got my start using BASICA back in the 80's, and it taught me a lot, but I quickly moved on to asm, c, c++, pascal, etc. Because programming is so easy now, anyone can slap something together quickly with no regard to architecture, execution speed, and memory consumption. The more of these types of apps that are written, give the computer industry a bad rep. It makes my job harder because now I have to prove that I'm not just a script kiddie, and that I actually know what I'm doing. So, yeah, I'm just whining, because I have to work harder now :) 50 cups of coffee would probably make my arteries explode! (It's a Beastie Boys lyric: http://www.youtube.com/watch?v=1jGjv4hq_VA[^]).


                                    - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                                    D Offline
                                    D Offline
                                    dojohansen
                                    wrote on last edited by
                                    #37

                                    Steve Echols wrote:

                                    Because programming is so easy now, anyone can slap something together quickly with no regard to architecture, execution speed, and memory consumption. The more of these types of apps that are written, give the computer industry a bad rep. It makes my job harder because now I have to prove that I'm not just a script kiddie, and that I actually know what I'm doing.

                                    I feel your pain. On the other hand it has never been easier to excel in your field! :laugh:

                                    D 1 Reply Last reply
                                    0
                                    • D dojohansen

                                      Steve Echols wrote:

                                      Because programming is so easy now, anyone can slap something together quickly with no regard to architecture, execution speed, and memory consumption. The more of these types of apps that are written, give the computer industry a bad rep. It makes my job harder because now I have to prove that I'm not just a script kiddie, and that I actually know what I'm doing.

                                      I feel your pain. On the other hand it has never been easier to excel in your field! :laugh:

                                      D Offline
                                      D Offline
                                      dojohansen
                                      wrote on last edited by
                                      #38

                                      (Unfortunately I realized a little to late that writing Excel rather than excel would have made for a nice double entendre. My apologies.)

                                      Steve EcholsS 1 Reply Last reply
                                      0
                                      • D dojohansen

                                        (Unfortunately I realized a little to late that writing Excel rather than excel would have made for a nice double entendre. My apologies.)

                                        Steve EcholsS Offline
                                        Steve EcholsS Offline
                                        Steve Echols
                                        wrote on last edited by
                                        #39

                                        That would have been much better. :laugh:


                                        - S 50 cups of coffee and you know it's on! Code, follow, or get out of the way.

                                        • S
                                          50 cups of coffee and you know it's on!
                                          Code, follow, or get out of the way.
                                        1 Reply Last reply
                                        0
                                        • D dojohansen

                                          Shog9 wrote:

                                          Your assumption here is that the fundamental concepts of OOP are somehow more important to producing quality software than a basic understanding of how *RAM works.

                                          Except I tried to carefully include the qualifying "in many cases" or perhaps the slightly stronger "in most cases". I'm not so lost as to not understand that how a program achieves whatever it does matters - and ultimately that must come down to how it uses the hardware. But in the context of debating whether or not this is something *every* programmer *needs* to know (I refer to the original post) I think what I've said is fairly sensible.

                                          Shog9 wrote:

                                          OOP, though a common technique and a useful tool, is still considerably less fundamental.

                                          I don't really agree with this. You don't need to know about p-channel doping (or other details about transistors, from which all integrated circuits are made) in order to understand the logic of, say, stack-based programming. In other words, electron physics is fundamental to assembly-level programming only in a *physical* sense, and only because of the particular physical implementation of computers that happens to be widespread. Stack-based programming works just as well on a mechanical or hydraulic computer, and is *logically* decoupled from the physical implementation. In a similar way, computer hardware is not fundamental to high-level programming. Much of the point after all is exactly to isolate the programmer from all the nitty-gritty details of how computers work and let him or her get on with thinking about the users and what they want the machine to do. Any programmer, high-level or low-level, needs to understand the cost of various operations. But it's strictly speaking irrelevant *how* those costs arise. I maintain that there are, for most programmers, most of the time, more pressing things to attend to than this. (Notice that this does leave room for programmers and situations when optimizing for hardware is worthwhile or even necessary).

                                          Shog9 wrote:

                                          The truth of the matter is, many programmers will manage to get away without a basic familiarity with either one.

                                          Which, necessarily it seems to me, demonstates that not all programmers need to know these things. Which is all I'm saying.

                                          S Offline
                                          S Offline
                                          Shog9 0
                                          wrote on last edited by
                                          #40

                                          dojohansen wrote:

                                          Except I tried to carefully include the qualifying "in many cases" or perhaps the slightly stronger "in most cases".

                                          Huh? You said - and i quoted - that only programmers working with assembly language could even potentially use the information. Full stop.

                                          dojohansen wrote:

                                          But in the context of debating whether or not this is something *every* programmer *needs* to know (I refer to the original post) I think what I've said is fairly sensible.

                                          If we accept the premise that there are things every programmer needs to know, and we're not talking about cargo-cult-coders or specialists working in domain-specific languages, then you're still arguing that OOP concepts are fundamentally more important than knowing why your cache-busting algorithm performs poorly on modern hardware. I'm saying, that's quite a bit of a stretch.

                                          dojohansen wrote:

                                          Stack-based programming works just as well on a mechanical or hydraulic computer

                                          Which, AFAIK, are still considerably less common than non-OOP programs.

                                          dojohansen wrote:

                                          But it's strictly speaking irrelevant *how* those costs arise.

                                          No, it's usually irrelevant, because usually we're working with sufficient computing power to make the sort of micro-optimizations that arise from an understanding of how the physical machine operates unnecessary. Right up to the point where we aren't, and then, suddenly, it's relevant. To use that car analogy, most of the time you don't need to know anything about how the cooling system works. Right up until your engine is overheating... then, suddenly, you do (or you'll quickly be without an operational car).

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups