Although the three problems are broad, UIUC astronomy professor Richard Crutcher expects all of them to be resolved within the next few years. NCSA's new CONVEX C3 and Thinking Machines Corporation's CM-5, both recently installed at NCSA, will provide the computing power. And plans are underway to set up a high-speed network link from the Berkeley-Illinois-Maryland Array (BIMA) telescope system at the Hat Creek Observatory in northern California to NCSA via fiber optics or a satellite transponder.
As for software, the BIMA project produced a package called MIRIAD, which could enable astronomers to experiment with real-time observation within a year. Long-term hopes for fast imaging are pinned on a new package being developed by an international collaboration including BIMA member institutions; the National Radio Astronomy Observatory (NRAO); and scientists from Australia, Canada, England, the Netherlands, and India. Crutcher sits on the steering committee for the project.
It will be POSIX compliant to facilitate porting to a wide variety of architectures. POSIX is a hardware-independent standard for operating systems. With AIPS++, an astronomer can learn the system once and then process images on nearly any computer using data from almost any radio telescope.
Another goal is for the software to make as many image processing decisions as possible. "Right now data processing is a very labor intensive effort," says Crutcher. "Astronomers must make hundreds of decisions as to how to process data using their expert knowledge. We'd like to program that expert knowledge into the software so that the computer system instantaneously gives us a 'best effort' image."
Twelve programmers are working full time on the project. NCSA's representative is research programmer Mark Stupar. NRAO is providing space, workstations, training, and housing for the team. Once the kernel is complete, team members will return home to guide local teams in writing applications software.
"By January of 1993 we hope to have the kernel to the stage where we can begin fleshing it out and writing applications code," says Crutcher. "There should be limited functionality by then--but quite limited."
Says Crutcher, "AIPS++ will run on the CONVEX C3, which is a general-purpose computer. It handles the less computationally intensive portions of the code--data I/O, graphics, user interfaces, visualization, and editing. Simultaneously the plan is to try to develop stand-alone algorithms on the CM-5 when that machine stabilizes a bit--with the concept of being able to hook those into the AIPS++ code so that it will appear as a single code to the user on the meta-computer. When you reach a compu-tationally intensive task, AIPS++ will off-load the data over the HIPPI link to the CM-5 for processing, so the Connection Machine will appear as almost a high-speed coprocessor on the CONVEX."
Initially the CM-5 will not have a C++ compiler. Its portion of the code will be implemented in Fortran 90.
"For the last 40 years," says Herb Schildt, author of 35 computer books, "every innovation in programming has had one focus: to allow programmers to handle increasingly complex--that is, larger--programs." Schildt's books include C++: The Complete Reference and Teach Yourself C++. (Both books are published by Osborne/McGraw-Hill, Berkeley, CA.) "C++ takes the C language, which was standardized a couple of years ago, and adds to it eleven key words that support object oriented programming. Object orientation enables a programmer to handle more complex programs by compartmentalizing code and data. With it, you can build what we call 'black boxes' containing code fragments. These boxes provide very controlled access to the fragments. So once you get a subunit of your program working and you define the interface to that subunit, you can put it into your program and forget about it. If you need to make changes inside that black box, you can do so without affecting the rest of your program as long as you leave the interface the same. This means you can enhance that subunit without changing the rest of the code."
Crutcher compares this advantage to older code, such as AIPS and MIRIAD, "The old AIPS evolved on a smaller system in a more haphazard way. It is written in Fortran and uses constructs called common blocks. If you change one common block, then all parts of the code using that common block have to be updated to reflect the change. An object code such as C++ is not interdependent except through well- defined interfaces. It provides a much greater expansion capability because you can build new code by piecing together building blocks from the original code. And you can maintain the code more easily. Upgrading the operating system or adding a new functionality will involve changing only parts of the code. You don't reinvent the wheel every time you do something new."