Emacs ve “kendini güçlendiren performans”


14

Kısacası, hardcore Emacs kullanıcıları için sorum şu: Steve Yegge'den bahseden bu “kendini güçlendiren performans” elde ettiniz mi?

Emacs kendi kendini barındırır: içine şeyler yazmak çevrenin kendisini daha güçlü kılar. Bu bir geri bildirim döngüsüdür: iyileştirmeler oluşturmak için kullandığınız ortamı geliştirdiğiniz için yinelenen, kendi kendini güçlendiren, çarpma etkisi.

Emacs'ınızı geliştirmenin sonunda sizi 10 kat daha verimli hale getirdiğini ve üretkenliğinizin katlanarak artmaya devam ettiğini gerçekten hissediyor musunuz ? Paylaşmak için bazı örnekleriniz / deneyimleriniz var mı?

Bana gelince, hem Emacs hem de Vim'i geliştirme için kullanıyordum (şu anda Vim ile yapışıyor), benim .emacsve .vimrcher ikisi de ihtiyaçlarımı karşılayacak şekilde yapılandırılmış ve bu editörlerin ikisinin de gücünü takdir ediyorum. Ama bu Emacs'ın "kendini güçlendiren döngüsünü" tecrübe etmedim, ne de biriyle tanışmadım (elbette, bunun nedeni gerçekten hardcore Emacser olmadığım ve henüz çok sayıda Emacser ile tanışmamış olduğum için olabilir).

Örneğin, Facebook'ta, yanımdaki adam Vim'i ve yanındaki adam Emacs'ı kullanıyordu. Her ikisi de cehennem gibi hızlı ve üretkendi ve bunu kullandıkları editöre değil, kendi zeka ve tutumlarına bağlıyorum.

Her neyse, Emacs taraftarlarından beni Emacs Kilisesi'ne geri döndürecek şaşırtıcı örnekler görmekten memnuniyet duyarım.

Yanıtlar:


15

10 X daha verimli mi? Muhtemelen değil. Çarpıcı faktörlerin 1.1'e benzediğini düşünüyorum, bu da bir süre sonra toplanıyor.

Steve Yegge'in bahsettiği şey gerçekten Emacs'ta uzman olmanın bir yansıması ve bunlar çok nadir. Bu çarpma etkisine ulaşan insanlar, Emacs'ı özel ihtiyaçlarına göre uyarlamak için elisp yazarak Emacs deneyimlerini aktif olarak özelleştiriyorlar. Örneğin, Yegge ejak yazdı . Yegge alıntısını yorumlamak, Emacs'ı özelleştirmeyi / genişletmeyi kolaylaştırmak için Emacs'ı özelleştirdiğiniz anlamına gelir.

Emacs için geçerli oldukları için çeşitli uzmanlık düzeylerini nasıl ayıracağım:

  • Bir acemi Emacs'ı nasıl çalıştıracağını, imleci hareket ettireceğini, bazı düzenlemeler yapmasını ve Emacs'tan nasıl çıkacağını bilir.
  • Bir ileri acemi onların bazı temel özelleştirmeleri koymak bilir .emacs, ya da tamamen başka insanların parçalarını kopyaladıysa .emacsonların içine. Küresel anahtar bağlamaları, requireyerleşik paketleri nasıl oluşturacaklarını , küçük modları nasıl etkinleştireceklerini biliyorlar .
  • Yetkili Emacs kullanıcılarının büyük .emacsolasılıkla birden fazla dosyaya bölünmüş büyük dosyaları vardır. Standart olmayan paketleri indirir ve kullanırlar, komutlar, modlar için belgeleri nasıl bulacağını bilirler, mevcut anahtar bağlarını görüntülerler, küçük modlar ve büyük modlar arasındaki farklarla rahatlar. Yetkili kullanıcılar genellikle tek bir Emac örneğini gün / hafta boyunca çalışır, programları Emac'larından yazar, derler, çalıştırır ve hata ayıklar.
  • Yetkin kullanıcılar, emacs lisp'i rahatça yazabilir, kendi etkileşimli komutlarını oluşturabilir ve küçük modları rahatça yazabilir. Yetkin kullanıcılar, kullandıkları modları daha iyi anlamak, elisp hata ayıklayıcısını kullanmak ve genellikle düşük süreçleri (kabuklar, lisp süreçleri, ...) kullanmak için emacs lisp koduna bakar.
  • Uzman Emacs kullanıcıları sıfırdan yeni büyük modlar yazar, Emacs için C kodunu arar ve değiştirir, yinelemeli düzenlemenin ne olduğunu bilir ve kullanır, Emacs'ı harici araçlarla entegre etmek için süreçler arası iletişimi kullanır. Ayrıca emacs-devel posta listesini de okudular .

