dd@beta.lanl.gov (Dan Davison) (05/27/89)
A while back I asked if MS had yet figured out how to write a fortran compiler, chiefly for ease of calling other MS languages (mostly C). Below are the responses I received, with identifcation removed, as no one said that their note was public. The criticisms in number 5, checked out with a loaner compiler. The MS Fortran does not seem to be as bad as it used to be, though. Someone may be trying. So, I will probably go with the Lahey compiler. My thanks to all who replied! ---------------------------------------------------------------------- 1. The current Microsoft Fortran compiler is very much improved over the versions you have used. The current version is version 4.1, and it has the following features: 1) Full Fortran 77 standard 2) CodeView interactive debugger 3) Library manager 4) Program editor 5) Full support for MS DOS and OS/2, including OS/2 dynamic link libraries The debugger is superb--much better than (say) the VAX VMS interactive debugger. The user interaction may be performed via keyboard commands, function keys, or mouse (I end up using all three, depending on which is easiest). You can see your source code, step through it and watch variable values change, set and remove breakpoints with a mouse click or short command, set conditional breakpoints, view the program as Fortran source code or assembly code, view registers, change the values of variables interactively, create a command file of standard debugging operations to automate debugging sessions, and so on. I highly recommend it. I use Microsoft Fortran heavily. My company () produces a mathematics programming library for PC Fortran programmers, so I am very much concerned with the quality of the compilers I use. ------------------------------------------------------------------ 2. MS 4.0 and 4.1 are full Fortran-77 implementations. They seem to work fine. I use them extensively. ------------------------------------------------------------------ 3. I have used MSFORTRAN 4.0 for some large projects (e.g., compiling the source to SPICE2G.6 - about 500K source) and have found it to work well. I had v3 earlier, and it had bugs and lacked f77 compatibility. 4.0 is much better in that regard. [later, in response to a question I sent...] I don't want to mislead you. I had to put in about a month's work last summer to get the 500K code to run under MSFORTRAN; however, the code was far from standard FORTRAN. It implemented dynamic memory management using a non-standard LOC function to get pointer information. This was hard to port to the Intel architechure of the PC. Also the source had to be split into pieces that each produced less than 64K code. This was not the fault of MS, but rather of the segmented memory of the PC. The good news is that small, standard FORTRAN programs should port easily, with the only changes probably in the OPEN statements for files. -------------------------------------------------------------- 4. Their stuff no longer sucks and some of it is quite good. For gods sake upgrade MASM or use A86 or the Borland Assmebler. 2.0 was horrid. The current MS Fortran is reasonably F77 compliant unlike 1.0 2.0 and 3.1. -------------------------------------------------------------- 5. yes, ms has produced a "real" fortran compiler...but make sure it's version 4.1. we were using it for a 4th year computer science project here, linking in C and assembly language modules. do NOT use 4.0....it bombs on every fortran DATA statement. [confirmed with 4.01...dbd] as for "no"....it is a fortran compiler, but you'll need a 286 or 386 machine to get decent compilation times. our old program (about 3300 lines or 110K) took 15 minutes to compile on my 8 mHz xt clone. it's tolerable on a 286 or 386 (the same program takes a little less than 2 minutes to compile on a 386 with compiler, sources, and object files on a ram drive). [sigh. confirmed this too...dbd] -------------------------------------------------------------------------- 6. In a nutshell, no. See below. I've ported some few things from VAX Fortran to MS, and I was not impressed. We were using 4.1(MS) and a reasonably recent VMS version. We had to rewrite some pieces of code which did serial logical operations (say, 8 in one statement) which the F66/F77 standards allow. Other hosts compiled this source without a sneeze, but MS had a hernia: compiler stack overflow. NO SOURCE DIAGNOSTIC. Machines were PS/2 models 50 and 80. Also, compiler messages and error numbers did not correlate, but I heard that was a 386-caused hassle. I've heard better comments about Lahey F77, but have no personal experience with it. ---------------------------------------------------------- 7. Yes. Believe it or not, the answer is a clear YES. I have uncovered zero bugs in heavy use (others have found a very few, very obscure ones). It has both large and medium models (and huge if you are stupid enough to use it). And, it lines nicely to Microsoft C. ------------------------------------------------------------------- 8. Several of us here had quite a laugh reading your posting, because your comments hit so close to home. We have used MicroSoft Fortran 4.1 for a while here, and our opinion is best summarized by the fact that we usually refer to it as MicroF****d Fortran! [slightly edited...dbd] [...]Oh well, as far as IBM fortran compilers, I have hear good comments about the Lahey Fortran compiler, however I have no personal experience to back that up. ----------------------------------------------------------------------- 9. I use MS Fortran, version 3.1 or 3.2, I forget which. Your condemnation is so general, I don't know what kind of information you might find helpful. MS Fortran is not my favorite Fortran compiler, but I certainly wouldn't call it trash. My favorite compiler is Lahey F77L. However, MS has many alternative math libraries to choose from, which allows me to convert programs for different setups by re-linking with a different .LIB. (For instance, I can create a version of a program for use on a system without a math coprocessor by linking with ALTMATH.LIB.) One of my colleauges uses a 4. version and is happy with it. If you tell me what gave you grief about the earlier versions, I can find out if these features still exist in the latest version. By the way, a professor in the economics department here at Princeton, who has created a library of subroutines to do maximum likelihood estimation (very math-intensive) has done some benchmark tests of MS, IBM and Lahey Fortran and MS came in 2nd to Lahey, but was not vastly inferior, in terms of compile time, link time, size of executable code and run time. ------------------------------------------------------------- 10. Well... I used MS FORTRAN compiler v 3 (and maybe 2), in porting something like 20k lines of dec FORTAN IV. Seemed fine to me, though I did invest in some add-on libraries. Ran faster on the original pc than it had on a dec 11/70, too. The newer MS compilers supposedly are interoperable (write modules in any of n languages within a single program). And the documentation for interfacing assembler looks a lot better than v2 or v3 (which was pitiful). ------------------------------------------------------------------ 11.Do yourself a favour and get the Lahey F77L compiler. It compiles like lightning, and runs as fast as output from Microsoft's compiler. Lahey's compiler is also much easier to install and use. ------------------------------------------------------------------------------ 12. If I had to choose between F77L and MS Fortran, all other things being equal, I would also choose F77L. It is my favorite of all the Fortran compilers I've used, mainframe or microcomputer. I would check further on the possibility of linking with other MS-language routines, though. I don't have my manual at home, but I remember extensive instructions on the restrictions and protocols to call Turbo-C routines from F77l programs (and vice-versa) but I don't remember seeing anything about linking with any MS languages. I would call Lahey about that. Their technical support is pretty good (and accessible!). Lahey also has a great interactive (SLD) debugger. I've only used it once, but it's nice to know it's there. ----------------------------------------------------------------------- 13. The Microsoft Fortran Compiler (pre version 4.0) was certainly an atrocious piece of software. MS Fortran 4.1 is a world away from those earlier versions. It conforms to the full FORTRAN 77 standard, is well documented, extremely bugfree and produces executable code that is faster than that from any other MS DOS compiler. The Lahey compiler is also an excellent product and does compile code two to three times faster. I prefer the Microsoft compiler because of it's superior documentation, compatibility with Microsoft C, and Codeview the best window oriented source level debugger I have seen. Codeview is easier and more flexle than the VMS DEBUG, Unix dbxtools and Lahey's SOLD debugger. dan davison theoretical biology and biophysics t-10 ms k710 los alamos national laboratory los alamos, nm 87545 USA dd@lanl.gov 505-665-1355 -- dan davison/theoretical biology/t-10 ms k710/los alamos national laboratory los alamos, nm 875545/dd@lanl.gov (arpa)/dd@lanl.uucp(new)/..cmcl2!lanl!dd