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.
-
What language are you thinking? – JasonFruit Jul 30 '09 at 18:04
-
Mm probably Java, easier for beginners than C++ – Lucky Jul 30 '09 at 18:05
-
1pretty old question, however my +1. Please teach them Python. I would always prefer along with learning a programming language, programming problems are really needed to be solved for them to grew as good engineers. So Python is very appropriate to learn as a language due to its easy syntax and you can almost do everything with Python. – asyncwait Jan 14 '12 at 16:23
-
1+1 to @asyncwait for suggesting Python as language for learning to program. May I add Ruby as another easy option? There is an excellent book http://pine.fm/LearnToProgram/ (also free online) – rpattabi Apr 19 '12 at 01:31
-
http://learnpythonthehardway.org/ – sjas Aug 31 '13 at 13:23
17 Answers
If they're just starting programming, I'd not recommend VIM to begin with.
- they'll have enough on their plate to begin with learning the ins and outs of programming
- 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.

- 268,207
- 37
- 334
- 440
-
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 Jul 30 '09 at 18:10
-
On the other hand, it will ruin their perception of programming beyond repair. – Stefano Borini Jul 30 '09 at 18:42
-
1I 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 Jul 30 '09 at 21:57
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.
-
+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. – JasonSmith Oct 24 '09 at 14:00
-
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. – JasonSmith Oct 24 '09 at 14:01
-
I did one of those courses - if we did not have to learn vi and all the horrendous change of mode perhaps we could have learnt more C rather than waste half a day on the editor. – mmmmmm Sep 25 '11 at 21:14
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.

- 479,068
- 72
- 370
- 318
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.

- 7,764
- 5
- 46
- 61
People either like vi (or emacs) or hate it regardless of their skill level as programmers.

- 24,346
- 3
- 50
- 88
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.

- 56,771
- 11
- 70
- 62
-
1You think it's harder to learn an IDE than it is to learn emacs?? – Gabe Moothart Jul 30 '09 at 18:30
-
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 Jul 30 '09 at 19:25
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.

- 11,763
- 15
- 70
- 103
-
2I'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 Jul 30 '09 at 18:56
-
2I 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 Jul 30 '09 at 20:51
-
1No, 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 Jul 31 '09 at 01:29
-
3If 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 Jul 31 '09 at 03:12
-
1You can have intellisense (or its close equivalents) in emacs, and no doubt vi. – Marcin Dec 13 '11 at 10:39
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.

- 613
- 7
- 18
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.

- 7,178
- 3
- 20
- 13
Run the vimtutor command. It's an interactive way of learning a lot of useful basics in Vim. Vim is very powerful and efficient. You won't learn everything there is to know about it at once. You'll continuously learn more handy features of it as you continue to use it. If you get the basics down, you'll start spending more time in command mode. Do not use the arrow keys. It may feel awkward at first using hjkl keys to move around, but it will soon feel natural and become faster because your hands do not leave homerow on the keyboard. One of the great things about Vim is the user almost never if ever needs to take his or her hands off of homerow.
As for Java, Netbeans kicks ass IMO. Why shouldn't it? It's made by the same people who developed the Java language. So when I am using Netbeans, I use it with jVi plugin that allows me to work with it just like I were using Vim.

- 21
- 1
vi and gcc, nothing else

- 8,829
- 8
- 31
- 35
-
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 Aug 02 '09 at 14:05
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.

- 48,814
- 22
- 151
- 184
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

- 29,828
- 40
- 114
- 128
I'd recommend Vim for anyone working with a text editor, but not at the same time as learning programming.

- 14,024
- 9
- 51
- 82
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!

- 9,212
- 2
- 42
- 83