Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. A Fortran question

A Fortran question

Scheduled Pinned Locked Moved The Lounge
questionvisual-studio
40 Posts 22 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lost User

    Southmountain wrote:

    also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

    Ehr.. Fortran?? We keep burying VB6. Fortran?? Do we need to shoot it again? Is the Fortran code worth anything? If yes, then maybe rewrite it in a modern language? You made me curious and awaiting your answer.

    Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

    T Offline
    T Offline
    trønderen
    wrote on last edited by
    #13

    Eddy Vluggen wrote:

    We keep burying VB6. Fortran?? Do we need to shoot it again?

    Don't worry - it was shot, the Fortran giving you nightmares. C.A.R. Hoare was right in his remark to the proposed extensions for Fortran 77: "I don't know what programming languages will look like in year 2000, but they will be named Fortran!" I suspect that if you were presented with sample of modern Fortran code, you would never guess that the language is named Fortran. The evolution from Fortran IV to modern Fortran is more drastic than the evolution of the original thick coax 3 Mbps linear bus Ethernet to the Ethernet of today, using Cat6/RJ45, 1 Gbps, star topology. A couple of years ago, a friend of mine working at the Supercomputing center of the Norwegian Universities. He told me that Fortran (in the modern form) still is a very significant language in supercomputer environments. Lots of scientists / developers find Fortran much more suitable than C/C++ for array manipulation, and lots of engineering problems are essentially array manipulation.

    N L 2 Replies Last reply
    0
    • L Lost User

      Southmountain wrote:

      also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

      Ehr.. Fortran?? We keep burying VB6. Fortran?? Do we need to shoot it again? Is the Fortran code worth anything? If yes, then maybe rewrite it in a modern language? You made me curious and awaiting your answer.

      Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

      T Offline
      T Offline
      trønderen
      wrote on last edited by
      #14

      Eddy Vluggen wrote:

      Is the Fortran code worth anything? If yes, then maybe rewrite it in a modern language?

      "If if works, don't fix it!" Rewriting software to a potentially poorly suited other language, just because that other language is fashionable in many software development communities, may be a bad idea. Not always, but you need some stronger arguments than "We don't think Fortran IV reflects modern ideas about programming languages."

      H 1 Reply Last reply
      0
      • J jmaida

        I used Fortran (77, 90) for years back in the day. It's claim to fame is very fast execution of mathematical problems, maybe the fastest. I was told it was the main compiler used for NOAA's super computers to predict/simulate weather systems. Today, of course, GPU's have come to the fore front so unless Fortran has been ported to these systems it may be eclipsed. Lot of Fortran code is still around.

        "A little time, a little trouble, your better day" Badfinger

        T Offline
        T Offline
        trønderen
        wrote on last edited by
        #15

        Another good thing about old style Fortran: You wouldn't experience any stack overflow, no out of heap space, no null pointer exception. Pre-90 Fortran didn't allow recursion, and had no dynamic allocation. All memory could be statically allocated. No run time load, no risk. Lots of computing tasks can be solved without recursion, without new()/pointers. If you absolutely must do a recursion, you can manage your own stack by an array. Similar with linked lists. In my student days, I was a TA for the Introduction to Programming course, taught to all Tech. University students. Some of the "classical" departments were still clinging to Fortran as the only viable language; half of the students were more modern, learning Pascal. The courses were identical, except for the language (even the textbook was identical but for the coding examples). 3 out of 4 hand-ins were identical. For the last one, the Pascal students were to build and manipulate a linked list, so the Fortran students had a completely different #4 hand-in. One of the 'Fortran students' approached me, rather crossed: Why shall the others learn something that we don't get to learn? So I tried to explain to her how you could have a record field tell where you could find the next piece of data. I believe that I explained it referring to memory as a large array, the pointer being the index in that array. A few days later, this freshman girl approached me again, this time with Fortran code to solve the Pascal linked list problem, the 'heap' was a Fortran array, pointers were integers indexing the array, and the code certainly did solve the problem, giving the proper output. If a freshman, non-computer girl (I think she was studying chemistry) can do it in Fortran, then a seasoned Fortran programmer with thirty years of experience should be able to!

        J J G 3 Replies Last reply
        0
        • M MarkTJohnson

          What did you do to get punished like that?

          I’ve given up trying to be calm. However, I am open to feeling slightly less agitated.

          S Offline
          S Offline
          Southmountain
          wrote on last edited by
          #16

          personal hobby for astrological questions in financial areas...

          diligent hands rule....

          1 Reply Last reply
          0
          • J jmaida

            I used Fortran (77, 90) for years back in the day. It's claim to fame is very fast execution of mathematical problems, maybe the fastest. I was told it was the main compiler used for NOAA's super computers to predict/simulate weather systems. Today, of course, GPU's have come to the fore front so unless Fortran has been ported to these systems it may be eclipsed. Lot of Fortran code is still around.

            "A little time, a little trouble, your better day" Badfinger

            FreedMallocF Offline
            FreedMallocF Offline
            FreedMalloc
            wrote on last edited by
            #17

            You are correct about NOAA. Most, if not all, the main climate models used to predict weather are written in Fortran. When my daughter first started college she was looking at meteorology. We talked to a professor about it and I noticed several Fortran books on his shelf. I asked about them and he told us about the models which were written in the 50s and 60s in Fortran. They are large and complex so rewriting them would be difficult and error prone. And, Fortran has been likened to NASCAR - go fast and turn left. In other words, flexibility/readability is not the main thing, speed is. The professor said the the models have evolved a lot over the years and aren't completely understood. Which would make rewrites to a "modern" language even more problematic.

            1 Reply Last reply
            0
            • S Southmountain

              yes, it implements some algorithms on astrophysics I guess...

              diligent hands rule....

              T Offline
              T Offline
              trønderen
              wrote on last edited by
              #18

              If you plan to do programming in the area of astrophysics ... There was an excellent program called Astronomy Lab for Windows, ALW - or ALW203 for the last version; I believe it was published in 1996. Maybe I should say that there is (not 'was') this program: It will still run under Windows 10. The functionality is great. The only problem is that the user interface suggests that it was developed under Windows 1.0. You can't zoom fonts, all text is monospaced 'fixedsys' (the 'Set font' command has no effect), tables are drawn using |, + and - characters, graphs are drawn using hairlines, there is no support for cut & paste, scroll wheel and several other standard Windows functions. 30 years ago I was in contact with the developer, offering to update the user interface (I had a visually handicapped daughter who couldn't see the hairlines and needed a bigger font), but I was turned down: He had no intentions to continue developing the program, so there was no reason for him to let anyone improve the UI(!) I have never found any replacement for ALW providing the same functionality and simplicity of use (in spite of its UI shortcomings). So if you go ahead developing anything with similar functionality, and a more modern UI, please use ALW as a checklist for what to include, and present the results as a CP article! ALW203 is still available for downloading from a large number of sites on internet.

              1 Reply Last reply
              0
              • T trønderen

                Another good thing about old style Fortran: You wouldn't experience any stack overflow, no out of heap space, no null pointer exception. Pre-90 Fortran didn't allow recursion, and had no dynamic allocation. All memory could be statically allocated. No run time load, no risk. Lots of computing tasks can be solved without recursion, without new()/pointers. If you absolutely must do a recursion, you can manage your own stack by an array. Similar with linked lists. In my student days, I was a TA for the Introduction to Programming course, taught to all Tech. University students. Some of the "classical" departments were still clinging to Fortran as the only viable language; half of the students were more modern, learning Pascal. The courses were identical, except for the language (even the textbook was identical but for the coding examples). 3 out of 4 hand-ins were identical. For the last one, the Pascal students were to build and manipulate a linked list, so the Fortran students had a completely different #4 hand-in. One of the 'Fortran students' approached me, rather crossed: Why shall the others learn something that we don't get to learn? So I tried to explain to her how you could have a record field tell where you could find the next piece of data. I believe that I explained it referring to memory as a large array, the pointer being the index in that array. A few days later, this freshman girl approached me again, this time with Fortran code to solve the Pascal linked list problem, the 'heap' was a Fortran array, pointers were integers indexing the array, and the code certainly did solve the problem, giving the proper output. If a freshman, non-computer girl (I think she was studying chemistry) can do it in Fortran, then a seasoned Fortran programmer with thirty years of experience should be able to!

                J Offline
                J Offline
                jmaida
                wrote on last edited by
                #19

                yes, you correct. Code was all statically determined at compile time. Recursion was simulated with one's own stack arrays again already pre-allocated. If it was memory resident at execution time, it was bullet fast. For many problems, the only thing not static was disk I/O. True the memory it used was static, but I/O times were not guaranteed fixed. Virtual memory was another variable not guaranteed fixed, but for most purposes, it was as good as fixed.

                "A little time, a little trouble, your better day" Badfinger

                1 Reply Last reply
                0
                • T trønderen

                  Eddy Vluggen wrote:

                  We keep burying VB6. Fortran?? Do we need to shoot it again?

                  Don't worry - it was shot, the Fortran giving you nightmares. C.A.R. Hoare was right in his remark to the proposed extensions for Fortran 77: "I don't know what programming languages will look like in year 2000, but they will be named Fortran!" I suspect that if you were presented with sample of modern Fortran code, you would never guess that the language is named Fortran. The evolution from Fortran IV to modern Fortran is more drastic than the evolution of the original thick coax 3 Mbps linear bus Ethernet to the Ethernet of today, using Cat6/RJ45, 1 Gbps, star topology. A couple of years ago, a friend of mine working at the Supercomputing center of the Norwegian Universities. He told me that Fortran (in the modern form) still is a very significant language in supercomputer environments. Lots of scientists / developers find Fortran much more suitable than C/C++ for array manipulation, and lots of engineering problems are essentially array manipulation.

                  N Offline
                  N Offline
                  nickg59
                  wrote on last edited by
                  #20

                  Fortran must be one of the most maligned programming languages ever -- and that's saying something. FORTRAN-IV was pretty awful, admittedly, but versions starting with Fortran-77 onwards were both very useful and usable -- regardless of the opinions of academic computer scientists. And modern Fortran is very much alive and well. Although I've spent most of the last 35 years using C, C++ and Python, I have no complaints about the Fortran versions I used (a lot) way back when and still use for hobbyist purposes. C++, on the other hand ... :-) ... (although C++11 onwards is pretty decent).

                  1 Reply Last reply
                  0
                  • T trønderen

                    Another good thing about old style Fortran: You wouldn't experience any stack overflow, no out of heap space, no null pointer exception. Pre-90 Fortran didn't allow recursion, and had no dynamic allocation. All memory could be statically allocated. No run time load, no risk. Lots of computing tasks can be solved without recursion, without new()/pointers. If you absolutely must do a recursion, you can manage your own stack by an array. Similar with linked lists. In my student days, I was a TA for the Introduction to Programming course, taught to all Tech. University students. Some of the "classical" departments were still clinging to Fortran as the only viable language; half of the students were more modern, learning Pascal. The courses were identical, except for the language (even the textbook was identical but for the coding examples). 3 out of 4 hand-ins were identical. For the last one, the Pascal students were to build and manipulate a linked list, so the Fortran students had a completely different #4 hand-in. One of the 'Fortran students' approached me, rather crossed: Why shall the others learn something that we don't get to learn? So I tried to explain to her how you could have a record field tell where you could find the next piece of data. I believe that I explained it referring to memory as a large array, the pointer being the index in that array. A few days later, this freshman girl approached me again, this time with Fortran code to solve the Pascal linked list problem, the 'heap' was a Fortran array, pointers were integers indexing the array, and the code certainly did solve the problem, giving the proper output. If a freshman, non-computer girl (I think she was studying chemistry) can do it in Fortran, then a seasoned Fortran programmer with thirty years of experience should be able to!

                    J Offline
                    J Offline
                    jsc42
                    wrote on last edited by
                    #21

                    In my Fortran IV days, I wrote stacks / heaps / linked lists / trees using array and integer indices. That experience proved useful when I worked on a mainframe assembler. I was able to write recursive routines (e.g. an optimised quicksort) using the same techniques I had used in Fortran, emulating procedure calls as an in situ stack of return keys.

                    T 1 Reply Last reply
                    0
                    • J jsc42

                      In my Fortran IV days, I wrote stacks / heaps / linked lists / trees using array and integer indices. That experience proved useful when I worked on a mainframe assembler. I was able to write recursive routines (e.g. an optimised quicksort) using the same techniques I had used in Fortran, emulating procedure calls as an in situ stack of return keys.

                      T Offline
                      T Offline
                      trønderen
                      wrote on last edited by
                      #22

                      jsc42 wrote:

                      In my Fortran IV days, I wrote stacks / heaps / linked lists / trees using array and integer indices. That experience proved useful when I worked on a mainframe assembler.

                      40 years ago I wrote a coroutine mechanism in assembler. This was on a VAX-like 32 bit supermini CISC, and I loved "having full control". I recently picked up Aarch64 documentation to learn the ARM instruction set. I've never worked on a machine that register oriented, and I'm really itching to see both how bad code compilers generate :-) and to learn how much you can save through assembler coding. My experience from that supermini, heavily microcoded CISC 40 years ago was that even if the generated code looked inefficient, it was very difficult to beat the compiler by more that a single digit percentage: Pipelining, fancy prefetching and other optimization techniques flushed linear sequences so rapidly through that the execution time was almost proportional to the number of jumps taken, killing all gain from the prefetch (branch prediction wasn't common in those days). Interrupts were extremely expensive. So I am curious to see if a RISC type CPU is much different. (After studying the Aarch64 "reduced" instruction set, my reaction is "Thanks heaven that the ARM doesn't have a complex instruction set :-)) So I am itching to get myself something like that "Windows Dev Kit 2023", aka. "Volterra". But I fear that when looking back, five years from now, we'll view it like an early prototype. We will view the ARM version of Windows that comes with Volterra as an early prototype. So I will try to hold back, hoping that within a year or two, there will be a nice crop of competitors to choose from.

                      J 1 Reply Last reply
                      0
                      • S Southmountain

                        I got some Fortran code with the extension .f. how difficult to run through them in GFortran now? I have touched Fortran since I left school. also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                        diligent hands rule....

                        M Offline
                        M Offline
                        Matthew Wilson
                        wrote on last edited by
                        #23

                        Try GNU Fortran. Eclipse IDE used to have Fortran hooks.

                        1 Reply Last reply
                        0
                        • S Southmountain

                          I got some Fortran code with the extension .f. how difficult to run through them in GFortran now? I have touched Fortran since I left school. also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                          diligent hands rule....

                          B Offline
                          B Offline
                          Bruce Patin
                          wrote on last edited by
                          #24

                          I recommend the IBM 2540 card reader punch. Just needs some cleaning and oil and remember to empty the chip box.

                          1 Reply Last reply
                          0
                          • T trønderen

                            jsc42 wrote:

                            In my Fortran IV days, I wrote stacks / heaps / linked lists / trees using array and integer indices. That experience proved useful when I worked on a mainframe assembler.

                            40 years ago I wrote a coroutine mechanism in assembler. This was on a VAX-like 32 bit supermini CISC, and I loved "having full control". I recently picked up Aarch64 documentation to learn the ARM instruction set. I've never worked on a machine that register oriented, and I'm really itching to see both how bad code compilers generate :-) and to learn how much you can save through assembler coding. My experience from that supermini, heavily microcoded CISC 40 years ago was that even if the generated code looked inefficient, it was very difficult to beat the compiler by more that a single digit percentage: Pipelining, fancy prefetching and other optimization techniques flushed linear sequences so rapidly through that the execution time was almost proportional to the number of jumps taken, killing all gain from the prefetch (branch prediction wasn't common in those days). Interrupts were extremely expensive. So I am curious to see if a RISC type CPU is much different. (After studying the Aarch64 "reduced" instruction set, my reaction is "Thanks heaven that the ARM doesn't have a complex instruction set :-)) So I am itching to get myself something like that "Windows Dev Kit 2023", aka. "Volterra". But I fear that when looking back, five years from now, we'll view it like an early prototype. We will view the ARM version of Windows that comes with Volterra as an early prototype. So I will try to hold back, hoping that within a year or two, there will be a nice crop of competitors to choose from.

                            J Offline
                            J Offline
                            jsc42
                            wrote on last edited by
                            #25

                            I don't know how many instructions your RISC machine has. The traditional rule was that up to 100 instructions was RISC and more than 100 was CISC. The Singer System 10 (Singer System-10[^]) only had 16 instructions, but its upgraded version (the ICL System 25) (http://members.iinet.net.au/~daveb/S10/Architecture%20of%20the%20ICL%20System%2025/Pages%2016%2017.pdf[^]) had a whopping 24 instructions. Admittedly, some of these had variants and the no of bits per instruction was 60 (S10) or 80 (S25). Sadly, I lost my pocket reference manual for the S25 in an office reshuffle.

                            T 1 Reply Last reply
                            0
                            • S Southmountain

                              I got some Fortran code with the extension .f. how difficult to run through them in GFortran now? I have touched Fortran since I left school. also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                              diligent hands rule....

                              M Offline
                              M Offline
                              Mike Johnston
                              wrote on last edited by
                              #26

                              Linux supports Fortran most of the way back to Fortran 66. You can install the compiler(s) in WSL or on a Linux box if you have access to one

                              1 Reply Last reply
                              0
                              • T trønderen

                                Another good thing about old style Fortran: You wouldn't experience any stack overflow, no out of heap space, no null pointer exception. Pre-90 Fortran didn't allow recursion, and had no dynamic allocation. All memory could be statically allocated. No run time load, no risk. Lots of computing tasks can be solved without recursion, without new()/pointers. If you absolutely must do a recursion, you can manage your own stack by an array. Similar with linked lists. In my student days, I was a TA for the Introduction to Programming course, taught to all Tech. University students. Some of the "classical" departments were still clinging to Fortran as the only viable language; half of the students were more modern, learning Pascal. The courses were identical, except for the language (even the textbook was identical but for the coding examples). 3 out of 4 hand-ins were identical. For the last one, the Pascal students were to build and manipulate a linked list, so the Fortran students had a completely different #4 hand-in. One of the 'Fortran students' approached me, rather crossed: Why shall the others learn something that we don't get to learn? So I tried to explain to her how you could have a record field tell where you could find the next piece of data. I believe that I explained it referring to memory as a large array, the pointer being the index in that array. A few days later, this freshman girl approached me again, this time with Fortran code to solve the Pascal linked list problem, the 'heap' was a Fortran array, pointers were integers indexing the array, and the code certainly did solve the problem, giving the proper output. If a freshman, non-computer girl (I think she was studying chemistry) can do it in Fortran, then a seasoned Fortran programmer with thirty years of experience should be able to!

                                G Offline
                                G Offline
                                giulicard
                                wrote on last edited by
                                #27

                                Moreover, since it should not be able to allow (memory) aliasing (since it does not have pointers), a Fortran compiler eventually optimized for esoteric architectures with a high degree of parallelism, could easily be able to distribute computations that involving matrices/tensors (even huge ones) by taking full advantage of specialized computational units. It could do this almost transparently by devolving such computations directly to the hardware. AFAIK, in C99 you can eliminate or limit (mem) aliasing with the restrict type qualifier.

                                T 1 Reply Last reply
                                0
                                • S Southmountain

                                  I got some Fortran code with the extension .f. how difficult to run through them in GFortran now? I have touched Fortran since I left school. also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                                  diligent hands rule....

                                  C Offline
                                  C Offline
                                  Cpichols
                                  wrote on last edited by
                                  #28

                                  I think I might prefer Fortran, which I once knew, to translating from perl, which I've never properly learned. Still, it's fun in small doses.

                                  1 Reply Last reply
                                  0
                                  • J jsc42

                                    I don't know how many instructions your RISC machine has. The traditional rule was that up to 100 instructions was RISC and more than 100 was CISC. The Singer System 10 (Singer System-10[^]) only had 16 instructions, but its upgraded version (the ICL System 25) (http://members.iinet.net.au/~daveb/S10/Architecture%20of%20the%20ICL%20System%2025/Pages%2016%2017.pdf[^]) had a whopping 24 instructions. Admittedly, some of these had variants and the no of bits per instruction was 60 (S10) or 80 (S25). Sadly, I lost my pocket reference manual for the S25 in an office reshuffle.

                                    T Offline
                                    T Offline
                                    trønderen
                                    wrote on last edited by
                                    #29

                                    The 'Arm A64 Instruction Set' (Armv8-A) index of instructions has 402 entries, if my count is correct. Quite a few of the entries cover several instructions, e.g. for different operand sizes, or because 2 or 3 instructions are always used together. On the other hand, a number of instructions (or rather assembler mnemonics) are really synonyms for special cases of other instructions. Other instructions have separate entries for different operand specifications (e.g. immediate constant or register identification). So counting distinct instructions without duplication requires some effort. You would probably end up with between 400 and 500. Aside from that: A processor that supports a virtualization, three privilege levels, 256 interrupt priority levels, 3 cache levels, transactional memory, virtual memory, and what else? These are not typical RISC features when the concept was defined :-). Not that I will criticize or object to it. Some of the instructions are really useful, such as 'Count Leading Zeros'. Or: Compare memory location to a register and if they are equal, replace the memory location with the value in another register, as an atomic, uninterruptible instruction. Or: Reverse bit order, byte order or halfword order - nice for handling little/big/mixed-endian data, but hardly super-simple instructions. Actually, I like the look of the ARM instruction set, interrupt system, memory management, and synchronization mechanisms. I just need a machine where I can try it out. I am unsure about Volterra being a good investment. (And it isn't yet available in Norway.)

                                    1 Reply Last reply
                                    0
                                    • S Southmountain

                                      I got some Fortran code with the extension .f. how difficult to run through them in GFortran now? I have touched Fortran since I left school. also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                                      diligent hands rule....

                                      I Offline
                                      I Offline
                                      Igor Pankovcin
                                      wrote on last edited by
                                      #30

                                      I had the similar problem this past week. I had to troubleshoot old code written in FORTRAN. I downloaded and installed INTEL FORTRAN compiler. It integrated directly with latest Visual Studio, no issues. I was able to build and debug code directly from VS as if I worked with C/C++/C# (and found and fixed the problem) .

                                      1 Reply Last reply
                                      0
                                      • L Lost User

                                        Southmountain wrote:

                                        also I searched around and try to find a good IDE for GFortran. any recommendations for such IDEs?

                                        Ehr.. Fortran?? We keep burying VB6. Fortran?? Do we need to shoot it again? Is the Fortran code worth anything? If yes, then maybe rewrite it in a modern language? You made me curious and awaiting your answer.

                                        Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                        A Offline
                                        A Offline
                                        Al Fargnoli
                                        wrote on last edited by
                                        #31

                                        Fortran is still used a lot. See Why physicists still use Fortran, and the bottom of this page: IBM100 - FORTRAN.

                                        L 1 Reply Last reply
                                        0
                                        • G giulicard

                                          Moreover, since it should not be able to allow (memory) aliasing (since it does not have pointers), a Fortran compiler eventually optimized for esoteric architectures with a high degree of parallelism, could easily be able to distribute computations that involving matrices/tensors (even huge ones) by taking full advantage of specialized computational units. It could do this almost transparently by devolving such computations directly to the hardware. AFAIK, in C99 you can eliminate or limit (mem) aliasing with the restrict type qualifier.

                                          T Offline
                                          T Offline
                                          trønderen
                                          wrote on last edited by
                                          #32

                                          giulicard wrote:

                                          Moreover, since it should not be able to allow (memory) aliasing (since it does not have pointers),

                                          Being around 40 years since I coded Fortran, I have forgotten a lot :-), such as the parameter transfer mechanism. The standard mechanism was call by reference, wasn't it? If a subroutine assigned a value to a formal parameter, the value of the actual parameter would be changed. A reference parameter is equivalent to a pointer. So if you pass the same actual parameter for two formal parameters, you have an aliasing issue. E.g. if the compiler reorders the assignments to the two formal parameters, it might affect the final value of the actual parameter. If some COMMON block variable is used as parameter, and the subroutine refers to the same COMMON variable, you have a similar aliasing issue. In my study years, Pascal was quite new. It didn't become the language for the Introduction to Programming course until the year after I started my studies (and then only for half of the students), so pointers were definitely 'something new'. Yet, in the Compilers course, aliasing issues certainly had a prominent place. Aliasing was treated as exceptional situations; it wasn't something you would worry too much about in Fortran. Even with Pascal and its strongly typed pointers, aliasing wasn't that essential - if the compiler didn't do much optimizing (which was often the case for Pascal compilers), the compiler could play back a 'You asked for it, you got it!' if a programmer referenced the same location along two different paths. Hell didn't break loose until C came with void*, pointer arithmetic, more or less arbitrary casting, and pointers to non-heap locations. Today, we have the processing power and memory capacity to do a more or less complete flow analysis of the compilation unit; in the K&R days, you couldn't expect that. I suspect that compilers were quite fast to conclude, when they encountered a void* or an arbitrary cast, "Oh well, we'll just have to drop all optimization of this one!"

                                          G 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups