Emacs dan “kinerja yang menguatkan diri”


14

Singkatnya, pertanyaan saya untuk Anda pengguna Emacs hardcore adalah ini: sudahkah Anda mencapai "kinerja yang menguatkan diri" yang dibicarakan Steve Yegge ?

Emacs adalah hosting mandiri: menulis sesuatu di dalamnya membuat lingkungan itu sendiri lebih kuat. Ini adalah umpan balik: efek berulang, memperkuat sendiri, multiplikasi yang terjadi karena Anda meningkatkan lingkungan yang Anda gunakan untuk membuat peningkatan.

Apakah Anda benar-benar merasa bahwa meningkatkan Emacs Anda pada akhirnya membuat Anda 10X kali lebih produktif , dan produktivitas Anda terus meningkat secara eksponensial, dan seterusnya dan seterusnya?
Apakah Anda memiliki beberapa contoh / pengalaman untuk dibagikan?

Sedangkan bagi saya, saya menggunakan Emacs dan Vim untuk pengembangan (saat ini tetap dengan Vim), saya .emacsdan .vimrckeduanya cukup dikonfigurasi untuk menyesuaikan kebutuhan saya dan saya menghargai kekuatan kedua editor ini. Tapi saya tidak mengalami "penguatan diri" dari Emacs ini, tidak ada yang bertemu seseorang (tentu saja, ini mungkin karena saya bukan Emacser yang benar-benar hardcore, dan belum pernah bertemu sebanyak itu dengan Emacsers).

Misalnya, di Facebook, orang di sebelah saya menggunakan Vim, dan orang di sebelahnya menggunakan Emacs. Keduanya cepat dan produktif sekali, dan saya menghubungkan ini bukan dengan editor yang mereka gunakan, tetapi dengan kecerdasan dan sikap mereka sendiri.

Tapi bagaimanapun, saya akan senang melihat contoh-contoh mengejutkan dari para pendukung Emacs yang akan mengembalikan saya ke Gereja Emacs.

Jawaban:


15

10 X lebih produktif ? Tidak mungkin. Saya cenderung berpikir faktor multiplikasi lebih seperti 1,1, yang bertambah setelah beberapa saat.

Apa yang dibicarakan Steve Yegge sebenarnya adalah refleksi untuk menjadi seorang ahli dalam Emacs, dan itu sangat jarang. Orang-orang yang mencapai efek multiplikasi ini secara aktif menyesuaikan pengalaman Emacs mereka dengan menulis elisp untuk menyesuaikan Emacs agar sesuai dengan kebutuhan spesifik mereka. Misalnya, Yegge menulis ejakulasi . Menafsirkan kutipan Yegge dengan tegas menyiratkan Anda menyesuaikan Emacs untuk membuatnya lebih mudah untuk menyesuaikan / memperluas Emacs.

Inilah cara saya memecah berbagai tingkat keahlian yang berlaku untuk Emacs:

  • Seorang pemula tahu bagaimana menjalankan Emacs, menggerakkan kursor di sekitar, membuat beberapa pengeditan, keluar dari Emacs.
  • Seorang pemula yang mahir tahu bagaimana memasukkan beberapa penyesuaian dasar pada mereka .emacs, atau telah sepenuhnya menyalin potongan-potongan orang lain .emacske dalam milik mereka. Mereka tahu cara membuat binding kunci global, requirepaket bawaan, mengaktifkan mode minor.
  • Pengguna Emacs yang kompeten memiliki .emacsfile besar , mungkin dipecah menjadi beberapa file. Mereka mengunduh dan menggunakan paket non-standar, tahu cara menemukan dokumentasi untuk perintah, mode, melihat ikatan kunci yang ada, merasa nyaman dengan perbedaan antara mode minor dan mode mayor. Pengguna yang kompeten umumnya menjaga satu instance Emacs berjalan selama berhari-hari / minggu, menulis, menyusun, menjalankan dan men-debug program dari Emacs mereka.
  • Pengguna mahir merasa nyaman menulis emacs lisp, membuat perintah interaktif mereka sendiri, dan nyaman menulis mode minor. Pengguna yang mahir melihat kode emacs lisp untuk mendapatkan pemahaman yang lebih baik tentang mode yang mereka gunakan, menggunakan debugger elisp, dan umumnya menggunakan proses yang lebih rendah (shell, proses lisp, ...).
  • Pengguna Expert Emacs menulis mode utama baru dari awal, mencari dan memodifikasi kode C untuk Emacs, tahu apa itu pengeditan rekursif dan menggunakannya, gunakan komunikasi antar-proses untuk mengintegrasikan Emacs dengan alat eksternal. Mereka juga membaca milis emacs-devel .

