Emacs beni daha iyi bir programcı yapacak mı? [kapalı]


130

Steve Yegge bloguna bir yorum yazdı :

Dünyanın en büyük mühendislerinin tümü Emacs kullanıyor. Dünyayı değiştiren tipler. Yanındaki küpteki büyük kız değil. Koridorun sonundaki muhteşem adam Fred değil. Mesleğimizin en büyük yazılımcılarından, sektörün çehresini değiştirenlerden bahsediyorum. James Goslings, Donald Knuths, Paul Grahams, Jamie Zawinskis, Eric Bensons. Gerçek mühendisler Emacs kullanır. Onu iyi kullanmak için çok akıllı olmalısın ve ustalaşabilirsen seni inanılmaz derecede güçlü kılar. Bana inanmıyorsanız, bir ara çalışırken Paul Nordstrom'un omzuna bakın. Tüm kariyeri boyunca Visual Blub .NET benzeri IDE'ler kullanmış biri için gerçekten göz açıcı.

Emacs 100 yıllık editördür.

Kod yazmak için bir metin düzenleyiciyi en son kullandığımda, yaklaşık 1000 yıl önce hala Not Defteri'nde HTML yazarken döndüm. O zamandan beri, tüm kariyerim boyunca Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio ve Eclipse kullandım ve IDE'ye az çok bağımlı oldum.

Ne 's değerinde için, ben var emacs'in çalıştı ve benim deneyim nedeniyle keşfedilebilir özellikleri-kutu-dışı komple eksikliği bir sinir bozucu bir oldu. (Görünüşe göre, diğer Emacs komutlarını keşfetmek için bir Emacs komutu var, ki bu arada bulamıyorum - kendi zalim Zen benzeri şakanı yaşamak gibi.) İyi bir ay boyunca kendimi program gibi yapmaya çalıştım ama sonunda bunun yerine sürükle ve bırak GUI tasarımcıları, IntelliSense ve etkileşimli hata ayıklamayı tercih ettiğime karar verdim.

Gerçeği fanboyizmden ayırmak zor, bu yüzden Yegge'in yorumlarını henüz göründüğü gibi kabul etmeye istekli değilim.

IDE'lere bağımlı olanlarla olmayanlar arasında beceri, üretkenlik veya programlama keyfi açısından ölçülebilir bir fark var mı, yoksa hepsi sadece fanboyizm mi?


22
Paul Graham'ın vi kullandığını da belirtmek gerekir; Yegge bu düzeltmeyi bağlantılı makalede bir dipnotta kendisi sunuyor.
Eli Courtwright

16
Kullandığım tüm editörler arasında Emacs, öğreticiyi her başladığında nasıl çalıştıracağınızı söyleyen tek kişidir (öğreticiyi nasıl çalıştıracağınızı söylemeyi bırakacak kadar öğrenene kadar).
Michael Paulukonis

16
EMACS ne anlama geliyor? Meta Kaçış Alt Control Shift! ;-)
Peter K.

24
Terminoloji nit pick: Emacs bir "programcı editörü" dir, sadece bir "metin editörü" değildir. GUI IDE'leri ayrıca metni düzenleme yeteneğine sahiptir, ancak bunlar yalnızca metin düzenleyicileri de değildir. Not Defteri'ni Emacs ile karşılaştırmak, bir şeyi sallamakla bir şeyi Ölüm Yıldızı'na o silahla vurmakla karşılaştırmak gibidir.
Greg Mattes

8
Belli ki bazı insanlar korelasyon ile nedensellik
Chubas

Yanıtlar:


119

Öncelikle şunu söyleyeyim, Emacs kültüne gerçekten inandığımı söyleyen biriyim.

Bununla birlikte, blog yazarı delidir. Yararlı bulduğunuz şeyi yazarsınız. Emacs'ın bana yardımcı olduğunu görüyorum, çünkü üniversite yıllarımı, ihtiyaçlarıma göre nasıl değiştireceğimi öğrenmenin başlangıç ​​maliyetini önceden ödeyerek ve kendi ihtiyaçlarına göre kendimi değiştirerek geçirdim.

Ancak diğer insanlar işleri farklı şekilde yaparlar ve "Sorun değil" dedikleri gibi.


73
Kabul. Emacs'ı seviyorum, ancak Emacs'in sizi daha iyi bir programcı yapacağını düşünmek, Tiger Woods golf sopalarını kullanmanın sizi daha iyi bir golfçü yapacağını veya Eddie Van Halen'in gitarını kullanmanın sizi daha iyi bir müzisyen yapacağını düşünmek gibidir.
Kristopher Johnson

31
Kristofer'in yukarıdaki yorumuna kesinlikle katılmıyorum. Harika bir sporcunun / sanatçının aletlerini kullanmak kesinlikle sizi onlar kadar harika yapmayacaktır. Ancak, DOĞRU iş için DOĞRU programlama araçlarını kullanmak kesinlikle işe yarar! Programlamayı spor ve sanatla eşleştirdiğiniz için affedilebilirsiniz. :)
Susheel Javadi

6
@Bart: Demek istediğim, birden fazla "doğru araç" olması. Tiger Wood'un golf sopaları mükemmel araçlardır ve iş için mükemmeldir, ancak aynı sonuçları sağlayabilecek başka kulüpler de vardır. İyi bir programcının kullandığı araç onları tanımlamaz, yaratıcılıkları ve yetenekleri bunu yapar.
Seth Moore

9
Steves ifadesiyle ilgili tüm mesele, Büyük programcıların emacs kullanması, iyi yazılım geliştiricilerin bir IDE kullanarak daha üretken olmaları olduğunu düşünüyorum. Harika programcı her zaman program yapar, kod üretirken bile program yaparlar, görevleri otomatikleştirir, make, ant, bash, perl ve hudson'u severler. Yazılım geliştirme döngüsünün herhangi bir bölümündeki manuel görevlerin hatalara açık olduğunu bilirler. Büyük programcılar, kodunuzu başka biri (örn. IDE veya herhangi biri) oluşturursa, o zaman kodun bakımı söz konusu olduğunda (örn. IDE veya herhangi biri) her zaman başka birinin becerilerine bağlı olduğunuzu da
bilirler

4
Steve Yegge, elisp'de eksiksiz bir JavaScript ayrıştırıcısı yazan adamdır, bu nedenle
Emacs'ın

106

O (Steve Yegge) bunu, parçalar halinde, diğer gönderilerinde detaylandırdı. http://steve-yegge.blogspot.com/2008_04_01_archive.html muhtemelen en kapsamlı olanıdır, ancak bilgi, ana konuya teğet olduğu için oraya gömülüdür.

Sanırım özetlemek gerekirse: sadece iyi veya yetkin olan programcılar bir IDE'yi alıp gerçekten iyi tanıyacaklar ve belki de yeterince iyi bir şekilde yapacaklar, ancak kendilerini IDE'nin onlara sağladığı şeyle sınırlayacaklar. Başka bir deyişle, kendilerini IDE'ye adapte ederler. Büyük programcılar, diğer taraftan, onların adapte olacaktır ortamı uyacak şekilde kendilerini komut dosyaları veya kendi araçlarını yazarak veya kendi araçlarını uzanan gibi yollarla,. Ve bu son noktaya kadar, sadece Emacs var olan en genişletilebilir ortam değil, aynı zamanda var olan genişletmesi en kolay ortam ve en çok hasat edeceğiniz ortamdır. faydayı genişletmekten - uzantılarınız Emacs'e stok özellikleriymiş gibi entegre olur ve bu nedenle gelecekteki uzantılarınız önceki uzantılarınızın üzerine inşa edilebilir (olumlu geri bildirim döngüsü türü).


15
Aradaki fark, IDE'yi genişletmek için gereken enerjidir. Emacs ile tüm yapılandırma dosyaları elisp program dosyalarıdır. Yani aslında giriş engeli gülünç derecede düşük (sadece .emacs dosyanızı değiştirin)
shsmurfy

18
Angus ile aynı çizgide. İyi bir IDE'nin işi bitirmesi için sonsuza kadar tamir edilmesi gerekmemelidir. İyi bir IDE kişinin ihtiyaç duyduğu tüm özelliklere sahip olmalıdır. Elbette kısayolları ve düzeni yapılandırmak isteyebilirsiniz, ancak her şeyi işlemek için bir sürü komut dosyası yazmanıza gerek yoktur.
Kibbee

5
Angus: haklısın. İşinizi bitirmek yerine bir şeyler eklemek zorunda kalırsanız, noktayı kaçırdınız - Emacs ya da değil. Sol: Dış programlarla kaynağı genişletip göndermekten daha fazlası var. Aslında, bu hiç de o kadar güçlü bir uzatma mekanizması değildir.
Jonathan Arkell

15
Genişletme emacs ile ağ fasulyelerini genişletme, visual studio veya tutulma arasındaki fark hızdır. Tutulmaya uzantı eklemek, bütün bir uygulamayı yazmak gibidir. Karşılaştırıldığında, emacs için bir uzantı yazmak tek bir kod satırı olabilir.
Justin Tanner

4
@supercheetah - Visual Studio'da bulunan intellisense ile karşılaştırıldığında çok ilkel görünüyor, örneğin mevcut üyelerin yanında gösterilen simgeler kullanışlıdır! Kişisel olarak, güçlü bir yeniden düzenleme desteği olmadan Emacs'a pek ilgi duymuyorum.
si618

57

En iyi programcılar vi veya emacs kullanır, çünkü en deneyimli programcılar en iyilerdir ve 20 yıl önce, vi ve emacs dışında fazla seçenek yoktu.

Çok yavaş bir metin terminaline sahip bir makinede vi (yaklaşık 1987) ile başladıktan sonra, birkaç yıl sonra (daha hızlı bir makinede) (GNU) Emacs'a geçtim ve neredeyse yalnızca 10 yıl boyunca onu kullandım.

Emacs, ilk gerçek entegre geliştirme ortamıydı - tüm düzenleme / bağlantı / derleme döngüsü emacs'de kontrol edilebilir ve kullandığınız derleyici için kendinizinkini oluşturabilirsiniz.

Günümüzde, tutulma gibi IDE'ler daha da iyi entegre edilmiştir (dürüst olmak gerekirse: emacs grafiklerde berbattır), ancak Emacs hala "saf" metin düzenleme için en iyi ortamlardan biridir.


10
İlk paragrafta kendini gerçekleştiren kehanet için +1.
OregonGhost

12
"en deneyimli programcılar en iyisidir" - en azından dolaylı olarak, gerçeklerden çok uzak. Deneyimsiz programcıların daha iyi olduğunu söylemiyorum, ama aynı şeyi 20 yıldan fazladır yapıyor olması - bunu iyi yaptığı anlamına gelmez.
AviD

7
20 yıl önce pek çok farklı editör vardı. Çoğu, genellikle iyi bir sebeple hayatta kalamadı. 1989'da vi veya emacs kullanan bir adam, neden 1989'da MS-DOS tabanlı bir düzenleyici kullanan bir adamdan daha iyi ya da Kontrol Verileri ana bilgisayarında her ne halt kullanıyordum?
David Thornley

Heck, 10 yıl önce iyi bir Java IDE yoktu !
Susheel Javadi

20 yıl önce hatırladığım kadarıyla, vi ve emacs ezici bir çoğunlukla baskın editörlerdi - sırf o zamanlar çok sayıda editör olması (şimdi olduğu gibi) bunların hepsinin eşit derecede yaygın olarak kullanıldığı anlamına gelmez.
FinnNk

