Emacs và hiệu suất tự củng cố


14

Nói tóm lại, câu hỏi của tôi dành cho bạn những người dùng Emacs khó tính là đây: bạn đã đạt được "hiệu suất tự củng cố" này mà Steve Yegge nói về chưa?

Emacs là tự lưu trữ: viết những thứ trong đó làm cho môi trường trở nên mạnh mẽ hơn. Đó là một vòng phản hồi: một hiệu ứng đệ quy, tự củng cố, nhân rộng xảy ra bởi vì bạn đang cải thiện môi trường bạn đang sử dụng để tạo ra các cải tiến.

Bạn có thực sự cảm thấy rằng việc tăng cường Emacs của bạn cuối cùng giúp bạn tăng năng suất gấp 10 lần và năng suất của bạn tiếp tục tăng theo cấp số nhân, v.v.
Bạn có một số ví dụ / kinh nghiệm để chia sẻ?

Đối với tôi, tôi đã sử dụng cả Emacs và Vim để phát triển (hiện đang gắn bó với Vim), tôi .emacs.vimrccả hai đều được cấu hình khá phù hợp với nhu cầu của tôi và tôi đánh giá cao sức mạnh của cả hai biên tập viên này. Nhưng tôi đã không trải nghiệm "vòng lặp tự củng cố" này của Emacs, cũng không gặp ai đã làm (tất nhiên, điều này có thể là do tôi không thực sự là Emacser khó tính và chưa gặp nhiều Emacsers nào).

Ví dụ, tại Facebook, anh chàng bên cạnh tôi đang sử dụng Vim và anh chàng bên cạnh anh ta đang sử dụng Emacs. Cả hai đều nhanh nhẹn và hiệu quả như địa ngục, và tôi cho rằng đây không phải là trình soạn thảo họ đang sử dụng, mà là trí thông minh và thái độ của chính họ.

Nhưng dù sao, tôi rất vui khi thấy những ví dụ đáng kinh ngạc từ những người đề xướng Emacs sẽ đưa tôi trở lại Nhà thờ Emacs.

Câu trả lời:


15

10 X năng suất hơn ? Không có khả năng. Tôi có xu hướng nghĩ rằng các yếu tố nhân giống như 1.1, sẽ tăng lên sau một thời gian.

Những gì Steve Yegge đang nói đến thực sự là một sự phản ánh về việc trở thành một chuyên gia về Emacs, và những điều đó rất hiếm. Những người đang đạt được hiệu ứng nhân này đang tích cực tùy chỉnh trải nghiệm Emacs của họ bằng cách viết elisp để điều chỉnh Emacs cho phù hợp với nhu cầu cụ thể của họ. Ví dụ, Yegge đã viết ejacs . Giải thích trích dẫn Yegge ngụ ý nghiêm ngặt bạn đang tùy chỉnh Emacs để giúp tùy chỉnh / mở rộng Emacs dễ dàng hơn.

Đây là cách tôi chia nhỏ các cấp độ chuyên môn khác nhau khi áp dụng cho Emacs:

  • Một người mới biết cách chạy Emacs, di chuyển con trỏ xung quanh, thực hiện một số chỉnh sửa, thoát Emacs.
  • Một người mới bắt đầu nâng cao biết cách đặt một số tùy chỉnh cơ bản trong họ .emacshoặc đã sao chép hoàn toàn khối của người khác .emacsvào trong họ. Họ biết cách tạo ra các ràng buộc khóa toàn cầu, requirecác gói tích hợp, cho phép các chế độ nhỏ.
  • Người dùng Emacs có năng lực có các .emacstệp lớn , có thể chia thành nhiều tệp. Họ tải xuống và sử dụng các gói không chuẩn, biết cách tìm tài liệu cho các lệnh, chế độ, xem các ràng buộc khóa hiện có, thoải mái với sự khác biệt giữa chế độ phụ và chế độ chính. Người dùng có năng lực thường giữ một phiên bản Emacs duy nhất chạy trong nhiều ngày / tuần, viết, biên dịch, chạy và gỡ lỗi chương trình từ Emacs của họ.
  • Người dùng thành thạo thoải mái khi viết emacs lisp, tạo các lệnh tương tác của riêng họ và thoải mái viết các chế độ nhỏ. Người dùng thành thạo nhìn vào mã lisp emacs để hiểu rõ hơn về các chế độ họ đang sử dụng, sử dụng trình gỡ lỗi elisp và thường sử dụng các quy trình kém hơn (shell, quy trình lisp, ...).
  • Người dùng Expert Emacs viết các chế độ chính mới từ đầu, xem và sửa đổi mã C cho Emacs, biết chỉnh sửa đệ quy là gì và sử dụng nó, sử dụng giao tiếp giữa các quá trình để tích hợp Emacs với các công cụ bên ngoài. Họ cũng đọc danh sách gửi thư của emacs-devel .