Dan karena Anda meminta pengalaman pribadi, berikut adalah contoh dari apa yang saya lakukan secara pribadi yang membuatnya merasa saya lebih produktif. Catatan: Saya kebetulan bekerja di sebuah perusahaan di mana kami tidak berada di dekat tepi pendarahan dari lingkungan pengembangan, misalnya, kami masih menggunakan CVS.

  • Saya mengintegrasikan Emacs dengan alat pelacak bug: ketika saya membuat komitmen, itu mencatat nama file dan versi di bidang untuk bug, dan dari Emacs saya dapat melihat bug saya, menugaskan mereka, menyelesaikannya, dll.
  • Saya menulis sebuah jembatan yang menghubungkan produk saya (pekerjaan harian) dan Emacs, secara efektif membuat produk saya menjadi proses yang lebih rendah - memungkinkan saya untuk membuat perubahan pada kode sumber dengan cepat.
  • Saya memperpanjang penanganan TAGS dengan find-file-in-tag yang menyediakan sejumlah pintasan yang sesuai dengan lingkungan pengembangan saya.
  • Saya menulis mode yang mengambil hasil regresi dan memungkinkan saya untuk melompat ke kegagalan, memeriksa file log, menjalankan kembali satu tes atau lebih, atau memasuki menjalankan debug, dengan penekanan tombol minimal.
  • Laporan status mingguan saya (ya, saya menggunakan Emacs untuk email) dibuat secara otomatis menggunakan komitmen yang saya buat sepanjang minggu.

Itu adalah perubahan yang saya buat untuk secara khusus menyesuaikan Emacs dengan lingkungan dan alur kerja saya.

Apakah saya 10X lebih produktif daripada orang lain di sekitar saya? Tidak.

Namun, untuk pekerjaan sehari-hari saya, ada banyak tugas yang dapat saya lakukan dengan beberapa penekanan tombol yang orang lain habiskan lebih lama di lingkungan yang tidak disesuaikan, dan yang umumnya mengharuskan mereka untuk beralih antara editor dan browser web atau shell .

Apakah mereka contoh yang mencengangkan? Tidak. Saya yakin banyak dari apa yang telah saya lakukan sudah tersedia di Visual Studio . Apakah artikel saya akan mengembalikan Anda ke Gereja Emacs? Mungkin tidak.

Namun, jika Anda melihat pola perilaku di lingkungan pengembangan Anda, dan Anda memiliki rasa gatal yang memberitahu Anda, "Saya benar-benar tidak harus melakukan X / Y / Z berulang kali, jika saya hanya bisa ..." lalu Saya sarankan mencoba menggunakan Emacs untuk menggaruk gatal itu. Goresan itu bisa menjadi langkah pertama ke jalan "perkuat diri" yang dibicarakan Steve Yegge.

Catatan kecil: Saya tidak tahu bahwa banyak (ada?) Pengguna Emacs yang benar-benar ahli secara aktif menggunakan situs stack overflow, atau, setidaknya, mereka tidak menjawab pertanyaan terkait Emacs. Saya mengatakan bahwa berdasarkan pada pengguna teratas untuk emacs dan tag elisp pada stack overflow.


