tags:

views:

881

answers:

16

For someone just starting to program, would you recommend using vim/emacs, or should you use some IDE? Like are vim/emacs better suited for more advanced users than for beginners? I'm just wondering because I'm trying to get some of my friends to program.

+1  A: 

vi and gcc, nothing else

Dani Cricco
what about make?
chakrit
I don't think make is useful for beginners. What a new programmer needs to learn is "how to think" and then the relationship between the program and the O.S. Let him/her write a quick program (the classic hello world :D) compile and realize that he don't need to know any other tools to improve his programming knowledge. Then he will be focus only in coding and not anymore in the tool. Maybe change vi for a graphical editor, but without code assistant please :D.
Dani Cricco
+1  A: 

Editors seem to be a touchy subject. It really seems to be personal preference. The only reason I ever learned vim was because of the workplace required me to. The only reason I ever used emacs was because of school. Having said that, I think just using the available development tools (VS for .net framework, Eclipse/NetBeans for Java, etc) would be best in my opinion, but again, its definitely personal preference.

SwDevMan81
+11  A: 

If they're just starting programming, I'd not recommend VIM to begin with.

  1. they'll have enough on their plate to begin with learning the ins and outs of programming
  2. depending on the language/platform, I think they'd appreciate an IDE with code completion , general language support etc. (I know you can do this in VIM, but it's a lot more seamless in an IDE).

Note. I'm a VIM fan, and I run my IDEs with VIM plugins, so I have nothing against VIM as such.

I note in your comments you're looking at teaching them Java. BlueJ is a Java IDE geared towards learning Java, and may be a useful introductory tool.

Brian Agnew
I'd also add that most IDE have a semi-VIM/semi-emacs shortcuts or plugins ready to be added once you want to step up ... Take Visual Studio for example, most people just didn't even know that VS has loads of emacs macros already activated from start ... and then they think some awesome shortcuts were VS's ...
chakrit
On the other hand, it will ruin their perception of programming beyond repair.
Stefano Borini
I found by using vim when starting program I learned to not use an ide as such a cruch. I can appreciate them, but I also know how to look at docs and find information, which I find a lot of begining programmers loose if they started on an IDE, especially with Java.
icco
+6  A: 

