decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Slight diversion: Software != Maths | 484 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Slight diversion: Software != Maths
Authored by: Anonymous on Friday, August 31 2012 @ 02:38 AM EDT
The problem i see with your reasoning is that you seem to
think patenting doing something is good. The patent should
cover exactly HOW you do something, not WHAT you do. Its easy
to come up with something you want to do but harder to find
exactly how to do it. IRL the how part can be really tricky
but in software its often pretty easy and demands zero
research as its all about coding it up.

[ Reply to This | Parent | # ]

Software is a subset of Maths
Authored by: Anonymous on Friday, August 31 2012 @ 03:22 AM EDT
Software is algorithms

Software contains algorithms. Not the same. It also contains other stuff like data structures and interfaces.
All computer storage -- whether a single bit flip-flop, a multi-bit register, or an array of memory -- is nothing more than a mathematical function with its output being fed back into its input. A data structure is nothing more than a mathematical formula that selects (through mathematical algorithm) which of those storage algorithms are routed (using a mathematical algorithm) to other storage algorithms (e.g., moving contents of RAM to a CPU register).
algorithms are mathematics

Not necessarily. An algorithm is like a recipe. Steps to perform some task. I could easily write an algorithm to make a cup of tea.
"Algorithm" is a term of art in the field of mathematics meaning a set of step-by-step procedures for performing calculation. "Making a cup of tea" is not a calculation and lies outside the realm of mathematics. Any usage of the term "algorithm" with regard to making tea is irrelevant to its understanding by those skilled in the art of software programming.
At the bare metal level, most of the CPU instructions are maths operations, but that is not about algorithms.
ALL CPU instructions are mathematical operations. All CPU designs can be constructed of nothing more than AND gates and INVERTORS, and all of their operations can be represented by mathematical formulae.
Some algorithms are mathematical, such as encrypting text or computing sales tax. Others are not really, such as displaying a (uncompressed) bitmap image.
Displaying a bitmap image is indeed comprised of mathematical operations. Just as with encrypting text, the output of the algorithm is directed to registers whose contents get interpreted by external hardware. That the external hardware interprets those contents as being a graphical rendering rather than ASCII coded text, or sound amplitude levels, or positioning voltages to a servo motor is irrelevant to the software of the algorithm.
Many programmers are (sadly) almost innumerate.
I would disagree, yet still, the good ones -- particularly the ones designing CPUs and developing programming languages -- are extremely well-versed in mathematics. No modern CPU is ever built until its design has been modeled mathematically and that model tested.
There are a lot of ingredients that make great software and maths is only one of them.
No. It is mathematics all way down from the source code to the processor instruction set to the microcode implementation of that instruction set to the gates and invertors at the core of what we call a general purpose computer.

[ Reply to This | Parent | # ]

Slight diversion: Software = Maths, after all
Authored by: bprice on Friday, August 31 2012 @ 04:01 AM EDT
Here we go again, on the fallacy that programming is not mathematics, that PLs are not mathematical notations.
Software is algorithms
Software contains algorithms. Not the same. It also contains other stuff like data structures and interfaces.
When did data structures stop being mathematics? What data structures are not mathematics?

Interfaces are strictly the invariants and predicate transformers of the structure (algorithms, data structures) 'on the other side' of the interface. What are invariant predicates and predicate transformers unless they are mathematical constructs?

algorithms are mathematics
Not necessarily. An algorithm is like a recipe. Steps to perform some task. I could easily write an algorithm to make a cup of tea.
OK, so you can write a mathematical construct – an algortihm – defining the making of a cup of tea. What makes this mathematical construct not a mathematical construct? Is it the teapot? The cup? The tea? The water? The temperature?
At the bare metal level, most of the CPU instructions are maths operations, but that is not about algorithms.
Correct. The algorithmic part is in the composition of the 'bare-metal' instructions, regardless of their function. The function of the instruction may be recognizably mathematical, or not so recognizable, and it matters not a whit. The algorithms, data structures, and interfaces are mathematical constructions.
A compiler or interpreter translates Java or Python or Visual Basic (or whatever) into the binary code that is executed, but it would be the high-level techniques that might be patented. Those techniques could be translated into many different binary representations.
So? The 'high-level techniques' are the level most easily seen to be mathematical (algorithmic). The 'high-level techniques' can be translated into other binary representations, while retaining their high-level nature. How does any such transformation, level-preserving or level-changing, change the nature of the algorithms and data structures from being mathematical constructs: and what would that nature change to?
Some algorithms are mathematical, such as encrypting text or computing sales tax. Others are not really, such as displaying a (uncompressed) bitmap image.
All algorithms, by the fact of being algorithms, are mathematical. Some of them are addressed to results that are themselves mathematical. The nature and the function of anything, computational or otherwise, are at different levels of discourse; mix these levels at your own intellectual peril. (Which fallacy is that?)

Many programmers are (sadly) almost innumerate.
So true. When I was a young whippersnapper, in my twenties (50 years ago), I joked that I was interested in computers because my arithmetic was so lousy.

In fact, arithmetic is such a small part of mathematics, particularly the mathematics of programming (algorithms, data structures, interfaces), that being innumerate is not a real handicap, so long as one has a good handle on real mathematics.

As an example: autocompletion of text, as you type involves a bit of maths in its implementation, but the big innovation was the idea to perform autocompletion.
Au contraire, it's entirely mathematics, the mathematics of the data structures and algorithms to perform the auto-complete function.
There are a lot of ingredients that make great software and maths is only one of them.
Yes; good taste is another. As in any mathematical discipline, elegance is a huge factor, choosing appropriate data and procedural abstractions at the various levels of discourse.

---
--Bill. NAL: question the answers, especially mine.

[ Reply to This | Parent | # ]

Slight diversion: Software != Maths
Authored by: Anonymous on Friday, August 31 2012 @ 06:04 AM EDT
I think recipes are mathematic

[ Reply to This | Parent | # ]

Have you studied computation theory?
Authored by: PolR on Friday, August 31 2012 @ 06:52 AM EDT
You are presenting your views but you are leaving out the scientific facts
published in mathematical and computer science literature which have been
documented several times here on groklaw.

Algorithm is a term of art in computation theory which is one of the
mathematical foundations of computer science. This is the definition of
"algorithm" which is relevant to the relationship between mathematics
and software because this is the meaning of the word which is used in the parts
of theoretical computer science whence that mathematical foundations are given.
All of software is algorithms in this sense. This is why software is
mathematics, including the parts you say isn't mathematics.

[ Reply to This | Parent | # ]

Short explanation of why Software == Maths
Authored by: PolR on Friday, August 31 2012 @ 07:31 AM EDT
We have to look at an infringing implementation. What is patented? It is not the ideas of the programmers. It is no the tasks of the programmers when they write code. It is the work of the computer as it executes the instructions. This is claimed either as a process or as a machine.

Then what does the computer do?

  1. It reads an instruction from main memory.
  2. It decodes the instruction to determine what the instruction requires to be done.
  3. It does what steps 2 has determined what needed to be done.
  4. Results if any are written to the designated location(s) in accordance to the determination of step 2.
  5. Steps 1-4 are repeated until the computation is done.
This is called the instruction cycle. This is an algorithm. Every stored program computer implements an instruction cycle and the most fundamental function of the computer hardware is to execute its instruction cycle.

This algorithm is universal. It can replicate all possible algorithms given the proper instructions as input. Everything in software must be reduced to this algorithm, otherwise the code won't run.

This algorithm is a mathematical algorithm in the sense of computation theory. Mathematicians have formalized it under the name of a random access stored program machine.

This is why software is mathematics. There is nothing in an infringing implementation of patented software which isn't the execution of a mathematical algorithm which is the instruction cycle. The concept of a machine executing a universal algorithm in the sense of computation theory is the fundamental principle underlying the generic programmable computer. This is one of the mathematical basis of computer science.

[ Reply to This | Parent | # ]

Slight diversion: Software != Maths
Authored by: Anonymous on Friday, August 31 2012 @ 11:35 AM EDT
Anyone who says software is not mathematics either doesn't understand what
software is, or doesn't understand what mathematics is. (or likely both).

PolR has written eloquently on this topic and he's 100% correct. Software
patents are pretty much all patents on mathematical algorithms, which are not
supposed to be patentable subject matter.

[ Reply to This | Parent | # ]

All programming languages are mathematical languages
Authored by: Anonymous on Friday, August 31 2012 @ 11:49 AM EDT
There are a lot of ingredients that make great software and maths is only one of them.
Until you understand that all software is algorithms, you will never be able to properly understand what is going on. Sure a algorithm may be doing something you think isn't math, but what it is doing is mathematically modelling that something. It may look like the language and structures used aren't math, but they are. I suspect you just don't know enough math to understand how they are math. All programming languages are is abstraction layers to the math that the processors can handle. The compiler or interpreter just translates one mathematical language into another until it is finally in one that the processor can understand. It can't do anything else or else it would fail. From that anything written in those mathematical languages is a mathematical algorithm.

A fundamental flaw most people have is they think a computer can understand "red". It can't. All it knows about red is 0xff0000 which is a common encoding often used to represent a particular shade and intensity "red". To the computer 0xff0000 is just a number. For those that don't know, "0x" in front of a string of digits is used in some programming languages to denote the digits are in hexadecimal. Hexadecimal uses the digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f to represent the decimal values 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 respectively. Hexadecimal is use because it maps nicely to the bits and bytes commonly used by computer hardware. A common mathematical encoding of color splits light into red, green, and blue components much like the human eye does. For the intensity of each component we assign a value of 0 to 255, or in hexadecimal, 0x00 to 0xff. Then they group the components back together in a structure and 0xff0000 ends up representing red. Of course 0xfe0000 is a slightly different shade of red that most people couldn't differentiate from the other one, but the computer will always see it as different. 0x000020 is a dark shade and intensity of blue.

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )