What's your opinion about IDEs vs text editors?

Hello guys, I’ve recently came across different points of view concerning IDEs: there are people who find that they are bad or at least unnecessary, and there are people who find that they are good or even indispensable. The only two arguments I found favorable to IDEs say that IDEs help people code faster and, in some cases, they are indispensable tools because you can’t properly program without it in some languages, like Java. But then I found some people arguing that if a language needs an IDE to be used this is a sign that this language is a bad programming language in the first place. According to these people, a good programming language shouldn’t require an IDE to be used efficiently. People complain that IDEs are bloatwares, resource consuming, and they get worse in every release. When working with projects, IDEs tend to add a bunch of useless information, hidden files and metadata. IDEs has their own work flow and particular ways of doing things, there is no space for creativity and over time you become passively tied to what these softwares offer you. I found a lot of people saying that they prefer to stick with lightweight and versatile text editors, like VIM, EMACS, Sublime etc, and the basic tool chain, so they know exactly what they are doing, they have more control over what’s happening and there is more flexibility the way things can be done. VIM and EMACS are not considered IDEs in a pejorative way, although they can have IDE features, because they don’t have the bad qualities of monolithic bloatwares like Eclipse and Visual Studio, and they don’t force you to develop bad habits, hence they are primarily considered lightweight text editors. Here are some articles I’ve been reading recently:

http://java.dzone.com/articles/ide-bad-programming-language
http://michaelochurch.wordpress.com/2013/01/09/ide-culture-vs-unix-philosophy/
http://blog.sanctum.geek.nz/series/unix-as-ide/

What’s your opinion about that? What do you thing about the use of IDEs?

I avoid IDEs.

A problem that programmers can run into is that whenever they read the code, they read what they intended to put there rather than what is actually there. IMO, the use of an IDE makes it even easier to deceive yourself in that way. I prefer to see the raw text.

On Fri 21 Feb 2014 02:56:01 PM CST, nrickert wrote:

renatov;2626259 Wrote:
> What’s your opinion about that? What do you thing about the use of
> IDEs?

I avoid IDEs.

A problem that programmers can run into is that whenever they read the
code, they read what they intended to put there rather than what is
actually there. IMO, the use of an IDE makes it even easier to deceive
yourself in that way. I prefer to see the raw text.

Hi
I use medit most of the time, had a play with anjuta for awhile. There
is also scite which I use which has more features.