Và vì bạn đang yêu cầu trải nghiệm cá nhân, đây là những ví dụ về những gì cá nhân tôi đã làm khiến tôi cảm thấy mình làm việc hiệu quả hơn. Lưu ý: Tôi tình cờ làm việc trong một công ty nơi chúng tôi không ở gần rìa của môi trường phát triển, ví dụ, chúng tôi vẫn sử dụng CVS.

  • Tôi đã tích hợp Emacs với công cụ theo dõi lỗi: khi tôi thực hiện các cam kết, nó sẽ ghi lại tên tệp và phiên bản trong các trường cho lỗi và từ Emacs tôi có thể xem các lỗi của mình, gán chúng, giải quyết chúng, v.v.
  • Tôi đã viết một cây cầu kết nối sản phẩm của mình (công việc ban ngày) và Emacs, làm cho sản phẩm của tôi trở thành một quy trình kém hơn - cho phép tôi thực hiện các thay đổi đối với mã nguồn một cách nhanh chóng.
  • Tôi đã mở rộng xử lý TAGS bằng thẻ find-file-in cung cấp một số phím tắt phù hợp với môi trường phát triển của tôi.
  • Tôi đã viết một chế độ lấy kết quả hồi quy và cho phép tôi chuyển sang các lỗi, kiểm tra các tệp nhật ký, chạy lại một hoặc nhiều bài kiểm tra hoặc nhập một lần chạy gỡ lỗi, với các lần nhấn phím tối thiểu.
  • Báo cáo trạng thái hàng tuần của tôi (vâng, tôi sử dụng Emacs cho email) được tạo tự động bằng các cam kết tôi đã thực hiện trong suốt cả tuần.

Đó là những thay đổi tôi đã thực hiện để điều chỉnh cụ thể Emacs cho môi trường và quy trình làm việc của tôi.

Tôi có năng suất gấp 10 lần so với những người khác xung quanh mình không? Không.

Tuy nhiên, đối với công việc hàng ngày của tôi, có nhiều tác vụ tôi có thể thực hiện với một vài lần nhấn phím mà những người khác mất nhiều thời gian hơn để làm trong môi trường không tùy chỉnh của họ và thường yêu cầu họ chuyển đổi giữa trình soạn thảo và trình duyệt web hoặc trình bao .

Có phải họ là những ví dụ đáng kinh ngạc? Không. Tôi chắc chắn rằng phần lớn những gì tôi đã làm đã có sẵn trong Visual Studio . Bài viết của tôi sẽ đưa bạn trở lại Nhà thờ Emacs? Chắc là không.

Tuy nhiên, nếu bạn thấy một mô hình hành vi trong môi trường phát triển của mình và bạn có cảm giác ngứa ngáy rằng "Tôi thực sự không cần phải lặp đi lặp lại X / Y / Z, nếu tôi chỉ có thể ..." thì Tôi khuyên bạn nên cố gắng sử dụng Emacs để gãi ngứa. Vết xước đó có thể là bước đầu tiên xuống con đường "tự củng cố" mà Steve Yegge đang nói đến.

Lưu ý nhỏ: Tôi không biết rằng nhiều người dùng (bất kỳ?) Thực sự là chuyên gia Emacs đang tích cực sử dụng các trang web tràn ngăn xếp, hoặc, ít nhất, họ không trả lời các câu hỏi liên quan đến Emacs. Tôi nói rằng dựa trên những người dùng hàng đầu cho các thẻ emacselisp trên stack stack.