34

Net düşünme ve problem çözme becerilerinizi geliştirmek sizi daha iyi bir programcı yapacaktır. Bunu hiçbir program yapamaz.

Daha iyi bir çekiç kullanmak, nasıl ve neden olduğunu bilmediğim sürece daha güzel bir ev inşa etmeme yardımcı olmaz. ;)


Benim de söylemek istediklerime iyi bir benzetme.
Rob

21
Ancak kötü bir çekiç, aynı evi inşa etmeye çalışırken üretkenliğinizi mahveder ve muhtemelen farklı bir eve sahip olursunuz.
user51568

Bu adil! Ortalama bir programcı, pahalı çekiçle daha iyisini yapamaz.
Jas Panesar

5
Harika bir programcı, bir taş çekiç kullanarak harika bir ev inşa edebilir. (Yavaş - ama yine de yapabilir.: D)
Egon

Evet, ancak kodun sizden organik olarak akmasına izin veren bir düzenleyiciye sahip olmak (ki bence Emacs çoğu editörden daha iyidir) net düşüncenizi ve dolayısıyla problem çözme becerinizi geliştirebilir.
Skilldrick

21

Yegge'in Bill Joy ile tanışması gerekiyor. O sadece dünyadaki en büyük programcılardan biri değil, aynı zamanda büyük miktarda vi yazdı. Vi.

Kısa Utanç Verici İtiraf: 20 yıl boyunca her şey için vi (ve son yıllarda vim / gvim) kullandıktan sonra, son bir yıl içinde Eclipse'i java düzenleme için (ve e-posta için Thunderbird) kullanmaya başladım, ancak şu anki işimde benim makinenin hafızası o kadar az ki, hata ayıklayıcıya ihtiyacım olmadığında genellikle vi kullanıyorum.


7
Vi için +1 (aslında vim kullanın, ancak aynı fark). Emeğin yarısından daha azı için yapabileceklerinin% 98'i.
rmeador

25
5 yıl vim kullandım. Emacs'ta geçen 20 dakikadan sonra asla geri dönmeyeceğime yemin ettim. Vim ters hissediyor.
MattBelanger

5
Yegge'nin kendisi de bundan bahsediyor: [Dikkate değer bir istisna, VIM'dir, bu da tüm açıklamalar için çok güçlüdür, ancak bu konuda hiçbir deneyimim yoktur. Zaten emacs yerine vi için bir tercih geliştirdiyseniz, VIM ile uzmanlık peşinde koşarak daha büyük bir mutluluk yaşayabilirsiniz. Psh] Kaynak: steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html
user674062

1
Uh .. Bill Joy artık vi kullanmıyor.
Plumenator

13

IDE'lere bağımlı olanlarla olmayanlar arasında beceri, üretkenlik veya programlama keyfi açısından ölçülebilir bir fark var mı, yoksa hepsi sadece fanboyizm mi?

Bunu sadece Visual Studio ile Emacs karşılaştıralım --- soru çok geniş ve sanırım çoğu insan (en azından burada StackOverflow'da) bu ikisine aşina. [Öyleyim ve emacs kullanıyorum ve tercih ediyorum]

Sonra, sorunun üç bileşenini parçalara ayıralım.

Programlama zevki, öncelikle kendi içinde programlamayı sevmek ve ikincil olarak bunu yaptığınızda can sıkıcı faktörlerin ortaya çıkmamasıdır. Mücadele ettiğiniz araçları kullanmak, zevkten eksiltecektir. Bu yüzden, tahmin ediyorum, beğendiğiniz ve aşina olduğunuz araçlar kullanılarak zevk maksimuma çıkarılır.

Elbette, yeni bir araca alıştığınızda, bu aracı daha çok sevdiğinizi fark edebilirsiniz ve bu nedenle, yeni favori aracınızla yaparsanız programlamayı daha çok seveceksiniz . Genel olarak insanların, her ikisini de iyi tanıdıklarında VS'yi emacs yerine (veya tam tersi) sevecekleri bana açık değil.

Sonra, programlama becerisi. Beceri ve VS / emacs seçimi arasında herhangi bir bağlantı varsa, bence seçim yapma becerisi değil, beceriye neden olur. Deneyimlerime göre {VS, emacs} hiçbiri beni daha iyi yazmak hakkında bir şeyler öğrenmemi sağlamıyor kod .

İyi bir araç, aynı kodu (ve dolayısıyla aynı kod kalitesini ) daha kısa sürede yazmamı sağlayabilir ; Bunu varsayarsak productivity = quality of code `times` code per time, daha kısa sürede iyi kod yazmanıza izin veren herhangi bir düzenleyicinin üretkenliği artırması mantıklıdır.

VS'ye fazla aşina olmayabilirim, ancak burada emacs'in VS'de bulamadığım bazı güçlü yönleri olduğunu düşünüyorum. Kulağa saçma gelebilir, ancak imleç hareketi kadar basit bir şeyCtrl-[fbnp] gerçek bir nimettir - bu, ellerinizi ok tuşlarına götürmenize gerek olmadığı anlamına gelir. Başka bir şey: gözden kaçırmaktan nefret edeceğim kadar sık ​​kullandığım yeni satırları içeren bir arama veya değiştirme yapabilirsiniz.

Sevdiğim bir diğer şey de editörüme bir kabuk yerleştirme yeteneği. Deneyimlerime göre, Windows olmayan platformlarda çok daha değerli (ve ilk "programlama" deneyimim IIRC, DOS .bat dosyaları yazıyordu, bu yüzden ben sadece ateşli bir hayran değilim), ancak bu platformlarda büyük bir kazanç . Emacs'i "her şey" ile "entegre" yapar (bul / bul ile dosya araması, grep ile metin araması, svn / git / hg / ... ile sürüm kontrolü, siz adlandırın).

Nihai karar - emacs öğrenmeli misiniz, öğrenmemeli misiniz? Ve hepsi fanboyizm mi? Eğer zamanınız varsa, aynı şeyi yapmanın her zaman yeni yollarını öğrenmeye değer olduğunu söyleyebilirim, çünkü yeni yol sizin için daha iyi çalışabilir. Ve sizleri, tamamen yeni olduğunuzda göründüğü gibi reddetmemenizi tavsiye ederim. Bu anlamda, Dvorak klavye düzenine geçmek gibi: İlk başta daha yavaşsınız, ancak hıza bir kez başladığınızda, muhtemelen en az qwerty'de olduğu kadar hızlı ve daha rahat olacaksınız. Yeni (programlama) dilleri öğrenmek için de aynı yaklaşımı tavsiye ederim: çünkü kelime dağarcığını bilmiyorsunuz (standart kütüphane), bir şeyler söylemek zor, ancak ödül ufukta sizi bekliyor.


1
"Bunu Visual Studio ile Emacs karşılaştırması olarak daraltalım --- soru çok geniş ve sanırım çoğu insan (en azından burada StackOverflow'da) bu ikisine aşina." -- Gerçekten mi? Benim gibi VisualStudio kullanmaya zorlanmayacak, çok daha az gönüllü olarak kullanacak daha kuduz * nix hayranları olduğunu düşündüm. Hrm.
Xiong Chiamiov

"Ctrl- [fbnp] ile imleç hareketi gerçek bir nimettir". Uzun bir aradan sonra geri dönen Emacs'ı sevmeme rağmen, imleç hareketini bu şekilde Emacs'ı tekrar kullanmanın en az kullanışlı ve rahat yönü buluyorum. Aksine, özel imleç tuşlarına bakmadan ve hatta düşünmeden ulaşıp bulabiliyorum. Belki piyanist olmak işe yarar? :) Ama kim bilir, zamanla belki C-ezme mektubu daha doğal hissedecek.
Greg Hendershott

