Czy Emacs uczyni mnie lepszym programistą? [Zamknięte]


129

Steve Yegge napisał komentarz na swoim blogu :

Wszyscy najwięksi inżynierowie na świecie używają Emacsa. Typy zmieniające świat. Nie ta wielka dziewczyna w kostce obok ciebie. Nie Fred, ten niesamowity facet z korytarza. Mówię o największych programistach naszego zawodu, którzy zmienili oblicze branży. James Goslings, Donald Knuths, Paul Grahams, Jamie Zawinskis, Eric Bensons. Prawdziwi inżynierowie używają Emacsa. Musisz być bardzo sprytny, aby dobrze go używać, a to sprawia, że ​​jesteś niesamowicie potężny, jeśli potrafisz go opanować. Jeśli mi nie wierzysz, spójrz przez ramię Paula Nordstroma, kiedy on pracuje. To prawdziwa szansa dla kogoś, kto przez całą karierę korzystał z IDE typu Visual Blub .NET.

Emacs to 100-letni redaktor.

Ostatni raz użyłem edytora tekstu do pisania kodu, kiedy jeszcze 1000 lat temu pisałem HTML w Notatniku. Od tamtej pory jestem w mniejszym lub większym stopniu zależny od IDE, przez całą swoją karierę korzystałem z Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio i Eclipse.

Na co warto, ja nie próbowałem Emacs, a moje doświadczenie było frustrujące, ponieważ jeden z jego całkowitym brakiem out-of-the-box wykrywalne możliwości. (Najwyraźniej istnieje polecenie Emacsa do odkrywania innych poleceń Emacsa, których nie mogłem znaleźć przy okazji - to tak, jakbyś żył własnym okrutnym żartem w stylu zen.) Próbowałem upodobnić się do programu przez dobry miesiąc, ale w końcu zdecydowałem, że wolę mieć zamiast tego projektantów graficznych interfejsów użytkownika typu „przeciągnij i upuść”, technologię IntelliSense i debugowanie interaktywne.

Trudno oddzielić fakt od fanboyizmu, więc nie jestem jeszcze skłonny traktować komentarzy Yegge za dobrą monetę.

Czy istnieje wymierna różnica w umiejętnościach, produktywności lub przyjemności z programowania między ludźmi, którzy polegają na IDE, a tymi, którzy tego nie robią, czy też jest to tylko fanboyizm?


22
Warto również zauważyć, że Paul Graham używa vi; Yegge sam oferuje tę korektę w przypisie w powiązanym artykule.
Eli Courtwright

16
Ze wszystkich edytorów, z których korzystałem, Emacs jest jedynym, który mówi ci, jak uruchomić samouczek za każdym razem, gdy się uruchamia (dopóki nie nauczysz się wystarczająco dużo, aby powiedzieć, że przestanie ci mówić, jak uruchomić samouczek).
Michael Paulukonis

16
Co oznacza EMACS? Escape Meta Alt Control Shift! ;-)
Peter K.

24
Wybór terminologii: Emacs jest „edytorem programistów”, a nie zwykłym „edytorem tekstu”. GUI IDE mają również możliwość edycji tekstu, ale nie są też zwykłymi edytorami tekstu. Porównywanie Notatnika do Emacsa jest jak porównywanie ... rzucania kamieniem do uderzania w coś tą bronią na Gwieździe Śmierci.
Greg Mattes

8
Oczywiście niektórzy ludzie nie rozumieją różnicy między korelacją a przyczynowością
Chubas

Odpowiedzi:


121

Najpierw pozwólcie mi powiedzieć, że jestem samozwańczym prawdziwym wyznawcą kultu Emacsa.

To powiedziawszy, bloger jest szalony. Piszesz w tym, co uważasz za przydatne. Uważam, że Emacs pomaga mi, głównie dlatego, że spędziłem lata w college'u na opłacaniu początkowych kosztów nauki, jak go modyfikować, aby dopasować go do moich potrzeb i dostosowywać się do jego potrzeb.

Ale inni ludzie robią to inaczej i jak mówią „To jest OK”.


73
Zgoda. Uwielbiam Emacsa, ale myślenie, że Emacs uczyni cię lepszym programistą, jest jak myślenie, że używanie kijów golfowych Tigera Woodsa uczyni cię lepszym golfistą, a używanie gitary Eddiego Van Halena uczyni cię lepszym muzykiem.
Kristopher Johnson

31
Zdecydowanie nie zgadzam się z komentarzem Kristophera powyżej. Korzystanie z narzędzi wielkiego sportowca / artysty z pewnością nie sprawi, że będziesz tak wspaniały jak oni. Ale użycie ODPOWIEDNICH narzędzi programistycznych do PRAWIDŁOWEGO zadania na pewno będzie! Możesz jednak wybaczyć utożsamianie programowania ze sportem i sztuką. :)
Susheel Javadi

6
@Bart: Chodzi mu o to, że istnieje wiele „właściwych narzędzi”. Kije golfowe Tiger Wooda są doskonałymi narzędziami i doskonale nadają się do tego zadania, ale są też inne kije, które mogą zapewnić takie same rezultaty. Narzędzie, z którego korzysta dobry programista, nie definiuje ich, tylko kreatywność i umiejętności.
Seth Moore

9
Myślę, że w stwierdzeniu Stevesa chodzi o to, że wspaniali programiści używają emacsa, a dobrzy programiści są bardziej produktywni, używając IDE. Świetny programista zawsze programuje, nawet kiedy tworzy kod, który programuje, automatyzuje zadania, uwielbia make, ant, bash, perl i hudson. Wiedzą, że ręczne zadania w dowolnej części cyklu tworzenia oprogramowania są podatne na błędy. Świetni programiści wiedzą również, że jeśli ktoś inny buduje Twój kod (np. IDE lub ktokolwiek inny), to zawsze polegasz na umiejętnościach innych osób, jeśli chodzi o utrzymanie kodu (np. IDE lub kogokolwiek)
Ernelli