+1, Ứng dụng tuyệt vời của mô hình kỹ năng Dreyfus vào Emacs-fu. Đối với những độc giả không quen thuộc với Dreyfus: en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
limist

Lưu ý: Cá nhân tôi tự coi mình là một người dùng Emacs khá lão luyện, nhưng tôi không tùy chỉnh Emacs của mình đơn giản vì tôi gặp rất nhiều hệ thống tùy chỉnh thiết lập mặc định sẽ phản tác dụng thay vì chỉ hoàn thành công việc.

11

Bằng chứng này là giai thoại, tất nhiên, nhưng câu hỏi của bạn rõ ràng kêu gọi bằng chứng giai thoại.

Tôi là một sinh viên làm nghiên cứu trong một phòng thí nghiệm học thuật liên quan đến các tính toán khoa học cũng như viết lách. Trong một môi trường như vậy: Sau một năm emacs (lúc đó tôi sẽ tự đánh giá mình là một Năng lực vững chắc với một ngón chân nhúng vào Thành thạo), Tôi thấy mình háo hức để xử lý các vấn đề mà các bạn cùng phòng của tôi sợ hãi. Không phải vì họ lười biếng và tôi siêng năng, mà bởi vì thật vui khi xé nát những ngọn núi bằng một chiếc máy xúc đào và rất khó để cào vào một ngọn núi bằng một chiếc máy bay. Một ít nhất hai lần, nhóm của tôi đã bắt đầu tranh cãi về việc thực hiện một số thay đổi phức tạp đối với định dạng của báo cáo, chỉ để thấy rằng nhiệm vụ đã được hoàn thành trước khi họ thậm chí còn tranh cãi về việc ai phải làm điều đó. Thay thế Regrec + nhúng elisp.

Vì vậy, theo nghĩa thứ nhất, vâng, emacs đã giúp tôi làm việc hiệu quả hơn nhiều.

Có vẻ như bạn đang hỏi về lợi nhuận từ năng suất theo nghĩa thứ hai: lợi nhuận của tôi từ hợp chất emacs? Mặc dù tôi sẽ không đánh giá bản thân mình hoàn toàn thành thạo , chứ đừng nói đến Yegge , tôi nghĩ rằng tôi đang bắt đầu nhìn thấy chân của đường cong theo cấp số nhân, và việc sử dụng emacs của tôi càng khiến việc này trở nên hiệu quả hơn. Một số thống kê ngắn gọn, giai thoại từ repo để định lượng điều này:

  • Trong một nhóm gồm 7 người, tôi chịu trách nhiệm cho hơn một nửa số cam kết. Điều chỉnh cho thâm niên, tôi vẫn cam kết gần như gấp đôi thường xuyên. Không phải vì tôi gần như tuyệt vời gấp đôi, mà bởi vì tất cả nhưng xử lý kiểm soát phiên bản cho tôi. Bởi vì tôi có thể cam kết, cập nhật và hợp nhất một cách không đau đớn, tôi kiểm tra với các phần rời rạc nhỏ hơn, như tất cả chúng ta nên làm. Nhưng điều đó có nghĩa là tôi cảm thấy tự do hơn khi chấp nhận "rủi ro lớn hơn" (tôi nên đề cập rằng chúng tôi đang viết mã thử nghiệm cho nghiên cứu khoa học, không phải cho sản xuất), điều đó có nghĩa là tôi tìm hiểu thêm về lập trình và chủ đề của mình.

  • Trong báo cáo cuối cùng chúng tôi đã viết, svn đổ lỗi cho tôi biết tôi chịu trách nhiệm cho nhiều dòng hơn ba lần so với hai tác giả khác cộng lại . . Không: bởi vì emacs là một cái cưa cho văn bản. Điều này có nghĩa là tôi có thể thực hiện các loại phẫu thuật LaTeX mà trước đây tôi chưa bao giờ bận tâm thử. Điều đó có nghĩa là tôi cuối cùng đã hiểu thêm về LaTeX, điều này khiến tôi thậm chí còn làm việc hiệu quả hơn trong tương lai.

  • 100% tài liệu (cả mã và ghi chú nghiên cứu nội bộ) là của tôi. Bởi vì bạn cùng phòng của tôi không quan tâm đến tài liệu? Chà, tôi cũng không thực sự quan tâm đến nó trước khi tôi tìm thấy chế độ org. Trong khi tôi thường uber-type-B về những điều này, chế độ org đã biến thành một chứng nghiện nhẹ. Xuất khẩu tức thời của Org-mode sang html và LaTeX dễ nhìn đã loại bỏ tất cả các rào cản đối với tài liệu có trách nhiệm và biến nó thành một loại trò chơi. Vì vậy, bây giờ tôi làm điều đó. Nếu không thì tôi sẽ không, hoặc ít nhất là tôi sẽ sợ nó và tắt nó đi và để nó làm giảm năng lượng tinh thần.

