20

I migrated from Windows, and have heard that Linux programmers do not use IDEs to develop programs, something like Visual Studio. Is this saying true? Do Linux programmers use IDE to do pratical development?

Thanks.

Pablo Fernandez
  • 279,434
  • 135
  • 377
  • 622
Jichao
  • 40,341
  • 47
  • 125
  • 198

26 Answers26

39

Even if some real men with beards might say that Emacs (or vi) > Eclipse > Netbeans > all, many users do use IDEs. Actually, the veracity of the previous statement doesn't really matter, just use a tool you're productive with and, ideally, a right one for the job. Here is a quick choice list:

  • Emacs, vi(m): multi-languages, I'm sure they are still used for C/C++ development
  • gedit: multi-languages, advanced text editor, very good for Rails (can be pimped to mimic Textmate)
  • Geany: another text editor based on the GTK2 toolkit
  • Eclipse, Netbeans, Intellij IDEA Java oriented but with nice support of C/C++ (and PHP, Groovy, Grails, Rails)
  • MonoDevelop: for .NET development (i.e. support a bunch of languages)
  • QT Creator: for... QT development
  • Anjuta, KDevelop: C/C++ IDEs for Gnome and KDE (respectively)
  • Code::Blocks: cross platform C++ IDE

As you can see, GNU/Linux doesn't mean coding in a 80 columns shell (potentially opened through ssh). Linux has some kick ass tools too. To be honest, I find that Linux is a much better development platform than Windows: it has many good IDEs which are at least equivalent (except maybe for .NET, I'm not sure that MonoDevelop can compete with Visual Studio), it has much more command line tools, more scripting capabilities, it gives better control... In other words, I feel much more powerful with Linux than Windows.

Olimpiu POP
  • 5,001
  • 4
  • 34
  • 49
Pascal Thivent
  • 562,542
  • 136
  • 1,062
  • 1,124
36

No, it is not true. People just use what they prefer most. The definition of IDE is also a bit weak. On Linux, many text editors are very powerful, for example Emacs. You could perhaps call that text editor already an IDE. Though, to point out a difference, Emacs (and other text editors) were originally made to be very general and write just anything with it, and handy tools/functions for developing C/C++/whatever were added later. And their programming language support mostly* only covers syntax highlighting, not much more.

Applications like KDevelop or Eclipse were initially developed to be a development environment and most of these still have more/better functionality to develop. I call these IDEs.

There are many different IDEs on Linux, some more powerful, some less powerful, some for one specific programming language, some for many different. Depending what language you want to write in, some are better than others.

Also, some are more bloated than others. That is one of the main reasons people just use a text editor because it is very snappy, very stable and very fast.

I'll list some IDEs which I think are the best in term of functionality specific to that language (like code completion and many other stuff).

For C/C++:

  1. KDevelop

    For what I know there is no IDE which has better support for C/C++. I didn't found any other tool which handles C++ in such a way that it really understands STL, which is important that you can use autocompletion for STL containers and such stuff. It even understands macros, so autocompletion even works in very complicated cases with many macro-tricks. I work on a ~250k loc C++ project and it has understood the full code. (To use the extended C/C++ support though, you have to activate it in project settings, it is disabled by default. Also, to have full STL support, I preparsed the STL headers and added that to the C++ support in project settings manually. Don't know if that is still needed. But I guess it still doesn't work out-of-the-box.)

    Also, KDevelop is very snappy and fast (developed itself in C++), compared to many other IDEs. It loads almost as fast as any other simple text editor and feels as snappy as such. And that also doesn't change for very big projects. Whereby I myself just use it for editing/writing the code, not managing the compiling of the project. It has automake support but I prefer to use CMake. But KDevelop works fine with that: when I press compile in KDevelop, it just starts a make.

    Initially, KDevelop was developed as a development tool for KDE applications but it works fine for any C/C++ project. I actually have never done any Qt/KDE project with it. Also, support for other languages like Ada were added later on but I haven't tried that.

    I don't know any other IDE which has better support for C++. Please comment me if I am wrong here. I didn't checked many other IDEs anymore in the last one or two years.

  2. Eclipse

    You probably know that already. Initially it was developed in and for Java. Later, support for C/C++ was added.

    I want to note this IDE because I know many people using it. I am not really recommending it though because I have mostly made bad experiences.

    The C++ support is good, not perfect though; there are cases where autocompletion doesn't work.

    The possibilities and features of the IDE itself are very rich. I don't know many other IDEs which are such big (bloated). That, together that it is in Java, makes it often feel very slow and sometimes hanging while you are writing something. Also the memory usage is very high.

  3. Qt Creator

    Initially for Qt development, but also fine for any other C/C++ projects. Very good qmake support.

    The C++ support is nice, only some smaller problems. Also, the IDE is snappy and fast.

    After all, I found myself a bit too limited in this IDE and the C++ support in KDevelop was still better, so I kept using KDevelop for most C++ projects. But when you do a Qt project, Qt Creator is great because it also comes with some nice GUI builders for Qt and other nice Qt tools.

  4. CLion

    (Commercial, but free version.) A newcomer by JetBrains. Very promising.