4
Steve Yegge jest facet, który napisał kompletnego parsera JavaScript w Elisp, więc nie ma wątpliwości, że jest on orzechy miarę idzie Emacs :)
Tichon Jelvis

106

On (Steve Yegge) rozwinął to w kawałkach w innych swoich postach. http://steve-yegge.blogspot.com/2008_04_01_archive.html jest prawdopodobnie najbardziej obszerny, ale informacje są tam ukryte, ponieważ są związane z głównym tematem.

Chyba podsumowując: programiści, którzy są po prostu dobrzy lub kompetentni , podniosą IDE i poznają je naprawdę dobrze i może zrobią w nim dość przyzwoicie, ale ograniczą się do tego, co zapewnia im IDE. Innymi słowy, dostosowują się do IDE. Te wielkie programistów, z drugiej strony, będzie dostosować swoje otoczenie , aby dopasować się w takich sposobów jak pisanie skryptów lub własnych narzędzi lub rozszerzenie ich narzędzi. I do ostatniego punktu, Emacs jest nie tylko najbardziej rozszerzalnym środowiskiem, jakie istnieje, jest to również środowisko najłatwiejsze do rozbudowy i jest to środowisko, w którym czerpiesz największe korzyści z rozszerzenia - twoje rozszerzenia integrują się z Emacsem, jakby były standardowymi funkcjami, więc twoje przyszłe rozszerzenia mogą opierać się na poprzednich (coś w rodzaju pętli pozytywnego sprzężenia zwrotnego).


15
Różnica polega na energii potrzebnej do rozszerzenia IDE. W emacsie wszystkie pliki konfiguracyjne są plikami programu elisp. Zasadniczo bariera wejścia jest absurdalnie niska (po prostu zmień plik .emacs)
shsmurfy

18
W tym samym stylu co Angus. Dobre IDE nie powinno być bez końca majstrowane przy wykonywaniu pracy. Dobre IDE powinno mieć wszystkie potrzebne funkcje. Oczywiście, możesz chcieć skonfigurować skróty i układ, ale nie powinieneś pisać wielu skryptów do obsługi wszystkiego.
Kibbee

5
Angus: masz rację. Jeśli musisz pieprzyć się z dodawaniem rzeczy zamiast wykonywać swoją pracę, przegapiłeś sedno - Emacs czy nie. Sol: To nie wszystko, co trzeba rozszerzyć, niż wysłać kod źródłowy przez zewnętrzne programy. W rzeczywistości to wcale nie jest tak potężny mechanizm rozszerzający.
Jonathan Arkell

15
Różnica między rozszerzaniem emacsa a rozszerzaniem netbean, Visual Studio lub Eclipse to szybkość. Dodawanie rozszerzeń do eclipse jest jak pisanie całej aplikacji. Dla porównania, pisanie rozszerzenia dla emacsa może być pojedynczą linią kodu.
Justin Tanner

4
@supercheetah - wygląda bardzo prymitywnie w porównaniu z inteligencją w Visual Studio, np. ikony wyświetlane obok dostępnych członków są przydatne! Osobiście bez silnego wsparcia refaktoryzacji nie interesuje mnie Emacs.
si618

57

Najlepsi programiści używają vi lub emacs, ponieważ najbardziej doświadczeni programiści są najlepsi, a 20 lat temu nie było wielkiego wyboru poza vi i emacsem.

Po rozpoczęciu pracy z vi (około 1987) na maszynie z bardzo wolnym terminalem tekstowym, po kilku latach przekonwertowałem na (GNU) Emacsa (na szybszej maszynie) i używałem go prawie wyłącznie przez prawie 10 lat.

Emacs był pierwszym w pełni zintegrowanym środowiskiem programistycznym - cały cykl edycji / linkowania / kompilacji można było kontrolować w emacsie, a także można było tworzyć własne dla dowolnego używanego kompilatora.

W dzisiejszych czasach IDE, takie jak eclipse, są jeszcze lepiej zintegrowane (szczerze mówiąc: emacs jest do bani grafiką), ale Emacs jest nadal jednym z najlepszych środowisk do „czystej” edycji tekstu.


10
+1 za samospełniającą się przepowiednię z pierwszego akapitu.
OregonGhost,

12
„najbardziej doświadczeni programiści są najlepsi” - tak bardzo dalekie od prawdy, przynajmniej przez domniemanie. Nie mówię, że niedoświadczeni programiści są lepsi, ale tylko dlatego, że robi to samo od ponad 20 lat - NIE oznacza, że ​​robi to dobrze.
AviD,

7
20 lat temu było wielu różnych redaktorów. Większość z nich po prostu nie przetrwała, na ogół nie bez powodu. Dlaczego facet, który używał vi lub emacs w 1989 roku, jest lepszy od faceta, który używał jakiegoś edytora opartego na MS-DOS w 1989 roku, czy czegokolwiek, u licha, używałem na komputerze mainframe Control Data?
David Thornley

Heck, 10 lat temu nie było dobrego środowiska Java IDE!
Susheel Javadi,

Z tego, co pamiętam 20 lat temu, vi i emacs były dominującymi edytorami - tylko dlatego, że było wtedy wielu redaktorów (jak teraz), nie oznacza, że ​​wszystkie były równie szeroko używane.
FinnNk

34

