神秘的なEmacs:計算機への旅





表面にあるものほど私たちから隠されているものはありません。

孫子と諸葛亮(無料翻訳)



まえがき





これは、YouTubeのビデオの1つで発生しました。 プログラミングレッスンを見るとき、377を10進法に変換することが急務でした。 私たちは、8度を表すために、または単にそれに注意を払わず、この重要でない瞬間を見逃すために、トリプルでレイアウトし始めませんでした。 オペレーティングシステムで電卓を起動し、ウィンドウを画面の中央に移動すると、すべてがわかりました。 はい、これです-数255。



もちろん、より複雑なケースで何が起こるかを伝える必要はありません。 そのような場合のために、コンピュータの横にあるノートブックのリーフに来ることがあります。 それぞれに放物線か何かがあり、他のものと交差しています。



最初の連絡





ご想像のとおり、Emacsを数か月または数年使用すると、脳Emacsが発生します。 したがって、そのようなケースは無駄ではなく、夜中に私の頭の中で疑問が生じます:「どうすれば377をEmacsに翻訳できますか?」 彼はその方法を知っていますか? さて、少なくとも8は累乗しますか?」



翌朝、一握りのチョコレート入りのお茶の形でエネルギーを補給して、Emacsを開き、彼の研究を始めます。







運用から始めます





Alt + xとcalcを入力すると、最初に表示されるのは通常のスタック計算機であり、おそらくこれらの手で100人が作成したものです。 そして、私はこの道を何度も繰り返したくありません。



ランダムに、最初に+-* /



5 <RET> 7 <RET> +



5 <RET> 7 <RET> -



5 <RET> 7 <RET> *



5 <RET> 7 <RET> /









それから



8 <RET> 8 <RET> *









ああ! そして、これは8の正方形です! そして、正方形はどこにあり、立方体があります!



ヘルプを開きます





もちろん、誰もがロシア人(ソビエト、帝国など)が指示から始めないことを知っていますが、まず彼はすべてを破ろうとし、次にそれを修正し、次に失われた秘密を求めて指示を読みます。



多くの人とは異なり、Emacsメニューをオフにするのではなく、すべての種類のレアモードでキーボードショートカットを覚えるために使用するため、今回はすべて説明から始まったとは言いません。



そこで今回は計算機メニューでレビューを始めました







ヘルプを開くには、Ctrl + x + * + iを入力する必要があります。 そして、チュートリアルを開くには、Ctrl + x + * + tを入力する必要があります。



それらはさまざまな方法で開くことができますが、実践で示されているように、Ctrl + x + * + <key>の組み合わせが非常に頻繁に使用され、他の作業の過程で電卓を便利に制御するために特別に作成されます。



したがって、電卓はCtrl + x + * + cで開くことができ、電卓はCtrl + x + * + eで現在のバッファーで実行できます。



キーの説明
calc-dispatch-help is an interactive compiled Lisp function.



(calc-dispatch-help ARG)



Cx* is a prefix key sequence; follow it with one of these letters:



For turning Calc on and off:

C calc. Start the Calculator in a window at the bottom of the screen.

O calc-other-window. Start the Calculator but don't select its window.

B calc-big-or-small. Control whether to use the full Emacs screen for Calc.

Q quick-calc. Use the Calculator in the minibuffer.

K calc-keypad. Start the Calculator in keypad mode (X window system only).

E calc-embedded. Use the Calculator on a formula in this editing buffer.

J calc-embedded-select. Like E, but select appropriate half of => or :=.

W calc-embedded-word. Like E, but activate a single word, ie, a number.

Z calc-user-invocation. Invoke Calc in the way you defined with `ZI' cmd.

X calc-quit. Turn Calc off.



For moving data into and out of Calc:

G calc-grab-region. Grab the region defined by mark and point into Calc.

R calc-grab-rectangle. Grab the rectangle defined by mark, point into Calc.

: calc-grab-sum-down. Grab a rectangle and sum the columns.

_ calc-grab-sum-across. Grab a rectangle and sum the rows.

Y calc-copy-to-buffer. Copy a value from the stack into the editing buffer.



For use with Embedded mode:

A calc-embedded-activate. Find and activate all :='s and =>'s in buffer.

D calc-embedded-duplicate. Make a copy of this formula and select it.

F calc-embedded-new-formula. Insert a new formula at current point.

N calc-embedded-next. Advance cursor to next known formula in buffer.

P calc-embedded-previous. Advance cursor to previous known formula.

U calc-embedded-update-formula. Re-evaluate formula at point.

` calc-embedded-edit. Use calc-edit to edit formula at point.