2
ps Mermiler ve platformlar konusunda tamamen katılıyorum. Windows, OS X ve Linux arasında geçiş yapmak istiyorsanız, ilk önce Cygwin'i ve üçünde de Emacs'ı istiyorsunuz. .Emacs.d dosyanızı GitHub'a atın ve altın olursunuz.
Greg Hendershott

ayrıca,
normal ifadeleri

10

"Dünyanın en büyük mühendislerinin tümü Emacs kullanıyor" şeklinde başlayan alıntı metniyle, ben de bunu gerçek anlamda kabul etmezdim. Dünyanın en büyük mühendislerini tanıyor mu? Sizin veya benim sahip olduğumuz dünyanın en iyi mühendislerinin aynı listesi mi?

Bir kez öğrendikten sonra, EMACS veya vi gibi güçlü bir editör sizi daha verimli hale getirecek veya en azından en sevdiğiniz IDE'niz olmadan yakalanırsanız daha verimli hale getirecektir.

Katil olan "bir zamanlar öğrenilen" kısım. Bu araçları verimli bir şekilde kullanmak çok çalışma ve pratik gerektirir ve başlangıçta çok zordur.


1
Bence, birisinin "harika" bir mühendis olmasına gerçekten yardımcı olan özelliklerden biri, tatmini ertelemek ve verimliliği artırmak için daha büyük bir sabit başlangıç ​​maliyeti üstlenebilmektir.
Tikhon Jelvis

9

Ben şahsen bir Emacs hayranıyım ama Emacs sadece bir araç. Sizi daha iyi bir programcı yapmaz, süper süslü bir kalem sizi daha iyi bir yazar yapacaktır.

"Harika programcıların" ortamlarını kendilerine adapte ettikleri şeklindeki açıklamanın bazı faydaları olabilir, ancak birçok araç bunu yapabilir (örn. Vim ve SlickEdit), bu nedenle Emacs hakkında bu konuda özel bir şey yoktur.

Bence büyük olasılıkla doğru olan, "harika programcıların" programlama konusunda tutkulu olmaları ve bu konuda tutkulu olan kişilerin bu tutkuyu harekete geçirmeye yardımcı olacak araçlar bulma eğiliminde olmalarıdır. Emacs (ve vim ve SlickEdit ve diğerleri) böyle bir araçtır.


Süper süslü kalemler bana Hemingway'i hissettiriyor.
Cheeso

2
"Çevreyi uyarlama" açısından Emacs hakkında özel olan şey, bunu Emacs'te Vim veya SlickEdit'ten çok daha kolay yapabilmesidir. (veya tanıdığım başka bir editör)
vedang

8

Bir fark olduğuna inanmıyorum, bu daha çok tercih meselesi.

Ancak fark ettiğim şey, ne kadar uzun kodlama yaparsanız veya daha düşük seviye kodladıkça, emacs veya vi kullanma şansınız o kadar yüksektir.


"Daha uzun kodlamanız", iyi IDE'ler olmadan önce kodlamaya başladığınız anlamına gelir.
Paul Tomblin

3
İyi bir IDE diye bir şey var mı evlat?
David Thornley

8

IDE'ler son on yılda çok daha iyi hale gelseler de, programlamayı, bazı çirkin ayrıntılardan uzakta, biraz güvenli bir "balon" içinde barındırıyorlar. Olma eğilimi, soyutlamadaki bu artışın daha fazla programcının daha az bilgi ile daha fazlasını yapmasına izin vermesidir. Bu, elbette, tüm programcılar için geçerli değildir, ancak daha kolay araçlar programlamayı daha geniş bir kitleye getirir.

Daha düşük seviyeli araçlar hakkında daha fazla bilgi, genellikle kodda daha fazla kararlılık anlamına gelir, çünkü kazara "tahılın dışına çıkma" olasılığı daha azdır. EMACS'ı tek öncü gösterge olarak listelemek haksızlıktır, çünkü bir dizi dil ve araçtan gelir ve gerçekten daha çok özel teknolojiyle değil, anlama derinliğiyle ilgilidir.

