What can i code in Atom?


Im a total newb to coding and want to start learning mostly a backend framework like RoR or NodeJS. Can I code both of these in Atom? What languages can I use in Atom?

EDIT: What is the difference between Atom and a program like RubyMine?


Atom is a text editor. If the language uses text as source code, you can write it in Atom. This includes virtually every programming language designed by humans. (Though I suppose Atom doesn’t have good support for languages that use line numbers.)

Atom has built-in support for most modern programming languages and there are community packages that help support the rest.


Thank you for your response! What is the difference between Atom and something like RubyMine?


Atom is a general programmer’s text editor. It is designed to work with any language to a certain level. Because of this, it doesn’t offer really advanced features for specific languages or tasks (yet). Applications that offer these more targeted features for specific languages or frameworks are generally referred to as IDEs (Integrated Development Environments).

On the flip side, many IDEs fall pretty flat if you need to write code in something outside what they are specifically designed for. So you find yourself switching from IDE to IDE as your needs change … and then you have to spend a bunch of time learning the new keyboard shortcuts, feature sets, etc. Whereas with a text editor like Atom, you could conceivably use it for decades without switching. (Just ask the vim and Emacs die-hards.)


Ruby on Rails developer here. I’ll second leedohm’s description as accurate. I’d like to expand on it just a little bit.

Generally an editor (vim, emacs, atom, sublime text, notepad++) is a program that’s made for editing any general types of text. Features of most editors:

  • naive completions (completions based on what’s already written)
  • simple helpers like auto-indentation and syntax highlighting
  • quick to start up
  • commands which work on general text, such as line, word, and character based movements and actions
  • advanced find and replace using regex and file exclusion
  • snippets/text templates

Generally an IDE (eclipse, any idea based IDEs including rubymine, netbeans, visual studio, emacs for lisp or C) is a program that’s made very specific to a language or a few languages. It offers most if not all the features of an editor, but also adds language specific features:

  • advanced, smart completions (language standard libraries are a great case for this)
  • integrated debugger
  • integrated test suite runner
  • go to definition/find usages
  • advanced refactorings
  • project templates
  • slow to start up
  • version control, package manager integrations

Emacs is well known to blur the lines here, and other editors are starting to get a lot of IDE features as well. Atom, for example, can lean on ctags to navigate and refactor: https://atom.io/packages/symbol-gen . It also has solid support for git based projects, and there are packages to aid in running tests/package managers/scripts.

RubyMine definitely has a few things in its corner though. I keep it around for things that are hard to refactor (short variable names, for example). It also has great, built in support for ruby on rails, bundler, minitest and rspec, I18n, and a ton of other stuff.

If you do end up choosing atom for the day to day ruby work, I can recommend the pry ruby library (way better than a graphical debugger), and a few atom packages:

  • atom-spec-finder
  • language-rspec
  • rspec (lets you run rspecs from in atom)

I haven’t done much in node, but I understand that atom has fantastic support for it, since it’s built on top of electron, which is built on node. I can say that my CSS and JS has all worked very well. The CSS snippets in particular are really solid.