+1, aplikasi yang bagus dari model keterampilan Dreyfus ke Emacs-fu. Untuk pembaca yang tidak terbiasa dengan Dreyfus: en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
limist

Catatan: Saya pribadi menganggap diri saya sebagai pengguna Emacs yang cukup mahir, tetapi saya tidak mengubahsuaikan Emacs'en saya hanya karena saya menjumpai begitu banyak sistem yang mengkustomisasi pengaturan default akan menjadi kontraproduktif daripada hanya menyelesaikan pekerjaan.

11

Bukti ini bersifat anekdotal, tentu saja, tetapi pertanyaan Anda secara eksplisit meminta bukti anekdotal.

Saya seorang siswa yang melakukan penelitian di laboratorium akademik yang melibatkan ahli komputasi ilmiah serta penulisan. Dalam lingkungan seperti itu (pikirkan: python, SQL, utils command-purpose perintah akademik khusus, file teks, LaTeX / BibTeX), mempelajari emacs secara kasar membuat perbedaan antara hand-trowel dan backhoe. Setelah satu tahun emacs (di mana saya akan menilai diri saya Kompeten yang kuat dengan jari kaki mencelupkan ke dalam Mahir), Saya mendapati diri saya bersemangat untuk menangani masalah yang ditakutkan oleh rekan kerja saya. Bukan karena mereka malas dan saya rajin, tetapi karena itu menyenangkan untuk meruntuhkan gunung dengan backhoe dan berat untuk menggaruk gunung dengan sekop. Paling tidak dua kali, tim saya mulai berdebat tentang membuat perubahan rumit pada format laporan, hanya untuk menemukan bahwa tugas sudah selesai sebelum mereka bahkan selesai berdebat tentang siapa yang harus melakukannya. Ganti regexp + embedded elisp.

Jadi, dalam artian tingkat pertama, ya, emacs telah membuat saya jauh lebih produktif.

Tampaknya Anda bertanya tentang keuntungan dari produktivitas dalam pengertian tingkat kedua: apakah pengembalian dari senyawa emacs saya? Meskipun saya tidak akan menilai diri saya benar-benar Mahir , apalagi Yegge , saya pikir saya mulai melihat kaki kurva eksponensial, dan bahwa penggunaan emacs saya membuat emacsing lebih jauh bahkan lebih produktif. Beberapa statistik singkat dan anekdotal dari repo untuk mengukur ini:

  • Dalam tim 7 orang, saya bertanggung jawab atas lebih dari setengah komitmen. Menyesuaikan untuk senioritas, saya masih melakukan hampir dua kali lebih sering. Bukan karena saya hampir dua kali lebih hebat, tetapi karena emacs semua tetapi menangani kontrol versi untuk saya. Karena saya dapat melakukan, memperbarui dan menggabungkan tanpa rasa sakit, saya memeriksa dengan potongan diskrit yang lebih kecil, seperti yang harus kita semua lakukan. Tetapi itu berarti saya merasa lebih bebas untuk mengambil "risiko yang lebih besar" (saya harus menyebutkan bahwa kami sedang menulis kode eksperimen untuk penelitian ilmiah, bukan untuk produksi), yang berarti saya belajar lebih banyak tentang pemrograman dan subjek saya.

  • Dalam laporan terakhir yang kami tulis, svn menyalahkan memberi tahu saya bahwa saya bertanggung jawab untuk lebih banyak baris daripada tiga kali gabungan dua penulis lainnya . (Ini bukan hanya karena saya memiliki komit terakhir. Saya ingin tahu tentang ini untuk sementara waktu, jadi saya mulai melacaknya dan hasilnya cukup stabil sepanjang sejarah versi.) Karena saya 6 kali lebih cepat penulis? Tidak: karena emacs adalah gergaji untuk teks. Ini berarti saya dapat melakukan jenis operasi LaTeX yang tidak pernah saya coba sebelumnya. Yang berarti saya akhirnya lebih memahami LaTeX, yang membuat saya lebih produktif di masa depan.

  • 100% dokumentasi (baik untuk kode dan catatan penelitian internal) adalah milik saya. Karena teman-teman lab saya tidak peduli dengan dokumentasi? Yah, aku juga tidak terlalu peduli sebelum menemukan mode-org. Sementara saya biasanya uber-tipe-B tentang hal-hal ini, mode org berubah menjadi kecanduan ringan. Ekspor instan org-mode ke html yang tampak menyenangkan dan LaTeX menghapus semua hambatan untuk dokumentasi yang bertanggung jawab dan mengubahnya menjadi semacam permainan. Jadi sekarang saya melakukannya. Jika tidak maka saya tidak akan, atau setidaknya saya akan takut dan menundanya dan membiarkannya lintah energi mental.