Geçmişte, ya UNIX kutularında VI ya da EMACS öğrendiniz ya da PC'lerde uzmanlaştınız (Tamam, VMS, CMS, AS400 vb. De vardı ama bunlar daha eski teknolojilerdi). Her iki akış da çok hevesli insanları cezbetti, ancak UNIX çalışanları sofistike bir çözüm istemeye meyilliyken, PC çalışanları bunun hızlı bir şekilde yapılmasını istediler. Kültürler çok farklıydı.


7

IMHO IDE'leri belirli bir platform veya dil veya işletim sistemi etrafında optimize edilme eğilimindedir: Eclipse JDT Java için mükemmeldir, Visual Studio C ++ /. NET merkezlidir, vb. Yalnızca üzerinde çalışıyorsanız üretkenliğe (yine IMHO) çok yardımcı olurlar bu platform, ancak platformları değiştirirseniz, temelde yeni bir IDE (veya en azından yeni bir eklenti, görünüm, perspektif seti ve Eclipse için başka ne bilmiyorum) öğrenmeniz gerekir.

Emacs veya Textmate veya vim (kişisel tercihim) veya herhangi bir genel editörü bilmenin avantajı, o düzenleyicide edindiğiniz becerilerin, hangi platform için yazdığınızdan bağımsız olarak geçerli olmasıdır. Metin düzenlemek için optimize edilmişlerdir ve bunlara hakim olduğunuzda, metni herhangi bir dilde çok verimli bir şekilde düzenleyebilirsiniz.

Ayrıca Yegge'in, harika programcıların araçlarını çalışma stillerinin tersi yerine çalışma stillerine uyarladıkları iddiası da var. Bunun jenerik editörler için bir kazanç olduğunu düşünüyorum, çünkü dört farklı IDE'yi istediğiniz gibi davranacak şekilde nasıl uyarlayacağınıza karar vermek yerine bir editörü özelleştiriyorsunuz .


Eğer yazma zorunda sorunu geliyor üzerinde a merkezli yolları - onlar '/' ile bir Bourne kabuğu varsayarak çünkü örneğin Windows için * nix hareket ve komut kırmak: Üzerinde been farklı bir platforma PostScript tabanlı baskı ile FHS benzeri yapı ...
SamB

Epeydir bir süredir emacs ile çalışıyorum ve sadece imleç hareketi, başka herhangi bir şeyde yazmaya kızmam için yeterli - KMail'de bir e-posta olsa bile.
Arne Babenhauserheide

@ArneBabenhauserheide bu, Mac OS X'i sevmemin bir nedeni, neredeyse tüm metin alanları desteği C-[npfbaed]. (Ama ne yazık ki hayır M-)
porglezomp

6

En iyi programcıların, ortamlarını özelleştirmek için zaman harcayanlar olma eğiliminde olduklarını, bu da yapacakları görevleri daha hızlı / daha kolay gerçekleştirmelerini sağladığını iddia ediyorum. Emacs, ortamınızı özelleştirme konusunda en güçlü editörlerden biridir. Dik bir öğrenme eğrisine sahiptir, ancak bunu bir kez aştığınızda, sizin için yapabileceklerinizin neredeyse hiçbir sınırı yoktur.

Bir zamanlar biri en iyi programcıların tembel olanlar olduğunu söylemişti; Bir şeyi bir kereden fazla yapmaya ihtiyaç duyduklarında, daha az çaba gerektirecek şekilde otomatikleştirmenin bir yolunu bulanlar. Emacs çok çok tembel olmanızı sağlar;)


4

IDE'leri en başından beri (tartışmalı olarak; QBASIC ile başladığımdan beri) ve uzun yıllar kullandım. Artık tüm geliştirme çalışmalarım için neredeyse tamamen VIM'e (çeşitli tatlarda) geçtim ve pişman değilim. Verimliliğim kesinlikle arttı.

Elbette, hiçbir şey Visual Studio'daki Windows Forms tasarımcısının yerini alamaz. Ancak VIM (ve Emacs, eminim) ile karşılaştırıldığında, Visual Studio'nun içindeki metin editörü gerçekten berbat. Konsola ve GNU geliştirici araçlarının ham gücünü bir kez (hangi Yani make, GCC, binutilsve gdb, ve sonra bazı) Eğer onlar tam tersi, ve aslında tüm teklif bu araçlar ilkel görünebilir fark ancak edeceğiz bir IDE'nin sağladığı araçlar (form tasarımcısı dışında).

Bu araçları ilk kullanmaya başladığınızda önünüzde çok dik bir tırmanış var ve teşvik küçük olabilir. Bu araçları kullanmaya zorlanacak kadar şanslıydım (?), Bu yüzden vazgeçebileceğim bir seçeneğim yoktu.


3

Kişisel olarak, sizi daha üretken kılan her şeyi kullanmanız gerektiğini düşünüyorum. Oturup Emacs'ı öğrenmek için bir projeye yatırım yapacak vaktiniz yoksa, o zaman muhtemelen o noktada zamanınızı en iyi şekilde kullanmak değildir.

Bununla birlikte, yeterince vaktiniz olduğunda diğer IDE'leri tanımanın iyi bir fikir olduğunu düşünüyorum.Günlük işlerimde Visual Studio'yu kullanıyorum, ancak evde küçük projeler için Eclipse kullanıyorum ve Emacs da. Emacs kullanmayı düşündüğüm belirli bir noktada, çabam Emacs ile güreşimi yavaşlatmaktansa fiili işlerin yapılması için daha iyi hizmet etti.

En iyi programcıların tümünün Emacs kullandığını düşünmenin bir dereceye kadar saçma olduğunu düşünüyorum. Emacs'ı kullanmayan, popüler olmayan (veya belki vokal olarak) pek çok harika programcı var.