Poprawa jasnego myślenia i rozwiązywania problemów sprawi, że będziesz lepszym programistą. Żaden program tego nie potrafi.

Użycie lepszego młotka nie pomoże mi zbudować ładniejszego domu, chyba że wiem, jak i dlaczego. ;)


Dobra analogia do tego, co chciałem powiedzieć.
Rob

21
Ale zły młotek zrujnowałby twoją produktywność podczas próby zbudowania tego samego domu i prawdopodobnie skończysz z innym domem.
user51568

To uczciwe! Przeciętny programista nie wypadłby lepiej z drogim młotkiem.
Jas Panesar

5
Dobry programista może zbudować wspaniały dom z kamienia do młotka. (Jest wolny - ale nadal może to zrobić.: D)
Egon

Tak, ale posiadanie edytora, który pozwala kodowi wypływać z ciebie organicznie (w czym myślę, że Emacs jest lepszy niż większość edytorów) może poprawić twoje jasne myślenie, a tym samym rozwiązywanie problemów.
Skilldrick,

21

Yegge musi spotkać się z Billem Joy. Jest nie tylko jednym z największych programistów na świecie, ale także napisał duże fragmenty vi. W vi.

Krótkie haniebne wyznanie: Po 20 latach używania vi (i vim / gvim w ostatnich latach) do wszystkiego, w ciągu ostatniego roku zacząłem używać Eclipse do edycji java (i Thunderbirda do poczty e-mail), chociaż w mojej obecnej pracy mój maszyna ma tak mało pamięci, że zwykle używam vi, chyba że potrzebuję debuggera.


7
+1 dla vi (właściwie użyj vim, ale ta sama różnica). To 98% tego, co emacs może zrobić przy mniej niż połowie wysiłku.
rmeador

25
Używałem Vima przez 5 lat. Po 20 minutach w Emacs przysięgałem, że już nigdy nie wrócę. Vim czuje się do tyłu.
MattBelanger

5
Sam Yegge wspomina o tym: [Jedynym godnym uwagi wyjątkiem jest VIM, który jest również bardzo potężny pod każdym względem, chociaż nie mam z nim doświadczenia. Jeśli już preferujesz vi niż emacs, możesz doświadczyć większej radości z poszukiwania wiedzy z VIM. Psh] Źródło: steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html
user674062

1
Uh ... Bill Joy nie używa już vi.
Plumenator

13

Czy istnieje wymierna różnica w umiejętnościach, produktywności lub przyjemności z programowania między ludźmi, którzy polegają na IDE, a tymi, którzy tego nie robią, czy też jest to tylko fanboyizm?

Po prostu zawężmy to do Visual Studio vs. Emacs - w przeciwnym razie pytanie jest zbyt szerokie i podejrzewam, że większość ludzi (przynajmniej tutaj na StackOverflow) zna te dwa. [Jestem i używam i wolę emacs]

Następnie podzielmy trzy elementy pytania.

Przyjemność z programowania sprowadza się przede wszystkim do lubienia samego programowania, a po drugie do unikania irytacji, kiedy to robisz. Korzystanie z narzędzi, z którymi się borykasz, zmniejszy przyjemność. Tak więc, zgaduję, przyjemność jest prawdopodobnie zmaksymalizowana przy użyciu narzędzi, które lubisz i które znasz.

Oczywiście, kiedy już zaznajomisz się z nowym narzędziem, może się okazać, że polubisz to narzędzie bardziej, a zatem bardziej polubisz programowanie, jeśli zrobisz to z nowym ulubionym narzędziem. Nie jest dla mnie jasne, że ludzie na ogół polubią VS niż emacs (lub odwrotnie), jeśli znają ich dobrze.

Następnie umiejętność programowania. Jeśli istnieje jakikolwiek związek między umiejętnościami a wyborem VS / emacsa, myślę, że to umiejętność powoduje wybór, a nie wybór powoduje umiejętność. Z mojego doświadczenia wynika, że ​​żaden z {VS, emacs} nie sprawia, że ​​nauczyłem się niczego o pisaniu lepszego kodu.

Dobre narzędzie może sprawić, że będę w stanie napisać ten sam kod (a tym samym tę samą jakość ) w krótszych odstępach czasu; jeśli to założymy productivity = quality of code `times` code per time, to zrozumiałe jest, że każdy edytor, który pozwoli ci napisać dobry kod w krótszym czasie, zwiększa produktywność.

Być może zbyt nie znam VS, ale myślę, że emacs ma pewne mocne strony, których nie znalazłem w VS. Może to zabrzmieć śmiesznie, ale coś tak prostego jak ruch kursora Ctrl-[fbnp]jest prawdziwym dobrodziejstwem - oznacza to, że nie musisz przesuwać rąk do klawiszy strzałek. Inna sprawa: możesz wyszukać lub zamienić, które zawierają znaki nowej linii, których używam na tyle często, że nie chciałbym tego przegapić.

Inną rzeczą, którą lubię, jest możliwość osadzenia powłoki w moim edytorze. Z mojego doświadczenia wynika, że ​​jest to znacznie bardziej wartościowe na platformach innych niż Windows (a moim pierwszym doświadczeniem w programowaniu, IIRC, było pisanie plików .bat dla DOS-a, więc nie jestem tylko płonącym fanem), ale na tych platformach to duża wygrana . To sprawia, że ​​emacs "integruje się" ze "wszystkim" (wyszukiwanie plików za pomocą znajdź / zlokalizuj, wyszukiwanie tekstu za pomocą grep, kontrola wersji za pomocą svn / git / hg / ..., możesz to nazwać).

