Programming is a strange animal. The code, symbols and instructions that dictate how a machine will behave when running a program can be a headache for anyone who does not have knowledge and faces any fragment. It can be even for experienced programmers (that ugly habit of not commenting on the code …).
Preparing the code correctly to run in a safe environment requires a ritual of its own. Operating systems already have pre-installed text editors, but their capabilities are very limited. It is important to be clear that choosing a suitable editor is crucial when programming, as well as not all are advisable for all levels.
Even so, the world of text editors is a huge jungle. Some have elaborate graphical interfaces that are more intuitive and allow you to work on large projects (here would be large integrated development environments or IDEs). On the other hand there are others that are minimalist and basic in their conception, which will reward those who have the patience to face with a high learning curve.
Some of these editors are targeted at specific platforms and languages (such as Swift and iOS), while others have a more general purpose whose functionality can be expanded by plugins that increase their work capacity.
Now suppose that you are beginning to program and that you are in the point of having you decide for an editor. You probably have already been recommended, but in case you decide to explore on your own (a habit that every good programmer should have), we are going to give you a series of differences between editors and IDEs that we hope will help you to have a clearer idea of what you can do Best fit your needs.
“Anabolic” text editors
In this category programs like Atom or Sublime Text would enter. Atom is free and theoretically Sublime Text costs money, although you can keep the evaluation version ad infinitum. I personally have spent some time using Atom for my daily work thanks to the support it offers for the Markdown language. Honestly, it’s the best I’ve tried in this regard.
When you open Atom or Sublime Text for the first time you get the impression of being in a kind of sophisticated notebook. It is when you start working with them that you realize that their functionality goes much further.
For starters, the two come standard with syntax highlighting for virtually any programming language you can work with. This may seem trivial when you are just starting out, but once you know a language well and you have a clear idea of what code should be written for it, it is critical for the code to be read and interpreted at a glance (and more when someone Has not had the courtesy to comment, we return to it).
Both Atom and Sublime Text have an ecosystem of packages to extend their capabilities. Both have a wide panorama, offering solutions that range from improving the processing of texts (the already mentioned capabilities for Markdown, for example) to HTML templates, integration with GitHub, code quality tools and much more.
They are recommended if you already have some experience working with a specific language, because to finish tuning their skills will need to install a package (for example one for code execution and a debugger, although we will talk about this later). Therefore, you have to have more or less clear what you are looking for.
Integrated Development Environments or IDEs
IDEs are often the first experience with dedicated editors of most novice programmers. They are always recommended in all courses of application development or web pages, and almost always for the same reason: they are very powerful and concentrate everything necessary to run a program that the user write in Its interface. They also have default syntax highlighting.
As we have said, an IDE is a very powerful tool. The fundamental difference with text editors like Atom is that its power can overwhelm the user . Many offer extensions to new programming languages and frameworks that create new IDEs within an IDE.
On the other hand, for those who start in the world of programming are usually the best way to start writing and executing code. Not only because of the syntax highlighting, but because they also have bug fixes that detect misspelled words and debuggers that point to errors in the code (which occurs even though the syntax of the statement is correct).
In fact debugging is essential when dealing with long and complex programs. Thanks to this feature you can see the code in action while running, allowing you to take much more precise measurements on the errors instead of looking at a lot of lines on a screen waiting for the solution to be present by magic .
There are many IDEs where to choose for different programming languages, with very different capabilities and functionalities. Personally I recommend to those who are beginning to program that, at least initially, they rely on the recommendations that they make in their training centers. When you have spent some time devoting to it, then it may be worth exploring.
Pure and hard text editors
We have already commented that Windows Notepad, Linux Gedit or Mac TextEditor have their limitations. With the programs we are going to talk about now, all their capacities multiply by millions, but it is also worth commenting that they are only for the most experienced, for those who have spent a lifetime working with them or for the most geeks.
We refer to beasts as Vim or Emacs. It is worth dissecting them a little, especially for those who have never had to see one of these two historical creations. The trip will be, at least, interesting.
Lets start by the beginning. Vim is very complicated to describe . It is also very complicated to use. At first glance it looks like a text editor in its minimal expression, those that go back to the times when the mouse was a thing that was used to keep the keyboard company and that menus were something that happened to other people.
As the menus are not in the menu (worth the redundancy) of Vim, it works with the command-based text. All of them are detailed with profusion in the Vim Cheat Sheet, but it is worth mentioning a few:
- : W is used to save the job.
- : Q! To exit the program
- And is used to copy text fragments
- P is used to paste what is copied
And that is only the beginning.
As for Emacs, this is a project developed by Richard Stallman during the 70s of last century at MIT that has continued to this day. It is the natural competitor of Vim and also despises the interface in favor of commands, which can be consulted in the Emacs Reference Card. Some examples:
- Cx Cf opens a file.
- M-DEL erases a word.
- Mw copies a checked region.
- Cy serves to paste the copy.
Seen from the outside, both Vim and Emacs are intimidating to users who are not accustomed to them. However, there is a lot of potential in them that allows to write in a great amount of programming languages and at great speed.
For this we have an explanation. Any program with a graphical interface requires that you interact with it in a combination of keystrokes on the keyboard and mouse movements. There are elements that ask us to get our hands off the keyboard and have to pick up the mouse, which is inefficient. With Emacs and Vim you can write without ever dropping the keyboard and get a very efficient workflow.
Moreover, it is highly customizable editors that allow us to choose between different highlights of fonts, text colors and so on , although you need to touch the configuration files by hand (at least in versions for Linux). Personally I do not have much experience with these editors, maybe more with Vim when I learned to write Bash scripts for Linux. I must say I did not get to know him very much.
CONCLUSIONS
What should you start with? Personally I think an IDE may be best for beginners. Then you can always jump to rich editors like Atom or Sublime Text. The simplest ones like Vim or Emacs have only seen them being used efficiently (and with some envy on my part, I must add) by very knowledgeable people with a great command of what they do.
As I said, there are options for all tastes. My recommendations are not absolute nor do they pretend to be chair. If something I intend with this article is nothing more than to make known the ones that can be found. The last word as a user you have, you will ultimately have to choose the one that best suits your needs.