Will Emacs make me a better programmer?
Solution 1
First let me say, I am a self professed true believer in the cult of Emacs.
That said, the blogger is nuts. You write in what you find useful. I find that Emacs helps me, mainly because I spent my college years pre-paying the start-up cost of learning how to modify it to suit my needs, and modifying myself to its needs.
But other people do things differently, and as they say "That's OK".
Solution 2
He (Steve Yegge) has elaborated on this, in bits in pieces, in other postings of his. http://steve-yegge.blogspot.com/2008_04_01_archive.html is probably the most comprehensive, but the info is buried in there since it's on a tangent to the main subject.
I guess to summarize: the programmers who are merely good or competent will pick up an IDE and get to know it really well, and maybe do decently enough in it, but they'll restrict themselves to what the IDE provides for them. In other words, they adapt themselves to the IDE. The great programmers, on the other hand, will adapt their environment to suit themselves, in such ways as writing scripts or their own tools, or extending their tools. And to that last point, not only Emacs is the most extensible environment there is, it is also the easiest environment to extend there is, and it is the environment where you reap the most benefit from extending it--your extensions integrate into Emacs like they are stock features, and so your future extensions may build upon your previous ones (positive-feedback-loop kind-of thing).
Solution 3
The best programmers use vi or emacs, because the most experienced programmers are the best, and 20 years ago, there wasn't much choice except vi and emacs.
After having started with vi (ca. 1987) on a machine with a very slow text terminal, I converted to (GNU) Emacs after a few years (on a faster machine), and used it almost exclusively for nearly 10 years.
Emacs was the first truly integrated development environment - the whole edit/link/compile cycle could be controlled in emacs, and you could roll your own for whatever compiler you used.
Nowadays, IDEs such as eclipse are even better integrated (to be honest: emacs sucks at graphics), but Emacs is still one of the best environments for "pure" text editing.
Solution 4
Improving your clear thinking and problem solving will make you a better programmer. No program can do that.
Using a better hammer won't help me build a nicer house unless I know how and why. ;)
Solution 5
Yegge needs to meet Bill Joy. Not only is he one of the great programmers in the world, he also wrote large chunks of vi. In vi.
Short Shameful Confession: After 20 years of using vi (and vim/gvim in recent years) for everything, in the last year or so I've started using Eclipse for java editing (and Thunderbird for email), although at my current job my machine has so little memory that I usually use vi except when I need the debugger.
Comments
-
Juliet almost 2 years
Steve Yegge wrote a comment on his blog:
All of the greatest engineers in the world use Emacs. The world-changer types. Not the great gal in the cube next to you. Not Fred, the amazing guy down the hall. I'm talking about the greatest software developers of our profession, the ones who changed the face of the industry. The James Goslings, the Donald Knuths, the Paul Grahams, the Jamie Zawinskis, the Eric Bensons. Real engineers use Emacs. You have to be way smart to use it well, and it makes you incredibly powerful if you can master it. Go look over Paul Nordstrom's shoulder while he works sometime, if you don't believe me. It's a real eye-opener for someone who's used Visual Blub .NET-like IDEs their whole career.
Emacs is the 100-year editor.
The last time I used a text editor for writing code was back when I was still writing HTML in Notepad about 1000 years ago. Since then, I've been more or less IDE dependent, having used Visual Studio, NetBeans, IntelliJ, Borland/Codegear Studio, and Eclipse for my entire career.
For what it's worth, I have tried Emacs, and my experience was a frustrating one because of its complete lack of out-of-the-box discoverable features. (Apparently there's an Emacs command for discovering other Emacs commands, which I couldn't find by the way -- it's like living your own cruel Zen-like joke.) I tried to make myself like the program for a good month, but eventually decided that I'd rather have drag-and-drop GUI designers, IntelliSense, and interactive debugging instead.
It's hard to separate fact from fanboyism, so I'm not willing to take Yegge's comments at face value just yet.
Is there a measurable difference in skill, productivity, or programming enjoyment between people who depend on IDEs and those who don't, or is it all just fanboyism?
-
rmeador over 15 years+1 for vi (actually, use vim, but same difference). It's 98% of what emacs can do for less than half the effort.
-
David Thornley over 15 yearsIs there such a thing as a good IDE, sonny?
-
Brian Postow over 15 yearsEmacs DOES have a M-x vi-mode although, I suspect that that was sort of a joke...
-
Elijah over 15 yearsWhy is this limited to emacs? I often modify Netbeans (via plugins, api, config) at work for the benefit of the other developers working on the same project. Couldn't what you are saying be applied to any open source IDE?
-
arkap over 15 yearsFanboys dude. IDE is not Editor. IDE need not be the best editor.
-
shsmurfy over 15 yearsThe difference is the energy it takes to extend the IDE. With emacs, all the configuration files are elisp program files. So essentially, the barrier for entry is ridiculously low (just change your .emacs file)
-
Rob over 15 yearsA good analogy for what I wanted to say, too.
-
Rob over 15 yearsWhereas Visual Studio would completely miss that opportunity, and instead content itself with rifling through your wallet to see if there was any spare cash.
-
Juliet over 15 yearsAs an aside, I might be inclined to try SlickEdit if it weren't for the braindead marketing: "10 reasons not to use SlickEdit -- #1: you like being a bad programmer. #2: you want to spend more to do less. #3: you're an inbred moron. etc etc etc"
-
Bob Cross over 15 yearsSorry, I wouldn't know. I use Netbeans almost all the time and emacs when I need it.
-
Kibbee over 15 yearsAlong the same lines as Angus. A good IDE shouldn't have to be tinkered with endlessly to get the job done. A good IDE should have all the features one needs. Sure you may want to configure the shortcuts and layout, but you shouldn't need to write a bunch of scripts to handle everything.
-
chris over 15 yearsKibbee: I started using emacs almost 18 years ago. In that time, I have rarely had to "write a bunch of scripts". If there's something you need to do - to save yourself time, make yourself more productive, or improve quality - it's probably been done before, so it's just a matter of editing .emacs.
-
mjfgates over 15 yearsI got into Slick before it HAD marketing; it's just that it was the only real editor that ran under OS/2 3.0 at the time. Which is probably about the same reason that all those other guys use emacs...
-
user51568 over 15 yearsBut a bad hammer would ruin your productivity while trying to build the same house and you'll probably end up with a different house.
-
Jas Panesar over 15 yearsThat's fair! An average programmer wouldn't fare much better with the expensive hammer.
-
Sol over 15 yearsI'm kind of curious how you would establish that emacs is the most extensible and the easiest to extend. For instance, I've been using TextMate for the last few months -- extending it is dead easy, and filtering your source through arbitrary external programs is as powerful as you can get.
-
Jonathan Arkell about 15 yearsAngus: you're right. If you have to screw around with adding things instead of getting your job done, you've missed the point--Emacs or not. Sol: There is more to extending then sending source through external programs. In fact, that isn't all that powerful an extension mechanism at all.
-
OregonGhost about 15 years+1 for the self-fulfilling prophecy in the first paragraph.
-
AviD about 15 years"the most experienced programmers are the best" - so very far from the truth, at least by implication. Not saying inexperienced programmers are better, but just because he's been doing the same thing for over 20 years - does NOT mean he's doing it well.
-
aliadly almost 15 yearsthe question is why start using it at all? If one is happy, comfortable and productive, why waste time and effort on learning emacs? I would much rather learn a new programming language or research new technology than learn an old editor, albeit a powerful one. There are only 24 hours in a day, use time wisely.
-
aliadly almost 15 yearsanother thing i would like to note that it also depends on the technology you are using. Does Emacs have Intellisence? I used it in college on UNIX machines and I am sure it has changed since then. But for .NET Intellisence is a MUST. There is NO way anyone could remember ALL the function names in all classes in all namespaces. And I am sure not going on MSDN every time I need to look up a function name. If Emacs offers Intellisence I would consider it.
-
Justin Tanner almost 15 yearsThe difference between extending emacs and extending netbeans, visual studio or eclipse is speed. Adding extensions to eclipse is like writing an entire application. In comparison writing an extension for emacs can be a single line of code.
-
David Thornley almost 15 yearsThere were lots of different editors 20 years ago. Most of them simply haven't survived, generally with good reason. Why is a guy who used vi or emacs in 1989 any better than a guy who used some MS-DOS based editor in 1989, or whatever the heck it was I was using on the Control Data mainframe?
-
aliadly almost 15 yearsJustin, what about Intellisense? Is there one for emacs yet? Or would i have to write one myself
-
kevinthompson almost 15 yearsAgreed. I love Emacs, but thinking that Emacs will make you a better programmer is like thinking that using Tiger Woods's golf clubs will make you a better golfer, or using Eddie Van Halen's guitar will make you a better musician.
-
Xiong Chiamiov over 14 years"Let's just narrow this down to Visual Studio vs. Emacs---the question is too broad otherwise, and I suspect most people (at least here on StackOverflow) are familiar with those two." -- Really? I thought that there were many more rabid *nix fanboys like myself who wouldn't be forced to use VisualStudio, much less use it voluntarily. Hrm.
-
Xiong Chiamiov over 14 years+1 for correlation != causation
-
supercheetah over 14 yearsgnomixa, yes, cedet.sourceforge.net
-
si618 over 14 years@supercheetah - looks very primitive compared to the intellisense found in Visual Studio, e.g. icons shown next to available members are useful! Personally, without strong refactoring support I've got little interest in Emacs.
-
Egon over 14 yearsA great programmer can build a great house using a stone for hammer. (He's slow - but he still can do it. :D)
-
Susheel Javadi over 14 yearsDisagree strongly with Kristopher's comment above. Using a great sports person's/artist's tools will definitely not make you as great as them. But, using the RIGHT programming tools for the RIGHT job definitely will! You might be forgiven though for equating programming with sport and art. :)
-
vedang over 14 yearsWhat is particular about Emacs with respect to "adapting the environment" is that it is far simpler to do so in Emacs than either in Vim or SlickEdit. (or any other editor I know of)
-
Seth Moore about 14 years@Bart: His point is that there are multiple "right tools". Tiger Wood's golf clubs are excellent tools and are perfect for the job, but there are also other clubs that can provide the same results. The tool a good programmer uses doesn't define them, their creativity and abilities do.
-
Ernelli almost 14 yearsI think the whole point with Steves statement is that Great programmers use emacs, good software developers are more productive using an IDE. Great programmer always program, even when producing code they program, they automate tasks, they love make, ant, bash, perl and hudson. They know that manual tasks in any part of the software development cycle is prone to errors. Great programmers also know that if someone else builds your code (e.g the IDE or anyone) then you always depend on that one elses skills when it comes to maintaining the code (e.g the IDE or anyone)
-
Skilldrick over 13 yearsYes, but having an editor that lets the code flow out of you organically (which I think Emacs is better at than most editors) can improve your clear thinking and therefore problem solving.
-
Peter Recore over 13 yearsI've written an extension to eclipse. it was shockingly easy. and i could do it in java, which happens to be the language I am coding in, rather than lisp, which is not.
-
Jas Panesar over 13 years@Skulldrick - I think there's something to be said for sure for the tools that you do (or don't use). Using the right tool relative to the job at hand, your inclinations will obviously help. If notepad does it for some people, so be it. I still see tools as a magnifier, and not as much of an enabler. Tools that "get out of the way" and leave your thinking to focus on work instead of interacting with the app's complex tapping or clicking seems attractive to me. Coda or Textmate also focus on that for a reason and seem to have their followers. Cheers!
-
SamB over 13 yearsActually, it can make you a better programmer, just the same as any other programming language can.
-
SamB over 13 yearsIt's a really old style of Lisp (with only dynamic and no lexical scoping), but it certainly does have much to teach. That, and it can be a pretty nice text editor on those days on which it actually works right!
-
SamB over 13 yearsThe problem comes when you have to write on a different platform than the one you've been on: e.g. you move from *nix to Windows, and your scripts break because they were assuming a bourne shell with '/'-based paths in a FHS-like structure with PostScript-based printing...
-
SamB over 13 yearsMan, I really need to learn more of those tricks... Anyway, can't you get your login shell changed, or did you actually mean "the shell for the root user" when you said "root shell"? If so, why are you logging in as root???
-
Susheel Javadi over 13 yearsHeck, 10 years ago there wasn't a good Java IDE!
-
avendael over 13 yearsWhat java mode are you using?
-
fred-o over 13 yearsI'm using the stock java mode that comes with Emacs23, with some customizations and hacks to run maven builds. I've also started using emacs-eclim, which acts as a bridge between emacs and eclipse. It's nice and usable, but pretty rough at the moment.
-
tster about 13 yearsHunting in the menu is for people that don't know the IDE. I don't know whenthe last time I had to "hunt" for a menu option.
-
OscarRyz about 13 yearsSo you do you think using "File->Save" is better than Ctrl-S? I don't think so. Having to grab the mouse, click on Menu file and then move th mouse down to Save entry seems to much for me when you can do it without taking the hands of the keyboard.
-
tster about 13 yearsobviously I agree. All the IDEs I've every used have extensive and customizable hotkeys and combinations just like emacs.
-
Tikhon Jelvis almost 13 yearsSteve Yegge is the guy who wrote a complete JavaScript parser in elisp, so there is no question that he is nuts as far as Emacs goes :)
-
Tikhon Jelvis almost 13 yearsI think one of the qualities that really helps somebody to be a "great" engineer is being able to delay gratification and shoulder a larger fixed startup cost to improve efficiency.
-
Greg Hendershott almost 13 years"cursor movement with Ctrl-[fbnp] is a real boon". Although I love Emacs, having returned to it after a long hiatus, I find cursor movement this way the least useful and comfortable aspect of using Emacs again. By contrast I can reach and find the dedicated cursor keys without looking or even thinking. Maybe it helps to be a piano player? :) But who knows, with time, maybe C-scrunch-letter will feel more natural.
-
Greg Hendershott almost 13 yearsp.s. I totally agree about shells and platforms. If you want to move among Windows, OS X, and Linux, then you want Cygwin on the first and Emacs on all three. Throw your .emacs.d on GitHub and you're golden.
-
user674062 over 12 yearsYegge himself mentions this: [The one noteworthy exception is VIM, which is also very powerful by all accounts, though I have no experience with it. If you have already developed a preference for vi over emacs, then you may experience greater happiness pursuing expertise with VIM. Psh] Source: steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html
-
FinnNk over 12 yearsFrom what I remember of 20 years ago, vi and emacs were the overwhelmingly dominant editors - just because there were lots of editors then (as now) doesn't mean they were all equally widely used.
-
Plumenator over 12 yearsUh.. Bill Joy doesn't use vi anymore.
-
Arne Babenhauserheide about 12 yearsI have been working with emacs for quite some time, now, and just the cursor movement is enough for me to resent writing in anything else - even if it’s an email in KMail.
-
darjab about 12 years+1 for the start of the second sentence ...
-
Axarydax over 11 yearsalso, you can do search that includes newlines in Visual Studio using regexes
-
porglezomp over 9 years@ArneBabenhauserheide this is one reason I love Mac OS X, almost all textfields support
C-[npfbaed]
. (But sadly notM-
)