SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
How Emacs changed my life
Report
yukihiro_matz
Follow
Language Designer at NaCl
Mar. 26, 2012
•
0 likes
•
122,351 views
1
of
75
How Emacs changed my life
Mar. 26, 2012
•
0 likes
•
122,351 views
Download Now
Download to read offline
Report
Technology
Self Improvement
yukihiro_matz
Follow
Language Designer at NaCl
Recommended
エンジニア必見!Sreへの第一歩
Takuya Tezuka
1.7K views
•
56 slides
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
64.2K views
•
78 slides
gRPC入門
Kenjiro Kubota
23.7K views
•
69 slides
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
10K views
•
31 slides
HTTP/2の現状とこれから
shigeki_ohtsu
113.6K views
•
35 slides
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
21.4K views
•
30 slides
More Related Content
What's hot
細かすぎて伝わらないD3 ver.4の話
清水 正行
15.1K views
•
65 slides
このPHP QAツールがすごい!2019
sasezaki
5.5K views
•
85 slides
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
15K views
•
82 slides
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
Atsushi KOMIYA
77K views
•
93 slides
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
773 views
•
13 slides
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
24.1K views
•
49 slides
What's hot
(20)
細かすぎて伝わらないD3 ver.4の話
清水 正行
•
15.1K views
このPHP QAツールがすごい!2019
sasezaki
•
5.5K views
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
•
15K views
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
Atsushi KOMIYA
•
77K views
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
•
773 views
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
•
24.1K views
RSpecしぐさ
Takafumi ONAKA
•
12.5K views
Docker Compose 徹底解説
Masahito Zembutsu
•
60.9K views
実環境にTerraform導入したら驚いた
Akihiro Kuwano
•
28.3K views
TLS, HTTP/2演習
shigeki_ohtsu
•
13K views
オープンソースライセンスの基礎と実務
Yutaka Kachi
•
199.9K views
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
•
19.3K views
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
Chris Ohk
•
30.6K views
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
•
1.5K views
C# における Redis 徹底活用
Takaaki Suzuki
•
1.1K views
レシピの作り方入門
Nobuhiro Iwamatsu
•
62.6K views
料理を楽しくする画像配信システム
Issei Naruta
•
22.4K views
initとプロセス再起動
Takashi Takizawa
•
49.1K views
君はyarn.lockをコミットしているか?
Teppei Sato
•
30.3K views
C# 8.0 非同期ストリーム
信之 岩永
•
11.2K views
Viewers also liked
Ruby everywhere
yukihiro_matz
276.2K views
•
193 slides
Feeding the sharks
yukihiro_matz
13.9K views
•
170 slides
Emacs Modes I can't work without
Hitesh Sharma
2.4K views
•
10 slides
20130404 emacs conf 2013 sketchnotes
Sacha Chua
2.3K views
•
13 slides
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
Sacha Chua
6.4K views
•
22 slides
Python virtualenv & pip in 90 minutes
Larry Cai
4.1K views
•
13 slides
Viewers also liked
(20)
Ruby everywhere
yukihiro_matz
•
276.2K views
Feeding the sharks
yukihiro_matz
•
13.9K views
Emacs Modes I can't work without
Hitesh Sharma
•
2.4K views
20130404 emacs conf 2013 sketchnotes
Sacha Chua
•
2.3K views
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
Sacha Chua
•
6.4K views
Python virtualenv & pip in 90 minutes
Larry Cai
•
4.1K views
Emacs
Yuto Suzuki
•
1.1K views
Simple responsive typography
Nabeelah Ali
•
385 views
HBase for Dealing with Large Matrices
gcapan
•
612 views
Google
guest08e2d3
•
945 views
web page classification
Nabeelah Ali
•
1.8K views
Pymacs 初體驗
Kai-Yuan Cheng
•
2.7K views
Emacs Cheat Sheet
guest9ebed9
•
2.9K views
SLIME
chaitanyagupta
•
5.9K views
On editing text and Emacs: 9 habits of highly effective text editing
dmgerman
•
2.7K views
Emacs, a performant IDE for Perl
Laurent Dami
•
3.4K views
Emacs intro
Khon
•
1K views
Emacs - COSCUP 2012
Kan-Ru Chen
•
7.3K views
My Emacs Configs
Qin Jian
•
1.6K views
Emacs入门
yinhm .
•
3K views
Recently uploaded
Regain Supply Chain Control
Converge
26 views
•
10 slides
THRIVING IN THE GEN AI ERA: NAVIGATING CHANGE IN TECH
Steve Poole
10 views
•
44 slides
GDSC ZHCET Google Study Jams 23.pdf
AbhishekSingh313342
32 views
•
34 slides
9C Monthly Newsletter - SEPT 2023
PublishingTeam
276 views
•
11 slides
Edge Computing - A Future Fuel of 21st Century.pptx
NidhiShingade
10 views
•
12 slides
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
Bernd Ruecker
76 views
•
63 slides
Recently uploaded
(20)
Regain Supply Chain Control
Converge
•
26 views
THRIVING IN THE GEN AI ERA: NAVIGATING CHANGE IN TECH
Steve Poole
•
10 views
GDSC ZHCET Google Study Jams 23.pdf
AbhishekSingh313342
•
32 views
9C Monthly Newsletter - SEPT 2023
PublishingTeam
•
276 views
Edge Computing - A Future Fuel of 21st Century.pptx
NidhiShingade
•
10 views
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
Bernd Ruecker
•
76 views
Project Euler in Python
Tetsuo Koyama
•
31 views
Mastering Automation Quality: Exploring UiPath's Test Suite for Seamless Test...
DianaGray10
•
51 views
From Project to Product - The Need for Speed
Cprime
•
14 views
UiPath Tips and Techniques for Debugging - Session 3
DianaGray10
•
67 views
Cloud Native Application Development Guide – 2023
Lucy Zeniffer
•
10 views
Obsoleting Global Supply Chain Management
Converge
•
26 views
Accelerating Data Science through Feature Platform, Transformers and GenAI
FeatureByte
•
139 views
WaveTech Investor Presentation
Dan Spottsville
•
13 views
Embracing the Risk and Opportunity of AI & Cloud.pptx
Symptai Consulting Limited
•
14 views
Common WordPress APIs_ Settings API
Jonathan Bossenger
•
36 views
Dennis Wendland_The i4Trust Collaboration Programme.pptx
FIWARE
•
19 views
Reward Innovation for long-term member satisfaction
Jiangwei Pan
•
54 views
RemeOs science and clinical data 20230926_PViv2 (4).pptx
PetrusViitanen1
•
86 views
Connecting the Dots: Early Insights from Customer Journey Mapping with Graphs...
Neo4j
•
9 views
How Emacs changed my life
1.
How Emacs changed
my Life Yukihiro "Matz" Matsumoto @yukihiro_matz Powered by Rabbit 0.9.2
2.
1980
1/74 Powered by Rabbit 0.9.2
3.
I started programming
2/74 Powered by Rabbit 0.9.2
4.
3/74 Powered by Rabbit 0.9.2
5.
BASIC
4/74 Powered by Rabbit 0.9.2
6.
400 steps
5/74 Powered by Rabbit 0.9.2
7.
1988
6/74 Powered by Rabbit 0.9.2
8.
I met Emacs
7/74 Powered by Rabbit 0.9.2
9.
on Sun-3
8/74 Powered by Rabbit 0.9.2
10.
shared by 200
undergraduates 9/74 Powered by Rabbit 0.9.2
11.
I tried Emacs
10/74 Powered by Rabbit 0.9.2
12.
but I never
used 11/74 Powered by Rabbit 0.9.2
13.
Emacs was prohibited
12/74 Powered by Rabbit 0.9.2
14.
It consumed too
much precious memory 13/74 Powered by Rabbit 0.9.2
15.
We are free
to download free software 14/74 Powered by Rabbit 0.9.2
16.
We are free
to read the source code 15/74 Powered by Rabbit 0.9.2
17.
I downloaded Emacs
source code 16/74 Powered by Rabbit 0.9.2
18.
and investigated
17/74 Powered by Rabbit 0.9.2
19.
Emacs was my
first Lisp interpreter 18/74 Powered by Rabbit 0.9.2
20.
I learned a
lot about language implementation from Emacs 19/74 Powered by Rabbit 0.9.2
21.
Embedding integers in
pointers 20/74 Powered by Rabbit 0.9.2
22.
Mark and sweep
garbage collection 21/74 Powered by Rabbit 0.9.2
23.
Calling convention between
Lisp and C 22/74 Powered by Rabbit 0.9.2
24.
I really understood
how Lisp work 23/74 Powered by Rabbit 0.9.2
25.
I was fascinated
by Lisp objects 24/74 Powered by Rabbit 0.9.2
26.
Lisp objects implemented
by C 25/74 Powered by Rabbit 0.9.2
27.
Then I got
a Sparc Station 26/74 Powered by Rabbit 0.9.2
28.
I started to
use Emacs 27/74 Powered by Rabbit 0.9.2
29.
Emacs become part
of me 28/74 Powered by Rabbit 0.9.2
30.
If I didn't
like anything in Emacs, I could change it 29/74 Powered by Rabbit 0.9.2
31.
Emacs is totally
configurable 30/74 Powered by Rabbit 0.9.2
32.
Emacs made me realize anything can be changed by a programmer 31/74 Powered by Rabbit 0.9.2
33.
It is total
freedom 32/74 Powered by Rabbit 0.9.2
34.
I could edit
without thinking key binding 33/74 Powered by Rabbit 0.9.2
35.
I didn't want
to write anything without Emacs 34/74 Powered by Rabbit 0.9.2
36.
Programs, Documents and
Mails 35/74 Powered by Rabbit 0.9.2
37.
so I wrote
my own mail client 36/74 Powered by Rabbit 0.9.2
38.
named "cmail"
37/74 Powered by Rabbit 0.9.2
39.
in Emacs lisp
38/74 Powered by Rabbit 0.9.2
40.
It was my
first non-trivial (Emacs) Lisp program 39/74 Powered by Rabbit 0.9.2
41.
I used it
everyday 40/74 Powered by Rabbit 0.9.2
42.
1993
41/74 Powered by Rabbit 0.9.2
43.
I started Ruby
development 42/74 Powered by Rabbit 0.9.2
44.
with influence from
Emacs implementation 43/74 Powered by Rabbit 0.9.2
45.
Integers are coded
in tagged pointers 44/74 Powered by Rabbit 0.9.2
46.
It uses simple
mark and sweep garbage collector 45/74 Powered by Rabbit 0.9.2
47.
It uses similar
object model to Lisp 46/74 Powered by Rabbit 0.9.2
48.
Then I put
Smalltalk-like OO system on top 47/74 Powered by Rabbit 0.9.2
49.
For syntax, I
wanted Algol/Ada/ Eiffel like one 48/74 Powered by Rabbit 0.9.2
50.
But
as an Emacs addict, I needed a language mode 49/74 Powered by Rabbit 0.9.2
51.
auto-indent was a
must 50/74 Powered by Rabbit 0.9.2
52.
Back in 1993,
there was no auto-indenting language mode for a language with such syntax 51/74 Powered by Rabbit 0.9.2
53.
So I tried
to write experimental ruby-mode.el 52/74 Powered by Rabbit 0.9.2
54.
fighting with emacs
lisp and regular expression, 53/74 Powered by Rabbit 0.9.2
55.
for almost whole
week 54/74 Powered by Rabbit 0.9.2
56.
I
somehow succeeded to implement auto-indentation 55/74 Powered by Rabbit 0.9.2
57.
for a language
with "end" delimiters 56/74 Powered by Rabbit 0.9.2
58.
If I couldn't
make ruby-mode to work 57/74 Powered by Rabbit 0.9.2
59.
the syntax of
Ruby would have changed 58/74 Powered by Rabbit 0.9.2
60.
to more C-like
one 59/74 Powered by Rabbit 0.9.2
61.
too similar to
other scripting languages 60/74 Powered by Rabbit 0.9.2
62.
as
a result, Ruby would not have gained current popularity 61/74 Powered by Rabbit 0.9.2
63.
Summary
62/74 Powered by Rabbit 0.9.2
64.
1. Emacs taught
me freedom for software 63/74 Powered by Rabbit 0.9.2
65.
2. Emacs taught
me how to read code 64/74 Powered by Rabbit 0.9.2
66.
3. Emacs taught
me power of Lisp 65/74 Powered by Rabbit 0.9.2
67.
4. Emacs taught
me how to implement a language core 66/74 Powered by Rabbit 0.9.2
68.
5.
Emacs taught me how to implement a garbage collector 67/74 Powered by Rabbit 0.9.2
69.
6. Emacs helped
me to code and debug 68/74 Powered by Rabbit 0.9.2
70.
7. Emacs
helped me to write and edit text/mails/documents 69/74 Powered by Rabbit 0.9.2
71.
8. Emacs helped
me to be a effective programmer 70/74 Powered by Rabbit 0.9.2
72.
9. Emacs made
me a hacker 71/74 Powered by Rabbit 0.9.2
73.
10. Emacs has
changed my life 72/74 Powered by Rabbit 0.9.2
74.
forever
73/74 Powered by Rabbit 0.9.2
75.
Thank you
74/74 Powered by Rabbit 0.9.2