🎶ロゼッタ ソース博覧会 をらがファイル読み込み ずらり171言語
前回全行なめるというのを簡潔に書こうとしたらいつものようにGEXP級に結論にたどりつくことがなく気づいたらrozetta codeの知ってる言語のファイル行読み込みを読んでいた。どういうrozetta 編纂方針かわからないが、なんか特定の言語は「いじられてる」ようにも見えなくないこそばゆい感じがしてきたので告発しておきたい。
プログラミング言語、といわれるものが780以上もあることにふるえるが、リアルな言語は数千もあるそうなので、震えも少し止まる。
前回はこのうち「全行なめる」コンセプトに合致するものをスマートに抽出して、実際に「全行なめる」際の留意点、そしてバッファやファイル構造といった原理に降りていくという壮大な計画をたてたが全然到達しないで今こうしておかしな言語の博覧会みたいなことをしようとしているが、基本は知ってる言語だが一番笑ったのはFortranだった。
まさかサンプルソース読みたいのに人の理を矢立肇みたいに諭されるとは思わなかった。しかし、後半で言いたかったことのような気もする。引用している個所は一部分で、まるまるサンプルがでるまで長文を読まされる構成になっている。
こうなってくると、博覧会よりも、冒頭で語ってるやつの言語が気になってくる。goもfortranほどじゃないが前口上が入っている。
おそらく、をらが言語、goにはスマートなパッケージ名と、「トークン」なる若干抽象的な概念があるんだぜと言わんばかりの前口上。
よもやファイルの読み込みにまで推奨する奴が出てくるとは想像だにしなかったうえに、Jって何のことだ、千原ジュニアか。
APLの次世代言語らしい。言語ってすばらしい。APL自体がマインドパレス上で危険区域に入っているので、Jがヤバい言語であるのは分かった。しかし言いたいことはわかる。
めちゃめちゃかっこいい、分かりやすいかは置いといて、三週ひねった感じで使いやすそうだ。SNOBOLのこともSNOBOL4のこともしらないが、おそらく関数言語みたいな野郎に違いがない。
60年代に文字処理を得意とした言語が生まれていたらしい。有名だったら申し訳が無い。読み返してみるとようするに「行読み込みできない」ということを言い返してる特定の言語があるということだったらしい。
個人的な収穫としてはLISP系の言語がどう理屈をいわれてものみこめなかったが、ファイル処理のコードをよんだらなんとなく書き方とかせんなさが分かってきた。かっこで囲んでおしゃれなウェハーにしちまえばいいんだと
(define file (open-input-file "input.txt"))
(do ((line (read-line file) (read-line file))) ((eof-object? line))
(display line)
(newline))
とか
(with-open-file (input "file.txt")
(loop for line = (read-line input nil)
while line do (format t "~a~%" line)))
とか
(with-open [r (clojure.java.io/reader "some-file.txt")]
(doseq [l (line-seq r)]
(println l)))
とかいろいろ。forthは実装もしてみたいし理解したい言語だったが、ファイル読み込み例をみてもいつものforthだった。ポテンシャルがあると左脳が言ってるが右脳が拒絶反応を起こしている。
awkも近所のお兄ちゃんみたいな感じでカッコイイ気がしているので、本でも買うか。
後に来なったところでは、うちはワンライナーでできるよ的なアプローチをしてきていたのはC#,Factor,Groovy,Logo,Scalaあたりだろうか。sedというものあったが無理くりで、forthとは別の方向で背伸びをしていた。※あくまで個人的な感想とrosettaで見た結果なので、実際の言語の効能や効果とは異なる場合があります。
お願い致します