tags:

views:

1553

answers:

14

I want to know what you think could make Erlang a "popular" and widely used language. For example, could it be more libraries, better IDE, a killer app, a five minute install, more grassroots community, a scalable RDBMS, etc...?

A: 

I did a couple of Erlang projects back at university and loved the language. That said, I think there are only a couple of things that would get the language "out there".

  1. Some evidence that Erlang could become a RAD tool, especially on the GUI end. A belief that the language provides some faster way of getting to market is required to get commercial developers interested.

  2. Inclusion in Visual Studio. This is more a funny comment, but a grain of truth is there. If MS adopts it, it will get it out to the worldwide community. So, start talking to you friends at Microsoft Research and have them start on Erlang.Net.

KevDog
I would think that restricting erlang to a more traditional enviroment such as .NET or java would be inefficient, not to mention difficult?
gnud
How would you implement tail-recursion optimization in a .NET or Java VM?
JesperE
Easy enough in .Net, since it's already supported with a CLR instruction.
JasonTrue
@gnud I'm not talking about restricting, but making available there as well.
KevDog
+6  A: 

One of the benefits (and perhaps the drawbacks) of Erlang are actually it's constraints. Most popular programming languages provide mechanisms for lots of types of programming approaches. Because Erlang constrains you purely to functional programming and message-passing parallelism, it focuses it's benefit on specific problem domains. However, these constraints limit it to these domains as well.

For Erlang to become a more favorable general-purpose language, it would probably have to sacrifice a lot of what makes it so good for the specific domain of parallel, fault-tolerant, distributed applications.

bmdhacks
Exactly. I partly don't want Erlang to become overly popular. I'm afraid that that would distort the focus of Erlang.
Jon Gretar
If anyone wants different languages it would work out well if they were just another pid/mailbox that could talk with Erlang rather than changing Erlang to support all these scalability problematic features of popular languages. I'm very much into your sentiment that the imposed limitations of Erlang is its power.
Christian
A: 

Erlang is a functional language, which is a very different way of thinking than most of us are used to. Other functional languages, such as LISP, seem to have a devoted but somewhat limited following. If functional programming in general were to become more mainstream, I think that would help Erlang. Perhaps that could come through education. In today's Java-heavy curricula, however, that probably isn't likely.

Fred Larson
+16  A: 

Something along the lines of Reia. That is, accept that wonderful as Erlang's core abstractions and underlying virtual machine are (and they are wonderful), it is an ancient programming language that misses out on tons of modern useful, practical, proven productivity features. Treat it as an assembly language and layer a modern language along the lines of Python/Ruby/Scala/Groovy/whatever on top of it.

It is definitely doable. If done right it has the potential to radically transform multi-core programming. Throw in a nice web server platform along the lines of Rails/Django, and you'd have a serious competitor for popularity with today's up-and-coming languages.

However, this isn't a trivial undertaking. First, one has to preserve Erlang's good points (object == thread, etc.) while allowing for modern features (modules/inheritance/mix-ins, closures, Ruby-like blocks, human-readable syntax, etc.). It would also take quite the effort to create the necessary code base, even if the language itself was "done".

If this doesn't happen, Erlang will suffer the fate of Smalltalk. I believe it will eventually be acknowledged as "the ancestor of actors languages", like Smalltalk is the ancestor of object-oriented ones. But the popular actor languages will be completely new ones, just like the popular OO languages are not based on Smalltalk. Applying the same time table we can predict it will take at least another decade until an new actor-based language would become popular and at least another decade after that until we see a good one :-(

Oren Ben-Kiki
A possible alternative to Reia could be Thrift http://incubator.apache.org/thrift/ which I hope to try soon.
Brandon
I agree with this ... Erlang is pretty old and it shows in some places. I would love to see something that mapped a Ruby-esque syntax onto the Erlang platform.
Toby Hede
"I believe it will eventually be acknowledged as "the ancestor of actors languages", like Smalltalk is the ancestor of object-oriented ones."Joe Armstrong thinks so: http://se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang
hcs42
@hcs42 That is a complete misrepresentation of what Joe Armstrong said. You make it sound like he is abandoning erlang. In fact, he states that other languages will attempt to copy erlang's features, but attempts to make, say, a java++ that supports erlang style concurrency will fail. He also states that erlang has a core that is extremely well suited to process-spawning, context switching, and message passing and that other (imperative) languages will have to be completely re-engineered to match erlang's capabilities.
Abtin Forouzandeh
A: 

Reia is excellent. We need something like jdbc, good unit testing framework, something like mongrel & something like merb/ruby. Unicode...

+1  A: 

Well. First of all Erlang does not need to be popular. Nor do you need it to be popular. Erlang already has all the credentials you need if you need to convince your boss to consider an Erlang program. Erlang is not like Ruby, Python, Java or many other languages that began mostly with programmers using it in their spare time and then tried applying it to the enterprise. Erlang is more like ADA and other languages that are born in the enterprise and government worlds and is just now trickling to the programmers in the spare time.

Regarding IDE for erlang then if you develop on a Mac I have just started working on a Erlang plugin for Apple's XCode IDE. You can check it out at http://code.google.com/p/erlangx/ but of course it's still very early work.