Cheers Malcolm °¿° SUSE Knowledge Partner (Linux Counter #276890)
openSUSE 13.1 (Bottle) (x86_64) GNOME 3.10.2 Kernel 3.11.10-7-desktop
If you find this post helpful and are logged into the web interface,
please show your appreciation and click on the star below… Thanks!

On 2014-02-21, renatov <renatov@no-mx.forums.opensuse.org> wrote:
> What’s your opinion about that? What do you thing about the use of IDEs?

My belief is: use what works. Life’s too short. I think IDEs are bad for newcomers to programming because they usually
impede understanding by hiding important details (e.g. concerning linking), they lock-in programmers to particular
packages, and can make it difficult to switch environments if you ever wanted to.

On the other hand emacs and Vim are poor choices for text editors to newcomers. There’s no point multiplying learning
curves when the focus should be on learning to program. I encourage newcomers to use kate (in KDE) or gedit (in GNOME).
If they want to switch to something else afterwards, then that’s fine.

Personally I use only Vim and loathe IDEs. I can understand why an advanced or professional programmer might want to use
an IDE, especially when collaborating with other programmers on a common project. But I also believe that such a
programmer should have the ability to code comfortably outside an IDE should the need ever arise.

I only occasionally dabble in programming, mainly Qt4 and sometimes FreePascal for console programs, and I always use the Kate text editor. Way back in time I tried KDevelop, but it took too long to figure it out, it was just easier to use Kate. For me with my limited programming skills, IDEs just made things more difficult.

On 2014-02-21 17:05, flymail wrote:
> On 2014-02-21, renatov <renatov@no-mx.forums.opensuse.org> wrote:
>> What’s your opinion about that? What do you thing about the use of IDEs?
>
> My belief is: use what works. Life’s too short.

I agree :slight_smile:

> I think IDEs are bad for newcomers to programming because they usually
> impede understanding by hiding important details (e.g. concerning linking), they lock-in programmers to particular
> packages, and can make it difficult to switch environments if you ever wanted to.

You have a point there.

> On the other hand emacs and Vim are poor choices for text editors to newcomers. There’s no point multiplying learning
> curves when the focus should be on learning to program. I encourage newcomers to use kate (in KDE) or gedit (in GNOME).
> If they want to switch to something else afterwards, then that’s fine.

You also have a point there :slight_smile:

> Personally I use only Vim and loathe IDEs. I can understand why an advanced or professional programmer might want to use
> an IDE, especially when collaborating with other programmers on a common project. But I also believe that such a
> programmer should have the ability to code comfortably outside an IDE should the need ever arise.

I have used both methods. I started using IDEs with Borland Pascal and
Borland C, and I found those very comfortable. I like features like
launching the build, get errors, and the editor goes to the exact line
and word where the mistake is. It wastes less time.

I also like integrated debuggers on the IDE. you can single step code,
insert break points, go to a certain line, inspect variables… It makes
life easier.

I also like the integrated help, help on the language features, help on
library functions.

Computers should help people… even programmers.

When I switched to Linux I missed those things. I programmed less.


Cheers / Saludos,

Carlos E. R.

(from 13.1 x86_64 “Bottle” (Minas Tirith))

renatov wrote:
>
> Hello guys, I’ve recently came across different points of view
> concerning IDEs: there are people who find that they are bad or at least
> unnecessary, and there are people who find that they are good or even
> indispensable. The only two arguments I found favorable to IDEs say that
> IDEs help people code faster and, in some cases, they are indispensable
> tools because you can’t properly program without it in some languages,
> like Java. But then I found some people arguing that if a language needs
> an IDE to be used this is a sign that this language is a bad programming
> language in the first place. According to these people, a good
> programming language shouldn’t require an IDE to be used efficiently.
> People complain that IDEs are bloatwares, resource consuming, and they
> get worse in every release. When working with projects, IDEs tend to add
> a bunch of useless information, hidden files and metadata. IDEs has
> their own work flow and particular ways of doing things, there is no
> space for creativity and over time you become passively tied to what
> these softwares offer you. I found a lot of people saying that they
> prefer to stick with lightweight and versatile text editors, like VIM,
> EMACS, Sublime etc, and the basic tool chain, so they know exactly what
> they are doing, they have more control over what’s happening and there
> is more flexibility the way things can be done. VIM and EMACS are not
> considered IDEs in a pejorative way, although they can have IDE
> features, because they don’t have the bad qualities of monolithic
> bloatwares like Eclipse and Visual Studio, and they don’t force you to
> develop bad habits, hence they are primarily considered lightweight text
> editors. Here are some articles I’ve been reading recently:
>
>
> http://java.dzone.com/articles/ide-bad-programming-language
> http://tinyurl.com/bgkufov
> http://blog.sanctum.geek.nz/series/unix-as-ide/
>
>
> What’s your opinion about that? What do you thing about the use of IDEs?
>
>
You can learn to code using “basic” editors but if you want to develop
huge applications it can become quite frustrating with simple editors if
you want to:-

==>Compile and run/execute code on the fly.
==>Formatting code
==>Lookup code using references.(in eclipse you can find references to a
piece of code by simply right clicking )
==>Search through entire project for a piece of information
==>Auto-completion of code.
==>Managing API jars etc in case of Java/j2ee. A typical project has 3
or more API libraries in addition to JRE libraries. Putting them in
classpath is a pain.
==>Debugging code
==>Using Profiling mode inorder to check for memory leaks. etc etc…


GNOME 3.10.2
openSUSE 13.1 (Bottle) (x86_64) 64-bit
Kernel Linux 3.11.6-4-desktop

Some languages lend more towards IDEs while others are just fine being done in a text editor.

At work I use Visual Studio when I’m working with an ASP.NET Intranet site. It is just a lot easier for debugging, compiling and publishing and the features like color syntax, intellisense and code completion helps tremendously since it could be months between times I am working on a project with the website. I avoid using the GUI and drag-and-drop controls, preferring to hand-code the pages myself for most cases.

Meanwhile, at home I have a couple of PHP-based websites (web apps?) and juggle between Windows and Linux in development.

In Linux, I haven’t found or gotten used to an IDE that I like, yet. One problem I find with various IDEs is that they either do stuff for you (injecting code or provide a visual means to hide the actual coding parts) or add additional files (such as solution files) and ultimately any IDE is going to take time to find out how it works and what it is capable of doing.

Surprisingly one IDE that I have found most comfortable in PHP development has been WebMatrix (3+), which is only available for Windows. It makes it easy to open an existing site (locally or remotely), store your website anywhere (handily in a synchronized folder with Dropbox or SkyDrive for instance), easily sets up everything with IIS so running/debugging the site is a snap, and provide publishing. Unfortunately it does add a few extra components (web.config file for database connection strings) that I have to work around (rewrite the code in, remove it from the site, etc.)

Ideally, I would prefer a solution that is cross-platform so I can use the same application in all of my systems at home consistently. The best I have been able to do in that sense is using ShiftEdit or src:kit sites/Chrome extensions so that I have it available in any of my Chrome/Chromium browsers regardless (including my Chromebook).

As for IDE vs editor, depends on the language and developer’s skill. For compiling and more complicated languages (like .NET), I prefer an IDE to help me along. For scripting language, such as PHP, a text editor with some features is very nice.

As KDE user I use Kate

On 2014-02-22, vazhavandan <vazhavandan@no-mx.forums.opensuse.org> wrote:
> You can learn to code using “basic” editors but if you want to develop
> huge applications it can become quite frustrating with simple editors if
> you want to:-
>
>==>Compile and run/execute code on the fly.
>==>Formatting code
>==>Lookup code using references.(in eclipse you can find references to a
> piece of code by simply right clicking )
>==>Search through entire project for a piece of information
>==>Auto-completion of code.
>==>Managing API jars etc in case of Java/j2ee. A typical project has 3
> or more API libraries in addition to JRE libraries. Putting them in
> classpath is a pain.
>==>Debugging code
>==>Using Profiling mode inorder to check for memory leaks. etc etc…

I don’t know what you mean by lookup code using references', piece of information’, or `API jars’, but the other
things are mention are not only trivial but actually easier with Vim using the appropriate plugins and .vimrc
customisations.

Thank you so much for all your replies! OpenSUSE community is great, you guys pointed out some intelligent things that made me think a lot. I’m currently keen to abandon IDE style programing and stick with a set of specific tools to accomplish specific tasks. Right now I’m just developing in script languages (mainly Python and Web Dev languages) and I feel that Eclipse is just getting in my way. I’m also reading this article and I’m finding it fantastic so far:

http://blog.sanctum.geek.nz/series/unix-as-ide/

Sorry, I don’t think I understood, could you please give me an example of how an IDE could deceive the reading of a code?

Could you please explain why do you think an advanced or professional programmer might want to use an IDE? (excelent advices, by the way!)

Oh, that’s what I was about to ask. Additionaly, I would like to add a question about what’s your point of view of using multiple tools instead of an integrated environment. I mean, all these features you mentioned couldn’t be done by a single text editor like Sublime Text, whose only purpose is to edit the code, but there are single tools to all of the other features (or some workarounds using a terminal): easy linking/compilation, searching/formating throught an entire project with regex, documentation, debugging etc… do you think it’s a good idea to use a set of specialized small tools (like the Unix style of functioning) or would be better to use a single integrated environment that does everything for you? (ps: I’m not considering the possibility of ever programming in Java)

flymail wrote:
> On 2014-02-22, vazhavandan <vazhavandan@no-mx.forums.opensuse.org> wrote:
>> You can learn to code using “basic” editors but if you want to develop
>> huge applications it can become quite frustrating with simple editors if
>> you want to:-
>>
>> ==>Compile and run/execute code on the fly.
>> ==>Formatting code
>> ==>Lookup code using references.(in eclipse you can find references to a
>> piece of code by simply right clicking )
>> ==>Search through entire project for a piece of information
>> ==>Auto-completion of code.
>> ==>Managing API jars etc in case of Java/j2ee. A typical project has 3
>> or more API libraries in addition to JRE libraries. Putting them in
>> classpath is a pain.
>> ==>Debugging code
>> ==>Using Profiling mode inorder to check for memory leaks. etc etc…
>
> I don’t know what you mean by lookup code using references', piece of information’, or `API jars’, but the other
> things are mention are not only trivial but actually easier with Vim using the appropriate plugins and .vimrc
> customisations.
>

Most of examples are Java/jee specific and are from eclipse.

Here is type hierarchy lookup image. Shows hierarchy of classes and
interfaces
http://rayfd.files.wordpress.com/2007/05/ctrl_t_once.jpg

Method call hierarchy
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.jdt.doc.user/tips/images/call_hierarchy.gif

Configure multiple JRES and use different ones in different projects

http://android.okhelp.cz/wp-content/uploads/java-jre-definition-eclipse.png

You can search for getCustomer method or constructor or Class/type or
variable/field. Additionally you can do this search across multiple
projects or a single project by defining working sets

http://i.stack.imgur.com/L7WBT.png

Search for type/class(business logic)
http://www.pleso.net/media/images/2008-3/cs-t.jpg

Search for resources(classes/js/images/pdfs/xmls/property files etc)
http://rayfd.files.wordpress.com/2007/05/ctrl_shift_r.jpg

Choose and export certain libraries/jars alone when deploying into server

http://img163.imageshack.us/img163/5324/eclipseexternallibrary2.png


GNOME 3.10.2
openSUSE 13.1 (Bottle) (x86_64) 64-bit
Kernel Linux 3.11.6-4-desktop

On 2014-02-22, renatov <renatov@no-mx.forums.opensuse.org> wrote:
> Could you please explain why do you think an advanced or professional
> programmer might want to use an IDE? (excelent advices, by the way!)

There are lots of reasons why this may be the case e.g.

a) Corporate policy (i.e. you have no choice).
b) Heavy dependence of an application framework that is associated with a particular IDE (e.g. Microsoft Visual Studio).
c) Team-based project development involving GUI designers wanting mouse-based inferfaces.

