首先,如果是在用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越来越像二者之间,似乎可以放在坐标轴上。下半场比赛,我们挑选了几个选手:Eclipse,CLion,Sublime 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++的一天
封面引用自这里