読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

coreutilsのsplitをやる

この週末は雨らしい. Rustをやる.

Rust言語でcoreutilsを書き直す試みがある. 私はこれを土台にしてRustを学ぼうかと考えている. こういうのはさっさと始めてしまってあとは自分のポテンシャルを信じるというやり方が私には合うので, splitを書きますと宣言してしまった. https://github.com/uutils/coreutils/issues/210

私の中ではRustの学習も含めて6月中に終わらせるというイメージを持っている. 私のツリー(https://github.com/akiradeveloper/coreutils/network)のfeature/add-split-devブランチで育てていって, feature/add-splitで整理してからプルリクを投げるということにする.

開発中のテストとかドキュメントは, https://github.com/akiradeveloper/rust-split に入れていこうと思う. しかしテストも最終的には, test.rsとして提供するのがこのプロジェクトの形式らしく, いくつかの実装はテストを持っている.

UNIXのコマンドは関数型のテイストを持つ. 従って, ポータブルな関数型言語で再実装することには確かに意味がある. Cのcoreutilsコードは, ぐちゃぐちゃでどうしようもない. 一言でいうとゴミだ. 人類はあれを捨てるべきだろう. splitを実装する上で, Cのコードをそのままポーティングするというチンカスみたいな方法をとることも出来るが, それでは意味がない. Rustらしいコードを学ぼうと思う. 言語には, その設計者の「こういうコードが良いコードだ」という思いがこめられていて, その通りに書くのがこの場合, Rust-wayだ. 自然言語だと, その言語を学ぶことは国の文化を学ぶことだとかいう人がいるけど, プログラミング言語でも同じ. プログラミング言語はただCPUを動かすための道具ではない.

さて, 私はsplitというコマンドを知らない. manで調べてみると, 入力されたファイルをいくらかの粒度で分割して, 複数の出力に吐くというものらしい. そしてその粒度をさまざまな形で決められるというものらしい. よって型は, WayOfSplitting -> String -> [String]という感じが幹で, 吐き方だとか吐く方法とか, 入力の取り方がオプションで色々決まるという感じだと思う. ファイルに吐くとかいうのはテストが難しいのでまずはIOから分離してテストを考えるのがいい.

明日から具体的に事を進めていきたい. Rustはすでに世界のLinux業界ではデフォルト言語になりつつあるが, 日本ではこれからだ. コンパイラ技術は分からないので言語の本体に関わることは出来ないが, せめて布教には貢献したい.

みなさんもcoreutilsでやるやる宣言しましょう. 宣言してしまえば, やるものです.

広告を非表示にする