Setting up an Erlang development environment

IdeErlang

Ide Problem Overview


I'm interested in looking at Erlang and want to follow the path of least resistance in getting up and running.

At present, I'm planning on installing Erlang R12B-3 and Erlide (Eclipse plugin). This is largely a Google-result-based decision. Initially this will be on a Windows XP system, though I am likely to reproduce the environment on Ubuntu shortly after.

Is there a significantly better choice? Even if it is tied to one platform.

Please share your experiences.

Ide Solutions


Solution 1 - Ide

I highly recommend the Erlang mode shipped with the standard Erlang distribution. I've put together a "works out of the box" Emacs configuration which includes:

  • Syntax highlighting & context-sensitive indentation
  • Dynamic compilation with on-the-fly error highlighting
  • Integrated Erlang shell
  • And more....

You can browse my GitHub repo here:

http://github.com/kevsmith/hl-emacs

Solution 2 - Ide

I've only done a small bit of coding in Erlang but I found the most useful method was just to write the code in a text editor and have a terminal open ready to build my code as I need to (this was in Linux, but a similar idea would work in Windows, I'm sure).

Your question didn't mention it, but if you're looking for a good book on Erlang, try this one by O'Reilly.

Solution 3 - Ide

You could also try NetBeans there's a very nice Erlang module available: ErlyBird

  1. Install Erlang: sudo aptitude install erlang
  2. Install a recent JDK: sudo aptitute install sun-java6-jdk
  3. Download and install (the smallest) NetBeans edition (e.g. the PHP one): www.netbeans.org/downloads
  4. download the erlang module ErlyBird: sourceforge.net/projects/erlybird
  5. manually install the modules via NetBeans

ErlyBird features:

  • syntax checking
  • syntax highlighting
  • auto-completion
  • pretty formatter
  • occurrences mark
  • brace matching
  • indentation
  • code folding
  • function navigator
  • go to declaration
  • project management
  • Erlang shell console

Solution 4 - Ide

I'm using Erlang in a few production systems personally as well at the office. For client side testing, documentation and development I use a MacBook Pro as the OS/platform and TextMate with the Erlang bundle as an editor.

For sever side development and deployment we use RHEL 4.x/5.x in production and for editing I use VIM. Personally, I've got 4 machines (slices on slicehost.com) running Debian using Erlang for a few websites and jobs.

I try to go with the smallest 'engineering environment possible', usually the one with the fewest dependencies from apt or yum.

Solution 5 - Ide

To add to the Emacs suggestions, I would also recommend that you look at the advantages of distel when running the Emacs erlang-mode.

Solution 6 - Ide

You could also try a virtual server on demand service like this one from CohesiveFT

Select the components you want (e.g. erlangrb12 + yaws + MySQL + erlyweb) and it will build a vm image for you to download or to put onto ec2.

Rolling you own locally is quite straightforward too if you follow the instructions in the pragmatic programmers book Programming Erlang

Solution 7 - Ide

I've seen answers suggesting TextMate here, so I wanted to add another good Mac OSX tool:

ErlangXCode plugin to XCode.

I've been using this since I started with Erlang and really do like it.

The download link on his blog is broken, here's the real download:

http://github.com/JonGretar/erlangxcode/tree/master

Solution 8 - Ide

Just a quick note:
The Erlang "compiling" process described in Ciaran's post (described for Ubuntu 6.10 btw) can be easily skipped using apt command in any Debian based distro:

> apt-get install erlang

Do not forget to install these packages if you see it fit:
erlang-doc-html - Erlang HTML document pages
erlang-examples - Some application examples
erlang-manpages - Erlang MAN pages
erlang-mode - editing mode for Emacs

Good Luck!

Solution 9 - Ide

I like Justin's suggestion, but I'll add to it: this solution is great for learning a language. If you don't rely on something like code-completion, then it forces you to learn the language better. (If you are working with something with a huge API, like Java or Cocoa, then you'll want the code completion, however!)

It's also language-agnostic, and in the case of an interpreted language, particularly one that has an interactive interpreter, you'll probably spend just as much time in the shell/interpreter typing in commands. Even in a large-ish python project, I still work in an editor and 4 or 5 terminal windows.

So, the trick is more about getting an editor which works for you. I'm not about to suggest one, as that's heading towards evangelism!