For Java:

  1. Eclipse

    See my comments above.

    For Java, I think this is the most common IDE on Linux. The same disadvantages as noted above apply here also but I don't know any better IDE, so I keep using Eclipse when I develop in Java.

  2. NetBeans

    Also in and for Java. Never tried that because it was not really supported in my Linux distribution (I think because of licensing issues, don't remember exactly anymore).

    I have seen many flames in the past about NetBeans-vs-Eclipse. Don't know actually about the current state.

For C#:

  1. MonoDevelop

    Also haven't tried that myself, only have heard that it is one of the best tools for C#. Just wanted to note that because you referred to Visual Studio and you may be interested in C#.

I want to add some words to the usage of the terminal:

In addition to such an IDE, it is very common to use a terminal in parallel to your IDE. The terminal and all its shells together with all the Unix tools and other tools is very powerfull and you can do many tasks in a very simple way. Once you get a good overview over all the Unix tools and how to use them, they can save you a lot of work.

There are often tasks in a project which needs to be done again and again. That can be simple tasks like how you manage your source code and distribute it with your teammates or also more complex tasks.

For example, when you do some server-client work and start perhaps 10 servers and 100 clients on different machines, let them all doing something; then grep the output for some regular expressions and collect all that and do some performance tests over 10 seconds and repeat that progress several times - such things are all trivial once you manage the terminal.

You will find yourself ending up having just several scripts written which do all that for you. Writing such scripts is mostly straight-forward.

This goes perhaps a bit off-topic but I just wanted to have that noted because it is a common and powerfull way to work. When you switched from Windows to Linux as a developer, you should take a look at all those additional possibilities you have now. Those are the main reason for me (and many others) why I prefer developing on Linux/Unix than on any other system.


(*) Again some words to Emacs: Emacs can be extended my many tools and plugins which make it a very rich system with the same functionality as an IDE. For example, there is CEDET which comes with real language support, i.e. you also have features like smart word completion / IntelliSense and also a project management system. I haven't tried it myself but I will do that in the next weeks.

Albert
  • 65,406
  • 61
  • 242
  • 386
  • Yes, I tried Code::Blocks once. It was very buggy and crashed very often at that time (there was one thing where it just always crashed but don't remember exactly anymore). Also, the C++ support was far from perfect (for complex template classes with C++). But that was perhaps 2 years ago. Is it better know? Templates, macros, etc., i.e. also full STL just works without problems for autocompletion and such stuff? – Albert Nov 10 '09 at 12:44
  • Eclipse has always been developed as a language agnostic IDE (Java and the JDT were just the first target). – Pascal Thivent Nov 10 '09 at 13:24
  • 3
    About EMACS, the sentence "And their programming language support mostly only covers syntax highlighting" is unbelievably false. – ntd Nov 14 '09 at 00:01
  • I was refering to text editors in general here. Maybe you can add some links about the C++ language support in Emacs? – Albert Nov 14 '09 at 10:35
  • EMacs and VIM are a lot more than syntax highlight: both of them have (or can have) word completion, different autoindentation styles, embedded help, file browser, folding, project management, enhanced diff ecc... http://cedet.sourceforge.net is one way to do it with GNU Emacs. – ntd Nov 14 '09 at 13:59
  • Autoindention, embedded help, filebrowser, folding and simple word completion is no real language support - at least in my understanding. That are still trivial features most texteditors have. But seems that cedet also have smart word completion (aka IntelliSense) based on real language understanding. That is mostly what I meant. Thank you for that information! Didn't know that one and will try it out in next days. Let's see if it also works in any combination of macros and templates. But I would anyway call Emacs+cedet also an IDE, not a texteditor I was refering to. – Albert Nov 14 '09 at 14:30
  • Autoindention, folding and syntax highlighting need language support, otherwise the result would be quite useless. http://cream.sourceforge.net is a popular extension for VIM that gives similar results. – ntd Nov 14 '09 at 14:51
  • 1
    Netbeans is currently (and easily) winning the speed war against Eclipse. (Disclosure: I use Eclipse.) – Rob Grant Jan 11 '10 at 12:21
  • For Java, you can't beat IntelliJ from Jetbrains IMO. I've been using CLion for several months now and it is just awesome. Since you give such a strong recommendation for KDevelop, I will have to go look at that one. I had previously attempted to use Eclipse for C++ and Java and I found it just plain awful. One day of using IntelliJ and I was ready to never use Eclipse again. – legalize Apr 14 '15 at 18:20
14

There are a large number of IDE's that run on Linux (and other Unix systems) ...

Probably what you heard is related to the fact that the entire Unix system is a kind of a development environment. "Small" programs like id-utils, vi, vim, and emacs, plus the CLI tools, make the entire system into a sort of hybrid development system. The philosophy is quite different from the IDE style, so don't expect to understand it immediately.

I spent a number of years developing Java on Eclipse under Windows, which I enjoyed. But before and after that, I used Unix, NetBSD, and Linux for development. I'm perfectly happy developing C, C++, PHP or Ruby just with vi(1) and the other CLI tools. I've never tried serious Java development on Unix. That might take me back to the IDE's, partly because of the amount of boilerplate needed, and partly because Java has quite elaborate IDE support. But to get the marginal IDE added value for !Java is just not worth the pain or worth giving up the instant-on nature of vi(1) and Terminal and all the other Unix elements, which kind of vanish when you start the IDE.

Once inside the IDE, the outside OS doesn't matter any more. I think, ahem, that's why I liked using the IDE on Win and not so much on Unix. Unix is flexible and fun, and doesn't need to be replaced as an environment.

DigitalRoss
  • 143,651
  • 25
  • 248
  • 329
  • 3
    Wouldn't agree on the 'Once inside the IDE, the outside OS doesn't matter any more'. I use and enjoy my Bash a lot, even if I spend most my time inside Eclipse. – Fabian Steeg Nov 10 '09 at 12:10
  • @Fabian Agreed. I use Eclipse intensively but I can't live without vi, grep, tail, etc (even maven that I prefer to use on the command line) and I would feel naked without these tools. – Pascal Thivent Nov 10 '09 at 12:48
6

We usually write the machine code directly.

Joke.

Plenty of Linux developers use one of the many fine IDEs available for the platform, such as Anjuta, Eclipse, NetBeans, etc. However on Linux you are also more likely than on Windows to encounter developers who program using text editors such as vi or emacs. This is what you may have heard.

ptomato
  • 56,175
  • 13
  • 112
  • 165
6

JetBrains Products are the best. JetBrains

JetBrains Product

Celik
  • 2,311
  • 2
  • 32
  • 54
4

I use TextPad on WINE, but then I'm just weird.

APC
  • 144,005
  • 19
  • 170
  • 281
  • Try notepad++, then put them both off and use kate :) – kolypto Nov 10 '09 at 12:19
  • dude that's awesome, i used textpad in my early C days before switching to linux. – Matt Joiner Nov 10 '09 at 12:35
  • Dear anonymous coward - why the downvote? It's an IDE, I use it when developing on a Ubuntu desktop. – APC Nov 10 '09 at 15:12
  • 2
    The downvote button tooltip says "this answer is not useful". Personally, I don't think knowing what one single stranger on the internet uses is useful toward answering this question. – Bryan Oakley Nov 12 '09 at 16:56
  • 3
    @bryan - my purpose in posting what I did was to remind the OP that they may have the option of continuing to use their favourite Windows IDE in a Linux environment. I took this approach because I needed to maintain my productivity on the Linux desktop, and learning a new IDE would have dented my velocity. If you don't find my personal experience helpful, then you have that right. I just don't like it when people downvote without leaving an explanation. – APC Nov 12 '09 at 17:18
2

I use the GNU Compiler Collection (GCC), VIM, and Perl. The make utility is also something you'll become intimately involved with.

VIM has many plugins to help you with editing and language-specific features. GCC works for many different languages.

Kyle Walsh
  • 2,774
  • 4
  • 27
  • 25
2

I use gVim for just about everything, coding Perl, JavaScript, Java, HTML, CSS ,XML, etc and upload code, run things I need to do directly from Vim, e.g testing HTML in a browser.

Modern gVim is a bit more GUi than vim.

I like gVim because it enables me to do just about everything from the keyboard, if you can touch type that saves you lots of time - while others are looking for their mouse. - if you can touch type, and it loads in a fraction of the time of other IDEs.

Its very flexible so if gVim doesn't do what you want it todo you can enhance it externally (write a small program) or internally (write or use a plugin there are lots)

emacs offers a similar experience.

  • dont use vim use gVim ! vim is for console work. - when you do need it you'll be glad you know gVim

I regularly tried other GUI IDEs and so far have always come back to gVim.

gVim is X platform so you can reuse you skills on Win32 and Mac platforms and those very old crusty Unix boxes that only have vi.

Note: There is a learning curve and you won't get the true "Power" until the commands become second nature and you learn how to use the regular expressions.

This link may help ...

If you are not familiar I suggest using the vimtutor to get you started.

  • try vimtutor from the command line
  • look at the help - :h vimtutor
MikeyB_Leeds
  • 186
  • 9
2

I use KATE, which ships with KDE. Its got nice syntax highlighting, no unnecessary creature comforts, a nice snippet gallery and great in line shell window. Sessions / projects are easy to manage and open.

The edit area itself has pretty much what you would expect as far as basics, like code folding, split views and stuff.

I'm one of those bearded guys (well I was, until I shaved) that was 5+ years joining the rest of the world even USING a desktop environment, much less an IDE. I won't call KATE an IDE, that's what KDevelop is for. KATE is just a really good editor.

Tim Post
  • 33,371
  • 15
  • 110
  • 174
2

I use vim. I've been using it for about three years now and I still consider myself pretty amateur, there's a lot vim can do and the learning curve is pretty steep.

I should probably also mention that I do a lot of python/django coding and I do a lot of that off-site, as in not on the machine my code lives on, over ssh. I dunno how good of an idea this is, but that's just what I'm used to, and since I'm mostly living in a Terminal I definitely prefer vim.

hora
  • 3,661
  • 5
  • 25
  • 26
  • +1 for vim and for your name since it has a quite different meaning in Swedish, http://tyda.se/search?form=1&w=hora&w_lang=&x=0&y=0, could be good to know if you travel :) – Johan Nov 10 '09 at 14:54
  • ooh... wow. so what should i say my name is when i go to sweden? i obviously can't use my real name (well, maybe i can, just not my nickname :P) – hora Nov 10 '09 at 19:40
1

Ubuntu has a nifty addon package called "quickly" which pretty much creates your project for you and gives you a good starting point as well as easy-to-use tools such as a GUI dialog/window resource and source code editor. As a vet user visual studio, i have been looking for something in linux that is just as easy to use, eclipse is too bloated and codeblocks doesnt install everything you need (extra libraries etc) but quickly makes sure you have EVERYTHING (all the gtk devel libs and more get installed right along with it if you dont have them already) First time linux programmers I strongly suggest using it, even if you aren't familiar with python (i wasnt, i was C++/C#) it is not hard to learn..even simpler in many cases. Check out this "how to create a web browser in less than 5 minutes with quickly" link below: http://developer.ubuntu.com/get-started/http://developer.ubuntu.com/get-started/

PS: I read the other answers and i must say, since so many programmers are arguing about the lack of a good IDE for linux, why don't one of you MAKE ONE? Obviously this is a huge need, and there are too many cross-platform IDEs for linux, i think you know what I'm getting at right? (hint hint.. C++ :) ) It woudlnt have to be too complex either, just simplify the process of making projects with a few skeletons that have the living ***t commented out of them and a good-strong editor (or embed an existing one?)... there i said it.

