How computers and software work

Posted by dbhalling 9 years, 4 months ago to Technology
21 comments | Share | Best of... | Flag

Some people on galtsgulch do not seem to understand how software works. This website http://www.metafysica.nl/computer.html explains in detail how computers and software work down to the transistor level. A transistor when used in a computer is switch - that is the ones and zeros you have heard of. The transistor changes the direction that electricity flows, which means it changes the wiring. Software does nothing without hardware.

It is embarrassing that some people in the gulch have worked in software their whole life and they do not know how computers work.

I provide this information for those who might be honestly interested in this issue.

For those of you who are not computer oriented, think about the telephone system. In the old days you called a switchboard operator who used a patch panel to connect your telephone line to the person’s you were calling. This rewired the circuit, now providing a connection between you and the person you were calling. The switch board operator was replaced with electro-mechanical switch that could “interpret” the digits you dialed to a telephone line and connect your telephone line to the telephone line you called. Eventually these electro magnetic switches were replaced with transistors and elaborate logic circuits (a computer) replaced the electro-magnetic switches. When you dialed a number your programmed the telephone system to close a switch(es) between you and the number you called. Modern programming is much more complex, but it is essentially the same thing.


Add Comment

FORMATTING HELP

All Comments Hide marked as read Mark all as read

  • Posted by Technocracy 9 years, 4 months ago
    A ROM is an example of software rewiring hardware. Without the software program reconfiguring/wiring it, the ROM is simply an empty array.

    The only significant difference between a ROM and RAM is the volatility. The end result is the same.

    So yes, to Dale's point, the software does rewire the hardware, even if only temporarily.

    The combination makes the device useful. Both pieces are entitled to protection for the inventors.
    Reply | Mark as read | Best of... | Permalink  
    • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
    • Posted by $ WilliamShipley 9 years, 4 months ago
      We are in complete agreement that the software and the hardware both are entitled to protection by the inventors. The issue is whether patents or copyrights are appropriate.

      A book without words printed on it is simply empty pages, to be useful it must be printed. This does not mean that the contents of the book are patented, we use copyright for the contents. The device that prints the book is patented.

      This may seem like we are splitting hairs, the distinction from a software designers point of view is that with copyright, if you don't copy someone's code but write your own you do not violate their copyright. With patents, if you write your own code based on your own solution to the problem you may find that someone else has patented that idea and you can be subject to a ruinous law suit. You also get a copyright on your software automatically by being the author, patents require thousands of dollars and significant time to get.
      Reply | Mark as read | Parent | Best of... | Permalink  
  • Posted by $ sjatkins 9 years, 4 months ago
    Before I became a software developer I was around in Homebrew computer days. I used to carry around my "sewing kit" full of breadboards, wire and chips. I built my first computer or two. So I have a pretty good idea how they work. Over time I found software to both much more forgiving of mistakes and much more flexible and wide open than hardware.
    Reply | Mark as read | Best of... | Permalink  
  • Posted by Ibecame 9 years, 4 months ago
    I liked your overview about how a computer works, and although I didn't read through the article I did glance at it and it looked like a pretty good lesson for understanding the basics. Actually, the way you explained the switching was almost the same as it was explained in my first computer sciences class. The precursor to solid state logic circuits were banks of relay logic circuits that switched on and off and were programed by rewiring, and as different relays energized and de-energized the wiring paths were changed to get the desired result. The development of solid state logic circuits mimic this same action.
    Reply | Mark as read | Best of... | Permalink  
  • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
  • Posted by $ MikeMarotta 9 years, 4 months ago
    So, you can read this only because I created a new device in your home... on your desk... in your hand? When a surgeon uses a robot such as the DaVinci, each move of the numerically controlled servos creates a new device, actually several new devices. Driving a multiprocessor controlled automobile is actually the constant creation of thousands of new devices. Therefore, being online here is like having a horde of plasterers, carpenters, machinists, all in your living room building things that magically disappear later. What a strange new world of such metaphysics!
    Reply | Mark as read | Best of... | Permalink  
  • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
  • Posted by $ WilliamShipley 9 years, 4 months ago
    So in 1968 I was in high school pouring over books on computers. I designed and built a multi-digit binary adder using relays, I also built a memory circuit using triode tubes. In school I've had classes in logic design, digital circuit design and computer architecture.

    Professionally I was an application programmer for a few years and then became a systems programmer for a mainframe maintaining the operating system with it's close link to hardware.

    In the 1980's I continued to do that while developing typesetting software and designing an early desktop publishing system. I wrote a lot of assembler code writing software at the machine level on multiple platforms, including writing an assembler for my commodore 64 for fun.

    In the early 1990's I started a software firm to do medical laboratory software (see the add that appears from time to time). By then there was very little assembler but I wrote about 750,000 lines of C code including managing interfaces to hundreds of types of laboratory instruments, typically over serial links.

    So, when I tell you I know how computers work, I really do and I don't need to follow a link to a "Here is how a computer works" any more than you need to follow one to "how the patent system works".

    And, really, what's the point of starting another thread that certainly seems like a challenge then hiding my comment?
    Reply | Mark as read | Best of... | Permalink  
  • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
  • Posted by $ WilliamShipley 9 years, 4 months ago
    Except for the fact that changing a switch isn't wiring something and that the computer is unchanged by the program you have a reasonable understanding of the basics of computers.

    Your conflation of the hardware triggering switches as the result of reading data being equivalent to the data rewiring the computer has no meaningful use in thinking about computer except to allow you to state that a program is a device.

    Unfortunately the very same logic can be used to show that the surface changes on a dvd which cause the led's (no longer cathode ray tube) to turn off and on and make a picture on the screen means that a movie is also a device since it 'rewires' your television set.

    It's not really a useful definition.
    Reply | Mark as read | Best of... | Permalink  
    • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
    • Posted by CircuitGuy 9 years, 4 months ago
      Is the discussion about whether software is more akin to a) the Gerbers and assembly drawing for a board or b) a song or audiobook available for digital download.

      I agree software doesn't "rewire" the MCU: it just asserts/deasserts various ALU inputs and shift registers. ALUs and register are logic circuits definable by truth tables. You're not re-wiring them unless you consider asserting one input on an XOR gate to be "re-wiring" a buffering to become an inverter.

      I don't see why this matters. Most companies doing something properitary would be more concerned if the software running on one of their boards were stolen than if the shematics, BOM, and Gerbers were stolen. There's more value in the software usually.

      What is the argument against patenting software? Is it that it must be part of a larger invention? What if the software, though, is like an invention, with all the novelty in the software and the hardware being just a platform (a vessel one SW engineer told me) for their invention?
      Reply | Mark as read | Parent | Best of... | Permalink  
      • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
      • Posted by $ WilliamShipley 9 years, 4 months ago
        My position is that software is more appropriately protected by copyright law than by patent law. The key difference is that copyright law prohibits someone from copying the code and running it. Patent law prohibits anyone else from inventing something like it, even if they write it from scratch.

        This would not be a very big issue if the patent office only patented unique ideas that no one else is likely to think of without seeing the original. Unfortunately since the 1990's there has been an explosion of patents for algorithms, many of which are quite obvious.

        This means that a developer is at risk of innocently creating a routine that is covered, or may be covered by someone who has a patent with a number of claims. Practically speaking it is impossible for the programmer to do a patent search on every routine that he is going to write so the result is that at any point in the future he can be subject to a lawsuit.

        DB and I both think that software developers/inventors deserve IP protection we differ (apparently quite strongly) on the appropriate means. I think that the growth of patents is making a very difficult environment for people to invest in new software.

        On a practical matter, a developer gets a copyright for free, simply by creating a work. A patent requires legal time and the payment of several thousand dollars. This can be a burden on a start up.

        In either case, copyright or patent, you do need a lawyer to enforce your rights if a simple demand fails.

        The reason for the rewiring argument is that DB is trying to make the case that software is a device.
        Reply | Mark as read | Parent | Best of... | Permalink  
        • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
        • Posted by CircuitGuy 9 years, 4 months ago
          "Unfortunately since the 1990's there has been an explosion of patents for algorithms, many of which are quite obvious."
          In theory patents by definition are non-obvious. So you're problem is not so much the nature of the invention but rather that people are patenting cases of this type of invention (software) that are obvious?
          Reply | Mark as read | Parent | Best of... | Permalink  
          • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
          • Posted by $ WilliamShipley 9 years, 4 months ago
            That's the core of the problem. One software patent from the 1970's, the LZW patent which was a compression algorithm that was used in pkzip is sufficiently unique that I can't imagine someone else coming up with it. Most others that I have looked at are often the obvious solution to the problem they were designed for. The next person with the same problem is likely to come up with the same solution -- and violate the patent.

            In general, you should be able to write software using your own creativity without seriously risking violating someone's patent. You can easily do that without violating someone's copyright -- just don't copy their code!
            Reply | Mark as read | Parent | Best of... | Permalink  
            • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
            • Posted by CircuitGuy 9 years, 4 months ago
              "Most others that I have looked at are often the obvious solution to the problem they were designed for."
              It sounds like the problem has nothing to do with software and everything to do with obviousness. I have seen these things on engineer msg boards showing supposed patents on things like guard traces to eliminate crosstalk or caps between a split in a power plane to handle high-speed return currents: practices that have been around for a decades. If those msgs are true, then the same argument applies to hardware patents.
              Reply | Mark as read | Parent | Best of... | Permalink  
              • Posted by $ WilliamShipley 9 years, 4 months ago
                The issue is more complex than the point of 'obvious solutions' although that is what makes it a serious problem. If there were very few patents on really unique concepts the issue would be minor. One could develop software and ignore patents except for a handful of routines -- which is how we worked in the 80's and, actually, how programmers work today -- although we all know that there are thousands of patents out there that may impinge on our work -- most of them flawed but fighting flawed patents is ruinous to a small company.

                I think that one of the things that makes software different than hardware is the sheer number of algorithms that a software engineer makes in the course of their daily work. While there has been an effort since the '70s to develop 'component' software that had never really been successful. Each situation seems to be more effectively solved by writing your own algorithm -- although there are plenty of libraries that can be licensed or are in the public domain that you can use for larger issues.
                Reply | Mark as read | Parent | Best of... | Permalink  
  • Comment hidden by post owner or admin, or due to low comment or member score. View Comment
  • Posted by $ WilliamShipley 9 years, 4 months ago
    There is one other problem with the concept that software 'rewires' the computer by switching switches. Software doesn't actually switch transistors, it's passive data.

    In the Von Neuman architecture that virtually all computers use today programs are stored with data and are simply information. It used to be common in the 1960's and 1970's for programs to be modified while they are running which can be done because they are data. Because of reentrancy that is not considered good practice any longer.

    What really happens is that the hardware reads data into it's instruction logic and based on the information it sees in the data changes internal switches which influence how it processes other data. The program itself is passive.

    It is a convention to talk about the program 'doing something' but since it is only information the CPU actually does things.
    Reply | Mark as read | Best of... | Permalink  

FORMATTING HELP

  • Comment hidden. Undo