Ostateczny werdykt - czy nauczyć się emacsa czy nie? I czy to wszystko fanboyizm? Jeśli masz czas, powiedziałbym, że zawsze warto uczyć się nowych sposobów robienia tego samego, ponieważ nowy sposób może po prostu okazać się lepszy dla ciebie. Zachęcam was, byście nie odrzucali tego, czym się wydaje, kiedy jesteście w nim nowi. W tym sensie przypomina to przejście na układ klawiatury Dvoraka: na początku jesteś wolniejszy, ale kiedy już osiągniesz prędkość, prawdopodobnie będziesz co najmniej tak szybki jak na qwerty i wygodniejszy. Polecam to samo podejście do nauki nowych języków (programowania): ponieważ nie znasz słownictwa (standardowa biblioteka), mówienie rzeczy jest trudne, ale nagroda wciąż czeka na Ciebie na horyzoncie.


1
„Po prostu zawężmy to do Visual Studio vs. Emacs - w przeciwnym razie pytanie jest zbyt szerokie i podejrzewam, że większość ludzi (przynajmniej tutaj na StackOverflow) zna te dwa elementy”. - Naprawdę? Pomyślałem, że jest o wiele więcej wściekłych fanboyów * nix, takich jak ja, którzy nie byliby zmuszeni do korzystania z VisualStudio, a tym bardziej dobrowolnie. Hrm.
Xiong Chiamiov

„przesuwanie kursora za pomocą Ctrl- [fbnp] to prawdziwe dobrodziejstwo”. Chociaż kocham Emacsa, ponieważ wróciłem do niego po długiej przerwie, uważam, że ruch kursora w ten sposób jest najmniej przydatnym i wygodnym aspektem ponownego używania Emacsa. Z drugiej strony mogę sięgnąć i znaleźć dedykowane klawisze kursora bez patrzenia lub nawet myślenia. Może pomaga być pianistą? :) Ale kto wie, może z czasem list C-scrunch stanie się bardziej naturalny.
Greg Hendershott

2
ps Całkowicie się zgadzam co do powłok i platform. Jeśli chcesz poruszać się między Windows, OS X i Linux, to chcesz Cygwin na pierwszym i Emacsa na wszystkich trzech. Wrzuć swój .emacs.d do GitHub i jesteś złoty.
Greg Hendershott

możesz również wyszukiwać, które obejmują
znaki

10

Z cytowanym tekstem zaczynającym się od „Wszyscy najwięksi inżynierowie na świecie używają Emacsa”, też nie wziąłbym tego za dobrą monetę. Czy zna wszystkich największych inżynierów świata? Czy jest to ta sama lista najlepszych inżynierów świata, którą mamy ty lub ja?

Gdy już się nauczysz, potężny edytor, taki jak EMACS lub vi, sprawi, że będziesz bardziej wydajny lub przynajmniej wydajniejszy, jeśli zostaniesz złapany bez swojego ulubionego IDE.

To ta „raz nauczona” część jest zabójcą. Produktywne korzystanie z tych narzędzi wymaga dużo pracy i praktyki, a na początku jest bardzo trudne.


1
Myślę, że jedną z cech, która naprawdę pomaga komuś być „wspaniałym” inżynierem, jest możliwość opóźnienia gratyfikacji i poniesienia większych stałych kosztów początkowych w celu poprawy wydajności.
Tikhon Jelvis

9

Osobiście jestem fanem Emacsa, ale Emacs to tylko narzędzie. Nie uczyni cię lepszym programistą, tak samo jak super-wymyślne pióro nie uczyni z ciebie lepszego pisarza.

Wyjaśnienie, że „świetni programiści” dostosowują swoje środowisko do siebie, może mieć pewne zalety, ale wiele narzędzi może to zrobić (np. Vim i SlickEdit), więc nie ma nic szczególnego w Emacsie w tym względzie.

Myślę, że najprawdopodobniej prawdą jest to, że „wielcy programiści” są pasjonatami programowania, a ludzie, którzy są tym pasjonatami, zwykle znajdują narzędzia, które pomagają je rozwijać. Takim narzędziem jest Emacs (oraz vim i SlickEdit i inni).


Super-fantazyjne pióra sprawiają, że czuję się jak Hemingway.
Cheeso

2
Cechą szczególną Emacsa w odniesieniu do „adaptacji środowiska” jest to, że jest to o wiele prostsze w Emacsie niż w Vimie czy SlickEdicie. (lub jakikolwiek inny wydawca, którego znam)
vedang

8

Nie wierzę, że jest różnica, to bardziej kwestia preferencji.

Jednak zauważyłem, że im dłużej kodowałeś lub niższy poziom kodowałeś, tym większe są szanse, że używałeś emacs lub vi.


„Dłużej kodowałeś” wydaje się argumentować za tym, że zaczął kodować zanim pojawiły się dobre IDE.
Paul Tomblin

3
Czy jest coś takiego jak dobre IDE, synku?
David Thornley

8

Chociaż IDE znacznie się poprawiły w ciągu ostatniej dekady, nadal zawierają programowanie w małej bezpiecznej "bańce", z dala od niektórych brzydszych szczegółów. Zwykle się zdarza, że ​​ten wzrost abstrakcji pozwala większej liczbie programistów robić więcej przy mniejszej wiedzy. To oczywiście nie dotyczy wszystkich programistów, ale łatwiejsze narzędzia zapewniają programowanie szerszej publiczności.

Większa znajomość narzędzi niższego poziomu często przekłada się na większą stabilność kodu, ponieważ istnieje mniejsze prawdopodobieństwo przypadkowego „pójścia pod prąd”. Wymienienie EMACS jako jedynego wiodącego wskaźnika jest niesprawiedliwe, ponieważ pochodzi on z całego szeregu języków i narzędzi i tak naprawdę dotyczy raczej głębokości zrozumienia, a nie konkretnej technologii.

