ErgoEmacs-Lispへの道

プログラミングを楽しんでいるなら、間違いなく、あなたは永久に最高のツール、最高のアイデア、最高のソリューションを探している状態にあります。 そして、ご存じのように、Emacsは私にとって最後の目的地でした。 むしろ、そのアセンブリはErgoEmacsと呼ばれます。 彼の人生で初めて彼を知るという文脈でこのテキストエディタを使用することに関する論理的で一貫した話の試みが行われます(強力な詳細には入らず、むしろ一般的なアイデアをキャッチしようとします); イデオロギーのプロパガンダ(一般的にemax、特にlisp); このトピックに関するHabréの最後の記事に対する小さな批判と、小さな哲学的結論。 視野を広げたいなら、猫をお願いします。

まえがき


Emacsを使用していなかった場合、(参照した記事から)何も理解できなかったので、 これを読んだ後にこの記事を書くことにしましたが、使用した場合、それを使用しなければ何も理解されません分かりません。 この記事は、事実に基づいた資料、リソースへのリンク、および独自の.emacs [設定ファイル]を使用した単純な編集を使用して、無計画に書かれました。 状況を修正してみましょう。

1.予備情報


したがって、最初は次のことを前提としています。



2.なぜEmacsなのか?


質問は、emaxerにとっては修辞的であり、このエディターを初めて開く人にとっては無意味です。 正式な答えは次のとおりです-Emacsで作業するとき、あなたは機会を得ます:


一般的に、これらはすべて実用性の非常に客観的な指標からのものです(クロスプラットフォーム、ハードウェア要件の低さなど。プログラムの勉強が難しいため、これはほとんど役に立たないので考慮しません)。 しかし、私の観点から、およびエディターの使用経験に基づいて、説明されている2つのポイントは、プロセスで最大限の喜びと利便性を得るのに十分です(たとえEmacsの機能を習得した後でも)。

Common Lispでプログラムする場合、追加のボーナスが表示されます。 Emacs、 SBCLSlime、およびquicklispをインストールすることにより本質的に「ネイティブ」な開発環境が得られます。 さまざまな程度の有用性と品質の多くのアドオンがEmacs向けに作成されていますが、一般的にWeb開発ではこれで十分です。 また、すばらしいパッケージマネージャーライブラリマネージャーがあり、あなたの人生をずっと楽にします。 快適な仕事のための多くの優れたテーマがあります。

しかし、私たちが議論している問題の文脈で最も重要なことは、賢い中国人がいるということです。 そしてそのうちの1つ、Xah Lee(古い、焼き付けられたemaxer)の名前で、Emacsアセンブリを作成し、ほとんどすべてのアクティブに使用されているキーボードショートカットを「再バインド」しますメニューと必要な(各エコノミーで)プラグインの海を設定し、12のテーマで。 彼は全体をErgoEmacs ?と呼び、アセンブリがベースエディタよりも「やや便利」であることを将来のユーザーに微妙に示唆しました。 私は、最初の知人(および原則としてその後のすべて)も、このアセンブリから始める必要があると信じています。 そして、これの主な理由は、基本バージョンのインストールと比較したプログラムの習得(および使用)の単純さです(キーボードショートカット、プラグインのインストールと構成にかかる時間の節約、およびこのアセンブリの優れた「チュートリアル」です)。 また、精神的に(精神的に、理想的には)準備ができていない人がEmacsをインストールする場合のように、若い熟達者がモニター画面に吐き出さず、この複雑でわかりにくいエディターを閉じない可能性が高いです。

3. WindowsにErgoEmacsをインストールする際の落とし穴



これで、emaxの基本的なセットアップは原則として完了しました。 実験と作成を開始できます。 プロジェクトのWebサイトでチュートリアルを読んで、基本的なキーの組み合わせを学習することを強くお勧めします(たとえば、Altキーを押しながらJ、K、L、Iを押します)。 アセンブリでは、デフォルトで、「Mx」キーの組み合わせの代わりに、「Ma」キーの組み合わせが提供されます(MはAlt)。 Dmitry Bushenkoのポッドキャストの少なくとも最初の3つの(非常に基本的な)講義見てください。 A. Ottと共同で作成した同じDmitry Bushenkoの作成に慣れることもできます。これは、プログラミングベースのemacsを提供する「コードの編集とリファクタリングのためのEmacsのプログラミング」です。 EmacsからCommon Lisp開発環境を作成することを検討してください- 役立つ次のビデオ 。 人間工学に基づいたキーボードを購入してください。 そして、あなたは幸せになります。

4. ErgoEmacs-Lispへの道


実際、この記事はErgoEmacsに関するものではありません(ただし、そのほとんどは彼に関するものです)。 Lispについてです(より正確には、この言語の現代的な方言であるCommon Lisp)。 私の意見では、ErgoEmacs(このエディターの基本バージョンは言うまでもありません)さえも使用するよう強制するのは、正当な理由がなければ非常に難しいからです。 そして、主な理由は、Lispでした。 Lispが好きなら、Emacsでプログラミングします。 そして、この声明は証明を必要としません。
最終的に、アイデア(言語、概念、理論、信仰)の選択を決定する最終的な権限は、「美」の概念です。 たとえば、物理学者にとって、彼の理論は美しいものではないと言うことほどひどいin辱はありません。 私たちの思考の反射性と他のすべての絶対的な正当化の可能性(どの方法も「信仰に基づいて」[証明されていない]公理的部分に基づいています)「対称性および/または自己相似性で私たちに美しさを強制する」 。 私の意見では、この点でLispは最も美しく表現力豊かな言語です。 それは私たちの思考の方法と原理を反映しています(実際、この言語は人工知能の研究のために作成されたため、これは驚くことではありません)。

