NESTやArborは最初からC++で書かれており、NEURONでさえC++で書き直されるこの時代に、なぜNeuliteカーネルはC17なのか?ということには理由があります。
理由 1: Neuliteカーネルは完結したアプリではありません。Neuliteカーネルは数値計算をするだけの小さなコードです。そこにはC++の高度な機能は不要です。C++の機能が必要になるのはフロントエンド部分(BionetliteとBMTK)であり、そちらはPythonで書かれているので、C++よりも遥かに高度な機能が利用可能です。私の考えでは Python + C17 >> C++ です。
理由 2: Cの仕様は小さいので、そのコードがどのようにアセンブラに落ちるのかがある程度予想できます。C++では無理です。そもそもC++の仕様全体を理解するのが不可能です。
理由 3: Neuliteカーネルの開発スタイルは、世界でもっともスケールしているソフトウェア、すなわちLinuxカーネルのスタイルを真似しています。成功例に従うのが一番いいのです。LinuxカーネルはCで書かれており、LinusがCを使い続ける理由は本当に正しいと思います。最近もそう主張してますね。なおライセンスがGPLv2なのも同じ理由です。
理由 4: スパコンのような特殊なコンピューターでカーネルを動かすためには、外部ライブラリやアプリへの依存関係は敵です。makeは必ずどのコンピューターにも入っていますが、cmakeはそうではなく、それをインストールするための別の作業が発生します。Boostに依存してたら、動作させるためには無限の苦痛が発生するでしょう。たった1ニューロンの数値計算をしたいだけなのにmatplotlibだのMPIだのに依存するのはおかしいと思いませんか。
理由 5: Neuliteカーネルの構成は、UNIX哲学に強く影響を受けています。すなわち、1つのことだけをうまくやる(数値計算のみ)、効率より可搬性(外部ライブラリとの依存関係なし)、テキストファイルによるやりとり(CSV)です。これらの特性はカーネルを小回りの利く機動的なものにしてくれ、それにより「富岳」でのマウス全皮質シミュレーションが可能になりました。この方向性は巨大なアプリの開発を指向するC++とは真逆です。