Dawno temu nauczyłeś się VI lub EMACS na urządzeniach z systemem UNIX lub specjalizowałeś się w komputerach PC (OK, był też VMS, CMS, AS400 itd., Ale to były starsze technologie). Oba strumienie przyciągały bardzo zapalonych ludzi, ale faceci z UNIX mieli tendencję do poszukiwania wyrafinowanego rozwiązania, podczas gdy faceci z komputerów PC chcieli, aby było to zrobione szybko. Kultury były bardzo różne.


7

IMHO IDE są zwykle optymalizowane pod kątem określonej platformy, języka lub systemu operacyjnego: Eclipse JDT jest świetny dla języka Java, Visual Studio jest C ++ / .NET-centric itp. Znacznie zwiększają produktywność (ponownie IMHO), jeśli pracujesz tylko nad tę platformę, ale jeśli zmienisz platformy, musisz w zasadzie nauczyć się nowego IDE (lub przynajmniej nowego zestawu wtyczek, widoków, perspektyw i nie wiem, co jeszcze dla Eclipse).

Zaletą znajomości emacsa, Textmate lub vima (moje osobiste preferencje) lub dowolnego edytora ogólnego jest to, że umiejętności zdobyte w tym edytorze mają zastosowanie niezależnie od platformy, dla której piszesz. Są zoptymalizowane pod kątem edycji tekstu , a gdy je opanujesz, możesz bardzo wydajnie edytować tekst w dowolnym języku.

Istnieje również twierdzenie Yegge, że wspaniali programiści dostosowują swoje narzędzia do swojego stylu pracy, a nie odwrotnie. Myślę, że to wygrana dla zwykłych edytorów, ponieważ dostosowujesz jeden edytor, zamiast zastanawiać się, jak dostosować cztery różne IDE, aby wszystkie zachowywały się tak, jak chcesz.


Problem pojawia się, gdy musisz pisać na innej platformie niż ta, na której byłeś: np. Przechodzisz z * nix do Windows, a twoje skrypty psują się, ponieważ zakładają powłokę burne ze ścieżkami opartymi na '/' w Struktura podobna do FHS z drukowaniem opartym na PostScript ...
SamB

Pracuję z emacsem już od jakiegoś czasu i tylko ruch kursora wystarcza, bym nie chciał pisać w czymkolwiek innym - nawet jeśli jest to e-mail w Kmailu.
Arne Babenhauserheide

@ArneBabenhauserheide to jeden z powodów, dla których uwielbiam Mac OS X, obsługujący prawie wszystkie pola tekstowe C-[npfbaed]. (Ale niestety nie M-)
porglezomp

6

Twierdzę, że najlepsi programiści to zazwyczaj ci, którzy będą potrzebować czasu na dostosowanie swojego środowiska, co przyspieszy / ułatwi wykonywanie zadań, które prawdopodobnie wykonają. Emacs to jeden z najpotężniejszych edytorów, jeśli chodzi o dostosowywanie środowiska. Ma stromą krzywą uczenia się, ale kiedy już ją przekroczysz, praktycznie nie ma ograniczeń co do tego, co możesz zrobić dla siebie.

Ktoś kiedyś powiedział, że najlepsi programiści są leniwi; takie, które gdy będą musiały zrobić coś więcej niż raz, znajdują sposób na zautomatyzowanie tego, aby wymagało to mniej wysiłku. Emacs pozwala być bardzo, bardzo leniwym;)


4

Używałem IDE od samego początku (prawdopodobnie od początku pracy z QBASIC) i przez wiele, wiele lat. Teraz prawie całkowicie przeszedłem na VIM (w różnych smakach) we wszystkich moich pracach programistycznych i nie żałuję tego. Moja produktywność zdecydowanie wzrosła.

Oczywiście nic nie zastąpi projektanta Windows Forms z Visual Studio. Ale w porównaniu do VIM-a (i jestem pewien, że Emacs) edytor tekstu w programie Visual Studio jest naprawdę kiepski. Kiedy już wykorzystasz surową moc konsoli i narzędzi programistycznych GNU (przez co mam na myśli makeGCC binutilsi gdb, a nawet niektóre), zauważysz, że te narzędzia mogą wyglądać prymitywnie, ale są po prostu przeciwieństwem i oferują wszystko narzędzia, które zapewnia IDE (no cóż, z wyjątkiem projektanta formularzy).

Po prostu masz przed sobą bardzo stromą wspinaczkę, kiedy po raz pierwszy zaczniesz korzystać z tych narzędzi, a zachęta może być niewielka. Miałem szczęście (?), Że byłem zmuszony do korzystania z tych narzędzi, więc nie miałem wyboru, z którego mógłbym się wyrwać.


3

Osobiście uważam, że powinieneś używać wszystkiego, co sprawia, że ​​jesteś bardziej produktywny. Jeśli nie masz czasu na zainwestowanie w projekt, aby usiąść i nauczyć się Emacsa, prawdopodobnie nie jest to najlepsze wykorzystanie Twojego czasu w tym momencie.

Uważam jednak, że dobrym pomysłem jest poznanie innych IDE, gdy masz na to wystarczająco dużo czasu. Korzystam z Visual Studio w codziennej pracy, ale w domu używam Eclipse do małych projektów i korzystałem Emacs również. W tym konkretnym momencie, w którym rozważałem użycie Emacsa, mój wysiłek był bardziej przydatny w wykonywaniu rzeczywistej pracy niż spowolnienie się w zapasach z Emacsem.