On 2014-02-22, renatov <renatov@no-mx.forums.opensuse.org> wrote:
> Oh, that’s what I was about to ask. Additionaly, I would like to add a
> question about what’s your point of view of using multiple tools instead
> of an integrated environment. I mean, all these features you mentioned
> couldn’t be done by a single text editor like Sublime Text, whose only
> purpose is to edit the code, but there are single tools to all of the
> other features (or some workarounds using a terminal): easy
> linking/compilation, searching/formating throught an entire project with
> regex, documentation, debugging etc… do you think it’s a good idea to
> use a set of specialized small tools (like the Unix style of
> functioning) or would be better to use a single integrated environment
> that does everything for you? (ps: I’m not considering the possibility
> of ever programming in Java)

Again the ideal answer is use what works best for you. It is a matter of personal preference. Again, I wouldn’t
recommend newcomers to programming to use an IDE. But experienced programmers can do whatever they like. If you are
considering switching to a text editor, I would recommend emacs or XEmacs, because their range of associated toolkits is
unmatched. I only use Vim because I previously used vi.

On 2014-02-23, vazhavandan <vazhavandan@no-mx.forums.opensuse.org> wrote:
> Most of examples are Java/jee specific and are from eclipse.

Thanks vazhavandan for taking to time to illustrate what you mean. I confess it will take some time for me to understand
fully what you have shown because I do not know any Java and have never heard to jee! But what your examples may
indicate that the IDE/editor choice is best influenced by the intended programming language as proposed in a previous
post in this thread.