Avoiding the subjective question of editor choice, it's not so much about advanced/beginner as learning too much at once. It's probably a good idea to separate the coding learning curve from the editor learning curve. If you're busy learning to code, use an editor you're already comfortable with (doesn't have to be an IDE, could be gedit, etc.). Once you're comfortable coding, you can move on to an editor of your choice if you're not happy with what you already knew. An advanced coder might still prefer a simple editor, and one who hasn't learned too much might still want to work faster and switch to Vim.

Jefromi
+1  A: 

Hi

It depends on what platform and language you plan to start and then boils down to individual preference. If it happens to be windows and you plan to do C#/VC++/VB then Visual Studio IDE is the best.

I used emacs when I started on Scheme and python and I found it handy.

cheers

Andriyev
+1  A: 

I am by no means an emacs whiz, but in terms of learning the basics of a new language I think it is handy.An IDE can be a distraction from what you are trying to learn (So you end up spending time learning an IDE rather than a language) and emacs provides both good indenting and syntax highlighting, as well as easy access for compiling, debugging, and accessing the shell.

cmsjr
You think it's harder to learn an IDE than it is to learn emacs??
Gabe Moothart
Not at all, I'm saying that initially eschewing an IDE allows you to focus more completely on the language itself. IDEs are about productivity, not language proficiency. The more thoroughly you understand the language, the more you can leverage the IDE.
cmsjr
+2  A: 

Whatever editor you choose, have the cheatsheet sticked next to your screen.

jeje
+2  A: 

People either like vi (or emacs) or hate it regardless of their skill level as programmers.

Nemanja Trifunovic
+5  A: 

Since you say you'd suggest Java to them, Eclipse is probably the way to go. If you were suggesting Common Lisp, I'd say Emacs without hesitation. For Python and the like, I'd say to use whatever text editor they know now; vi, vim, Emacs, Geany, whatever. But for Java Eclipse is a pretty good standard choice.

JasonFruit
+3  A: 

I know I'm going to get voted way down by the legion of emacs/vi people here, but in terms of learning a language, an IDE with intellisense (or whatever the generic version is called) is absolutely indispensable. For instance, if you use visual studio, you will spend almost no time playing with the IDE. The automatic completion clearly shows the relationships of member variables, and makes it so that you don't have to remember minutia. Scope and type resolution is also invaluable for the beginner. Most important however, is that whatever you are using contains an industrial strength debugger. Logging with strings to a text file is no way to go through life. Even the legion of emacs lovers will probably admit that someone is far more productive with a professional IDE and a beginner is far less likely to get frustrated. Now, if you are going with something opensource/free, your experience may vary.

Steve
I'm a vim diehard, and I think the above is on the money. It took me ages to move to an IDE, and my productivity soared once I'd done it. I use a vim plugin with Eclipse to get the best of both worlds, but if you insist on working with vim in the face of the power of modern IDEs (e.g. Eclipse or Intellij for Java) then I think you're doing yourself a disservice.
Brian Agnew
I think it depends a lot on the language, and how closely it and its project structures are tied to a particular IDE. I wouldn't write C#.NET without Visual Studio, but I've never seen an advantage trying to use an IDE for Python, PHP, or the like. I use Emacs for those, but I wouldn't dream of it for Java or C#.NET.
JasonFruit
No, if they are truly beginning to program intellisense is not the way to go. It would likely confuse a new user with all the help it gives them. Sure they could write a "Hello world" program by creating a new project, but that isn't programming.
he_the_great
If they're truly a beginner, the IDE does almost nothing for them anyway besides setting up a few files. It clearly shows the structure of the "Hello World" program in terms of the files and the skeleton code needed to run it. When you move from "Hello World" to something more complicated, Intellisense is illuminating rather than confusing. It doesn't provide any help programming, it is an extension of your memory, allowing one to concentrate on the programming rather than the details.
Steve
+6  A: 

When I used to teach C & C++ commercially, back in the late 80s/early 90s, we did all our teaching on UNIX boxes, with vi as the editor. A lot of our clients were MSDOS (and later Windows) users. These guys used to have, on day #1 of a 5 day course, to learn the basics of UNIX and the basics of vi, at the same time as they were learning C and C++. They all bitched like mad (and I couldn't blame them) but they all managed it.

Perhaps we expected a lot more of each other back then. Still, we haven't changed genetically in that short period, so if they could learn vi easily then, programmers today can also learn it, without too much trouble.

anon
+1 I've been using vi so long I don't even *remember* learning it. But I definitely used it incidentally, to get the actual work done. I don't remember feeling *that* overwhelmed. Once you learn how to move, how to press escape, and how to press 'i' you can use Vim.
jhs
Also many years later, I did have to use actual `vi` on actual Unix for a training course once. Having only used Vim, I was pretty terrible at vi myself.
jhs
+2  A: 

If you're just starting and you're learning Java, I would go for one of the graphical IDEs. Yeah, something like Eclipse or Netbeans is fairly bloated, but it doesn't change the fact that they make the barrier of entry way lower with suggested error fixes and the like.

vi or emacs in combination with gcc are great, but I would go with something more beginner-friendly to begin with.

Sean O'Hollaren
+2  A: 

If they are beginning to learn programming, it is better to start with a simplae text editor like gedit or geany. But learning to use emacs or vi down the road will be a hugely enlightening experience. It might be be a good idea to learn emacs by using for plain text files (notes, todo lists), so there is not the distraction of learning language specifics.

Raja
+1  A: 

I learned Java using a combination of DrJava, BlueJ and Eclipse. I started with DrJava since it had an interactive Java shell. Then I played with BlueJ and finally Eclipse once I thought I knew enough.

Now that I "know" a couple languages I just use Vim.

Casey
A: 

I don't know about emacs, but I would recommend learning Vim for a beginner in a heartbeat. The vimtutor program is a great way to pick up the basics. It is a bit of effort, but you soon get used to it.

I started using Vim when I was learning HTML, and it was a massive improvement over something like Notepad. It soon replaced nano as my command-line text editor of choice in Ubuntu as it's easy to navigate around fast with Vim. Then, I decided to learn Python and I found it was easy to get started with it because I was already familiar with Vim. Now I'm learning C and it's great to have an editor I'm already familiar with as it means I don't have to worry about getting used to a new IDE or text editor. This means there's less work for me to do.

I've found knowing how to use Vim gives me a significant productivity boost over any other editor I've used. The only downside is the key bindings get burned into your brain, to the extent that I keep reaching for Escape when I want to move around in a Word document!

mattbd
+1  A: 

I'd recommend Vim for anyone working with a text editor, but not at the same time as learning programming.

Leonid Shevtsov