Komentator lain berpendapat bahwa hubungan sebab-akibat mungkin justru mundur: mungkin emacs memberi penghargaan kepada yang sangat produktif, yang akan merampok kepercayaan dari hipotesis bahwa pengguna median cenderung menikmati keuntungan apa pun. Saya mungkin menyarankan semacam efek plasebo yang memuaskan sendiri: apakah emacs membuat saya lebih produktif (dan tentu saja kita tidak akan pernah tahu, karena saya tidak memiliki saudara kembar identik yang tidak belajar emacs), saya punya tentu saja mengalami pencerahan dalam hubungan saya dengan teks terstruktur. Saya senang menggunakan emacs, yang berarti saya lebih banyak menggunakannya, yang berarti saya belajar lebih banyak tentang itu, menjadi lebih bersemangat, & c. Ketika saya menemukan mode BibTeX, saya ingat merasa seolah-olah saya baru saja mengajak seorang gadis kencan pertama saya.

Jika Anda melewatkan itu: emacs membuat saya pusing memikirkan mengedit database bibliografi. Dalam pekerjaan saya itu bernilai sesuatu, saya pikir.


8

Misalnya, di Facebook, orang di sebelah saya menggunakan Vim, dan orang di sebelahnya menggunakan Emacs. Keduanya cepat dan produktif sekali, dan saya mengaitkan ini bukan dengan editor yang mereka gunakan, tetapi dengan kecerdasan dan sikap mereka sendiri.

Pernyataan ini berdering sangat benar, dan agak berlaku untuk setiap jenis kiat produktivitas.

Orang yang tertarik untuk meningkatkan / mengoptimalkan produktivitas mereka cenderung lebih produktif karena fokus atau perilaku mereka dalam kehidupan, terlepas dari efisiensi ujung produktivitas itu sendiri.

Dapat disimpulkan sebagai: "Anda bukan pengembang yang lebih baik karena Anda menggunakan Emacs atau Vim, tetapi jenis orang yang cukup berdedikasi untuk menguasai alat ini cenderung menjadi pengembang yang baik" [1].

  1. Ini adalah generalisasi yang mengerikan sehingga itu bukan kebenaran absolut dan tidak berarti banyak pula (apa yang pengembang baik / buruk? Dll)

4

Saya telah menjadi pengguna Emacs selama sekitar 20 tahun sekarang, dan saya harus mengatakan bahwa tidak, saya belum mencapai titik itu.

Untuk sampai ke "emacsvana" yang dia bicarakan, Anda benar-benar harus menjadikan diri Anda seorang ahli elisp . Saya sudah melakukan sedikit, tetapi benar-benar keterampilan saya cukup banyak berakhir pada tingkat mampu mengkonfigurasi mode baru yang ditulis orang lain. Mencoba men-debug (atau Tuhan melarang perbaikan) elisp orang lain sedikit di luar saya, dan menulis sendiri dari awal bahkan bukan pikiran.