I make your words mine. Thank you so much, vazhavandan!

Do you recommend emacs over vim?

I think one of the considerations in whether or not to use an IDE is the task you are going to have the program perform.

To write a GUI based program to be used where computing speed is not an issue, I would use an IDE and save having to develop and debug the GUI. However, to develop a program where execution speed mattered (the next great bitcoin mining program) then I would not use an IDE.

On some level isn’t Java or any other high level programming language an IDE. :wink: Why not write everything in assembly? Obvious answer to my rhetoric question is: “It is not efficient to do so any more based on the languages and optimizing compilers available”.

On 2014-02-23, J Andrew <J_Andrew@no-mx.forums.opensuse.org> wrote:
> To write a GUI based program to be used where computing speed is not an
> issue, I would use an IDE and save having to develop and debug the GUI.
> However, to develop a program where execution speed mattered (the next
> great bitcoin mining program) then I would not use an IDE.

I disagree. Execution speed of a code is not dependent on your IDE/editor but on your choice of compiler/flags. Any C++
modules I write execute at the same speed whether I compile from command line or from an IDE. If an IDE uses a poor
choice of compiler flags, they can be over-ridden.

On 2014-02-23, J Andrew <J_Andrew@no-mx.forums.opensuse.org> wrote:
> On some level isn’t Java or any other high level programming language
> an IDE. :wink: Why not write everything in assembly? Obvious answer to my
> rhetoric question is: “It is not efficient to do so any more based on
> the languages and optimizing compilers available”.