Documentation:

I calc-info. Read the Calculator manual in the Emacs Info system.

T calc-tutorial. Run the Calculator Tutorial using the Emacs Info system.

S calc-summary. Read the Summary from the Calculator manual in Info.



Miscellaneous:

L calc-load-everything. Load all parts of the Calculator into memory.

M read-kbd-macro. Read a region of keystroke names as a keyboard macro.

0 (zero) calc-reset. Reset Calc stack and modes to default state.



Press `*' twice (`Cx * *') to turn Calc on or off using the same

Calc user interface as before (either Cx * C or Cx * K; initially Cx * C).











バーを上げる





メニューからすべてのオプションを確認するのに約1日かかりました。 それらの中には、次の素数を見つけるなどがあるので、これを単純に見逃すことはできませんでした、私はそれが本当に機能することを確認したかったです。



最大公約数(GCD)は現在記述できません。ここでは単純に記述できます。 2つの数字を入力してkgを押す必要があります。kは組み合わせを意味し、gはgcd(最大公約数)を意味します。



Factorial 3000(一種の速度チェック)は難なく計算されますが、それでも15秒で計算されます。



行列の転置、行列式の検出、またはベクトルのスカラー乗算は簡単で口whiを吹きます。



しばらくの間、私は自分の目を信じずに、次々に手術を行うために来た理由を忘れていました。 そして、なぜ私は来たのですか?



続ける





2日目に、Cramer法を使用して方程式系を計算するかどうかが興味深くなりました。 行列式があると、Cramerメソッドによる解決策を見つけることができます。 私はこれをエディターで何度も書いていましたが、エディターで行列式を計算するためのスキルもすでに開発されていました。



しかし、それは必須ではありませんでした。 3つの方程式を導入し、それらの解を求めるだけで十分であることが判明しました。 はい、タングステンのように。



出会う最初のシステムを見つける



2y + x + z = -1

-z - y + 3x = -1

-2x + 3z + 2y = 5









選択する必要があるのは、Ctrl + x + h、Alt + wをコピー、電卓に移動Ctrl + x + * + *、Ctrl + yを貼り付け、3 vpベクトルに方程式をパッケージ化、Pを押して、「By what変数のルートを探しますか?」xy zを紹介します。



スタックに回答のあるベクターが表示されたら、yを押すだけで、回答のあるベクターが方程式を含む元のバッファーのカーソル位置に挿入されます。



[[ 0., -2., 3. ]] 2y + x + z = -1

-z - y + 3x = -1

-2x + 3z + 2y = 5









方程式系の最後にカーソルを置いた場合、そこに答えが挿入されます。



振り向く時です





スタック強度





計算機をしばらく使用すると、値がスタックに蓄積され始めるので不便になります。 同時に、それらの中には必要なものがあるため、それらを削除することができるかどうかはわかりません。そのため、どの実験も損失に終わる可能性があります。



そのため、ある瞬間にヘルプを開いて、それを読むことに時間を費やすことになるまで、時計は続きます。 幸いなことに、すべての組み合わせは可能な限り便利に選択されるため、アクションの特定の対称性さえ存在し、そこに維持されます。



各行の先頭にスタック内にコロンがあるこれらの番号は、アドレスのようなものです。 多くのコマンドでは、正の引数を入力することは「数個」を意味し、負の引数を入力することは「そのような数」を意味します。



たとえば、スタックに5番があります



1: 5









<RET>(Enter)を押すと、コピーされて、



2: 5

1: 5









この2はスタック内の要素の数に等しく、最初の5番のアドレスであり、1は2番の5のアドレスです。



<RET>コマンドには、デフォルトで1に等しい引数があり、<RET>を押すと、スタックの最上部(最上部が最下部)から要素をコピーします。 したがって、Alt + 2 + <RET>を入力すると、2つの要素を取り、それらをコピーします



4: 5

3: 5

2: 5

1: 5









引数が負の場合、そのアドレスを持つ要素を取ります(マイナスが削除された場合)。 したがって、Alt +-+ 4 + <RET>を入力すると、アドレス4の要素がコピーされます



