Friday, May 02, 2008

New project

In many ways, computers and their programming are still tied to decisions that were being made when computer hardware was expensive. This is particularly true with mathematics. It has occurred to me to do some experimenting with different choices, so I started a project of emulating a sub-microprocessor, to see what I can do with different concepts.
There's not much you can do with a processor that operates on only bit of information, and not much more with one that does only has two. With three bits, however, it's possible to do a little more. I've coded the two bit version, but haven't yet tried running it. The three bit version is at the design stage, not yet written. A four bit version is in the works.
I've been pondering for some years about how to do programming with abstract mathematical objects, and how one might implement the abstract objects of set theory and other mathematical structures. I've also been thinking about how to do computer implementation of my ideas on three-valued logic. There are various ways of representing numbers: The fixed-size binary of most computers are useful for many purposes, but not all. few computers work with fractions and rational numbers, and hardly any with approximate numbers. Complex numbers are also a possibility.
There are various people who have developed packages for these things; and my C++ text offers several of these as exercises. I've also had some ideas on doing algebra with computers. However, these are all fairly special-purpose packages. What I'm interested in is common methods that are suitable for the relative novice, not for someone who has studied numerical analysis.
I also want to tie that to science, which involves more and different branches of mathematics, such as geometry, which is tied to graphics and animation.

It's one thing to have a grand vision of everything I'd like to do; it's something else again to make it a working reality. So, I've added C++ to the languages I've been studying. In C, I'm working a little on the analysis of sample programs, types of functions, statements, and data types. In BASIC, I'm also working with sample programs, output procedures, and the read-data statement pair. The if-then and goto statements together with relational expressions give me the elements for building control structures such as loops and branched statements, so that principles of structured programming can be used instead of so-called spaghetti code.
in Assembly language. I'm still digesting notes on the assembly and link phases of programming mechanics. I'm still doing analysis of specific programs, as well as exercises that can be run in DEBUG. More detailed analysis of program parts, including the header, where various types of symbolic constants can be declared, the data segment, where space is reserved for variables, and the code segment, which has the actual body of programs is being done.
I've temporarily set aside my investigations into other uses of DEBUG, the BIOS, and the operation of video hardware, but theyre ready to pick up when I feel up to it and they are important enough. I've also done a bit of condensing of my notes on data representation, and I've reached signed binary numbers.