I mean if you have access to an IDE, why would anyone use a text editor?
If there's a really obvious answer, please excuse my ignorance. Just started reading up on programming.
P.S. Also, can one use IntelliJ for python and ruby in addition to JAVA?
IDE ostensibly stands for "integrated development environment." AFAIK, not a single IDE is as integrated, programmable, hackable, flexible, or stable as emacs (or vim).
In Emacs, I can effortlessly open and navigate through an indefinitely large number of files. I can take advantage of myriads of language-specific modes for syntax highlighting, auto-completion, snippets, verification, prettification, truly integrated compiler/interpreter environments, you name it.
If I find I need to do some repetitious gruntwork, I can C-x ( gruntwork C-x ) it away. If this gruntwork seems excessive, I can program it into my editor and forget about it. If I find I really need some feature or functionality, I can pop open a scratch buffer, hack it, and use it instantly. No boilerplate, no compiling, no restarting.
These are just the tip of the iceberg, though. The overwhelming sense an emacs or vim user experiences, is one of power. We have complete control over our programming environment. We dictate it, hack it, and tweak it until it is effortless. This sense of power and hackability so permeates our programming environment, that it becomes physically painful to have to navigate a swarm of inconsistent modal dialogues, accept some kludges and pray they get fixed, and accept that The Developers know how best to configure our environment.
It would be enlightening for the wider programming community to see some stats about how fast each truly is. Obviously approaches could be streamlined, and best practice could be learned by beginners from the get-go.
Top emacs/vi users : please list your favourite shortcuts.
But, why would I use an IDE if I have access to a proper text editor like vim or emacs (I use vim, but I've used emacs enough to know I could be productive in it if vim didn't exist)? Your question makes no sense to me.
I've known a (very) few people who are productive in IDEs, but generally speaking, the best developers I've known use either vim or emacs. I've never experienced an IDE that didn't make me angry, so I've never spent any significant time with one, so I don't know what the valid arguments for using them are, though I'm sure there are some.
I'm curious about the framing of your question. What is the rationale behind your question? When you use a big IDE do you feel more productive? Do you just want to avoid learning how to use vim or emacs? What are you trying to achieve here that brings up this question? Do you think an IDE will make learning to program easier?
One of the reasons I've never used an IDE heavily is because I find them very difficult to use and understand. They pile together a bunch of different concepts under one roof, and assume that it fits the work I'm doing. It pretty much never does, so I would just be using it as a big slow editor anyway. The other reason is that whenever I've wanted something IDE-like (like completion, or highlighting and indenting for various syntax, etc.), I've easily found a plugin for vim to do the same job without all the extra baggage.
The answer is generally that IDEs are big, slow, cumbersome and distract from the software you're building. If you're working in a language where the assistive tools are a core part of the experience (Java and C# seem to fall into this category), then maybe you should use those tools. I work in dynamic languages, and big slow editors just get in my way, slow me down, and fight against my own toolchain and workflow (which includes shell scripts, the shell itself, the ability to open and edit files from anywhere, including in-place on the server).
I am not a programmer. I have recently started to learn programming. I was reading up on mediums to write programs in (text editors vs IDEs) and came across all the features provided in IDEs. Which was when I became curious as to why I see a lot more chatter about text editors like vim/emacs instead of the other way around. That's all.
Again, I'm a beginner, so just trying learn the ins and outs. Thanks for your help.
Maybe merely having a lot of features is not necessarily the most valuable thing when writing software. I suspect most truly great developers (I'm not one of those, but I've worked in the field long enough to know them when I see them work) just want the tools to get the hell out of their way. Stability, speed, predictability, consistency, generality; those are probably the most important features for a great developer. I like those features, too, and it's why I use vim.
The greatest Java IDE in the world, whatever that is, is definitely not the right tool for editing files on a remote server. So, I would have to switch mental modes to use it. That would slow me down. I can use vim or emacs for that, no problem.
And, of course, as I mentioned, there is probably no feature in any IDE for which there isn't a parallel in vim or emacs. It is probably optional, it is probably not pretty, and it probably requires you to learn some new key sequences. But, it almost certainly exists, whatever it is. But, after spending a few years with a good editor, you'll probably find that simpler but more general solutions are superior to special purpose tools.
Which was when I became curious as to why I see a lot more chatter about text editors like vim/emacs instead of the other way around.
Age has it privileges. emacs and vi have been around for a long time. Assuming something is good and continues to get better, the longer it exists, the more users it will have. emacs and vi (in the form of vim) are both excellent and continue to get better. Thus they have a very large, very dedicated following. Which leads to faster improvement (though in directions that might not be immediately apparent if big IDE-style feature lists are what you think of as "improvement"), more third party tools and support, and more docs and examples.
You'll never hear any long-time practicioner of software development or systems management say that learning one of the two major editors is a waste of time. Knowing vim or emacs will very likely serve you well for the rest of your career. Knowing an IDE might make working in one language in one environment a little bit more awesome for year or two or three that you work in that language in that environment.
As for your other question, yes, there are ruby and python plugins for IntelliJ. The python one seems new and immature. The ruby one should be better. They (Jetbrains) actually just came out with a standalone Ruby IDE as well. I think it's meant for people not already using IntelliJ, because it wouldn't be worth paying for both products since the Ruby plugin works well enough.
What would an IDE give me that this setup won't? To me, the setup I use IS an integrated development environment.
I have used Visual Studio, XCode, Eclipse, etc. but whenever I do I feel slow and inhibited because of the necessity of mouse movements (unless I want to learn a completely different set of key shortcuts that will only work in the IDE and not the OS) and the annoying tendency of IDEs to reformat my code or complete blocks I'm not ready to complete.
Also, OS X and Ubuntu both allow great control over terminal window transparencies and color schemes. I'm not aware of any other IDE that does. I like to keep my main editing windows at 70-80% transparent so I can watch logfiles/test scripts run in the background while I'm editing.
Also, I find that IDEs hide a lot of the inner workings from you. That can be convenient, but when you run into troubles during a build or when debugging, I'd rather have more control, more details, and a better idea of what's going on.
When I learned java, I broke away from the IDE I was given to use in class and switched to a text editor. I read about command line tools and what a classpath is. I doubt that I would have known about how programming works behind-the-scenes if I hadn't broken away. Many (not all) of my classmates haven't; they rely on the almighty 'Compile' button, don't question it, and won't bother to learn otherwise.
Just last night my plane was delayed due to heavy storms in Europe and as other peoples heavy laptops were running out of juice I still had hours left on my netbook. The command line is a great environment on low power hardware, it doesn't need a mouse and you don't have to wait for IDE support to start working with a new or obscure technology.
That said, I still feel I need netbeans/jvi to do anything with Java -- personally I feel this is due to shortcomings with the language rather than a problem with the way I normally work. In fact, I recently started playing with Scala and, since netbeans didn't really add anything useful, I was able to go back to vim. I feel much more productive in Scala/vim than I ever was in Java/netbeans.
Console or GUI?
The only really good developer I know who prefers Visual Studio to Emacs is the one who prefers TortoiseSVN to svn.exe and just dislikes command line.
However, there are two extremely good reasons to use command line (and emacs/vim):
1. You're typing text when coding or debugging, and going back and forth with mouse is counterproductive and frankly, really irritating.
2. You can automate text-based controller much more easier than a GUI-based one.
So the question comes down to how many code tools do you need. If an editor has too many then it might feel slow, too few and it might be less effective.
Many editing environments have a plugin style extension mechanism so that you can add new tools to it if you need them, or remove them if it feels too heavyweight.
A key difference between say emacs and IntelliJ is that IntelliJ has more specific tools loaded by default (e.g. Java focused). Perhaps not the ones you want, but you don't have to go to all the effort of finding them, loading them and they all fit together well - of course there is a cost that goes with those tools: increased CPU / memory.
When choosing one of these pieces of software it might be useful to look at the range and power of plugins that are available, however, that's not an inherent difference between IDE and editor.
I get so much done in the 2-3 hours I'm at the coffee shop, I also take copious notes in notepad, by the time I come back home I can fire up Emacs and cut and paste tiny little independently developed routines and classes, and orchestrate them to a good chunky module.
I only wish I could get more mileage out of this little brain of mine for more than 4 hours a day. I have to stimulate myself with hackish sub-projects and chase "performance" red-herrings just to keep going.
if you know exactly what you want to do, but still are doing things in code, popping open a file in a good text editor is superior.
if you're looking to open up an IDE and sit down for a few hours' work, then that is probably the better choice.
or, stuff like config file editing. why would i ever open up an IDE for that?
As a side note: I once saw UltraEdit eat a text file my co-worker was editing; once saved as UTF-8 it blew the file away and crashed. Another reason not to use closed-source junk.
I've used both. I like both. If you're new, I'd start with an IDE and lots of online, context-sensitive help.
And an easy language.
Once you get your feet wet writing a few apps, keep challenging yourself by moving to more complex languages and less-visual environments.
I won't call it an IDE because it knows nothing about the types of text you're editing, doesn't do syntax highlighting but it can run a shell in a window, and an HTML renderer and has an email client and a wiki editor and and and