I think this is an interesting analogy because of all of the automated techniques that have been developed for building electrical circuits.
There's been a great deal of work on the mathematical quantification of information, which we call InformationScience. ClaudeShannon's work is considered a genesis in the field. You can read his original 1948 article that founded InformationTheory at http://djvu.research.att.com/djvu/sci/index.html
-- JuneKim
I am currently reading the article by ClaudeShannon mentioned above, but I think that its subject is somewhere in the periphery of what I'm looking for. It seems to describe a notation for describing the transfer of data. What I'm looking for is a more generalized notation for a program in general.
I've taken AnalysisOfAlgorithms, which is the study of how to prove that an algorithm is sufficient for certain time constraints based on a specified amount of data. This capability is very limited in scope. It does not allow for the description in absolute terms the behavior of every aspect of a program. Admittedly, this is done every day by people writing in specific languages, who then use compilers to translate them into machine code, etc.
I would like to be able define the absolute properties of a program. The situation is analogous to PlatosHorse? (the idea of a horse as compared to an actual horse). The basic question is: is there a basic set of laws that can be used to show that some idea is a program or not?
-- AdamThorsen
Oh.. Your original question is far off from Shannon's theory, then. BTW, IMHO, to answer the basic question, we have got to decide what definition we carry for the word, "program." Otherwise, it could be a never-ending arguing in the clouds. After fixing of the definition, we could go on to tell the reference and the sense of the word, and the laws as well; or, if we or a sort of machine had the right feeling to decide which is a program, we could observe our or their decisions and deduce the laws "empirically."
-- JuneKim
Yes, I was just thinking about that (the DefinitionOfAProgram). What is the best way to define a program? Listing a set of components that all programs have? My mind keeps returning to UML (UnifiedModelingLanguage), but somehow that is not what I'm looking for either. It assumes an object oriented architecture, and only provides a structural definition of a program (it uses method names to say what the program will do, but it has no mathematical or real-world meaning).
How about this: a program is an ordered set of operations on a bounded set of data.
But ... there's something more to it. The above is no different than what I learned in AnalysisOfAlgorithms.
Okay, how about this more literal definition: a program is an ordered set of symbols.
I like that one. A program is a set of symbols, but so are a lot of other things. So now we can start to define patterns of symbols that are typical in programs and not in other sets of symbols. Given any set of symbols, we should be able to recognize it as a program or not.
-- AdamThorsen
Now I turn to LudwigWittgenstein's thoughts on words and their meanings: they are the usage - how we use them. The definition of program is not intrinsic but extrinsic, and it's determined by the way we use the word. Nowadays our usage of the word is heavily confined to TuringMachine and so are programs of this age. There does not exist any eternal definition for a "program", and to know the current definition we carry for a "program" we need to examine Turing's ideas. Your general definition of program, an ordered set of symbols, is a nice one, but as we narrow it down, I think we'll end up with something quite close to Turing's idea at the end (as long as we are the people of this age who can communicate with other people what is a program or not).
-- JuneKim
Well, I think you are right. It was fun to think about anyways, though. Are you aware of any recently published work on this subject?
-- AdamThorsen
CategoryInformationEngineering CategoryInformation CategoryComparisons