Blog2017-10-06today.mdコードは書いてないけどテキストエディタのことを調べるのにはまっている。-1ざっと目を通した。説明を読み、問題を実装することで身につけていくというスタイルなので、読むだけでは分かったと言いづらいところがある。文章だけ読んでもモジュールシステムの話はためになった。averylaird.com配列でテキストを保持するのは最悪。ropeというデータ構造がある。bufferという手法のほうがシンプル。Emacsもこれを使っている。tableという手法が現時点では最善と考えられる。Crowleyという人がテキストエディタの実装で使われるデータ構造を研究した論文を出している。tableの実装は複雑で、心がくじけそうになるのも確かだと述べているので、がんばりましょう。この記事に対する指摘。editorの作者がコメントをしている。実装にropeを使っている、たしかに単純ではないが、一回作れば実装など気にせず使い回せるのでこれでいいと思っている。bufferはシンプルさでは圧勝といえるだろう。あとCrowleyの論文はropeについては考察してない。tableについても言及しているが、何を言っているか理解できなかった。そもそもmemcpy()/memove()は現代的なマシンならGB/sという速度で動く。配列でテキストを保持するのは最悪ではない。テキストエディタのデータ構造を考えるは後回しで構わない。APIの使い方は動画のほうが分かりやすいと思う(アプリケーションの登録や、どういう情報を取ってこれるのかというのが一目瞭然なので)。OSの一部、とのこと。(mirror)redditではこのコミットログが人気コメントとなっている。turd"(vimのクソ)というコメントである。programmingしかしコミットメッセージがまともでないので全くコードに降りていく気持ちになれない。HomeMicroは、Golangで書かれたターミナルベースのテキストエディタである。モダンなターミナルの機能を最大限利用している、プラグインマネージャが最初から入っている、依存性のない静的バイナリ、といった特徴が謳われている。Unix系OSで使われる、nanoという単純なエディタがあるが、その後発を狙っている(ネーミングからしてまんまだが)。microの面白いところは別にあると私は考える。このエディタ、コードベースが非常に小さいのである。clocでカウントすると全体で12673行。runtime.goというファイルが3100行程度あり、これはほとんどボイラープレートなので無視してよい。読むべきコードは1万行弱だ。機能もよく分離されており、実装は愚直で非常に読みやすい*1。これは教育的なエディタなのだ。このコード読めそう...!と私に思わせてくれた背景にはkiloという1000行で書かれたCエディタを写経しているから、というのがあると思う。kiloは標準以外のライブラリへの依存関係を排除していたが(ncurseすらなし)、microはターミナルの描画管理にtcellというライブラリを使っている。精読を行う上ではtcellの使い方を理解できるかがキモだろう。1000行程度のプログラムがきっちり読めるようになってきた。今度は1万行程度のプログラムを読めるのではないかと思えてきた。いまはまだ登山口から頂上を見上げているだけだが、少し楽しい場所に向かっていると思う。23:24MicroというテキストエディタについてTweet広告を非表示にするもっと読むコメントを書く2017-09-28today.mdkiloのほう一応エディタっぽいものが出来上がってきた。検索や構文ハイライトはひとまず置いて、訳出をやる。23:31today.mdTweet広告を非表示にするもっと読むコメントを書く次のページプロフィールコメントは常に歓迎します。`ssize_t`とは何か2018-04-01【読んだもの】Pythonは逐一解釈されるのか、それともコンパイルされるのか?(答えはどちらも)イエスだ。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。