Jon Gretar
I see popular languages as easier to learn and more productive (in general) than unpopular ones by being able to resolve common issues faster. Are there advantages to XCode over Eclipse? (I haven't tried XCode)
Brandon
+3  A: 

Interesting libraries and some "killer" apps wouldn't hurt, if popularity is a goal.

Doing my small part, I've recently open sourced some distributed algorithms libraries and a very different sort of Web programming system called Webmachine. (on Google Code)

Webmachine has turned out to be quite easy to use for the developers at my company to use, and it takes advantage of Erlang's concurrency while not making the application programmer have to think about such issues any more than they want to. That sort of "automatic" approach to concurrency is likely to be a feature of future Erlang killer applications.

Justin Sheehy
+2  A: 

Lambda function syntax in Erlang is ugly. Other bits could probably also "look" beter.

I like the clean look from Haskell. The syntax here helps to understand what is happening. In Erlang a nice, compact, concise solution quite often still looks bad - one should not underestimate what readability means for impact.

Howver, for interprocesscommunication, network-related software and a slew of other real world applications you have to do (a lot of) work; Erlang comes with that built-in which is really really great!

I find it one of - if not the - best compromises between correctness and usability in real world apps.

haavee
A: 

A good cross Platform IDE ( written in erlang of course :-) ). Some nice UI framewok wouldn't hurt either.

AlePani
A: 

Frameworks (Reia, erlyweb, etc), a very good IDE, better looks are all good suggestions and much needed, but Marketing, making it look cool and easy to start experimenting and working with the language will do far more good for it, especially marketing.

Schalk Versteeg
A: 

The more pertinent question is, Why would we want Erlang to be more ubiquitous?

Seriously, its not going to get widespread adoption until programmers - like myself - who are not knowledgeable in Erlang feel that we might be missing something.

I don't. I know enough languages without knowing Erlang. As such I feel that muppets trying to make yet-another-good-thing widespread to be, well, muppets who should be ignored or, if they look to be gaining some kind of traction, stopped.

Chris Becke
I buy everything up until the "..gaining some kind of traction, stopped". If it is good it will grow and you will find out what you are missing and try it out. But why would you want to stop natural traction if it starts to happen? Does that not imply it is something worth looking a then ?
Stephen Bailey
+4  A: 

Erlang is fine, despite people who seem to want to make Erlang something it is not. It is not an imperative language and it should not try to become some weird mix of imperative/functional/concurrent. Because of that I do not believe Reia is some awesome thing that should be pushed.

What Erlang desperately needs, however, is better documentation. The standard library (and standardly included modules) are terribly documented, and what documentation exists does not adequately explain the internal assumptions of a module. This makes it really hard to do drop in replacements of functions to make a module that normally does one thing do something just a little different. For example, I wanted to change the shell code that gets started by sshd, and nowhere in the documentation was it explained that you just have to do io:get_line or io:format to send/receive from the ssh connection. Because of that I had no idea exactly how the function should behave despite knowing how to specify to sshd to use my code.

Beyond that, I suppose better UI libraries would definitely attract interest, but to truly reap the benefits of UI, there needs to be an Erlang equivalent to .exe or .app. The user should be able to run Erlang applications easily, with UI. Otherwise Erlang will be relegated to the server work it already excels at.

+1  A: 

Two things will make Erlang more popular.

1) Processors with several dozen cores becoming commonplace. When your target audience has 1-4 cores, multithreading by hand is completely practical. Once we start getting beyond this number(and it seems inevitable that in the next 5-10 years we will), forcing the programmer to narrate which threads take care of which operations becomes impractical.

2) A much easier installation. Currently, it is not easy to get started using Erlang on windows. There is in fact another question on this site about how to get set up in Erlang- and it has no good answer, because there isn't one. Erlang needs atleast a decent Eclipse or Netbeans plugin which can be double click installed, and which can compile and run with the click of a button inside the IDE.

Dylan White
+1  A: 

Computer Science is anything but. It is not science it is fashion. The popularity of a language in particular rarely has anything to do with its fitness for purpose.

The Angel started programming in C. Boy was that hard work. She began to rely more and more on TCL primarily due to integration with C and, for most of what she was doing it was just much easier in TCL. Increased productivity, less defects, reflection, dynamism, stringly-typed... just heaven for a developer with even modest talent.

Then Java came along. Was Java successful because it was a 'better' language? Of course not. It solved a couple of irksome problems for C developers. Memory management and syntactical familiarity. i.e. Java was sufficiently C-like for C programmers to cross the chasm. That's about it. Everything else was just old hat. Its basically a 1970's throwback. And as for Object Orientation.. pish... snake oil.

If there were any justice or science involved then TCL (insert Lisp, Smalltalk or any number of other choices here) would have been elevated to one of the most popular languages around and Java would probably have fizzled out (and interestingly both languages came from the same stable).

Instead the Angel works in organisations where they develop things like front end web services in Java or worse Csharp. Low lever languages to develop io-bound, string based interactions? Bonkers... Architects talks absolute nonsense about performance whilst at the same time designing XML based message-passing SOA.

The Angel also notes that, over the last 15 or 20 years all she has seen is productivity decline! There are so many tools, libraries, IDEs etc out there that life should be simpler but instead it now takes many more people and much more time to do even the simplest thing. And invariably that's because many organisations throw the junk together quickly but then end up with a maintenance nightmare.

And then once it starts it can't stop. To a developer with a hammer every problem looks like a nail. The the HR department gets involved and waves its arms around about retraining or skills gaps and thus once the Java infection has spread its impossible to halt.

And that's the main problem in her opinion. Erlang along with many other languages is ideal for an organisation that understands the importance of mixing technologies. Very few do.

Agile Angel