News for hackers. Stuff that matters.
Re:Show HN: A minimal Fortran TCP client and server by lallysingh on Wednesday October 30, 2019 @10:45PM (#21405257)
> Some of the code was very specifically marked as "not for C++", because modern Fortran (2003 at the time) was better for some specific number-based things.

Was that a you-can't-do-that-in-c++ thing or slightly-faster-in-fortan thing? I'm always skeptical about the latter guiding major maintainability decisions on often-specious performance benefit claims.

Re:Show HN: A minimal Fortran TCP client and server by m_mueller on Thursday October 31, 2019 @02:13AM (#21406141)
To expand a bit on other answers: There is a qualitative difference Fortran has by offering

1) built-in multidimensional arrays including Matlab-like array operations. That means every library supports the same format, it's standardized and convenient as opposed to the many formats in C++ Land.

2) performant defaults. When performance is more important than safety, Fortran programs are easier to write and maintain. Arguments are by default pass-by-reference, non-aliased (a major assumption Fortran compilers can usually make to optimize) and their intent as in/out/in out can simply be marked as such.

Fortran:

real(8), intent(in) :: foo

C:

restrict const * const double foo # if I remember correctly

Re:Show HN: A minimal Fortran TCP client and server by goerz on Thursday October 31, 2019 @06:16AM (#21407194)
I’m not sure what you mean by “When performance is more important than safety, Fortran programs are easier to write and maintain.” The fact that arrays are not based on pointers makes Fortran a much safer language than C. It’s very hard to shoot yourself in the foot with Fortran. It’s fast and safe
Re:Show HN: A minimal Fortran TCP client and server by m_mueller on Friday November 01, 2019 @12:39AM (#21416322)
Fortran offers a better developer experience overall for Numerical applications yes. But it is still very foot shootable as I remember - point a pointer at allocatable and the fun can start. Or make everything inout for convenience and/or performance. But yes, compared to C the defaults are also safer, just don't expect Rust.
Re:Show HN: A minimal Fortran TCP client and server by pletnes on Thursday October 31, 2019 @12:01PM (#21410191)
It’s very easy to shoot yourself in any body part - just disable array bounds checking, drop modules (which means no function call interface checks) and you’re practically back to C-land in terms of memory safety. Of course, the sensible thing to do is to check interfaces and bounds (at least in debug/test mode).
Re:Show HN: A minimal Fortran TCP client and server by shakna on Thursday October 31, 2019 @01:41AM (#21406042)
Slightly-faster-in-Fortran. But it wasn't just a slight gain. The system I'm referring to is a multi-national system that processes somewhere in the order of 50-100 million transactions a second (depending on the time of day, and the day itself).

A slight performance gain of 1% by using Fortran has a noticeable effect on long-term economic gains. (It was usually in the range of 5-8% performance improvement, but at the worst was 1%).

Thankfully, the reason I can tell you this, is because they tested it in the real world, splitting all transaction across a large-scale A/B test.

The real-world economic gains from the faster performance more than paid for the occasional development costs of a Fortran-familiar developer, hence why those systems persist in Fortran. They also scheduled re-assessment of this once every five years, knowing it might change one day.

Re:Show HN: A minimal Fortran TCP client and server by sampo on Wednesday October 30, 2019 @11:05PM (#21405375)
In the areas where you'd want to use modern Fortran (numerics, not TCP servers), it is easily also more maintainable than C++.