11 ms·
Old-timers please correct me if I'm wrong, but modern-style full-coverage tests of code weren't trivial to write or add to fortran projects on dec10's...
by joemi 10y ago
Old-timers please correct me if I'm wrong, but modern-style full-coverage tests of code weren't trivial to write or add to fortran projects on dec10's...
- ChuckMcM 10y agoIt was possible to write tests but pass by reference is a "feature" of Fortran IV. A subroutine receives values from the caller through the parameter list; likewise, the subroutine returns values by modifying the variables in the parameter list. Subroutines are invoked in a FORTRAN program as a statement, not an expression. The syntax used is, CALL name(actualParamList) See you modify the parameter to send a return value. Really ancient stuff. And if you're working on hardware that is challenged in not having a "load immediate" instruction for floating point, well you get "optimizations" where the compiler creates what is essentially a pre-initialized variable and uses the address of that when a constant is used.
- PhasmaFelis 10y agoI mean, I don't understand how the compiler got out the door if passing an integer to a subroutine caused inexplicable disasters. It seems like ChuckMcM is saying the equivalent of int increment(int x) { x = x + 1; return x; } int y = increment(2); Would blow up your program's concept of 2, and I can't imagine that being missed before sending it out to users. But I've never used Fortran, so I may be seeing false equivalences to structures and practices in modern languages.