(zur deutschen Version hier klicken)     

 

 

How the program, which has been downloadable here for years, was developed

Most people do not understand how the development of programs works, so I have added some more remarks

 

 

From my earlier attempts to solve the n-body problem numerically but also from history I knew that there were two prerequisites to fulfill if you wanted to solve this problem: at first accuracy and at second high enough computations per time unit. So this was a typical problem for a 32bit processor with floating point unit.

I had access to computers from the 60ths  of last century (the dark ages:  punched cards, Fortran or even Assembler. You received one week later a big pile of paper all filled with errors.) till today. I worked with mainframes, Vax'es and PDP's in dark cellars. In those days we spent endless (night-)hours in front of  totally uninformative alphanumerical displays (in the beginning even tele-typewriters!). But we already dreamed of the graphical displays that I could help to become real  in the 70ths and 80ths. Now a whole new era started, because these displays were under the direct control of the main processor (no terminal as with mainframes and Unix machines) and thus all graphics was now extremely fast. So that you could start writing programs that even with Silicon Graphics (SGI) machines (the best graphics machines at that time, but with unix os's ) were not possible. Before that there were only plotters. And plotters don't allow dynamic output, only purely static output was possible. Evolution of terminals see also here.

In the mid-1980s you had the choice between three 32bit Processors with potential FPU support. Motorolla 68000, National Semiconductor 32032/32332 and Intel 386. All of them had facts speaking for them and others speaking against. While the NS processor was clearly the best designed of these three (very orthogonally) , a lack of software - especially a good C++ compiler - ruled out this processor for the task at hand. If I remember well the FPU had some minor problems too. The Motorolla - as the second best designed - too had a problem mainly with software, there was no compiler with sufficient accuracy, at least at acceptable cost.  The FPU was also a somewhat weak point. The Intel (the so called IBM-PC, because IBM selected this processor out of the three) had for long time a really bad reputation at computer insiders because the transition from the 8-bit ( IBM-PC: Intel 8088 @ 4.77 MHz ) world over 16bit (8086) to 32bit was a very painful process with this processor for programmers. It was over years one single nightmare. I only cite Sir AndrewTannenbaum who spoke of a brain dead architecture ("brain-dead nature of the intel cpu's"). But what spoke in this case for the Intel processor was that its (announced) FPU worked internally not with 64 bits but with 80 bits, an advantage that could be crucial for this problem.  So when in 1985 the first acceptable Intel processor appeared, the Intel 386, a first version of a program that could simulate our planetary system was written in 'C' on an Intel-CPU (quite naturally I had tried out other cpu's before that for this task, but limitations in  graphical  capabilities and other limitations had sooner or later put an end to these versions). This was in 1987 enhanced  by an FPU version, which showed the rotation of the sun around the barycenter with high precision. The introduction of the FPU which was announced at the same time as the processor was delayed by 2 years.  And when it was finally available in 1987 (developers got access to these FPUs earlier) it had a lot of bugs (as did the other FPU's at that time, e.g, problems with infinity. The real problem was that nobody told you about these bugs, plenty of them. You had to find out all of them by yourself. And as not many people were interested in fpu issues, there was little - essentially none - information available. ), which made it necessary to write complicated test software to rule out these errors and write code to avoid these bugs, which bloated the program. This again made the program really slow and made the program only useful for my personal needs, not really presentable to a broader public (admittedly, these bugs disappeared quite quickly in the course of the first year).

 

The following description concerns the cpp-program which was downloadable from this site from 2002:

Even later - around 1988 - a cpp  version followed. First useful C++-compilers were at this time available with the Zortech V1(later V2/3).  As every developer can tell you, programs start very simple and slow and get by and by faster and more features are added by  and by. So while the first FPU-version worked with high precision it still took ages to calculate even a 2 or 3 body simulation (sun - jupiter - saturn, more were possible, but it took more time, but if you owned a newer FPU you could switch  off the FPU-tests), which made it not very attractive for a broader public. A downgrade from 'C++' to 'C' was no solution. It was not much faster. So again I had to wait.  So essentially not before the 486  in 1989/90   it was possible to write a presentable half way useful program. But now there showed up problems with the vga-cards. Some were extremely slow (Oak-Cards, WD), some had driver problems (you had to write the drivers by yourself for higher resolutions..), some had unacceptable limitations. After long long testing issues the Tseng ET3000  proved acceptable, but was still slow. Finally in 1991 arrived the ET4000 with acceptable speed, so that extensive testing of the program was possible (with different data from  different sources). At that time, the program had already become very complex with many tests for the data used, different view options, rotation around all axes, zoom-in, zoom-out etc et. (as computer-insiders can tell you: even opengl did not exist at this time. OpenGL was originally developed from the IRIS GL developed by Silicon Graphics (SGI) and the first version of it appeared 1992/3 with minimal feature set (One notable omission from version 1.0 of the API was texture objects.). The lack of a formal specification and conformance tests made Iris GL unsuitable for broader adoption. ) So in mid 91 the final CPP-version delivered stable results. I had tested a multitude of data from different sources and there was absolutely no doubt on the solar orbit that the program showed and especially the oscillogram it showed.

One last point should be mentioned which seems to be not understood by many who also tried to solve the problem: the program is a Dos-Program. And under Dos any running program has the whole processor (and FPU!) for its calculations alone. There is no task switcher, no dispatcher, no scheduler, no counters, no services, no background tasks, no indexer, no...... To give you a notion: do a ctrl-alt-del. (You will see around 40 programs running.) Yes, the inner workings of a multi-task/multi-user-system is today for a phycisist or mathematician as essential as has been for centuries the intime knowledge of a slide rule, integral calculus, series expansion, differentiation, matrix/vector calculation..... (I have written a book on it, so it is for me unfair easy to state this). The same is true for the compiler that you use. Although compilers are very mature these days, there are still some trap-doors to fall in. The only drawback in writing a program like this under Dos was that you had to write your 'graphical environment' completely by yourself. And without graphical output such programs are really hard to debug.

I never was very ambitious and had no fear that someone would outwit me, so I told freely all my friends the results the program delivers.

I had during the whole 1980s a study group together with many scientists from DESY, our local large scale accelerator for particle physics research here in Hamburg which works in very tight cooperation and exchange in manpower with the large scale accelerator at CERN in Geneva. They were just then developing for their own accelerator and the accelerator at CERN a 68.000 system for the detectors and my own computer company had developed in the beginning 1980s a Z80/Z800/Z8000 system and a NS16032/32332 system with comparable performance. At that time, it was completely open which of the various systems would win the race. And since all the hardware at that time with all the ASICs had a lot of timing problems, we shared our experiences to work around these errors. The same was true for the software, but even worse was that there was simply no software for the new processors. You had to start from scratch and write everything by yourself. That changed a lot in the end of the 1980s.

This study group ended in the mid 1980s but I had won some friends there. So it was quite naturally that they were under the first that I informed of the results that my program delivered: that the sun orbits around the gravitational center of our planetary system. "Incredibly, did they really forget to calculate this" was the most heard comment. And since astrophysics has not the best reputation  under particle physicist (unjustified as you can read on the history of the n-body-problem) I don't repeat the further comments here. So this news spread very quickly in whole DESY and in CERN in Geneva too. Telephone lines turned red hot for some minutes.

But I had also shown to some other friends of mine (all PhD-physicists) the results of my program of which at least one seemed he wanted to get undeserved merits afterwards.

 

 

I can't recall for sure when the site sunorbit.net and sunorbit.de were commited under my name. I remembered 2002 but there are links in the net which tell that it already existed in March 2001. It seems that it was even earlier comited, but I can't tell. (Just found the beginning of my sites on my harddisks: it was a homepage on Compuserve and shortly after on AOL in 1998. But the exact content is no more reconstructable.)

 

 


 

home