Myślę, że do pewnego stopnia absurdem jest myślenie, że wszyscy najlepsi programiści używają Emacsa. Jest wielu niesamowitych programistów, którzy nie są tak popularni (lub być może wokalni), którzy nie używają Emacsa.


3

Zacząłem używać Emacsa około półtora roku temu, ponieważ był to zbieżność kilku potrzeb - chciałem pracować z wyrażeniami regularnymi (w edytorze, który je obsługiwał), chciałem się nauczyć seplenienie, chciałem lepszego edytora.

Edycja kodu za pomocą wyrażeń regularnych nauczyła mnie wiele o znajdowaniu wzorców w kodzie. Przyzwyczajenie się do klawiszy zajęło trochę czasu, ale bez myszy latam dużo szybciej.

Emacs dał mi możliwość pracy z moimi notatkami i kodowaniem w tej samej aplikacji - minimalne przełączanie kontekstu oznacza minimalne przełączanie mózgu i mogę skupić się na zadaniu.


3

Nie. Dobry kod czyni z ciebie lepszego programistę.

To powiedziawszy, dobra manipulacja tekstem jest kluczem do wydajności. Zarówno vim, jak i emacs zmienią sposób pracy z tekstem - oba okazały się skuteczne, ale stylowo prawie ze sobą nie zgadzają się. Ponadto ta debata jest dość stara (z powrotem do lat 80-tych i 90-tych, gdzie kluczem był tekst -> kompilator), więc istnieje wiele innych edytorów tekstu i / lub IDE, które mogą pomóc Ci być najlepszym programistą, jakim możesz być.


3

Nie. Jeśli uważasz, że używanie emacsa czyni cię lepszym programistą, mylisz przyczynę i skutek.

Jednak używam go codziennie. Uważam, że jestem bardziej produktywny z emacs + maven niż z Eclipse do programowania w Javie (chociaż wciąż uruchamiam Eclipse od czasu do czasu, aby od czasu do czasu przeprowadzić refaktoryzację lub sesję debugowania).

Oto moje powody:

  • Rzeczywista edycja tekstu w emacsie przewyższa wszystko inne. To niesamowite, jak szybko możesz zrobić tak wiele, używając tylko klawiatury. Eclipse jest bardziej zorientowane na mysz, a podczas pisania napotkasz wiele irytujących przeszkód.
  • Możliwość dostosowania emacsa za pomocą elisp jest niesamowicie potężna. Posunę się nawet do stwierdzenia, że ​​jeśli nie poświęcasz czasu na naukę podstawowego języka elisp i dostosowywanie swojego środowiska, po prostu marnujesz swój czas.
  • Istnieją rozszerzenia dla praktycznie wszystkiego, co kiedykolwiek chciałbyś zrobić w edytorze tekstu.

1
+1 za korelację! =
Związek

Z jakiego trybu java korzystasz?
avendael

1
Używam standardowego trybu java, który jest dostarczany z Emacs23, z kilkoma dostosowaniami i hackami do uruchamiania kompilacji maven. Zacząłem także używać emacs-eclim, który działa jako pomost między emacsem a eclipse. Jest ładny i użyteczny, ale w tej chwili dość szorstki.
fred-o

3

Dla mnie głównym powodem, dla którego wybrałbym Emacsa zamiast IDE, jest to, że pozwala mi on robić wszystko z samej klawiatury. Jest to fajne, ponieważ oszczędza trochę czasu, kiedy normalnie używałbym myszy. Ponieważ uważam, że jestem bardzo mobilny, mam tendencję do przerywania programu „groove” z powodu używania powolnego panelu dotykowego. Ponadto jego personalizacja sprawia, że ​​świeci na niektórych IDE. Jeśli jednak zauważysz, że programujesz wystarczająco szybko w IDE, to powiedziałbym, że krzywa uczenia się Emacsa nie jest warta zachodu.


2

Czy istnieje wymierna różnica w umiejętnościach, produktywności lub przyjemności z programowania między ludźmi, którzy polegają na IDE, a tymi, którzy tego nie robią, czy też jest to tylko fanboyizm?

Nie sądzę, żeby naprawdę można było znaleźć odpowiedź na to pytanie. Jest tak wiele różnych sposobów mierzenia umiejętności, produktywności i przyjemności z programowania - i wszystkie z nich są prawdopodobnie bardzo subiektywne i / lub nie można ich podzielić na JEDNĄ przyczynę lub nie.

To wciąż jest interesujące pytanie.

Osobiście wierzę - to zależy od programisty :)

G-Man


Koleś Fanboys. IDE nie jest edytorem. IDE nie musi być najlepszym edytorem.
Perpetualcoder

2

Nie sądzę, żeby uczyniłoby cię to lepszym programistą, ale kiedy masz NA TYM poziomie, najprawdopodobniej będziesz używać emacsa (lub vi)

: - /

Dobrą rzeczą w tych dwóch (nigdy wcześniej nie używałem emacsa, ale nadal używam vi do najbardziej przyziemnych zadań) jest fakt, że nie przerywają one toku myśli , nie musisz odrywać rąk od klawiaturę, aby chwycić mysz i poszukać w menu plików odpowiedniej opcji. Po prostu pisz dalej. W swoim umyśle mówisz coś w stylu: „Zamień wszystkie wystąpienia tego słowa na to”, naciśnij enter i kontynuuj swoją pracę.

Poza tym nie sądzę, aby używali emacsa jako jedynego narzędzia.

Czy to uczyniłoby cię lepszym programistą? Prawdopodobnie nie. Ale jeśli masz taki poziom wiedzy, prawdopodobnie spodoba Ci się, jak szybko możesz kodować za pomocą tych narzędzi.