Community
  • 1
  • 1
osirisgothra
  • 2,163
  • 24
  • 19
1

Most known IDEs like Visual Studio for linux are Eclipse and NetBeans.

x2.
  • 9,554
  • 6
  • 41
  • 62
1

There are Linux programmers that use IDEs and some that don't. Many people use editors like Emacs or Vim, and then others use IDEs like Eclipse, NetBeans, Anjuta, KDevelop, etc.

Pablo Fernandez
  • 279,434
  • 135
  • 377
  • 622
1

I use mostly gedit with tons of plugins... But when programming in Java i use Eclipse. When programming in C i use Code::Blocks. But sometimes i use Geany works very well to. But then again it's just what a person prefers.

Bloeper
  • 347
  • 2
  • 3
  • 13
0

Seamless with all features, I didn't find any competitive to this: Sublime Text 2

FabienAndre
  • 4,514
  • 25
  • 38
Vishal
  • 2,161
  • 14
  • 25
0

It is all down to personal preference really, I tend just to use a text editor for python, perl etc..

But you can use an IDE. Eclipse comes to mind.

There is also Monodevelop for .Net projects on Linux.

AdamW
  • 1,061
  • 10
  • 14
0

KDevelop, VIM (it is not GUI, but powerful)

silent
  • 3,843
  • 23
  • 29
  • gvim has been stable for some time now, if you want a GUI there's one out there. There's also cream if modality scares you ;) – richo Jan 19 '10 at 23:56