5: 5

4: 5

3: 5

2: 5

1: 5









ほとんどの基本的な操作は同じように機能します。 3つの要素を削除する必要がある場合は、Alt + 3 + <DEL>を記述します。<DEL>はバックスペースです。 アドレス3のアイテムを削除する場合は、Alt +-+ 3 + <DEL>と入力します。



ヘルプをさらに詳しく読むと、これらの操作に対して、黒物質で構成される反世界からのそのような特異な操作を見つけることができます。 たとえば、<RET>にはCtrl + j操作があり、<DEL>にはAlt + <DEL>があり、<TAB>にはAlt + <TAB>があります。



これらの演算の意味はまったく同じで、引数の符号のみが変わります。 したがって、Alt + 3 + Ctrl + jを入力すると、3つの要素ではなくアドレス3の要素がコピーされ、負の引数を入力すると、アドレス3の要素ではなく3つの要素がコピーされます。



スタック全体をクリアする場合は、Alt + 0 + <DEL>を押す必要があります。



多くの方法があります





最初は、すべてを1つの方法でしか実行できないように思えます。 しかし、時間の経過とともに、同じ結果を達成するために多くの方法が開かれています。



たとえば、マトリックスを入力するにはどうすればよいですか?



最初に頭に浮かぶのは、それをバッファに書き込んでからコピーすることです。



ここにある



[[1, 2, 3], [4, 5, 6], [7, 8, 9]]









これに変わります



1: [ [ 1, 2, 3 ]

[ 4, 5, 6 ]

[ 7, 8, 9 ] ]









頭に浮かぶ2番目のことは、内服薬の使用です。



行列は3つのベクトルです



1 <RET> 2 <RET> 3 <RET> 3 vp

4 <RET> 5 <RET> 6 <RET> 3 vp

7 <RET> 8 <RET> 9 <RET> 3 vp

3 vp









3番目に思い浮かぶのは、内部的で便利な手段の使用です。



1 <RET> 2 <RET> 3 <RET> 4 <RET> 5 <RET> 6 <RET> 7 <RET> 8 <RET> 9 <RET>

[3, 3]

vp









そして、頭に浮かぶ4番目のことは、「入力するだけではいいですか?」



[ 1 <SPC> 2 <SPC> 3 ; 4 <SPC> 5 <SPC> 6 ; 7 <SPC> 8 <SPC> 9 ] ]









packコマンドには対称的なものがあります-unpackです。したがって、行列をベクトルに分解するか、ベクトルを数値に分解する必要がある場合は、v uを押すだけです。



外部資金を誘致します





電卓をいじると、周囲のバッファに突然注意を向け始めると、「電卓で作業するとき、通常のEmacsのどのような手段に惹かれるのでしょうか?」



最初に、マクロを記述し、マクロ引数でn回繰り返すことにより、多項式のn次導関数を見つけます。



たとえば、式を入力します



' x^5 + 4 x^3 + 2 x + 1 <RET>









次に、F3を押してマクロの記録を開始します。 次に、adを押して導関数を計算します。 次に、「どの変数で」という質問に進みます。xを導入します。 次に、F4を押してマクロの記録を終了します。



Ctrl + /を押すか、計算機の内部キャンセル-文字Uを使用して、計算をキャンセルします。



元の表現を持つ



1: x^5 + 4 x^3 + 2 x + 1









Alt + 3 + F4を押すと、結果として3次微分が得られます



1: 60 x^2 + 24









Ctrl + x + zを押してからz zを押すと、徐々にゼロになります。



私たちは外の世界に出発します





しばらくすると、計算機が閉じて、通常の仕事、通常のエンターテイメントに戻ります。



そして、Emacsで、ジャンプして、怠zyな犬を飛び越えて、1024回ジャンプしたキツネの話を読んだことがあります。 待って、あなたが言うには、それがコンピューターでない場合、キツネは正確なポイントに何度もジャンプできますか? このことは修正する必要があります。



次のテキストがあります



The quick brown fox has jumped over the lazy dog 1024 times.









1024をポイントし、Ctrl + x + * + wを静かに押します。 次に、Qを押してから、Ctrl + x + * + wを静かに押します。



そして、我々は得る



The quick brown fox has jumped over the lazy dog 32 times.









今、これは真実に似ています。 つまり、何かを計算するために、計算機をまったく開く必要はなく、いくつかのボタンを押すだけです。