Polowanie w menu jest dla osób, które nie znają IDE. Nie wiem, kiedy ostatnio musiałem „polować” na opcję menu.
tster

Więc myślisz, że użycie "Plik-> Zapisz" jest lepsze niż Ctrl-S? Nie sądzę. Chwycenie myszy, kliknięcie pliku menu, a następnie przesunięcie myszy w dół do opcji Zapisz wydaje mi się zbyt trudne, skoro można to zrobić bez konieczności chwytania klawiatury.
OscarRyz

oczywiście się zgadzam. Wszystkie IDE, z których korzystałem, mają rozbudowane i konfigurowalne skróty klawiszowe i kombinacje, tak jak emacs.
tster

2

Nie.

Dyscyplina, krytyczne myślenie i chęć samodoskonalenia sprawią, że będziesz lepszym programistą. Twój zestaw narzędzi, choć jest głównym czynnikiem wpływającym na produktywność, nie stworzy geniuszu.

Jeśli nie lubisz emacsa lub vi, nie używaj ich. Dokonując świadomego wyboru, aby tego nie robić, kształtujesz środowisko programistyczne tak, aby odpowiadało Twoim własnym potrzebom i praktykom zawodowym. W każdym razie masz prawo używać tego, co lubisz - i ignorować każdego, kto jest na tyle głupi, by zganić cię za narzędzie, którego używasz do zapisywania bitów na dysku - liczą się bity.

Uwaga: „Zestaw narzędzi” oznacza tutaj dosłownie „markę” narzędzi - określone edytory, kompilatory itp. Koncepcyjne zestawy narzędzi, np. Użycie kontroli wersji, testowanie jednostkowe - ogólnie rzecz biorąc - są częścią proces doskonalenia.


2

Jedną z wspaniałych cech emacsa jest to, że może obsłużyć prawie każdy typ pliku, który do niego wrzucisz, o dowolnym rozmiarze. Trzeba przyznać, że jeśli otwierasz szalony ogromny zaszyfrowany plik, niekoniecznie będzie to przydatne, ale się otworzy. Większość edytorów (i IDE) przyprawi Cię o poważny ból serca, jeśli podasz im plik, który jest zbyt duży i / lub nie jest jednym z ich oczekiwanych formatów.

Na przykład spróbuj otworzyć plik 1 Gig w Notatniku.

Zacząłem używać Emacsa gdzieś około 1980 roku i zawsze było to narzędzie w moim zestawie narzędzi. Nie jest to jedyne narzędzie, ale zawsze jest to coś, do czego mogę się zwrócić i wiedzieć, że będę w stanie wykonać pożyteczną pracę.

Obowiązkowy komentarz zapalny : Z drugiej strony, nie mam nic dobrego do powiedzenia na temat vi. Zawsze czułem, że vi szczęśliwie mnie zabije i sprzeda moje narządy na przekór ...

W prawdziwym życiu używam Netbeans do prawie wszystkich form programowania i od czasu do czasu używam emacsa do szybkiej edycji. Nie ma prawie nic tak wygodnego jak emacs (dla mnie), jeśli chodzi o zrobienie teraz czegoś szalonego.

Czy ktoś jeszcze kiedykolwiek musiał edytować ciągi statyczne w skompilowanych binarnych plikach wykonywalnych? Czy jest lepsze narzędzie do tego typu rzeczy niż emacs? To na pewno działa na mnie.


1
Podczas gdy Visual Studio całkowicie przegapiłoby tę okazję i zamiast tego zadowoliłoby się przeszukaniem twojego portfela, aby sprawdzić, czy jest jakaś wolna gotówka.
Rob

Przepraszam, nie wiedziałbym. Używam Netbeans prawie cały czas i emacsa, kiedy tego potrzebuję.
Bob Cross

2

Wiem, że o to nie pytałeś, ale jedną rzeczą, którą nauczyłem się emacsa (nieoczekiwanie) poprawiło się dla mnie, było manipulowanie wierszem poleceń. Zanim nauczyłem się skrótów klawiszowych emacsa, przesuwałem kursor i nawigowałem po historii za pomocą klawiszy kursora, ponieważ nie znałem nic lepszego. Było coś o chwilę żarówka kiedy uświadomiłem sobie, mogę używać backward-word, move-beginning-of-linei backward-kill-word(co zawsze wiąże się C-w, jak sugeruje Stevey ) w bash( M-tczęsto jest zbyt przydatny, a największe wrażenie na tych, którzy nigdy nie widziałem go wcześniej).

Sporo pracy wykonuję na Solarisie, gdzie powłoka roota to „powłoka posix” i domyślnie nie ma powiązań emacsa. Za exec bashkażdym razem, gdy się loguję , moje palce piszą z własnej woli, o wiele szybciej czuję dzięki znanym teraz poleceniom edycji pod palcami.

Muszę jednak przyznać, że nadal uważam, że książki Knutha są trudne (choć warto) - więc nie sądzę, aby w magiczny sposób poprawiły one moje programowanie.


Człowieku, naprawdę muszę nauczyć się więcej tych sztuczek ... W każdym razie, czy nie możesz zmienić powłoki logowania, czy rzeczywiście miałeś na myśli „powłokę dla użytkownika root”, kiedy powiedziałeś „powłoka roota”? Jeśli tak, dlaczego logujesz się jako root ???
SamB

2

Emacs uczynił mnie bardziej wydajnym w manipulowaniu tekstem i nawigacji w systemie plików. A ponieważ obie te rzeczy są zaangażowane w programowanie, uczyniło mnie to bardziej wydajnym (a tym samym lepszym) programistą.


2