Các nhà bình luận khác cho rằng mối liên hệ nhân quả có thể chính xác là ngược: có lẽ emacs thưởng cho năng suất cao, điều này sẽ lấy đi niềm tin từ giả thuyết rằng người dùng trung bình có thể sẽ được hưởng bất kỳ lợi ích nào. Tôi cũng có thể đề xuất một loại hiệu ứng giả dược tự hoàn thiện: liệu emacs có làm tôi hiệu quả hơn không (và tất nhiên chúng tôi sẽ không bao giờ biết, vì tôi không có sinh đôi giống hệt ai không học emacs), tôi có chắc chắn đã trải qua một bản hùng ca trong mối quan hệ của tôi với văn bản có cấu trúc. Tôi rất hào hứng khi sử dụng emacs, điều đó có nghĩa là tôi sử dụng nó nhiều hơn, điều đó có nghĩa là tôi tìm hiểu thêm về nó, trở nên phấn khích hơn, & c. Khi tôi phát hiện ra chế độ BibTeX, tôi nhớ cảm giác như thể tôi vừa rủ một cô gái đi hẹn hò đầu tiên.

Trong trường hợp bạn bỏ lỡ điều đó: emacs khiến tôi phát điên khi nghĩ đến việc chỉnh sửa cơ sở dữ liệu thư mục. Trong công việc của tôi đó là giá trị một cái gì đó, tôi nghĩ.


8

Ví dụ, tại Facebook, anh chàng bên cạnh tôi đang sử dụng Vim và anh chàng bên cạnh anh ta đang sử dụng Emacs. Cả hai đều nhanh nhẹn và hiệu quả như địa ngục, và tôi cho rằng đây không phải là trình soạn thảo mà họ đang sử dụng, mà là sự khôn ngoan và thái độ của chính họ.

Nhận xét này rất đúng, và phần nào có thể áp dụng cho mọi loại mẹo năng suất.

Những người quan tâm đến việc tăng / tối ưu hóa năng suất của họ có xu hướng năng suất cao hơn vì sự tập trung hoặc hành vi của họ trong cuộc sống, bất kể hiệu quả của chính mẹo năng suất.

Có thể tóm tắt là: "Bạn không phải là nhà phát triển tốt hơn vì bạn đang sử dụng Emacs hoặc Vim, nhưng loại người đủ tâm huyết để làm chủ các công cụ này có xu hướng trở thành nhà phát triển tốt" [1].

  1. Đây là một sự khái quát khủng khiếp vì vậy nó không phải là một sự thật tuyệt đối và dù sao cũng không có ý nghĩa gì nhiều (một nhà phát triển tốt / xấu là gì? V.v.)

4

Tôi đã là một người dùng Emacs khoảng 20 năm nay và tôi phải nói rằng không, tôi chưa đạt đến điểm đó.

Để đến với "emacsvana" mà anh ấy đang nói đến, bạn thực sự phải biến mình thành một chuyên gia giỏi . Tôi đã thực hiện một chút, nhưng thực sự các kỹ năng của tôi đã kết thúc ở mức độ có thể định cấu hình một chế độ mới mà người khác đã viết. Cố gắng gỡ lỗi (hoặc Chúa cấm sửa chữa) sự linh hoạt của người khác là một chút vượt xa tôi, và tự viết từ đầu thậm chí không phải là một ý nghĩ.