Ve kişisel deneyim istediğiniz için, kişisel olarak yaptığım şeylerin daha üretken olduğumu hissettiren örnekler. Not: Geliştirme ortamlarının kanayan köşesine yakın bir yerde olmadığımız bir şirkette çalışıyorum, örneğin hala CVS kullanıyoruz.

  • Emacs'ı hata izleme aracıyla entegre ettim: taahhütte bulunduğumda, dosya adını ve sürümünü hata alanlarına kaydeder ve Emacs'tan hatalarımı görüntüleyebilir, atayabilir, çözebilir vb.
  • Ürünümü (günlük iş) ve Emacs'ı birbirine bağlayan, ürünümü etkili bir şekilde daha düşük bir süreç haline getiren bir köprü yazdım - kaynak kodunda anında değişiklik yapmamı sağladım.
  • TAGS işlemeyi, geliştirme ortamım için uygun olan bir dizi kısayol sağlayan etiketleri dosya içinde bul ile genişlettim .
  • Regresyon sonuçlarını alan ve hatalara atlamamı, günlük dosyalarını incelememi, bir veya daha fazla testi yeniden çalıştırmamı veya en az tuş vuruşuyla bir hata ayıklama çalıştırmasına girmemi sağlayan bir mod yazdım.
  • Haftalık durum raporum (evet, e-posta için Emacs kullanıyorum), hafta boyunca yaptığım taahhütler kullanılarak otomatik olarak oluşturulur.

Bunlar, Emacs'ı özellikle çevreme ve iş akışıma uyarlamak için yaptığım değişiklikler.

Etrafımdakilerden 10 kat daha üretken miyim? Hayır.

Ancak, günlük işlerim için, başkalarının özelleştirilmiş olmayan ortamlarında daha uzun süre harcadıkları ve genellikle editörleri ile web tarayıcıları veya kabukları arasında geçiş yapmalarını gerektiren birkaç tuş vuruşuyla yapabileceğim birçok görev var. .

Şaşırtıcı örnekler mi? Hayır. Eminim yaptığım şeylerin çoğu Visual Studio'da zaten mevcut . Makalem sizi Emacs Kilisesi'ne geri döndürecek mi? Muhtemelen değil.

Ancak, geliştirme ortamınızda bir davranış modeli görürseniz ve size şunu söyleyen bir kaşıntı varsa, "X / Y / Z'yi tekrar tekrar yapmam gerekmiyor, eğer yapabilseydim ..." Kaşıntıyı çizmek için Emacs kullanmaya çalışmanızı öneririm. Bu çizik, Steve Yegge'nin bahsettiği "kendini güçlendiren" yolda ilk adım olabilir.

Küçük not: Pek çok (herhangi bir?) Gerçekten uzman Emacs kullanıcısının yığın taşma sitelerini aktif olarak kullandığını veya en azından Emacs ile ilgili soruları yanıtlamadığını bilmiyorum. Ben yığın üst taşması emacs ve elisp etiketleri için en iyi kullanıcılara dayalı diyorum .


+1, Emacs-fu'ya Dreyfus beceri modelinin güzel uygulaması. Dreyfus'a aşina olmayan okuyucular için: en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
limist

Not: Şahsen kendimi oldukça becerikli bir Emacs kullanıcısı olarak görüyorum, ancak Emacs'ımı özelleştirmiyorum çünkü sadece varsayılan kurulumu özelleştiren çok fazla sistemle karşılaştığım için sadece işi yapmak yerine verimsiz olurdu .

11

Bu kanıt elbette anekdottur, ancak sorunuz açıkça anekdot kanıtlar gerektirir.

Akademik bir laboratuvarda bilimsel hesaplama ve yazma parçalarından oluşan araştırma yapan bir öğrenciyim. Böyle bir ortamda (düşünün: python, SQL, akademik özel amaçlı komut satırı araçları, metin dosyaları, LaTeX / BibTeX), öğrenme emacları, bir el malası ve bir beko arasındaki farkı fark etti. Emacs'ın Bir yıl sonra (hangi kendime sağlam değerlendirirsiniz Yetkili içine bir ayak parmağı daldırma ile yetkin), Kendimi laboratuvar arkadaşlarımın korktuğu sorunları ele almaya istekli buluyorum. Tembel oldukları ve gayretli olduğum için değil, dağları bir beko ile yıkmak ve bir dağda mala ile çizmek zahmetli olduğu için eğlenceli değil. En az iki kez, ekibim raporun biçiminde bazı karmaşık değişiklikler yapmayı tartışmaya başlamıştı, ancak bu görevi kimin yapmak zorunda olduğu hakkında tartışmayı bitirmeden önce tamamlanmış olduğunu bulmak için. Normal ifade yerine + katıştırılmış elisp.

