SlideShare a Scribd company logo

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

More Related Content

How Emacs changed my life