|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
Authored by: Anonymous on Friday, August 31 2012 @ 06:04 AM EDT |
I think recipes are mathematic [ Reply to This | Parent | # ]
|
|
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 | # ]
|
|
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?
- It reads an instruction from main memory.
- It decodes the
instruction to determine what the instruction requires to be done.
- It does
what steps 2 has determined what needed to be done.
- Results if any are
written to the designated location(s) in accordance to the determination of step
2.
- 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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
|
|
|