0

Some do, but IDEs can be limiting compared to binutils, gdb, and an editor. Most use an editor like Emacs or Vim which can function as an IDE (build, jump to errors, debug, etc) using the underlying tools.

Jed
  • 1,651
  • 17
  • 26
0

I use emacs, vim and netbeans. I also use Notepad++. When working in windows i use netbeans and notepad++. So linux means more freedom for me but with the same base tools.

Peter Lindqvist
  • 10,122
  • 3
  • 41
  • 60
0

There are a lot of IDEs out there that work on linux, I develop using Eclipse for Java and Python, sometimes I use an easier text editor without code check and helpers. Netbeans is another good IDE.

Vi is a good editor when you are writing scripts on the shell or on a remote machine, emacs I think it is no longer used, or by a minority of developers.

OverLex
  • 2,501
  • 1
  • 24
  • 27
0

Quanta as code editor

dusoft
  • 11,289
  • 5
  • 38
  • 44
0

If you come to linux you must be prepared to use more console and less IDE's.

But i think that you have lots of IDE in previous posts

helder
  • 51
  • 1
0

Most desktop environment has IDE development and tools. For example gnome has this : http://library.gnome.org/devel/tools Eclipse and NetBeans is complex software and need time to learning and configure.

0

The open source smalltalks (Squeak, Pharo) are cross-platform and run fine on Linux. They are image based and have a fine IDE.

Stephan Eggermont
  • 15,847
  • 1
  • 38
  • 65
0

A Linux developer uses Microsoft Visual Studio to develop portable code in Windows. Then he compiles this code in Linux with gcc and fixes any bugs with whatever Linux tool that work (KDevelop, etc).

teest1
  • 11
0

Saying 'what do linux programmers use' is a bit backward.

Some use massive IDE's with tremendous functionality, others like my use GNU screen, vim, and a stack of shells to do their editing.

I develop in Python, and vim + python is all I need.

richo
  • 8,717
  • 3
  • 29
  • 47