Myślę, że Emacs może uczynić cię lepszym programistą, choć pośrednio. Myślę, że Emacs skłonił mnie do pisania w języku funkcjonalnym ( Elisp ), który zainteresował mnie innymi językami funkcyjnymi ( Clojure ), o których powiedziano mi, że uczyni mnie lepszym programistą. To powiedziawszy, przypuszczam, że czas pokaże.


To naprawdę stary styl Lispa (z tylko dynamicznym i bez leksykalnego zakresu), ale z pewnością ma wiele do nauczenia. To i może być całkiem niezłym edytorem tekstu w te dni, w których faktycznie działa dobrze!
SamB

1

Będąc w stanie wykorzystać jakąś konfigurowalny edytor pozwala zrobić ładne rzeczy, ale emacs w szczególności nie jest koniecznie Bardzo najlepszym z możliwych. Sam jestem użytkownikiem SlickEdit, robię z nim te same dziwne, półautomatyczne rzeczy, z których słynie emacs. Widziałem, jak ludzie robili podobne rzeczy z vi i różnymi edytorami opartymi na Windows.

Więc tak, zestawy gniazd są dobre, ale argumentowanie, że Craftsman tworzy zestaw One True Socket, jest trochę głupie.


Na marginesie, mógłbym być skłonny wypróbować SlickEdit, gdyby nie marketing Braindead: „10 powodów, aby nie używać SlickEdit - nr 1: lubisz być złym programistą. # 2: chcesz wydać więcej na zrobienie mniej. # 3: jesteś inbred kretynem. etc etc etc ”
Juliet

Dostałem się do Slicka, zanim MIAŁO marketing; po prostu był to jedyny prawdziwy edytor działający w tym czasie pod OS / 2 3.0. Prawdopodobnie jest to ten sam powód, dla którego wszyscy inni faceci używają emacsa ...
mjfgates

1

Opanowanie przypisań klawiszy Emacsa i jego wbudowanych funkcji pozwoli na szybsze manipulowanie tekstem niż w środowisku IDE, takim jak Eclipse lub Visual Studio.

Nie wierz mi na słowo, obejrzyj filmy przedstawiające profesjonalistów używających Emacsa .

Po osiągnięciu przyzwoitego poziomu w Emacsie możesz efektywnie edytować dowolny język: Java Script, Java, Ruby, Python, HTML, C, C ++ itp.

Rozpoczęcie pracy z Emacsem jest uciążliwe, doświadczenie po wyjęciu z pudełka jest gorsze niż złe. Domyślna konfiguracja Emacsa nie wystawia początkującego Emacsa na bardziej zaawansowane funkcje (hippie-expand, etags, yasnippets, itp.) Emacsa. Proponuję zacząć od plików kropek Emacs Starter Kit .

Innym powodem, dla którego Steve Yegge twierdzi, że najlepsi programiści na świecie używają Emacsa, jest elisp. Elisp daje doświadczonemu programiście możliwość łatwej rozbudowy Emacsa. Napisanie rozszerzenia w Eclipse lub Visual Studio jest znacznie trudniejsze niż napisanie szybkiej funkcji lub nawet nowego trybu pomocniczego w elisp.


pytanie brzmi, dlaczego w ogóle zacząć go używać? Jeśli ktoś jest szczęśliwy, wygodny i produktywny, po co marnować czas i wysiłek na naukę emacsa? Wolałbym raczej nauczyć się nowego języka programowania lub zbadać nowe technologie niż nauczyć się starego edytora, choć potężnego. Dzień ma tylko 24 godziny, mądrze wykorzystaj czas.
sarsnake

kolejna rzecz, na którą chciałbym zwrócić uwagę, że zależy to również od używanej technologii. Czy Emacs ma inteligencję? Używałem go na studiach na komputerach z systemem UNIX i jestem pewien, że od tamtej pory się to zmieniło. Ale dla .NET Intellisence jest koniecznością. Nie ma sposobu, aby ktokolwiek mógł zapamiętać WSZYSTKIE nazwy funkcji we wszystkich klasach we wszystkich przestrzeniach nazw. I jestem pewien, że nie przechodzę do MSDN za każdym razem, gdy muszę wyszukać nazwę funkcji. Jeśli Emacs oferuje inteligencję, rozważyłbym to.
sarsnake

1

Uważam, że to wielkie błędne przekonanie, że używanie edytorów tekstowych, takich jak VI i Emacs, jest wysoko cenione lub potrzebne, aby zostać „wielkim programistą”. Zawsze uważałem, że IDE są potężniejsze niż kiedyś, a to naprawdę sprowadza się do preferencji i stylu.


0

Używałem emacsa na studiach. to było około 16 lat temu. Nie obejrzałem się za siebie. Chociaż chciałbym nadal czuć się komfortowo z emacsem, prawda jest taka, że ​​jestem dość produktywny z moim MS IDE.

opublikowany przez Ciebie tekst to tylko troll. Tak. Nie ma innego powodu niż rozpoczęcie wojny religijnej.


0

Zacząłem od emacsa, ale przeszedłem na vi, który jest dla mnie bardziej elegancki ze względu na swoją prostotę. Również jeśli kiedykolwiek utkniesz w trybie pojedynczego użytkownika, polecenia ed są podzbiorem poleceń vi. Nie wiem, czy emacs sobie z tym poradzi.

Więc myślę, że vi czyni cię lepszym programistą.


Emacs MA tryb vi Mx, chociaż podejrzewam, że to był rodzaj żartu ...
Brian Postow

Znajomość podstaw vi jest niezbędna do administrowania systemem. To jednak nie jest programowanie.
Xiong Chiamiov
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.