明けましておめでとうございます。今日から令和です。
新たにプログラミング言語の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やらを動かしたりしてます。
今年中にはある程度の形にしたいですね。