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.
  • 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
                    • D dojohansen

                      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 Offline
                      S Offline
                      Shog9 0
                      wrote on last edited by
                      #41

                      dojohansen wrote:

                      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.

                      I'm saying, we're not serving the non-programmers well by giving them easy-to-use languages that still offer most of the same pitfalls as the older, more difficult languages. You don't see a drunk struggling to keep his car on the road and think, "what he needs is a stabilizer for his steering wheel and larger buttons for the cruise-control feature!" We'd all be better off by giving those without the talent or desire for programming applications that provided them with sufficient flexibility to accomplish their needs without caring about efficient algorithm design, callstacks, typed variables, etc...

                      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?:)

                        J Offline
                        J Offline
                        JimmyRopes
                        wrote on last edited by
                        #42

                        Rama Krishna Vavilala wrote:

                        Christopher Duncan wrote:people equate programming with putting up a web page You never miss an opportunity to take a jibe on Web development?

                        Most people think it is easy to be a web developer until they try to do it themselves. Then their song becomes how difficult it is to program to varying browser implementations and how standard application programming is so much easier because you only need to address a single architecture. All I have to say to people who attempt to develop web applications is "welcome to the wild side". P.S. - I wrote a client resident application to access Active Directory using an LDAP connection a few days ago as a prototype for a web service I am writing and, yes, it was easy, just not robust enough for our requirements. Web services and web based applications are the future. Get with it or get over it. When the boat leaves the dock you will either be on it or be left behind.

                        Simply Elegant Designs JimmyRopes Designs
                        Think inside the box! ProActive Secure Systems
                        I'm on-line therefore I am. JimmyRopes

                        1 Reply Last reply
                        0
                        • C Christopher Duncan

                          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 Offline
                          J Offline
                          JimmyRopes
                          wrote on last edited by
                          #43

                          Christopher Duncan wrote:

                          If I had started life as a web guy, I'm sure my perspective would be very, very different.

                          No that has nothing to do with it. I have been programming professionally for 36 years now and started out as an assembler language programmer on IBM mainframes (18 years experience) long before DOS was invented. I also learned UNIX and C language at Bell Telephone Laboratories (predecessor to AT&T Bell Laboratories) when UNIX was still a beta. When windows gained traction I learned C++ and became proficient with Windows programming, but realized that the internet is the future. I reinvented myself as a web developer around 10 years ago and have never looked back.

                          Christopher Duncan wrote:

                          Entering the extremely constrained world of the web from this angle makes it all appear very limited in comparison.

                          Although you do not have access to the client machine there are many things you can provide using web services and web applications. I don't particularly want to twiddle settings in a client's registry. I don't even care if they are using a computer or some other display surface and separate interface device. I provide web services and applications that can be presented on a wide range of architectures. The limitations are in your imagination, not the possibilities that present themselves.

                          Christopher Duncan wrote:

                          web development can't help but feel like you're playing with children's toys in contrast to what's truly possible

                          A limitation of your imagination.

                          Christopher Duncan wrote:

                          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.

                          Welcome to the future. Give up the power trip and you will realize the potential of the internet.

                          Simply Elegant Designs JimmyRopes Designs
                          Think inside the box! ProActive Secure Systems
                          I'm on-line therefore I am. JimmyRopes

                          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