そして、これは同じです





行ったことを思い出した



Ctrl + x + * + *

8#377 <RET>

d 2

d 8

d 6

d 0

Ctrl + x + * + *









そして最後に





Pythonで関数を書いた時がありました



2016

1

1

Alt + - + 14 vp

255

+









ここで、彼が変換できるユニットのリストを同封します。それらは、u vによる計算機にあります。



ユニットのリスト
Calculator Units Table:



(All definitions are exact unless marked with an asterisk (*).)



Unit Type Definition Description



mm Meter (base unit)

in 2.54 cm Inch

ft 12 in Foot

yd 3 ft Yard

mi 5280 ft Mile

au 149597870691 m (*) Astronomical Unit

lyr c yr Light Year

pc 3.0856775854 10^16 m (*) Parsec (**)

nmi 1852 m Nautical Mile

fath 6 ft Fathom

fur 660 ft Furlong

mu 1 um Micron

mil (1/1000) in Mil

point (1/72) in Point (PostScript convention)

Ang 10^-10 m Angstrom

mfi mi + ft + in Miles + feet + inches

texpt (100/7227) in Point (TeX convention) (**)

texpc 12 texpt Pica (TeX convention) (**)

texbp point Big point (TeX convention) (**)

texdd (1238/1157) texpt Didot point (TeX convention) (**)

texcc 12 texdd Cicero (TeX convention) (**)

texsp (1/65536) texpt Scaled TeX point (TeX convention) (**)



hect 10000 m^2 Hectare

a 100 m^2 Are

acre (1/640) mi^2 Acre

b 10^-28 m^2 Barn



L 10^-3 m^3 Liter

l L Liter

gal 4 qt US Gallon

qt 2 pt Quart

pt 2 cup Pint (**)

cup 8 ozfl Cup

ozfl 2 tbsp Fluid Ounce

floz 2 tbsp Fluid Ounce

tbsp 3 tsp Tablespoon

tsp 4.92892159375 ml Teaspoon

vol tsp+tbsp+ozfl+cup+pt+qt+gal Gallons + ... + teaspoons

galC galUK Canadian Gallon

galUK 4.54609 L UK Gallon



ss Second (base unit)

sec s Second

min 60 s Minute

hr 60 min Hour

day 24 hr Day

wk 7 day Week

hms wk + day + hr + min + s Hours, minutes, seconds

yr 365.25 day Year (Julian)

Hz 1 / s Hertz



mph mi / hr Miles per hour

kph km / hr Kilometers per hour

knot nmi / hr Knot

c 299792458 m / s Speed of light



ga 9.80665 m / s^2 "g" acceleration



gg Gram (base unit)

lb 16 oz Pound (mass)

oz 28.349523125 g Ounce (mass)

ton 2000 lb Ton

tpo ton + lb + oz Tons + pounds + ounces (mass)

t 1000 kg Metric ton

tonUK 1016.0469088 kg UK ton

lbt 12 ozt Troy pound

ozt 31.10347680 g Troy ounce

ct 0.2 g Carat

u 1.660538782 10^-27 kg (*) Unified atomic mass



N m kg / s^2 Newton

dyn 10^-5 N Dyne

gf ga g Gram (force)

lbf ga lb Pound (force)

kip 1000 lbf Kilopound (force)

pdl 0.138254954376 N Poundal



JN m Joule

erg 10^-7 J Erg

cal 4.1868 J International Table Calorie

calth 4.184 J Thermochemical Calorie

Cal 1000 cal Large Calorie

Btu 1055.05585262 J International Table Btu

eV ech V Electron volt

ev eV Electron volt

therm 105506000 J EEC therm

invcm hc / cm Energy in inverse centimeters

Kayser invcm Kayser (inverse centimeter energy)

men 100 / invcm Inverse energy in meters

Hzen h Hz Energy in Hertz

Ken k K Energy in Kelvins

Wh W hr Watt hour

Ws W s Watt second



WJ / s Watt

hp 550 ft lbf / s Horsepower

hpm 75 m kgf / s Metric Horsepower



KKK Degree Kelvin (base unit)

dK KK Degree Kelvin

degK KK Degree Kelvin

dC CK Degree Celsius

degC CK Degree Celsius

dF F (5/9) K Degree Fahrenheit

