Call it a back-to-basics movement or simply professionals seeking the best tools to get the job done well and on time. With enterprises putting a premium on productivity, a quiet revolution among programmers is eschewing the heavy, feature-filled IDE and turning instead to the venerable standby: the code editor. Developers seek more control over productivity with an old programming tool standby.
One has to wonder about how productive OOPS environments make a developer, as opposed to environments were all the stages are broken out individually?
i want code completion though.
too bad i use vi
There is little reason why vi/scite/emacs don’t have proper code completion. Perhaps the biggest reason is that nobody out there has developed a comprehensive code-completion library that people could plugin into their editors.
yeah i keep thinking i should write one…
but i am too busy with studies.
-hugh
I learned programming during the MSDOS era, using the Turbo Pascal/Turbo C IDE, so i wont use anything crappier than that like vi (blahhh) or even emacs, not to mention all the makefile crappiness that i just don’t want to waste time with.
Link is broken. Something about lack of authorization.
just because a tool is diffrent than what you use does not make it crappy.
vi is a very good code editor, emacs….well it is good to, but the feature set is a bit much, they could have turned that sucker into an OS if they kept going.
Oh, please, please, pretty please, will Borland finally back Brief? For those who don’t know, it was a DOS based editor that did things that other editors still can’t do. Borland bought it and killed it. It made vi seem ham-fisted.
>just because a tool is diffrent than what you use does not make it crappy.
It was what I used around 1993/1994, even before i went to university. It’s just that i find it funny that people prefer vi or emacs to kdevelop or visual studio. Maybe that’s why many gui apps in linux print debug info to the console… because programmers use some 1337 editor that doesn’t even have a debugger.
Surprised they didn’t mention jEdit. I just tried it again recently and am really impressed. It is _very_ zippy (almost unbelievable for a swing app ) and has a very cool array of plugins that can build it up to IDE functionality. Really impressed for Java dev – it may wean me away from Vim (especially if the Vimulator plugin matures).
No debugger? Ever heard of gdb? You can easily invoke gdb inside vim or emacs.
As far as makefiles go, you can use automake and autoconf to pretty much write them for you.
Doh. Was that written 10 years ago?
Many programmers seems to be very conservative people, especially the Unix and Linux ones. Many seem to fear new ways and stick to the old. I have seen several people that claims that they don’t use anything other than vi/emacs/whatever because that’s what they always used. I like to think that I’m a developer but I really don’t understand the fear of new things. I will never replace my IDE, Intellij IDEA, with a simple, plain code editor. How can programming move forward when so many cling to the past?
Also, after reading the article, people claim that mousing slow they down. I would really like to see what they’re coding. Is it so trivial that it doesn’t require any thinking pauses at all?
Maybe that’s why many gui apps in linux print debug info to the console… because programmers use some 1337 editor that doesn’t even have a debugger.
No, the reason is that debug info on stdout/stderr can be easily redirected into a file for later analysis. Very useful for those pesky bugs which show up only once in a week (or once every four weeks).
It’s just that i find it funny that people prefer vi or emacs to kdevelop or visual studio.
Because vim/emacs are better editors, and most serious programming consists of entering and changing text.
And similar, once you have a complex project, Makefiles (Jamfiles, Antscripts, whatever) are easier to manage than a GUI build environment (most IDEs I encountered fall flat on multi-stage or automatic builds).
But as every pragmatic programmer knows: which tool you wield is far less important than how well you wield it (and how well it is suited for the job).
How can programming move forward when so many cling to the past?
That is like asking ‘How can woodworking move forward when so many still use old-fashioned hammers to drive nails into wood?’
To improve programming, we need new concepts, not just new tools.
Also, after reading the article, people claim that mousing slow they down. I would really like to see what they’re coding. Is it so trivial that it doesn’t require any thinking pauses at all?
never used vim or emacs before have you.
if you can type as well as many programmers can, then mousing does slow you down, so they use an editor that you never have to stop typeing. your fingers are always on the keyboard on the ANSI symbol buttons, and the shift, ctrl, and at keys. that is it, all menues, functions, and navigation is done from the letters onthe keyboard, all you need to do is switch modes from controling to editing which is s very quick key stroke.
Hello,
as a programmer I can say that most (all?) of current IDE are bloated.
Or, worse, they force you to do thing in a specific manner.
You can not also mix an IDE with a quick code editor or work in two places for example.
What in the world is global search and replace? It’s called a Rename refactoring. And dont tell me any text editor can be faster at refactoring – let’s say simple rename method – than IntelliJ. I would be curious to see how you do an Extract Interface + replace all classes references by interface references with vi 😉
>”if you can type as well as many programmers can, then mousing does slow you down, so they use an editor that you never have to stop typeing. your fingers are always on the keyboard on the ANSI symbol buttons, and the shift, ctrl, and at keys. that is it, all menues, functions, and navigation is done from the letters onthe keyboard, all you need to do is switch modes from controling to editing which is s very quick key stroke“.
You make it sound like programmers are robots that just type suff all day long . I can only speak for myself, but I also spend time examining my code, using the mouse to scroll around, using the IDE sidebar to change between the all the project files or classes.
Also using the mouse frees my left hand so I can scrach my hair when im just stepping through debug breakpoints hunting for a bug.
All you Visual Studio guys (and the like) have no clue. You are what the marketing guys refer to as a “target audience”. You have been brought up with Microsoft mentality that gui’s make everything better. Therefore they make pretty editors w/ lots of point and click and sell the idea that you can’t live with out the graphical debugger, and you buy it (for lots of money). Problem being that you need a p4 3Ghz cpu and 1G of ram to use these IDE’s and btw they happen to choke when you try and manage more than a few dozen files.
Well these visual development environments are nice but text editors like vim and emacs in conjunction with the shell offer developers much more power. vim and emacs offer speed that can’t be matched with a visual ide because in the time it takes to remove your hand from the keyboard, use the mouse to highlight text or navigate some windows then return to the keyboard the same can be accomplished in vim or emacs with a few keystrokes, not bad eh? But what about vim and emacs “don’t to this” or “can’t do what my slow visual IDE does”? Enter the shell. The shell enables developers to create their own tools (commands, pipelines and scripts) rather than being stuck with what someone else gives you.
In the end it comes down to thinking for yourself versus having something else do the thinking for you, I prefer to think for myself.
I do most of my programming in emacs, I find it very well rounded for all of my editing tasks. It knows about more text file formats than any IDE I know of. It knows how to indent code better than most IDE’s do.
What I hate most about IDE’s is that they try to own your source files. Most seem to have a notion of a project that requires that they copy your source code into some directory to be used exclusivly by them. It would be more useful to have the notion of a “session” rather than a “project.”
I want to be able to pick and choose what tools I use. IDE’s try forcing you into a commitment, and try imposing their world view on your development techniques. On the other hand, what does Emacs care if you poke around in some files with vi?
Until now, I thought I was a dying breed. Someone who enjoys crafting my OWN Makefiles, writing GUIs with CODE instead of the pointy-clicky method. Emacs is you friend. DIE VI!!! (j/k).
As soon as Borland, Microsoft and other pointy-clicky companies can createa utilitarian tool like CodeWarrior, Emacs, XCode or Komodo, they might just pull through.
*cries with joy*
matt
Let me just give NetBeans an honourable mention. It is the best of the pointy-clicky IDEs and does let you ignore the GUI designer, code templates and so-on if you wish.
I love the IDE from turbo pascal and turbo c++, borland did a great job with them.
I don’t know about the other guys who use vim, I use it over VC because I really don’t like the compiler that much. I can get the same code compiled with gnu gcc and have a smaller executible than with vc out of the box. Plus I spend more time with a command terminal window open these days
I also was looking for a reference to jedit. I absolutely love this editor…it is a very small download (< 2 meg) but can be extended by the use of plugins. It can be anything from a plain text editor, to a full-blown IDE or anything in between. And best of all, it is free with development ocurring every day.
-G
hey, I did not intend to make programmers sound like robots, I know that Programmers spend 80% of their time writing reports and code graphs, going to design meetiings, and other crap that is boring as hell.
but when you get down to the coding, Bash plus emacs/vim is by far more powerful and productive than VC.
besides, I can scratch my hair and examine my code with VIM as well, you only need on finger to scroll down the file :-p
All you Visual Studio guys (and the like) have no clue. You are what the marketing guys refer to as a “target audience”. You have been brought up with Microsoft mentality that gui’s make everything better. Therefore they make pretty editors w/ lots of point and click and sell the idea that you can’t live with out the graphical debugger, and you buy it (for lots of money). Problem being that you need a p4 3Ghz cpu and 1G of ram to use these IDE’s and btw they happen to choke when you try and manage more than a few dozen files.
I’m employed. I make a good living. I love programming.
What am I clueless about exactly ?
Oh you mean I don’t care to use some archaic crap from 10 years ago to write my code ? Being clueless must be bliss then.
If I want to dick around with code editors that resemble edlin I’d still be programming DOS. Screw off.
Maybe that’s why many gui apps in linux print debug info to the console… because programmers use some 1337 editor that doesn’t even have a debugger.
Ever tried login in and run a program from a line printer?
Well, this may sound strange to very many ears, but I think there’s one little thing that vi(m) does so much better than Visual Studio. Help for reading an existing source file (or collection of) is much better in vi (in the form of tag stacks). If you try the same thing with Visual Studio, it’s possible, but you can’t “jump back” automatically — you have to bookmark the location before jumping to the definition to a function/class/struct (or am I missing something here?). And if one is used Ctrl-] and Ctrl-T, the VStudio approach is absolutely impossible to bear.
That’s one of the main reasons I use VStudio with Vim as an editor.
I think that something akin to BeIDE but with more features, especially for projects where more than one person is on would be the best environment ever. I currently use Emacs and nmake/make but the lack of integration with graphical debuggers in this combination creates a little bit of annoyance.
I learned programming during the MSDOS era, using the Turbo Pascal/Turbo C IDE, so i wont use anything crappier than that like vi (blahhh) or even emacs, not to mention all the makefile crappiness that i just don’t want to waste time with.
You can’t handle advanced build systems with IDE’s. For example, I recently tried experimenting with writing a raycaster for GameBoy Advance. The code was very heavily dependent on lookup tables, which had to be stored in ROM (very little RAM on the GBA). The size & values of the tables were very dependent on the parameters of the casting engine. i.e. fixed point precision, field of view, viewport size.
Here’s the build system I made. tablegen.c was compiled into tablegen.exe using OpenWatcom. That file was then run to generate tables.c. tables.c was then compiled with gcc for the GBA. All constants that would effect the generated tables were stored in an include file used by both the engine and tablegen.c. The makefile to automate all of this took maybe a minute to write. I’ve never seen an IDE that could handle a build process like that without me having to write the makefile.
Ok, I’ve been programming for some time. I went through about a one year stage with emacs and my primary editor, and a two year stage with vim as my primary editor. That said there are many either misconceptions about the extensibility of these editors, or simply people ignorant of what people actually mean when they say extensible. For example:
http://www.vim.org/scripts/
You will find scripts/plug ins for source browsing (ala eclipse), graphical cvs integration, tab completion that searches included libraries and buffers, and pretty much anything you can imagine. My own vimrc is pages long, and I consider my vim to be a farely full featured coding environment.
That said, now adays I mostly code in java. And imho, nothing beats eclipse ide for ease of use, integration, and project management. There’s no question in my mind, when I’m doing java, that I use eclipse over vim or emacs. Built in source control, completion, javadocs, refactoring (e.g. you rename a class and it automatically renames all references to that class within the project, packages, etc.. a slightly harder problem than the grep search/replace vim source browsing is usually implemented with).
IMHO as project size and complexity increase, the majority of time in code construction isn’t in moving around within or editing large blocks of text (i.e. vim kicks ass here). Rather, it’s the tedious code generation, refactoring, and consistency checks, and project integration that IDE’s are very well suited for. They are tailored to a specific type of project, and make managing their type of project very easy and seamless.
No I would not edit a bash script or perl script or small c project with eclipse or visual studio. But small projects are not the “target audience” for ides. They allow easy, documented, and uniform (i.e. if everyone in your company uses the same ide or editor, then changes in the software process are seamless and standardized) construction for large projects. Also, for gui building, which is a tedious part of any desktop/web project, nothing can compare to an ide like visual studio: bound to one archetecture, but damn near flawless at conforming to it and constructing for it.
Now even though I do use IDE’s, I hardly consider myself “clueless”. IDE’s offer an easy, standard interface for constructing certain types of projects, and editors like vim
offer the pure speed that can’t be found this side of a mouse. I use both. But the only “clueless” people are those that don’t see both have uses.
PS: By ,many definition Emacs IS an operating system.
I am a firm believer in the concept of the right tool for the right job. We see this type of thing every few years in programming, and I attribute it to an ebb and flow in the education/skill levels of the programmers at the time.
Whenever we have an ‘innovation’ in programming techniques, IDE’s or some other part of the programming experience. The new younger programmers are all taught the ‘new way’, often before the ‘old-style’. Visual programming was a great example of this. As their skills increase, they want more and more control over their programs, using lower and lower level tools as they go. Others see the results and want to do the same, until all the frontline programmers are basically back at using low-level tools, and teaching the nubes likewise… Right up until another ‘innovation’ comes along and resets the whole process.
You can see this with other types of coding too. While I don’t consider this programming, lots of web designers are throwing frontpage/composer/any other tool away in favor of the old standard notepad, especially those who use large amounts of javascript.
There are certain things I like in an IDE. Color Coding, Direct link to the compiler and maybe a debugger from the menu. Anything more complicated than that just slows me down, but then, for some reason I can’t seem to LEARN visual programming. It’s like I have a strange mental block in that department and am unable to grasp the concepts. The closest to visual I can understand is the old Borland OWL with the resource workshop, which is why I use the latest compilers from either my own custom IDE or from the command line. I can’t use the VCL from inside the Delphi/Kylix interface, and instead have to code everything manually.
Maybe I’ve just been in it for too long. When one learns programming by hand-assembling machine code for a Intel 4040, entering the code 8 bits at a time with toggle switches and a push button, point and click seems a bit…
Lacking in control.
Bring back QEdit! (or Semware Edit Pro as it was later known as).
there has never been an editor like it since…
i did all my code bashing in qedit/tsm
On a side note, is there any IDE or debugging tool which has powerful multi-threaded debugging features for the Java platform? I just recently finished my SCJD project, and I was pretty bombed out from using the JDeveloper integrated debugger. Any sugggestions?
Cludwin, I agree that a lot of the people bashing text editors don’t know what they are talking about, but you sure don’t either.
If you need to use the mouse for anything when using Visual Studio, it’s your own damn fault. There’s not a thing you can’t assign a shortcut to, and there’s even a command line interface built into the IDE, which let’s you CLI your way around if that’s your bag.
As for the other people mentioning stuff like “it chokes on more than a few files”, that’s also wrong. I am working on a project right now that has around 10.000 files, and that’s no problem at all.
As for pigging out on system ressources, that’s true, but to a certain extent: so what? If you get something in return, that certainly doesn’t bother me.
Use what suits you. There’s no right or wrong.
Yes there is. Eclipse has a very powerful java debugger. With the c/c++ plugin you also get a great multithreaded c++ debugger that uses gdb (which means you can remote debug embedded apps on so on). With eclipse (and kdevelop from cvs to a lesser extent) its possible to remotely debug an application running on an actual gameboy advance, which is pretty amazing to see in action.
I was just discussing this with some people on IRC, and here is an article on OSNews about it.
I worked for years with IDEs and these days use only gnu emacs (from cvs). It’s powerful, fast, and yes! Even pretty:
http://theoretic.com/mike/coding-two.png
http://theoretic.com/mike/coding-gnu-emacs-cvs.png
I find that I work faster, better, and can go for longer when using these tools.
Now, mind, I wouldn’t use them for writing Windows software. On Windows, unfortunately the underlying framework is so massively bad that you need an IDE to write gobs of boilerplate for you, or you need the frameworks (VCL, MFC, ATL) they provide and are normally integrated in order to get any work done. The same is not true on Linux, where the frameworks and APIs are usable “raw”.
To those using gedit, KDevelop etc – put some hours into emacs and you’ll be amazed at what it can do. I spent last night on a “feature binge”, which I do occasionally. I trawl the manual, http://emacswiki.org/ etc and find useful additions, plugins, tips, features and tricks that can speed me up. I have to second the “order of magnitude” comment – when I can, I use emacs.
At the end of the day, coding is mostly manipulating text.
Finally, for those who like it you can get IDE features too:
http://ecb.sourceforge.net/screenshots/1.png
http://theoretic.com/mike/coding-gdb-tooltips.png
thanks -mike
It’s funny how the world is either black or white to so many extremists. Vi vs Emacs. IDE vs Text editor. For those of us that are pragmatists we can use kdevelop with vim as the editor. Wow what a concept. That gives us the best of both worlds.
nedit
I tried using/liking vim (though didn’t go as far as gaboo) but kept finding myself spending too much time looking up which-key-does-what — sometimes even screwing up a file from a mistyped command.
I used SlickEdit for a while, and the only thing I miss is that nice browsing feature that shows all the functions (and other objects/definitions) in a separate pane — and lets you double-click to go to that object. Also, the “search all files in your project” feature (and double-click to go to what you found) was nice too…
Still, nedit is simple, fast, and a pleasure to use.
Since 1986 I have had nerve damage in my right hand and wrist (not carpal tunnel, broken glass). For me, hands on the keyboard is not the fastest method – left-handed typing and a rich mouse interface for the right hand is best, as I can use both at once. Occasional all-keyboard support may be needed, but isn’t as necessary.
Is there a code editor that will work with powerful mouse support? Long ago the Oberon System worked very well for me, but it doesn’t support any language that I currently use (a long list, not currently including Oberon). How good is emacs or vim at being controlled by a mouse and menus? I work cross-platform, so platform-specific tools are out – no TextPad, KDevelop, gedit, XCode, etc. Should I be using Eclipse instead?
Poke around http://www.kinesis-ergo.com/ and see if there’s anything appropriate for you. I don’t have any injuries, but I bought their contoured classic and am *very* happy with it (yay dvorak!).
Is there a code editor that will work with powerful mouse support?
My guess is that you don’t want a console-based editor (like vi/vim or emacs).
I’ve a hunch that you want something like nedit on X windows. X windows is *very* configurable, and you should be able to configure it to do any number of things with your clicks from multiple mouse buttons/wheels. There’s gotta be some way to have X tell an X client (eg. nedit) what you want done with those messages… (Though, I don’t know enough about X to instruct anyone.) The XFree86 faq is a good place to start.
As for cross-platform,.. dunno. Maybe run cywin + cygwin’s X on Windows?
> Oh, please, please, pretty please, will Borland finally back Brief? …
I don’t think they will. But all is not lost; I found Visual SlickEdit years ago, and its been my editor of choice ever since. It emulates Brief, Emacs, vi, and a few other editors.
With Brief emulation, color coding, DIFFzilla (code diff + merge), and multiple platform support, I am a happy camper.