Solution 10 - Ide

I just use Scite. Type something and press f5 to see the results.

Solution 11 - Ide

Just wrote a guide on this on my blog, heres the abridged version:

Part 1: Download what needs to be downloaded.

Download and install the Erlang run-time. Download and install TextPad.

Download a .syn file for Erlang and place it in the system folder of TextPad. For me, this folder was C:\Program Files\TextPad 5\system. I'm not quite sure who did this syn file (the site is in another language), but they did a good enough job.

Part 2: Set up syntax highlighting.

Open up TextPad. Ensure no files are opened. Go to the 'Configure' menu, and select 'Preferences'. In the preferences window, click 'Document Classes'. There should be a list of currently recognized languages. Click the 'New' button (it is right under the list of languages), and type 'Erlang'. Click apply.

Click the '+' button next to 'Document Classes'. This should expand the list, and Erlang should now be on it. Click Erlang. You should see a list of file extensions associated with Erlang, click 'New', and type '*.erl'.

Now click the '+' button next to 'Erlang' on the left. This should expand a list of several more menus. Click on 'Syntax'. Click the drop down menu and select erlang.syn. If erlang.syn is not there, then the .syn file was not properly placed.

Feel free to edit some other syntax options to customize TextPad to your liking.

Part 3: Compiling from TextPad.

Note: as of 12/05/08 there are severe problems with compiling in textpad. The Erlang shell somehow ignores new compilation when it is done in text pad. This is only useful for checking for errors, when you want to actually run the code, compile it in the Erlang Shell.

In the preferences menu again, click 'tools' on the left.

Click the 'Add' button and select 'Program...'. Navigate to the erl5.6.5\erts-5.6.5\bin\ folder and select erlc.exe. Select and single click the new entry in the list to rename it. Click 'Apply'.

Now click the '+' button next to Tools on the left. Select erlc, or whatever you have named the new tool (I named mine 'Compile Erlang'). The parameters field needs to read '$File', and the initial folder field should read '$FileDir'.

Solution 12 - Ide

I have had good success with Erlide.

Solution 13 - Ide

If you use Vim I recommend you Vimerl (<http://github.com/jimenezrick/vimerl>;):

Features

  • Syntax highlighting
  • Code indenting
  • Code folding
  • Code omni completion
  • Syntax checking with quickfix support
  • Code skeletons for the OTP behaviours
  • Uses configuration from Rebar
  • Pathogen compatible (http://github.com/tpope/vim-pathogen)

Solution 14 - Ide

From what i've tried (and are still up to do), a good addition to an erlang dev. environment would be a virtual machine running ubuntu/yaws/erlang. Perhaps Erlyweb (erlang/yaws framework) would be nice checking out too.

Ciaran's posts (this would be the first of his "series") about his erlang install is nice, as he details the steps in setting up the server (and other stuff like xmpp with jabberlang).

Solution 15 - Ide

Since you're switching to Ubuntu eventually anyways, I highly recommend using erlang-mode for emacs (which comes bundled with the Erlang distribution). It is officially what all the core developers use and what many other developers use because of the many features it offers you.

Installing the Erlang distribution itself should be simple :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMcDowellView Question on Stackoverflow
Solution 1 - Ideuser12462View Answer on Stackoverflow
Solution 2 - IdeJustin BennettView Answer on Stackoverflow
Solution 3 - IdeJuveView Answer on Stackoverflow
Solution 4 - IdeNick GerakinesView Answer on Stackoverflow
Solution 5 - IdeevgenView Answer on Stackoverflow
Solution 6 - IderhysView Answer on Stackoverflow
Solution 7 - IdemarccView Answer on Stackoverflow
Solution 8 - IderàmäyácView Answer on Stackoverflow
Solution 9 - IdeMatthew SchinckelView Answer on Stackoverflow
Solution 10 - IdeBharaniView Answer on Stackoverflow
Solution 11 - IdeDylan WhiteView Answer on Stackoverflow
Solution 12 - IdeArthur UlfeldtView Answer on Stackoverflow
Solution 13 - IdeRicardoView Answer on Stackoverflow
Solution 14 - IdeBerzemusView Answer on Stackoverflow
Solution 15 - IdeMitchellView Answer on Stackoverflow