I don’t know whether Java supports inline assembler; I strongly suspect not. I do know however that gcc is very good at
optimising C/C++ code, but cannot compete against hand-optimised custom assembler at least for floating point
calculations of any substance. Fortunately gcc supports (albeit with an obfuscated AT&T syntax by default) inline
assembler so you’d only have to write speed-critical operations in assembler and the rest in a high level language, so
you can benefit from the best of both worlds.

On 2014-02-23, renatov <renatov@no-mx.forums.opensuse.org> wrote:
> Do you recommend emacs over vim?

This is contentious issue, and a subject of considerable bloodshed. My honest answer is `try both and you decide’.
Unfortunately both have reasonably steep learning curves (Vim moreso) making this option not too trivial. It is a matter
of personal taste, aesthetics, and ergonomics. I could pretend to prefer Vim over emacs for three reasons…

  1. Vim/vi is virtually ubiquitous in the Linux/UNIX world (although some distros dare exclude it!).
  2. It is marginally faster once you are both a fluent 10-figure touch typer and Vim-proficient.
  3. Once you’ve learned not to use the `Esc’ key, Vim causes less finger strain than emacs.

…although the last two issues are however easily resolved in emacs by installing evil'. But the honest answer of why I use Vim rather than emacs is because I've always used Vim/vi and too lazy to try switching. I do use emacs sometimes but can only do so in evil’ mode, so cannot claim to be proficient in emacs. To proficient coders, I recommend emacs
over Vim only because there are many more plugins and extensions probably because emacs’ lisp dialect is much more
extensible compared Vim’s comparatively primitive VimScript.

I think I failed to express myself clearly. I was trying to make the point that any decision about what tool (IDE vs text editor) to use to accomplish a task should be based on what would let you accomplish the task in the most efficient manner.

I was not referring to compiler efficiency, I was thinking about the coding itself. For example, an IDE might only contain normal routines for multiplication and squaring, even if you are using numbers that contain in excess of 3,000 binary digits. You could write your own routine based on Karatsuba multiplication and increase performance by about 40 percent. The time saved is a very small fraction of a second so you will not notice the performance boost unless you are doing millions of these calculations. So if I was writing a routine to let people communicate securely I could use the IDE and possibly develop the routine and nice graphical interface in less time than if I used a text editor to use the faster multiplication routine (of course I could use an IDE to develop the nice GUI and link it to the “hand written” routine) I doubt users would notice a difference between the 2 jobs. However, with respect to bitcoin mining I believe you would be able to detect the added efficiency from using a “hand written” routine.

My above example may not be a very good one, I am not a professional programmer I am a hobbyist.

It seemed to me, that everyone was approaching the choice of IDE vs editor from a programmers perspective. I am trying to present the choice as a business decision to take, rather than a personal preference. Just like you would select a language based on the task you need to accomplish, you should be select an IDE or an editor based on which one is best for the task.

On 2014-02-26, J Andrew <J_Andrew@no-mx.forums.opensuse.org> wrote:
>
> I think I failed to express myself clearly. I was trying to make the
> point that any decision about what tool (IDE vs text editor) to use to
> accomplish a task should be based on what would let you accomplish the
> task in the most efficient manner.
>
<SNIP>
>
> It seemed to me, that everyone was approaching the choice of IDE vs
> editor from a programmers perspective. I am trying to present the
> choice as a business decision to take, rather than a personal
> preference. Just like you would select a language based on the task you
> need to accomplish, you should be select an IDE or an editor based on
> which one is best for the task.

…which of course brings us back to the answer: use what works best for you.

I’m sure I haven’t properly followed your line of argument (e.g. I don’t know what bitcoin mining is). But I think we
can extend the answer by highlighting the following:

  1. You are not restricted in using only a text editor or only an IDE for a specific project.
  2. You are not restricted in using only a single compiler or programming lanugage for a specific project.
  3. You are not restricted in using only a single operating system for a specific project.

I would say its best to avoid them while learning to program as they make it easy to cover up simple mistakes with something that works but isn’t best. You also don’t really get a good understanding of the process it takes to build your applications because all the non programming parts are auto magic. There was alot of people that i was at uni with who struggled with assessment because they were asked about things that normally “Net beans or Eclipse” would do for them.

Having said that once you are a compliant programmer (several years of experience) and understand your system i would highly recommend them for larger projects. I use Qt Creator heavily for Qt and non Qt C and C++ development and the amount of time i am able to save by using auto complete instead of needing to jump in and out of api documentation and looking through other source code is huge.

Having said that Qt is the only ide i have used that doesn’t feel slow and bloated so i tend to use a text editor for all my non C and C++ development.