degF F (5/9) K Degree Fahrenheit



Pa N / m^2 Pascal

bar 10^5 Pa Bar

atm 101325 Pa Standard atmosphere

Torr (1/760) atm Torr

mHg 1000 Torr Meter of mercury

inHg 25.4 mmHg Inch of mercury

inH2O 2.490889 10^2 Pa (*) Inch of water

psi lbf / in^2 Pounds per square inch



P (1/10) Pa s Poise

St 10^-4 m^2 / s Stokes



AA Ampere (base unit)

CA s Coulomb

Fdy ech Nav Faraday

e ech Elementary charge

ech 1.602176487 10^-19 C (*) Elementary charge

VW / A Volt

ohm V / A Ohm

Ω ohm Ohm

mho A / V Mho

SA / V Siemens

FC / V Farad

H Wb / A Henry

T Wb / m^2 Tesla

Gs 10^-4 T Gauss

Wb V s Weber



cd cd Candela (base unit)

sb 10000 cd / m^2 Stilb

lm cd sr Lumen

lx lm / m^2 Lux

ph 10000 lx Phot

fc lm / ft^2 Footcandle

lam 10000 lm / m^2 Lambert

flam (1 / pi) cd / ft^2 Footlambert



Bq 1 / s Becquerel

Ci 37 10^9 Bq Curie

Gy J / kg Gray

Sv Gy Sievert

R 258 10^-6 C / kg Roentgen

rd (1/100) Gy Rad

rem rd Rem



mol mol Mole (base unit)



rad rad Radian (base unit)

circ 2 pi rad Full circle

rev circ Full revolution

deg circ / 360 Degree

arcmin deg / 60 Arc minute

arcsec arcmin / 60 Arc second

grad circ / 400 Grade

rpm rev / min Revolutions per minute



sr sr Steradian (base unit)



h 6.62606896 10^-34 J s (*) Planck's constant

hbar h / (2 pi) Planck's constant

mu0 4 pi 10^-7 H / m Permeability of vacuum

μ0 mu0 Permeability of vacuum

eps0 1 / (mu0 c^2) Permittivity of vacuum

ε0 eps0 Permittivity of vacuum

G 6.67428 10^-11 m^3/(kg s^2) (*) Gravitational constant

Nav 6.02214179 10^23 / mol (*) Avogadro's constant

me 9.10938215 10^-31 kg (*) Electron rest mass

mp 1.672621637 10^-27 kg (*) Proton rest mass

mn 1.674927211 10^-27 kg (*) Neutron rest mass

mmu 1.88353130 10^-28 kg (*) Muon rest mass

mμ 1.88353130 10^-28 kg (*) Muon rest mass

Ryd 10973731.568527 /m (*) Rydberg's constant

k 1.3806504 10^-23 J/K (*) Boltzmann's constant

alpha 7.2973525376 10^-3 (*) Fine structure constant

α 7.2973525376 10^-3 (*) Fine structure constant

muB 927.400915 10^-26 J/T (*) Bohr magneton

muN 5.05078324 10^-27 J/T (*) Nuclear magneton

mue -928.476377 10^-26 J/T (*) Electron magnetic moment

mup 1.410606662 10^-26 J/T (*) Proton magnetic moment

R0 8.314472 J/(mol K) (*) Molar gas constant

V0 22.710981 10^-3 m^3/mol (*) Standard volume of ideal gas



Np Np Neper (base unit)

dB (ln(10) / 20) Np decibel



Unit Prefix Table:



Y 10^24 Yotta

Z 10^21 Zetta

E 10^18 Exa

P 10^15 Peta

T 10^12 Tera

G 10^9 Giga

M 10^6 Mega

k K 10^3 Kilo

h H 10^2 Hecto

D 10^1 Deka

d 10^-1 Deci

c 10^-2 Centi

m 10^-3 Milli

u μ 10^-6 Micro

n 10^-9 Nano

p 10^-12 Pico

f 10^-15 Femto

a 10^-18 Atto

z 10^-21 zepto

y 10^-24 yocto



(**) When in TeX or LaTeX display mode, the TeX specific unit

names will not use the `tex' prefix; the unit name for a

TeX point will be `pt' instead of `texpt', for example.

To avoid conflicts, the unit names for pint and parsec will

be `pint' and `parsec' instead of `pt' and `pc'.










All Articles