Ini dari seseorang yang sebenarnya telah menggunakan lisp sebelumnya, dan memiliki 20+ tahun pengalaman pengembangan perangkat lunak profesional.

Mungkin saya hanya menjadi wuus atau semacamnya, tapi saya curiga sangat sedikit pengguna Emacs yang sampai pada titik yang dibicarakannya.

Tidak ada yang salah dengan itu. Saya tahu cara membuat makro, yang sendirian membuat saya lebih produktif dengan Emacs daripada yang bisa saya lakukan dengan editor teks lainnya. Terkadang, jauh lebih dari 10x produktif. Namun, itu tidak membuat saya lebih baik daripada seseorang yang tahu vi sama baiknya (karena bisa juga melakukan makro).


Re: teks Anda dalam huruf tebal, saya akan jauh lebih terkejut jika mayoritas pengguna veteran Emacs 20 tahun, hanya tahu bagaimana melakukan makro aneh. Tampaknya laknat bagi semua hal yang membuat Emacs sangat tidak menyadari potensi itu.
ocodo

4

Tidak, belum pernah, dan saya belum pernah mendengar ada orang yang pernah. Saya pikir itu tidak terjadi. Saya pikir Steve Yegge melakukan apa yang dilakukan blogger populer: dia membuat pernyataan kontroversial dan over-the-top untuk menyampaikan maksudnya dan agar lebih terlihat. Saya tidak berpikir dia bersungguh-sungguh. Apa yang mungkin ingin dia sampaikan adalah: "Emacs benar-benar efisien untuk memulainya, dan jika Anda banyak menyesuaikannya, Anda belajar bagaimana menjadi lebih efisien dengannya, yang hebat, mmm-kay?"

Jika dia hanya mengatakan itu, Anda tidak akan bingung, dan dia tidak akan memiliki pembaca sebanyak setengahnya.


4

Lihatlah seperti ini: Emacs dan Vim unggul dalam operasi teks dan otomatisasi penekanan tombol berulang, belum lagi navigasi potongan teks besar. Inilah yang dibicarakan oleh Yegge, meskipun dengan cara yang lebih mengkhotbahkan.

Jika Anda memiliki file 10.000 baris di mana Anda harus menambahkan nomor baris ke awal setiap baris, Anda mungkin menghabiskan setengah hari melakukannya secara manual di Notepad.

Atau, jalankan makro atau gunakan fungsi Emacs bawaan untuk hal semacam ini. Maka Anda menghemat setengah hari kerja dan Anda lebih dari 10x produktif.

Ini tentang mendeteksi pengulangan dan menghilangkannya. Itu membutuhkan kecerdasan, pengalaman, latihan, dan keterampilan, sehingga tidak semua orang yang menggunakan Emacs akan melihat manfaat produktivitas.


Atau Anda bisa melakukan beberapa pemrosesan teks sederhana dengan seddan berikan sisa hari libur bagi diri Anda.
Josh K

@ Josh K: Atau Perl atau awk atau shell dengan pasta. Alat apa pun yang paling Anda kenal, sungguh.
Zan Lynx

bahkan menulis program C untuk melakukan itu tidak akan memakan waktu lebih dari 5 menit
user281377

2
Emacs tidak cocok untuk menangani file yang SANGAT besar. Terlalu lamban.

2

Saya tidak tahu tentang "N kali lebih cepat", tetapi beberapa penambahan fungsi utilitas dapat membuat Emacs cukup baik dalam mengisi templat. Gabungkan bahwa dengan sedikit kesadaran bahasa target dan Anda dapat melakukan hal-hal seperti "beri tahu emacs bahwa Anda ingin fungsi dibuat, katakan padanya argumen input (tipe, jika bahasa membutuhkan informasi jenis) dan nilai balik, mintalah emac membuat kerangka untuk lebih lanjut mengisi ".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.