2012-09-09

なぜedはクソなのか

edというテキストエディターがある。このテキストエディターはUNIX規格に必須項目として存在し、UNIX互換OSならばどんな環境にも入っている。不自由で制限多きMac OS Xにも、UNIX互換をほとんど気にしないMicrosoft Windowsにも入っている。BusyBoxにすらedはある。

しかし、edは使いづらい。なぜこんなに使いづらいエディターが標準なのだろうか。

と、こう疑問に思い、Wikipediaを読んでみたところ、驚いた。そもそも、当時出力装置といえば、ディスプレイではなく、テレタイプだったのだ。

Teleprinter - Wikipedia, the free encyclopedia

テレタイプとは、ロール紙に一行づつ印字する出力装置である。

印字速度は極めて遅い。ただし、出力したものは、紙という物理的な記録となって残るので、後から読み返すことができる。

なるほど、WYSIWYGではなく、テキスト全体を表示することもなく、行単位で動作し、さらにコマンドも暗号のように短いというedの実装は、理由あることだったのだな。何をタイプしたかは、すでに出力された紙を読めば一目瞭然であるし、印字速度が極めて遅いので、わざわざ長ったらしいコマンドなど入力したくはない。一度更新すると全体を表示するなど、紙と時間のムダだ。

やれやれ、先の時代精神とやらは理解できない。しかも、これは大昔というわけではない。一世代前の人間、若い時からコンピューターの一線で活躍していた今の50代後半の人間なら、テレタイプを使っていた可能性があるのだ。いま、50代の人間で、未だに第一線で活躍している者は稀である。

およそ伝説のプログラマーと呼ばれる人間は、今ほとんどが第一線を引退している。なるほど、テレタイプが当たり前だった自体からコンピューターに親しんでいるならば、もはや第一線で活躍するなど不可能に近い。当時の常識は今の非常識だ。

さて、これは困った。30年後にプログラミングを続けている自信がない。

9 comments:

  1. shellスクリプトの中から使う場合があり、そのようなコマンドを実行できなくなると困るからではないでしょうか。

    ReplyDelete
  2. Windows には ed は無いです。
    ちょっと似てる EDLIN なら DOS(MS-DOS, PC-DOS)にはありましたが、今はないようです。
    昔のDOSにはフルスクリーンエディタ(!)が付属していなかったので、COPY CON か EDLIN で頑張ったのを思い出します。

    diff は今でも ed スタイルの出力を出せるようですね。危険なので誰も使わないでしょうが(笑)

    ちなみに、vi にも表示や通信が遅い事を考慮して redraw や slowopen といったオプションがありました。
    今見たら、Vim では無くなってますね。

    ReplyDelete
  3. Vistaまでならまだあった気がするのですがね。

    ReplyDelete
  4. たしかに、Windowsはedlinですが。

    ReplyDelete
  5. edが標準なのは(だったのは)、使いやすいからではなく、スクリーンエディタが使えない時の非常用としての標準。
    ・昔の標準エディタだったから、
    ・バイナリが小さいので、非常用として有用だったから。

    UNIXのインストールや保守作業時などカーネル込みで数100kBに入る範囲のバイナリで作業する必要が有りました。

    今時のパソコンだと、CDROM(600MB)ブートが出来る機械が当たり前になったので、edの出番はないですね。

    ReplyDelete
  6. 昔の常識というのは、現代では理解の及ばないところですね。

    ReplyDelete
  7. 私の環境では、busyboxですら、1827920バイトもある。

    ReplyDelete
  8. しらんかったんかっ!
    と、つっこむ.

    ReplyDelete
  9. vi があるラインエディタから派生した事を知っているならばさほど驚くような話ではないとおもうのだけど。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.