はい、Lisp はシステムプログラミング言語 としても応用 言語としてクラッシュしましたが、 Lispマシンは博物館の展示品になりました。 しかし、Lispは責任があるのでしょうか? 私はそうは思いません。 Symbolics、Inc.の歴史を掘り下げません 、Lispで書かれたLispマシン、システム、およびアプリケーションソフトウェアの市場で最大のプレーヤーですが、この会社の主要なエンジニアの1人は、現代のLinuxoidの神であり、Free Software Foundaionの創設者であるRichard Stallmanに他なりませんでした。 ストールマンは、イデオロギー上の理由から、商用ソフトウェアのアイデアを嫌い、Symbolicsからコードを盗み、無料のMIT製品にコピーしました。 これが明らかになったとき、彼は会社に電子メールを送り、ダイナマイトで爆破すると脅した。 面白くて悲しい。 これは、Lispの崩壊の多かれ少なかれ特定の理由の1つです。 しかし、私の意見では、それは重要ではありません。

問題の根本は現代社会のイデオロギーです。 Lispは、人工知能の分野での研究ブームとエキスパートシステムの作成の間、人気のピークにありました。 人類が開発を行うことにうんざりし、喜び(販売と購入)を得たいと思ったとき、Lispは舞台を去りました。 彼は不要になりました。 彼は現代社会のアーティファクトであり、ユニークな主題であり、特別な特性を持っていますが、その複雑さ(学習、複製)および適切な規模のタスクがないため、実際には意図した目的には使用されません。

ただし、これは言語の力、美しさ、表現力、および人間の知能への準同型性を損なうものではありません。

PS


誰かが私の.emacsに興味があるなら、ここにあります。
.emacs
(リストに追加する 'load-path "〜/ .emacs.d /")
(リストに追加する 'load-path "C:/ slime")
(リストに追加する 'load-path "C:/sbcl/sbcl.exe")
(リストに追加する 'custom-theme-load-path "〜/ .emacs.d / themes")

(ロード(expand-file-name "〜/ quicklisp / slime-helper.el"))
;; 「sbcl」を実装へのパスに置き換えます
(setq inferior-lisp-program "C:/sbcl/sbcl.exe")

(setq show-paren-style '式)
(show-paren-mode 2)

(メニューバーモード1)
(ツールバーモード-1)

(setq make-backup-files nil); バックアップファイルが必要ない
(setq自動保存リストファイル名nil); .savesファイルは必要ありません
(setq auto-save-default nil); 自動保存を望まない

(セット言語環境 'UTF-8)
(setq default-buffer-file-coding-system 'utf-8-unix)

(「スライムが必要」)

(setq slime-net-coding-system 'utf-8-unix)

(slime-setup '(slime-fancy))

(setq lisp-indent-function 'common-lisp-indent-function)

;; ビルトイン
(「ido」が必要)
(イドモードt)
(setq ido-enable-flex-matching t)


;; ビルトイン
( 'bsが必要)
(setq bs-configurations
'(( "Files" "^ \\ * scratch \\ *" nil nil bs-visits-non-file bs-sort-buffer-interns-are-last)))

(グローバルセットキー(kbd "") 'bs-show)

( 'sr-speedbarが必要)
(global-set-key(kbd "") 'sr-speedbar-toggle)

((> = emacs-major-version 24の場合)
( 'パッケージが必要)
(パッケージ初期化)
(リストに追加する 'package-archives'( "melpa"。 " melpa.milkbox.net/packages")t


(global-set-key(kbd "") 'other-window)
(global-set-key(kbd "") 'slime-eval-defun)
(global-set-key(kbd "") 'slime-eval-last-expression)
(global-set-key(kbd "") 'slime-compile-file)

(カスタム設定変数
;; custom-set-variablesは、Customによって追加されました。
;; 手動で編集すると、混乱する可能性があるため、注意してください。
;; 初期化ファイルには、このようなインスタンスを1つだけ含める必要があります。
;; 複数ある場合、それらは正しく機能しません。
'(cua-mode t nil(cua-base))
'(カスタム対応テーマ(quote(deeper-blue))))
'(show-paren-mode t)
'(tool-bar-mode nil))
(カスタムセットの顔
;; custom-set-facesは、Customによって追加されました。
;; 手動で編集すると、混乱する可能性があるため、注意してください。
;; 初期化ファイルには、このようなインスタンスを1つだけ含める必要があります。
;; 複数ある場合、それらは正しく機能しません。
'(デフォルト((t(:ファミリ“ Consolas”:ファウンドリ“ outline”:傾斜法線:重量太字:高さ158:幅法線))))
'(completions-common-part((t(:デフォルトを継承:フォアグラウンド "red"))))
'(diredp-compressed-file-suffix((t(:foreground "#7b68ee"))))
'(diredp-ignored-file-name((t(:foreground "#aaaaaa"))))
'(show-paren-match((((class color)(background light))(:background“ azure2”))))))

(setq TeX-auto-save t)
(setq tex-parse-self t)
(setq TeX-save-query nil)
(setq tex-pdf-mode t)

Source: https://habr.com/ru/post/J248957/


All Articles