文章18
标签11
分类5

怎么在Linux下舒服地读Fortran代码

首先,如果是在用Windows的话,那么最方便的方式无疑是Visual Studio+Intel oneAPI,毕竟是地表最强IDE加上x86下最适合科学计算的运行环境,代码高亮,悬停应该都是支持的,也就没有任何必要折腾。那么假如说你并不想在Windows下运行你的计算负载,直接说结论,大概是CLion和VS Code用起来各有各的不舒服。社区维护的Kate的话,我用我真用,问就不推荐。

Visual Studio Code

总体来说体验尚可,得益于Code首创的LSP协议,搭配Modern Fortran插件,可以实现在大部分变量上悬停显示类型,注释等信息。

但是有一个很致命的缺点:

      IF(gamma_only) THEN
!$omp parallel do collapse(3) default(shared) firstprivate(npol,nrxxs,nkqs, &
!$omp                ibnd_buff_start,ibnd_buff_end) private(ir,ibnd,ikq,ipol)
        DO ikq=1,SIZE(locbuff,3) 
          DO ibnd=1, x_nbnd_occ 
            DO ir=1,nrxxs*npol
              locbuff(ir,ibnd,ikq)=0.0_DP
            ENDDO
          ENDDO
        ENDDO
      ENDIF

Code对于Fortran语言,判断如何折叠代码的方法竟然是靠检测缩进,横亘中间的OpenMP语句就会影响折叠;最难绷的是,如果这句话只是一般的注释的话,他也会影响。。。

这是一个Open的Issue

综合评价:🌝🌝🌝🌚🌚

Kate

Kate是KDE自带的一款代码编辑器(定位类似于Sublime?),支持LSP,且能够对Fortran的循环等语句正常识别进行折叠,虽然我怎么调他的配色都没让我的眼睛变舒服;本来不出意外的话我就会一直用下去了,可是一次更新之后Kate和Fortran Language Server(也就是LSP的Provider)交流不畅,过一小会儿就会闪退,等这个bug修好再说吧。

综合评价:暂缺

中场休息

VS的定位是IDE,Kate是Code Editor,Code越来越像二者之间,似乎可以放在坐标轴上。下半场比赛,我们挑选了几个选手:EclipseCLionSublime Text

Eclipse

Java界有较强历史地位的IDE,有面向Fortran和MPI的版本,但是已经过气(划去),好在没过气太久,2023-09是包含Fortran支持的最后一个版本。

打开之后发现Eclipse确实对Fortran有IDE原生级别的支持,Build Debug一应俱全,可是里面的parser不认识CUDA Fortran语句,在有CUDA代码(静态语法检查)的文件里面根本没法正常解析语法,也就没法跳转至定义;此外,Eclipse只能折叠Fortran Module和Subroutine,不能折叠循环和IF,对于读代码来说有点鸡肋了。

综合评价:🌝🌝🌝🌝🌚(无CUDA)🌝🌝🌚🌚🌚(有CUDA)

CLion

JetBrains家的IDE,支持Fortran靠的是插件。高校学生可以直接认证获得License。好像蛮多人喜欢用JetBrains全家桶的。

但是插件确实还是有点瑕疵,查找变量定义偶尔找不到,打算哪天写C++时候试着认真用用。

综合评价:🌝🌝🌝🌚🌚

Sublime Text

收费,简陋,不好看,支持LSP,和VS Code有相同的折叠问题。

综合评价:🌝🌝🌚🌚🌚

加时赛

你们都打的挺难解难分的,那加时赛开始吧。

Code::Blocks

这货有原生的Fortran支持,但Code::Blocks用起来有点太古板了,折叠倒是支持,代码分析能力不怎么强,很多变量的定义都找不着,还会去非源代码的文件里面找变量。

Geany

名字第一眼看上去像是GTK项目衍生的东西,实际上确实用到了GTK,折叠没问题,找定义有点废。

怀念在Clangd+VS Code下面写C++的一天

封面引用自这里

">