tag:blogger.com,1999:blog-16940011.post5320173846319226346..comments2023-05-18T07:00:11.972-07:00Comments on Yariv's Blog: Ericsson's Biggest PR Blunder: Forgetting to Tell Us That Erlang
Programming Is FUNYarivhttp://www.blogger.com/profile/01787159103926738266noreply@blogger.comBlogger39125tag:blogger.com,1999:blog-16940011.post-79375646513320098602006-08-24T10:58:36.000-07:002006-08-24T10:58:36.000-07:00That programming in Erlang is fun was one importan...That programming in Erlang is fun was one important message that we tried to get through when we at Ericsson's CSLab gave internal courses to Ericsson personel. But boy what a hard work that was. I recommend Bjarne Decker's Thesis as an interesting read on the topic.Tobbenoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-76274069593863353592006-08-24T11:04:43.000-07:002006-08-24T11:04:43.000-07:00Hi Tobbe, by "us" I meant the "gene...Hi Tobbe, by "us" I meant the "general public." There's no indication on the website or in any of the tutorials that Erlang == FUN (or if there is, I didn't notice it). Ruby on Rails has much better marking on that front. I don't mean to criticize CSLab's efforts -- I'm just noting the perception of an outside observer.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-53888116496555034082006-08-24T11:15:28.001-07:002006-08-24T11:15:28.001-07:00Wow this is a real-time as it gets in blogging. Ya...Wow this is a real-time as it gets in blogging. Yariv great blogging and promotion of Erlang. BTW cool name too.<br><br>I worked for a wireless company here in Canada whose name I won't mention except for it was Rogers. Anyway they used Ericsson's AXE mobile switching centres. Thats when I learned about Erlang back in 1997. Great to see it was set free and being evangelized.lickedcatnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-416854440043319042006-08-24T11:15:28.000-07:002006-08-24T11:15:28.000-07:00For me, Erlang is fun (although not in some cases)...For me, Erlang is fun (although not in some cases) but so is Haskell and Lisp.<br>C is not fun, Python can be fun until you have to do multi-threading with mutexes. But doing GUI with Python is fun (I bet doing GUI with Erlang is not much fun).<br>I am not sure how to difene what is fun and what is not, but surely is not a simple definition and most of the jobs aren't fun.Pupenohttp://pupeno.comnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-71129406075938238742006-08-24T13:44:38.000-07:002006-08-24T13:44:38.000-07:00Hi Robert,I'm afraid that you can find most an...Hi Robert,<br><br>I'm afraid that you can find most answers to your questions by Googling, reading the Yaws documentation as well as my past postings, and also by learning Erlang and doing some tutorials. There are also very mailing lists where much smarter people than myself will help you out.<br><br>For all those extra libraries you want that you think are missing, you can either build them yourself or keep reading this blog because your desires may be answered sooner than you think ;)<br><br>I will just say one more thing: I don't know about VIM :)<br><br>Best<br>YarivYarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-54635259611382909452006-08-24T14:58:21.000-07:002006-08-24T14:58:21.000-07:00Bob: Thanks a lot for answering my questions. You...Bob: Thanks a lot for answering my questions. Your answers are very helpful. When I get some bandwidth, i'll go take Erlang out for a spin.roberthahnnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-50568189255226989142006-08-24T15:16:33.000-07:002006-08-24T15:16:33.000-07:00Yariv, I'm trying to be disciplined and stay o...Yariv, I'm trying to be disciplined and stay on my self-appointed task of learning Lisp, but when I find your blog and read the daily enthusiastic posts, I just want to run off and play with Erlang :(<br><br>I find it interesting that you're taking to Erlang after getting to know Ruby. But you say functional programming fits your brain, and that's great. For other programmers' brains a few of the reasons you cite for having fun with Erlang I presume would be true of Ruby as well (runtime metaprogramming, dynamic typing, smart people, I'm sure some Ruby people like Emacs), but to me the biggest difference is the concurrency and message passing. The book Programming Ruby makes it sound like you have to be so incredibly diligent to get benefit from Ruby threads. And using pipes you can communicate between threads or processes, but it doesn't seem as natural as the Erlang message passing.<br><br>The question I keep asking myself is why would Erlang have a monopoly on its style of concurrency and super cheap processes? What's stopping a Ruby or C++ programmer bored of shared memory from peeping the Erlang source and building an amazing threading system into his favorite interpreter or compiler? Is there something fundamental to message passing that doesn't jive with other programming styles?Shawnnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-52945230818906375912006-08-24T17:25:09.000-07:002006-08-24T17:25:09.000-07:00Thanks Yariv for your enthusiastic blogs.Question:...Thanks Yariv for your enthusiastic blogs.<br><br>Question: I am wondering if you can tell us your thoughts on how Erlang and Limbo/Inferno from Bell Labs/Lucent (see: <a href="http://www.vitanuova.com/" rel="nofollow">http://www.vitanuova.com/</a> and <a href="http://cm.bell-labs.com/plan9/" rel="nofollow">http://cm.bell-labs.com/plan9/</a>) compare. It seems to me that both model concurrency according to the Communicating Sequential Processes (CSP) process algebra of C. A. R. Hoare (see: <a href="http://en.wikipedia.org/wiki/Communicating_sequential_processes" rel="nofollow">http://en.wikipedia.org/wiki/Communicating_sequential_processes</a> ).<br><br><br>Also, I just looked at Erlang but still don't know exactly why they use a period to terminate statements. Can you tell me why - I hope there is a good reason besides the analogous one.<br><br>------<br><br>By the way, we all know "fun" is a relative thing (-: However, syntax plays a significant role.<br>Besides Erlang, a short list of languages I consider "fun" (at least to learn) include:<br><br><br>J (son of APL) - <a href="http://www.jsoftware.com/" rel="nofollow">http://www.jsoftware.com/</a><br>Take an aspirin while you try it. Just kidding (-: But definitively worth it - it will amaze you.<br>J is a non-von Neumann programming language. So it is functional but not in the traditional (confused) sense. Great for numerics.<br>See: <a href="http://en.wikipedia.org/wiki/J_" rel="nofollow">http://en.wikipedia.org/wiki/J_</a>%28programming_language%29<br><br><br>REBOL: the "relative expression based object language" and dialecting language.<br><a href="http://www.rebol.com/" rel="nofollow">http://www.rebol.com/</a><br>Actually I think REBOL is very promising and is definitely "fun", lean, and mean with virtually no baggage. It is somewhat Lispish/Schemish in style. Worth looking into it.<br><br><br>SETL & family - <a href="http://en.wikipedia.org/wiki/SETL_programming_language" rel="nofollow">http://en.wikipedia.org/wiki/SETL_programming_language</a><br>Based on set theory. Cool ideas but unfortunately this language is somewhat moribund.<br><br>PROLOG - <a href="http://en.wikipedia.org/wiki/Prolog_programming_language" rel="nofollow">http://en.wikipedia.org/wiki/Prolog_programming_language</a><br><br>Mathematica - <a href="http://www.wolfram.com/" rel="nofollow">http://www.wolfram.com/</a><br>This is commercial software but great especially for symbolics.<br><br>Of course the Lisp / Scheme family.<br><br>Yes, there are others but don't want to put you to sleep...<br><br>-fvafvanoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-23971122203821351302006-08-24T17:35:11.000-07:002006-08-24T17:35:11.000-07:00Oops - Don't know why blank lines got chewed o...Oops - Don't know why blank lines got chewed out. Also, the Wikipedia J link got trimmed. Just click on the trimmed link and follow the 1st link on the Wikipedia page.<br><br>Sorry, - fvafvanoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-5878542774807948622006-08-24T18:25:54.000-07:002006-08-24T18:25:54.000-07:00Yariv,Sorry about the "period" question ...Yariv,<br><br>Sorry about the "period" question above. I am just a newbie. The following code for the factorial function from "Getting Started With Erlang" made the answer clear to me<br><br>-module(tut1).<br>-export([fac/1]).<br><br>fac(1) -<br> 1;<br>fac(N) -<br> N * fac(N - 1).fvanoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-14351350895004524972006-08-24T20:14:36.000-07:002006-08-24T20:14:36.000-07:00Regarding the FUN aspect. marketing etc. It is an ...Regarding the FUN aspect. marketing etc. It is an intersting question why Erlang hasn't become more popular (and well known) than it has. We (the Erlang community) has discussed this on and off for years. I guess many of us old-timers got tired of discussing this and started to spawn of start-ups to build fun products using Erlang instead :-) Perhaps if O'Reilly could be persuaded to write a nice Erlang book we could get some more public focus on Erlang.Tobbenoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-45424880331187327742006-08-24T20:21:01.000-07:002006-08-24T20:21:01.000-07:00Bob -- to be precise, I should have said that func...Bob -- to be precise, I should have said that functions don't have destructive side effects on previously-bound variables. I find this to be an a fantastic but seldom spoken-about language feature and relatively few non-functional programmers know about it. When I started coding in Erlang, single-assingment felt weird and restrictive, but now I understand the brilliance behind it.<br><br><br>I think saying that web developers *don't need* to use concurrency explicitly may be a misconception that has been created by the fact that most web development languages suck for concurrency. If you're building a Meebo-style app, you certainly need scalable, effective concurrency. Even RoR has a "concurrency" library (<a href="http://backgroundrb.rubyforge.org/" rel="nofollow">http://backgroundrb.rubyforge.org/</a>), but it palls in comparison to what Erlang has to offer. In addition, for serving a CRUD-style app, maybe you really don't need to touch concurrency features directly, but when you try to do anything remotely more complex, concurrency often becomes a requirement. Erlang is years ahead of any other language in this department, and this gives Erlang web shops a competitive advantage.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-62520135697396567082006-08-24T20:27:04.000-07:002006-08-24T20:27:04.000-07:00Shawn: After I read Hackers and Painters, I had a...Shawn: After I read Hackers and Painters, I had a growing desire to learn Lisp as well (I did Scheme in college, never touched it since), but I already got hooked on Erlang as well :)<br><br><br>As I wrote in my article, "Why Erlang Is A Great Language for Concurrency," I truly believe that concurrency is something a language has to "get right" from the beginning. Erlang "got it right" because it was designed from the ground up for concurrency programming. Even if other languages added some Erlang-style message passing, it would take years for the developer communities to adopt them and for open source software to utilize them. What differentiates Erlang from most languages is that Erlang's creators created a <b>culture of concurrency</b> among its developers. Concurrency is everywhere you look in Erlang code. This is partly why Joe Armstrong says Erlang programmers have a head start.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-23441036105506070832006-08-24T20:31:22.000-07:002006-08-24T20:31:22.000-07:00Pupeno, fun is certainly a relative term. All I ca...Pupeno, fun is certainly a relative term. All I can say is why I think Erlang is fun, and I can't promise it would be fun for everyone. If I wanted to write a native GUI, Erlang would probably make my life pretty hard (Joel Reymont is working on Erlang-Cocoa bindings, though, so things are changing). However, for the problems I enjoy solving, working with Erlang is pure joy.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-14956373431971528392006-08-24T20:34:31.000-07:002006-08-24T20:34:31.000-07:00Tobbe -- there's definitely a glaring mismatch...Tobbe -- there's definitely a glaring mismatch between Erlang's power and developer's awareness and adoption of it. That's partly why I started this blog. I thought more people should know about it. Then again, I think Ericsson can do many things to make Erlang more accessible to outsiders: redesign the website, make the documentation friendlier, keep an official blog, etc.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-22982713151739842762006-08-24T20:39:55.000-07:002006-08-24T20:39:55.000-07:00fva -- thanks for the feedback and all the interst...fva -- thanks for the feedback and all the intersting links. It'll take me a little while to go through all of them :) In Erlang you use a comma to terminate expressions and a period to terminate function bodies. I think that's because Erlang doesn't have Lisp's entirely list-based structure, but there might be some other reasons.Yarivnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-24348959536324275152006-08-24T20:49:21.000-07:002006-08-24T20:49:21.000-07:00Shawn, I think what you suggest is possible, witne...Shawn, I think what you suggest is possible, witness <a href="http://lambda-the-ultimate.org/node/841" rel="nofollow">Termite Scheme</a> for a good example of a rewrite of Scheme using Erlang concurrency concepts. But somebody's gotta 1) understand how to do it, 2) want to do it instead of something else (opportunity cost), and 3) actually do it. Apparently there aren't many people that meet those three criteria. The Termite project for instance is being done by a bunch of grad students. The Java world seems <a href="http://www.defmacro.org/ramblings/concurrency.html" rel="nofollow">satisfied</a> with locks and synchronization for concurrency, rather than an outside-the-box approach, though I've no idea what they have in mind for future versions beyond Mustang (or what MS has in mind for future C#).Byronhttp://sciencecrisis.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-16940011.post-60377641768732693742006-08-24T21:01:48.000-07:002006-08-24T21:01:48.000-07:00And I agree with Yariv, in most cases I'd rath...And I agree with Yariv, in most cases I'd rather work with a language designed from the ground up for concurrency, if concurrency is what I need, than something that was modified to support it. And it is fun to work with, especially b/c when I'm working with Erlang I feel like I'm really learning something new, rather than a reimplementation of the same old concepts. That alone is enough to drive me to spend all my free time working through the getting started guides and docs and blogs on it.<br><br><br>However, some past threads here have questions Erlang's usefulness in every situation, and there's nothing wrong with that. A great example is <a href="http://paulgraham.com/carl.html" rel="nofollow">ITA's technology</a>, which is an interesting mashup of Lisp, C, C++, and Java, in which the strengths of one replace the weaknesses of another in a best-of-breed integration. There's nothing wrong with thinking like that when considering architecting an Erlang application, assuming you actually know the languages in question well enough to make the right calls. I think a lot of us are still trying to get to that point - understand Erlang well enough to know its strengths and weaknesses and how and whether to combine it with other languages for particular applications.Byronhttp://sciencecrisis.blogspot.com/noreply@blogger.comtag:blogger.com,1999:blog-16940011.post-34539933604091374882006-08-24T22:52:07.000-07:002006-08-24T22:52:07.000-07:00I'm just wondering how Erlang fair against Zop...I'm just wondering how Erlang fair against Zope.KE Liewnoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-79039364476484537382006-08-25T07:19:01.000-07:002006-08-25T07:19:01.000-07:00@Tobbe: Do you have materials like slide shows, pa...@Tobbe: Do you have materials like slide shows, papers, and so forth from that internal marketing effort? And if so, can you release these (under some nice license) if they are interesting?http://sander.dontexist.org/noreply@blogger.comtag:blogger.com,1999:blog-16940011.post-69310472989293582692006-08-25T07:53:23.000-07:002006-08-25T07:53:23.000-07:00@Byron: An example is ejabberd: it uses C on some ...@Byron: An example is ejabberd: it uses C on some places where Erlang would be too slow.sanderhttp://sander.dontexist.org/noreply@blogger.comtag:blogger.com,1999:blog-16940011.post-91764428908820238292006-08-27T08:28:33.002-07:002006-08-27T08:28:33.002-07:00The link about 1.7 MLOC is for slide 27 (pdf page ...The link about 1.7 MLOC is for slide 27 (pdf page 28). <br>Either that slide is wrong or the Erlang FAQ needs to be updated.<br><br>"<br>AXD301 has several hundred people working on it and the code volume has reached about 850 kloc of Erlang (and 1 Mloc of C/C++).<br>"<br><a href="http://www.erlang.org/faq/t1.html#AEN50" rel="nofollow">http://www.erlang.org/faq/t1.html#AEN50</a><br><br>Obviously 850KLOC is still sizeable, but it's better to be accurate. :)Jeremy Duncknoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-91273731870521963502006-08-27T08:28:33.001-07:002006-08-27T08:28:33.001-07:00The link about 1.7 MLOC is for slide 27 (pdf page ...The link about 1.7 MLOC is for slide 27 (pdf page 28). <br>Either that slide is wrong or the Erlang FAQ needs to be updated.<br><br>"<br>AXD301 has several hundred people working on it and the code volume has reached about 850 kloc of Erlang (and 1 Mloc of C/C++).<br>"<br><a href="http://www.erlang.org/faq/t1.html#AEN50" rel="nofollow">http://www.erlang.org/faq/t1.html#AEN50</a><br><br>Obviously 850KLOC is still sizeable, but it's better to be accurate. :)Jeremy Duncknoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-22583050525620976232006-08-27T08:28:33.000-07:002006-08-27T08:28:33.000-07:00Gah. The AJAX comment post is massively unintuiti...Gah. The AJAX comment post is massively unintuitive. :-/Jeremy Duncknoreply@blogger.comtag:blogger.com,1999:blog-16940011.post-4008725445054172942006-08-27T15:04:41.000-07:002006-08-27T15:04:41.000-07:00Thanks Jeremy, I'll fix the number in the post...Thanks Jeremy, I'll fix the number in the posting.Yarivnoreply@blogger.com