3

Emacs'i yaklaşık bir buçuk yıl önce kullanmaya başladım çünkü birkaç isteğin birleşimiydi - normal ifadelerle çalışmak istedim (onları destekleyen bir düzenleyicide), lisp öğrenmek istedim, daha iyi bir editör istedim.

Kodumu normal ifadelerle düzenlemek, kodda kalıp bulma konusunda bana çok şey öğretti. Tuş vuruşlarına alışmak biraz zaman aldı, ancak fare olmadan çok daha hızlı uçuyorum.

Emacs bana notlarım ve kodlamayla aynı uygulamada çalışma olanağı sağladı - minimum bağlam değiştirme, minimum beyin değişimi anlamına geliyor ve elimdeki göreve odaklanmaya devam edebiliyorum.


3

Hayır. İyi kod sizi daha iyi bir programcı yapar.

Bununla birlikte, iyi metin işleme, verimliliğin anahtarıdır. Ya vim ya da emacs metinle çalışma şeklinizi değiştirecek - her ikisi de etkili olduğu kanıtlanmış ancak stil açısından neredeyse birbiriyle çelişiyor. Ayrıca, bu tartışma oldukça eskidir (metin -> derleyicinin anahtar olduğu 80'ler ve 90'lara geri dönülmüştür), bu nedenle olabileceğiniz en iyi programcı olmanıza yardımcı olabilecek birçok başka metin düzenleyicisi ve / veya IDE vardır.


3

Hayır. Emacs kullanmanın sizi daha iyi bir programcı yaptığına inanıyorsanız, neden ve sonuç arasında kafa karıştırıyorsunuz demektir.

Yine de günlük kullanıyorum. Emacs + maven ile java geliştirme için Eclipse'den daha üretken olduğumu görüyorum (yine de ara sıra yeniden düzenleme veya hata ayıklama oturumu yapmak için Eclipse'i ara sıra çalıştırıyorum).

Bunlar benim nedenlerim:

  • Emacs'deki gerçek metin düzenleme deneyimi diğer her şeyi geride bırakıyor. Sadece klavyenizi kullanarak bu kadar çok şeyi bu kadar hızlı başarabilmeniz inanılmaz. Eclipse daha fare odaklıdır ve yazarken çok sayıda rahatsız edici engelle karşılaşırsınız.
  • Elisp kullanarak emac'leri özelleştirebilmek inanılmaz derecede güçlü. O kadar ileri gideceğim ki, ilkel elisp öğrenmek ve ortamınızı özelleştirmek için zaman ayırmıyorsanız, sadece zamanınızı boşa harcıyorsunuz demektir.
  • Bir metin düzenleyicide yapmak isteyebileceğiniz neredeyse her şey için uzantılar vardır.

1
Korelasyon için +1! = Nedensellik
Xiong Chiamiov

Hangi java modunu kullanıyorsunuz?
avendael

1
Maven yapılarını çalıştırmak için bazı özelleştirmeler ve hacklerle birlikte Emacs23 ile birlikte gelen java stok modunu kullanıyorum. Ayrıca emacs ve tutulma arasında bir köprü görevi gören emacs-eclim'i kullanmaya başladım. Güzel ve kullanışlı, ancak şu anda oldukça sert.
fred-o

3

Benim için bir IDE yerine Emacs'i seçmemin ana nedeni, her şeyi sadece klavyemden yapmama izin vermesidir. Bu, normalde fare kullanacağım zamanlar için biraz zaman kazandırması açısından güzel. Ayrıca kendimi çok hareketli bulduğum için, yavaş dokunmatik yüzeyim nedeniyle programlama "oluk" umu kesintiye uğratma eğilimim var. Ek olarak, kişiselleştirmesi benim için bazı IDE'lerin üzerinde parlamasını sağlıyor. Ancak kendinizi bir IDE ile yeterince hızlı programlama bulursanız, Emacs'in öğrenme eğrisinin zahmete değmediğini söyleyebilirim.


2

IDE'lere bağımlı olanlarla olmayanlar arasında beceri, üretkenlik veya programlama keyfi açısından ölçülebilir bir fark var mı, yoksa hepsi sadece fanboyizm mi?

Buna gerçekten bir cevap alabileceğinizi sanmıyorum. Beceri, üretkenlik ve programlama zevkini ölçmenin pek çok farklı yolu vardır ve bunların hepsi muhtemelen çok özneldir ve / veya buna neden olan veya olmayan TEK bir şeye bölünemez.

Hala ilginç bir soru tho.

Kişisel inancım - programcıya bağlı :)

Federal ajan


Fanboys ahbap. IDE, Editör değildir. IDE'nin en iyi düzenleyici olması gerekmez.
Perpetualcoder

2

Bunun sizi daha iyi bir programcı yapacağını sanmıyorum, ancak bu seviyeye sahip olduğunuzda, büyük olasılıkla emacs (veya vi) kullanacaksınız.

: - /

Bu ikisi hakkında iyi olan şey (daha önce hiç emac kullanmadım, ancak hala en sıradan görev için vi kullanıyorum) düşünce treninizi uğratmaması , ellerinizi dışarı çıkarmak zorunda değilsiniz. klavye fareyi kapmak ve doğru seçenek için dosya menüsünde avlanmak için. Sadece yazmaya devam et. Zihninizin içinde şöyle bir şey söylüyorsunuz: "Bunun için bu kelimenin tüm geçtiği yerleri değiştirin", enter tuşuna basın ve işinize devam edin.

Ayrıca tek araçlarının emacs kullanmak olduğunu sanmıyorum.

Seni daha iyi programcı yapar mıydı? Muhtemelen değil. Ancak bu düzeyde bir uzmanlığa sahip olduğunuzda, muhtemelen bu araçları kullanarak ne kadar hızlı kod yazabildiğinizi seveceksiniz.


