Nimはじめました

Nimでシェルを書いてみる
Nimでシェルを書いてみる

明けましておめでとうございます。今日から令和です。

新たにプログラミング言語のNimをはじめました。新しい時代に新しいプログラミング言語を習得しようと…すみません嘘です。

正直プログラミング言語としては、C++とJavaScript(Windowsなら加えてC#)で良いんじゃね?って思っていたんですが、JavaScriptにどっぷり浸かると今更C++のコードを書きたくないなって思って最近C++からは遠ざかっていました。C#に至ってはむしろ近寄らないようにしていました。*1

JavaScriptで何でもできれば良いのにって思ってNode.jsに手を出したりして、やっぱりあちら(Unix系)の世界の産物はこちら(Windows)とはいまいち相性が悪いような気がしまして、Node.jsにも近寄るまいと心に誓うのでありました。

素直にC++を使えば良いんですが、以前STLがどうにも遅くて自前実装したり当時スマートポインタも無かったのでそれも自前で書いたりと苦労の割には…と言う感じであまり良い思い出がありません。最終的にメモリ管理も自前で書いたりして…きっと最近のC++は速いんでしょうけど。

閑話休題。最近それなりのプログラムを作りたくなりまして、C++にするか他の言語にするかと考えてNimに白羽の矢が立ったわけです。

C++の代替としては他にGoやRustがありますが、それらを調べたうえでNimにたどり着きました。

Nimを一言で言うと「一部の物好きしか使ってない変態言語」でしょう。

仮に変態だとしても、
変態という名の紳士だよ!

と言う事で紳士たるものとしてNimを使うのです。

重要なのはNimで何を作るかと言う事ですが、取り合えずコマンドラインのシェルを作ろうかと思っています。最終的にはそのシェルと連動するファイラーを作りたいんですが、案外シェルだけで事足りるかもしれません。

と言う事で最近ちまちまNimでシェル*2を作っています。

が、Nimの一番の問題点はドキュメント不足だと思います。公式のマニュアルも素っ気ない。ソースを読めと言う事なんでしょうが、この辺の学習コスト考えたらC++のが楽なんじゃない?と言う邪念を振り払いながらマニュアル読んだりソース読んだりして何とかやっております。

取り合えず今作っているシェルはchimeraと言う名前でその名の通りいろいろごちゃ混ぜな物です。バックグラウンドでcmd.exeやらWSHやらを動かしたりしてます。

今年中にはある程度の形にしたいですね。

作成中のシェルの現状
作成中のシェルの現状