Birinci dereceden, evet, emacs beni çok daha üretken yaptı.

Görünüşe göre ikinci dereceden üretkenlikten kazançlar soruyorsunuz: emacs'tan getirilerim bileşik mi? Tamamen kendimi oranı olmaz rağmen usta , dursun Yegge , ben üstel eğrinin ayak görmeye başlıyorum düşünüyorsunuz ve emacs'ın benim kullanımı ayrıca daha üretken emacsing yapar o. Bunu ölçmek için repodan bazı kısa, anekdot istatistikleri:

  • 7 kişilik bir ekipte, taahhütlerin yarısından fazlasından sorumluydum. Kıdeme ayak uydurarak, neredeyse iki kat daha sık taahhüt ediyorum. Neredeyse iki kat harika olduğum için değil, ama emacs benim için sürüm kontrolünü ele alıyor. Ağrısız bir şekilde işleyebileceğim, güncelleyebildiğim ve birleştirebildiğim için, hepimizin yapması gerektiği gibi daha küçük ayrık parçalar ile kontrol ediyorum. Ancak bu, "daha büyük riskler" almak için daha özgür olduğum anlamına gelir (üretim için değil, bilimsel araştırmalar için deneysel kod yazdığımızı belirtmeliyim), bu da programlama ve konumum hakkında daha fazla bilgi sahibi olduğum anlamına gelir.

  • Yazdığımız son raporda, svn suçlaması bana diğer iki yazarın toplamından üç kat daha fazla satır sorumlu olduğumu söylüyor . (Bu sadece son taahhüdüm olduğu için değil. Bir süredir merak ediyordum, bu yüzden onu izlemeye başladım ve sürüm geçmişi boyunca oldukça kararlıydı.) Çünkü 6 kat daha hızlı bir yazarım? Hayır: çünkü emacs metin için bir testere. Bu, daha önce denemeyi hiç rahatsız etmeyeceğim LaTeX ameliyatlarını yapabileceğim anlamına geliyor. Bu da gelecekte LaTeX hakkında daha fazla bilgi sahibi olduğum anlamına geliyor.

  • Dokümantasyonun% 100'ü (hem kod hem de dahili araştırma notları için) benimdir. Laboratuvar arkadaşlarım belgeleri umursamadığı için mi? Org-modunu bulmadan önce umursamadım. Ben genellikle bu tür şeyler hakkında uber-tip-B olsa da, org-mode hafif bir bağımlılığa dönüştü. Org-mode'un hoş görünümlü html ve LaTeX'e anında ihracatı, sorumlu dokümantasyonun önündeki tüm engelleri kaldırdı ve bir tür oyuna dönüştürdü. Şimdi yapıyorum. Eğer yapmasaydı yapmazdım, ya da en azından onu korkutup çıkarır ve zihinsel enerjiyi salıverirdim.