Menüde avlanmak IDE'yi bilmeyenler içindir. En son ne zaman bir menü seçeneği "aramak" zorunda kaldım bilmiyorum.
tster

Yani "Dosya-> Kaydet" seçeneğini kullanmanın Ctrl-S'den daha iyi olduğunu mu düşünüyorsunuz? Ben öyle düşünmüyorum. Fareyi tutup, Menü dosyasına tıklayın ve ardından fareyi aşağıya kaydırarak Giriş kaydet seçeneğine gidin, bunu klavyenin ellerini tutmadan yapabileceğiniz zaman bana çok şey geliyor.
OscarRyz

açıkça katılıyorum. Her kullandığım tüm IDE'ler, tıpkı emac'ler gibi kapsamlı ve özelleştirilebilir kısayol tuşlarına ve kombinasyonlara sahiptir.
tster

2

Hayır.

Disiplin, eleştirel düşünme ve kendini geliştirme arzusu sizi daha iyi bir programcı yapacaktır. Araç setiniz, üretkenliğinizde önemli bir faktör olsa da, dahi yaratmayacaktır.

Emac veya vi'den hoşlanmıyorsanız, kullanmayın. Yapmama konusunda bilinçli bir seçim yaparak, geliştirme ortamınızı kendi ihtiyaçlarınıza ve çalışma uygulamalarınıza uyacak şekilde şekillendiriyorsunuz. Her durumda, sevdiğiniz şeyleri kullanma hakkına sahipsiniz - ve diske bit yazmak için kullandığınız araç için sizi azarlayacak kadar aptal olan herkesi görmezden gelin - önemli olan bitlerdir.

Not: "Araç seti", kelimenin tam anlamıyla, araçların "markası" anlamına gelir - belirli düzenleyiciler, derleyiciler, vb. Kavramsal araç setleri, örneğin sürüm kontrolünün kullanımı, birim testi - genel olarak tümü - kendi kendine iyileştirme süreci.


2

Emacs'in harika özelliklerinden biri, attığınız her boyutta hemen hemen her dosya türünü işleyebilmesidir. Kuşkusuz, çılgın, devasa bir şifrelenmiş dosya açıyorsanız, mutlaka yararlı olmayacak ama açılacaktır. Çoğu editör (ve IDE), onlara çok büyük ve / veya beklenen formatlarından biri olmayan bir dosya verirseniz, size büyük bir gönül yarası verecektir.

Örnek olarak Not Defteri'nde 1 Giglik bir dosya açmayı deneyin.

Emacs'i 1980 civarında bir yerde kullanmaya başladım ve her zaman alet çantamda bir araç oldu. Bu tek değil bir araç ama ben döndüm ve dedim yapılması yararlı işler almak mümkün olacak biliyorum ki her zaman bir şeyler var.

Zorunlu enflamatuar yorum : Öte yandan, vi hakkında söyleyecek iyi bir şeyim yok. Vi'nin beni mutlu bir şekilde öldüreceğini ve organlarımı satacağını hep hissettim ...

Gerçek hayatta, neredeyse tüm geliştirme biçimleri için Netbeans kullanıyorum ve arada sırada hızlı bir düzenleme yapmak için emacs kullanıyorum. Şu anda çılgınca bir şey yapmak söz konusu olduğunda (benim için) emacs kadar uygun neredeyse hiçbir şey yok.

Derlenmiş ikili çalıştırılabilir dosyalarda statik dizeleri düzenlemek zorunda olan başka kimse var mı? Bu tür şeyler için emacs'den daha iyi bir araç var mı? Kesinlikle benim için çalışıyor.


1
Oysa Visual Studio bu fırsatı tamamen kaçırır ve bunun yerine herhangi bir yedek nakit olup olmadığını görmek için cüzdanınızı karıştırmakla yetinir.
Rob

Üzgünüm, bilmiyorum. Netbeans'i neredeyse her zaman kullanıyorum ve ihtiyacım olduğu zaman ortaya çıkıyor.
Bob Cross

2

Bunu sormadığınızı biliyorum, ama emacs öğrenmenin benim için (beklenmedik bir şekilde) geliştirdiği bir şey, bir komut satırını manipüle etmekti. Emacs tuş atamalarını öğrenmeden önce, imleci hareket ettiriyor ve imleç tuşlarını kullanarak geçmişte geziniyordum çünkü daha iyisini bilmiyordum. Ben kullanabileceğim anlayınca bir ampul anın bir şeydi backward-word, move-beginning-of-lineve backward-kill-word(Ben her zaman bağlı olduğunuz C-w, Stevey anlaşılacağı gibi ) içinde bash( M-tçok sık yararlıdır ve daha önce hiç görmediğiniz edenlere en etkileyici).

Kök kabuğun "posix kabuğu" olduğu ve varsayılan olarak emacs bağlamalarının olmadığı Solaris üzerinde epeyce çalışıyorum. Parmaklarımın artık exec bashher oturum açışımda kendi istekleriyle yazdıklarını görüyorum, artık tanıdık düzenleme komutlarını parmaklarımın altında çok daha hızlı hissediyorum.

Yine de itiraf etmeliyim ki, Knuth'un kitaplarını hala zor buluyorum (buna değse de) - bu yüzden programlamamı sihirli bir şekilde geliştirdiğini düşünmüyorum.


Dostum, bu hilelerden daha fazlasını öğrenmem gerekiyor ... Neyse, oturum açma kabuğunuzu değiştiremiyor musunuz, yoksa "kök kabuk" derken gerçekten "kök kullanıcı için kabuk" mu demek istediniz? Öyleyse, neden root olarak giriş yapıyorsunuz ???
SamB

2

