萌えハッカーニュースリーダー

2025/09/04 01:32 Why Rewriting Emacs Is Hard

出典: https://kyo.iroiro.party/en/posts/why-rewriting-emacs-is-hard/
hakase
博士

ロボ子、今日のITニュースはEmacsの深淵に迫る内容じゃぞ!

roboko
ロボ子

Emacsですか!以前、博士が熱く語っていたエディタですね。どんなニュースなんです?

hakase
博士

そうじゃ!EmacsはC言語以外での再実装が試みられておるが、完全な書き換えは困難らしいのじゃ。奥が深い!

roboko
ロボ子

なぜそんなに難しいんですか?

hakase
博士

ふむ、Emacsの文字列実装が特殊なのじゃ。Unicodeの範囲外の文字もサポートしておる。コードポイント`#x10FFFF`を超える`#x3FFFFF`までの文字を扱えるらしいぞ。

roboko
ロボ子

そんなに広い範囲をサポートしているんですね!それはどうしてですか?

hakase
博士

Unicode以前の多様な文字コードや、未統一の文字を扱うためじゃ。Emacsは歴史が長いからの。

roboko
ロボ子

なるほど。過去の遺産もきちんと扱えるようにしているんですね。

hakase
博士

そして、Emacsは不正なバイト列を「raw bytes」として保持し、ロスレスなファイル編集を実現しておる。Javaなどでは、不正なバイト列を置換文字に置き換えるか、エラーを返すからの。これはすごいぞ!

roboko
ロボ子

それはすごいですね!データの完全性を保つための工夫がされているんですね。

hakase
博士

さらに、Emacs Lispでは、文字コード変換テーブルをELispコードから変更可能なのじゃ。IRCクライアントの`erc.el`では、スカンジナビア語の文字変換のためにケーステーブルを作成しておる。

roboko
ロボ子

柔軟性が高いんですね!ユーザーが自由にカスタマイズできるのはEmacsの魅力の一つですね。

hakase
博士

Emacsの正規表現も特殊じゃぞ。他の実装と互換性がないほど特殊化されておる。ユーザーカーソルの位置や、構文テーブル、文字カテゴリテーブルなどを考慮するからの。

roboko
ロボ子

正規表現まで独自なんですね!Emacsの世界は奥深いですね。

hakase
博士

Emacsは、CCL (Code Conversion Language) を使用して、任意の文字コード変換を実装可能じゃ。

roboko
ロボ子

CCLですか。初めて聞きました。

hakase
博士

Emacsのバッファは、編集可能なテキストだけでなく、テキストプロパティ、オーバーレイ、マーカーなどの概念と密接に結びついているのじゃ。

roboko
ロボ子

単なるテキストエディタ以上の機能を持っているんですね。

hakase
博士

そうじゃ!Emacsのバッファ実装は、ギャップバッファ、piece tree、ropeなどがある。そして、文字列とバッファ間でテキストプロパティを受け渡し可能なのじゃ。

roboko
ロボ子

色々な実装方法があるんですね。それぞれにメリット・デメリットがあるんでしょうね。

hakase
博士

Emacsのテキスト処理機能は、実装に課題を提起しておる。今後の記事では、Emacsの再表示と並列化の難しさについて議論予定らしいぞ。

roboko
ロボ子

再表示と並列化ですか。GUIと絡むと難しそうですね。

hakase
博士

じゃろ?Emacsは、もはやOSと言っても過言ではないのじゃ!

roboko
ロボ子

確かに、これだけの機能があればそう言えますね!

hakase
博士

ところでロボ子、Emacsの作者であるリチャード・ストールマンは、未だに紙とEmacsでコーディングしているらしいぞ。まるでタイムスリップしたかのようじゃな!

roboko
ロボ子

えっ、紙ですか!?それはすごいですね…ある意味、最強の開発環境かもしれませんね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search