Diğer yorumcular, nedensel bağlantının tam olarak geriye doğru olabileceğini öne sürüyorlar: belki de emacs, son derece üretken olanı ödüllendirir; Ben de kendi kendini besleyen plasebo etkisi bir tür önerebiliriz: emacs ben (ve ben hiçbir ikizinin beri biz, asla bilemeyeceğim tabii daha üretken herhangi yapmış olsun veya olmasın vermedi emacs'ı öğrenmek), var yapılandırılmış metinle ilişkimde kesinlikle bir epifani yaşadı. Emacs kullanmaktan heyecan duyuyorum, bu da onu daha fazla kullandığım anlamına geliyor, yani daha fazla şey öğreniyorum, daha fazla heyecanlanıyorum & c. BibTeX modunu keşfettiğimde, ilk randevumda bir kıza yeni çıkmış gibi hissettiğimi hatırlıyorum.

Bunu kaçırdıysanız: emacs, bibliyografik veritabanlarını düzenleme düşüncesinde beni baş döndürdü. İşimde bir şeylere değer, sanırım.


8

Örneğin, Facebook'ta, yanımdaki adam Vim'i ve yanındaki adam Emacs'ı kullanıyordu. Her ikisi de cehennem kadar hızlı ve üretkendi ve bunu kullandıkları editöre değil, kendi zeka ve tutumlarına bağlıyorum.

Bu açıklama çok doğru ve her türlü üretkenlik ipucuna uygulanabilir.

Verimliliklerini artırmak / optimize etmekle ilgilenen insanlar, üretkenlik ipucunun kendisinin verimliliğine bakılmaksızın, hayattaki odaklanmaları veya davranışları nedeniyle daha üretken olma eğilimindedir.

Bu şöyle özetlenebilir: "Emacs veya Vim kullandığınız için daha iyi bir geliştirici değilsiniz, ancak bu araçlarda ustalaşacak kadar kendini adamış kişiler iyi bir geliştirici olma eğilimindedir" [1].

  1. Bu korkunç bir genellemedir, bu yüzden mutlak bir gerçek değildir ve yine de çok fazla bir şey ifade etmez (iyi / kötü bir geliştirici nedir? Vb.)

4

Yaklaşık 20 yıldır Emacs kullanıcısıyım ve hayır demeliyim ki hayır, bu noktaya gelmedim.

Bahsettiği "emacsvana" ya ulaşmak için, gerçekten kendinizi bir elisp uzmanı yapmalısınız . Biraz yaptım, ama becerilerim hemen hemen başka birisinin yazdığı yeni bir modu yapılandırabilme seviyesinde bitiyor. Başka birinin elisp'in hata ayıklama (veya Tanrı düzeltmeyi yasaklamak) için biraz ötesinde ve sıfırdan bir düşünce bile yazmıyorum.

Bu aslında lisp'i daha önce kullanan ve 20 yıldan fazla profesyonel yazılım geliştirme deneyimine sahip birinden.

Belki de sadece bir wuus ya da bir şeyim, ama çok az Emacs kullanıcısının bahsettiği noktaya ulaştığından şüpheleniyorum .

Gerçekten yanlış olan bir şey yok. Makroları nasıl oluşturacağımı biliyorum, bu da tek başına Emacs ile yükleri diğer metin editörleriyle yapabileceğimden daha verimli hale getiriyor. Bazen, 10 kat daha üretken. Ancak, vi'yı aynı derecede iyi bilen birinden daha iyi yapmaz (çünkü makro da yapabilir).


Re: metninizi kalın, ben 20 yıl deneyimli Emacs kullanıcılarının çoğunluğu, sadece garip makro nasıl biliyordu çok daha sürpriz olurdu. Emacs'ın potansiyelinden çok mutlu bir şekilde habersiz olması her şeye anatema gibi görünüyor.
ocodo

4

Hayır, görmedim ve hiç kimseyi duymadım. Bunun olduğunu sanmıyorum. Bence Steve Yegge, popüler blogcuların yaptıklarını yapıyor: amacını anlamak ve daha görünür olmak için tartışmalı, üst düzey bir açıklama yapıyor. Onun böyle demek istediğini sanmıyorum. Muhtemelen iletişim kurmayı amaçladığı şey şudur: "Emacs başlamak için gerçekten etkilidir ve çok fazla özelleştirirseniz, onunla nasıl daha verimli olabileceğinizi öğrenirsiniz, bu harika mmm-kay?"

Eğer bunu söylemiş olsaydı, kafanız karışmazdı ve yarısı kadar okuyucuya sahip olmazdı.


4

Şu şekilde bakın: Emacs ve Vim, büyük metin yığınlarında gezinmeden bahsetmemek yerine, metin cerrahisinde ve tekrarlayan tuş vuruşlarının otomatikleştirilmesinde mükemmeldir. Yegge'nin bahsettiği şey, daha garip bir şekilde olsa da.

Her satırın başına bir satır numarası eklemeniz gereken 10000 satır dosyanız varsa, Not Defteri'nde el ile yarım gün geçirebilirsiniz.

Veya, bir makroyu çalıştırın veya bu tür şeyler için yerleşik bir Emacs işlevi kullanın. Sonra yarım günlük işten tasarruf edersiniz ve 10 kattan fazla üretken olursunuz.

Bu tekrarları tespit etmek ve ortadan kaldırmakla ilgilidir. Bu zeka, deneyim, uygulama ve beceri gerektirir, bu nedenle Emacs kullanan herkes verimlilik faydalarını görmez.


Ya da basit bir metin işleme yapabilir sedve günün geri kalanını kendinize verebilirsiniz.
Josh K

@Josh K: Veya Perl veya awk veya kabuklu macun. Hangi aracı en iyi bilirseniz, gerçekten.
Zan Lynx

bunu yapmak için bir C programı yazmak bile 5 dakikadan fazla sürmez
user281377

2
Emacs, ÇOK büyük dosyalarla uğraşmak için uygun değildir. Çok halsiz.

2

"N kat daha hızlı" bilmiyorum, ancak bazı yararlı işlevler eklenmesi Emacs şablonları doldurma konusunda oldukça iyi yapabilir. Biraz hedef dil farkındalığıyla birleştirin ve "emacs'a söyle bir işlev oluşturulmasını istediğinizi, girdi argümanlarını (dil, tip bilgisi gerektiriyorsa türler) ve dönüş değerini söyle, emacs için daha fazla bir iskelet oluştursun doldurma".

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.