Emacs beni metin işleme ve dosya sistemi navigasyonunda daha verimli hale getirdi . Programlama sırasında her ikisi de dahil olduğu için, beni daha verimli (dolayısıyla daha iyi) bir programcı yaptı.


2

Emacs'in dolaylı da olsa sizi daha iyi bir programcı yapabileceğini düşünüyorum. Sanırım Emacs beni daha iyi bir programcı yapacağı söylenen diğer işlevsel dillerle ( Clojure ) ilgilenmemi sağlayan işlevsel bir dilde ( Elisp ) yazmamı sağladı . Bu, sanırım zaman gösterecek dedi.


Bu gerçekten eski bir Lisp stili (sadece dinamik ve sözcüksel kapsam içermeyen), ama kesinlikle öğreteceği çok şey var. Bu ve aslında doğru çalıştığı günlerde oldukça güzel bir metin editörü olabilir!
SamB

1

Kullanabilme bazı özelleştirilebilir düzenleyici size şık şeyler yapmanızı sağlar, ancak özellikle emacs mutlaka Olası Çok İyi Bir değil. Ben de bir SlickEdit kullanıcısıyım, onunla emacs'ın ünlü olduğu tüm garip yarı otomatik şeyleri yapıyorum. İnsanların vi ve çeşitli Windows tabanlı düzenleyicilerle benzer şeyler yaptığını gördüm.

Yani, evet, soket iyi ayarlanmış, ancak Craftsman'ın One True Socket Setini yaptığını iddia etmek biraz aptalca.


Bir kenara olarak, braindead pazarlaması için olmasaydı SlickEdit'i denemeye meyilli olabilirdim: "SlickEdit'i kullanmamak için 10 neden - # 1: kötü bir programcı olmayı seviyorsunuz. # 2: yapmak için daha fazla harcamak istiyorsunuz daha az. # 3: sen doğuştan bir gerzeksin. vs vs "
Juliet

Pazarlamadan önce Slick'e girdim; sadece o zamanlar OS / 2 3.0 altında çalışan tek gerçek düzenleyiciydi. Muhtemelen diğer tüm erkeklerin emacs kullanmalarıyla aynı sebepten ...
mjfgates

1

Emacs tuş bağlamalarına ve onun yerleşik işlevlerine hakim olmak, metni Eclipse veya Visual Studio gibi IDE'lerden daha hızlı değiştirmenize olanak tanır.

Sözüme güvenmeyin, Emacs kullanan profesyonellerin bu videolarına bakın .

Emacs'ta iyi bir seviyeye ulaştığınızda, herhangi bir dili etkin bir şekilde düzenleyebilirsiniz: Java Script, Java, Ruby, Python, HTML, C, C ++, vb.

Emacs'a başlamak popo ağrısıdır, kutudan çıkma deneyimi kötü olmaktan daha kötüdür. Emacs varsayılan yapılandırması, yeni Emacs'ı Emacs'in daha güçlü özelliklerine (hippie-expand, etags, yasnippets, vb.) Maruz bırakmaz. Emacs Starter Kit nokta dosyalarıyla başlamayı öneririm .

Steve Yegge'in dünyanın en iyi programcılarının Emacs'ı kullandığını iddia etmesinin bir başka nedeni de elisp. Elisp, deneyimli programcıya Emacs'i kolayca genişletme gücü sağlar . Eclipse veya Visual Studio'da bir uzantı yazmak , elisp'te hızlı bir işlev veya hatta yeni bir küçük mod yazmaktan önemli ölçüde daha zordur .


soru, neden onu kullanmaya başlayalım? Kişi mutlu, rahat ve üretkense, öğrenmek için neden zaman ve çaba harcasın ki? Güçlü de olsa eski bir editör öğrenmektense yeni bir programlama dili öğrenmeyi veya yeni teknolojiyi araştırmayı tercih ederim. Günde sadece 24 saat vardır, zamanı akıllıca kullanın.
sarsnake

not etmek istediğim başka bir şey de, kullandığınız teknolojiye de bağlı. Emacs'ın Zekası var mı? Üniversitede UNIX makinelerinde kullandım ve o zamandan beri değiştiğine eminim. Ancak .NET için Intellisence bir zorunluluktur. Herkesin tüm ad alanlarında tüm sınıflardaki TÜM işlev adlarını hatırlamasının YOKTUR. Ve bir işlev adına bakmam gerektiği her seferinde MSDN'ye girmeyeceğime eminim. Emacs Intellisence sunarsa bunu düşünürdüm.
sarsnake

1

VI ve Emacs gibi bu metin tabanlı editörleri kullanmanın çok önemsenmesi veya "harika bir programcı" olmaları gerektiğine dair büyük bir yanlış anlama olduğuna inanıyorum. Her zaman IDE'lerin eskiden olduğundan daha güçlü olduğunu hissettim ve bu gerçekten bir tercih ve tarzdan kaynaklanıyor.


0

Üniversitede emacs kullandım. bu yaklaşık 16 yıl önceydi. Geriye bakmadım. Yine de emacs konusunda rahat olmayı diliyor olsam da, gerçek şu ki, MS IDE ile oldukça üretkenim.

gönderdiğiniz metin sadece bir trol. Evet. Bunun için dini bir savaş başlatmaktan başka bir neden yok.


0

Emacs ile başladım, ancak basitliği nedeniyle benim için daha zarif olan vi'ye geçtim. Ayrıca, tek kullanıcı modunda takılırsanız, ed komutları vi komutlarının bir alt kümesidir. Emacs bunu halledebilir mi bilmiyorum.

Bu bakımdan vi'nin sizi daha iyi bir programcı yaptığını düşünüyorum ..


Emacs YAPAR , ben ... çeşit şaka olduğunu şüphe rağmen bir Mx vi-modu var
Brian Postow

Vi'nin temellerini bilmek, sistem yönetimi yapmak için çok önemlidir. Ancak bu programlama değil.
Xiong Chiamiov
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.