Đây là từ một người thực sự đã sử dụng lisp trước đây và có hơn 20 năm kinh nghiệm phát triển phần mềm chuyên nghiệp.

Có lẽ tôi chỉ là một wuus hoặc một cái gì đó, nhưng tôi nghi ngờ rằng rất ít người dùng Emacs đã đến lúc anh ấy nói về.

Không có gì sai với điều đó thực sự. Tôi biết cách tạo macro, một mình giúp tôi tải năng suất cao hơn với Emacs so với bất kỳ trình soạn thảo văn bản nào khác. Có dịp, hơn gấp 10 lần năng suất. Tuy nhiên, nó không làm cho tôi tốt hơn một người biết vi tương tự (vì nó cũng có thể làm macro).


Re: văn bản của bạn in đậm, tôi sẽ ngạc nhiên hơn nhiều nếu phần lớn trong số 20 người dùng Emacs kỳ cựu, chỉ biết làm macro vĩ đại. Dường như tất cả mọi thứ của Emacs đều vô cùng hạnh phúc khi không biết về tiềm năng của nó.
ocodo

4

Không, tôi đã không, và tôi chưa bao giờ nghe nói về bất cứ ai có. Tôi không nghĩ rằng nó xảy ra. Tôi nghĩ Steve Yegge đang làm những gì mà các blogger nổi tiếng làm: anh ta đang đưa ra một tuyên bố gây tranh cãi, vượt trội để có được quan điểm của mình và được thể hiện rõ hơn. Tôi không nghĩ anh ấy có nghĩa như vậy. Những gì anh ấy có thể dự định giao tiếp là thế này: "Emacs thực sự hiệu quả để bắt đầu, và nếu bạn tùy chỉnh nó nhiều, bạn có học được cách hiệu quả hơn nữa với nó, thật tuyệt, mmm-kay?"

Nếu anh ấy chỉ nói vậy, bạn sẽ không bối rối, và anh ấy sẽ không có một nửa số độc giả.


4

Nhìn vào nó theo cách này: Emacs và Vim nổi trội trong phẫu thuật văn bản và tự động hóa các tổ hợp phím lặp đi lặp lại, chưa kể đến việc điều hướng các đoạn văn bản lớn. Đây là những gì Yegge đang nói đến, mặc dù theo một cách thức mang tính thuyết giáo hơn.

Nếu bạn có tệp 10000 dòng trong đó bạn phải thêm số dòng vào đầu mỗi dòng, bạn cũng có thể dành nửa ngày để thực hiện thủ công trong Notepad.

Hoặc, kích hoạt macro hoặc sử dụng chức năng Emacs tích hợp cho loại điều này. Sau đó, bạn tiết kiệm được nửa ngày làm việc và bạn làm việc hiệu quả hơn gấp 10 lần.

Đó là về việc phát hiện sự lặp lại và loại bỏ nó. Điều đó đòi hỏi trí thông minh, kinh nghiệm, thực hành và kỹ năng, vì vậy không phải ai sử dụng Emacs cũng sẽ thấy lợi ích về năng suất.


Hoặc bạn có thể thực hiện một số xử lý văn bản đơn giản sedvà dành cho mình phần còn lại của ngày nghỉ.
Josh K

@Josh K: Hoặc Perl hoặc awk hoặc shell với dán. Bất cứ công cụ nào bạn biết tốt nhất, thực sự.
Zan Lynx

thậm chí viết một chương trình C để làm điều đó sẽ không mất hơn 5 phút
user281377

2
Emacs không phù hợp để xử lý RẤT các tệp lớn. Trở nên quá chậm chạp.

2

Tôi không biết về "N lần nhanh hơn", nhưng một số chức năng tiện ích bổ sung cẩn thận có thể giúp Emacs khá giỏi trong việc điền vào các mẫu. Kết hợp điều đó với một chút nhận thức về ngôn ngữ đích và bạn có thể thực hiện những việc như "nói với emacs bạn muốn một hàm được tạo, nói với nó các đối số đầu vào (các loại, nếu ngôn ngữ yêu cầu thông tin loại) và trả về giá trị, hãy tạo ra một bộ xương để tiếp tục điền vào".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.