
LASP: A Language for Distributed, Eventually Consistent Computations - MCRed
http://lasp-lang.org
======
willismichael
I'm kind of disappointed that with a name like LASP, it doesn't have lisp
syntax.

~~~
tines
Apparently it's not even really a "language" in the same way most articles
mean, but simply an Erlang library.

~~~
andresmanz
Which is good, because there already are way too many languages...

~~~
r0naa
Could you elaborate on the drawbacks of having "too many languages"?

I thought that it was commonly accepted that having a diverse ecosystem of
programming languages was good thing for everyone (Companies and engineers)
because it fostered and fueled innovation in more mainstream languages by
showing that feature X is relevant, or possible or desired by the community.

I sincerely don't see how it could be a problem? You can just ignore the bad
ones or those that don't suit your needs while enjoying the others. Also, I
might be mistaken but I am under the impression that new PLs have faster
iteration cycles and are more receptive to feedback to suit one's particular
needs.

I personally enjoy to see a new programming language makes the front page of
HN because they often try to address existing problems in current big PLs, in
a new way or incorporate state of the art PL theory concepts that I did not
know!

Edit: why the downvotes? This is a genuine question!

~~~
rifung
I don't know why people are downvoting either, but I feel like you deserve an
answer. I'll admit others are probably in a better position to answer you
though.

A language's popularity is not really proportional to how clever it is
unfortunately. For example, Javascript is extremely popular but that's because
it's the only language supported by all browsers. Ruby is popular because..
well probably because Rails is in Ruby, although I haven't used Rails enough
to know whether it needed to be written in Ruby. From my limited time using
Ruby though, I don't see how it solves a different problem than Python does,
but hopefully someone more familiar with it than I am can pass on his or her
wisdom.

Having a diverse language ecosystem is not necessarily good because there are
a finite number of people working on them, and having more languages means
each of them will not be worked on as much. On the other hand, making a new
language CAN be good when an existing language doesn't fit a particular
problem well.

Having to learn a new language, while fun, is still time consuming and I think
most people would agree that there is time better spent except in the case
that a language truly presents something novel. Of course, most would also
agree that the more novel something is, the more time it would take to learn
as well.

In any case, because of the effort required to both make and learn a new
language, I think the person you are referring to was implying that people are
currently too liberal in deciding to make a new language and instead we should
only be making a new one if it's actually warranted.

------
visualpipe
A sample code fragment on the front page will be highly appreciated.

~~~
cmeiklejohn
Added a small code fragment.

(Disclaimer, I'm one of the primary authors of Lasp, @cmeik on Twitter)

------
sulam
Commutative, Conflict-free, Convergent -- the 'C' in CRDT sure is flexible. :)

~~~
cmeiklejohn
(edited for formatting)

Commutative (operation-based) and convergent (state-based) have been grouped
under the more general term conflict-free.

In 2011, Shapiro et al. [2] showed equivalence between the two types, and
later the name was generalized [3]. I've compiled a list of CRDT related
resources for more information. [1]

[1] [http://christophermeiklejohn.com/crdt/2014/07/22/readings-
in...](http://christophermeiklejohn.com/crdt/2014/07/22/readings-in-
crdts.html)

[2]
[http://hal.upmc.fr/inria-00555588/document](http://hal.upmc.fr/inria-00555588/document)

[3]
[http://dl.acm.org/citation.cfm?id=2050642](http://dl.acm.org/citation.cfm?id=2050642)

(Disclaimer, I'm one of the primary authors of Lasp, @cmeik on Twitter)

~~~
sulam
Thanks, this was useful!

------
sytelus
You can usually guess quality of programming language from the first page of
its description. For LASP it clearly sucks. No simple example, are you kidding
me? I finally dug out example at below link and all I can say is this is
pretty ugly language. So many _ and curly brackets that it feels dizzy. None
of the sample code is even remotely intuitively readable to make a guess
what's going on.

[http://christophermeiklejohn.com/lasp/erlang/2015/01/10/ad-c...](http://christophermeiklejohn.com/lasp/erlang/2015/01/10/ad-
counter-orset.html)

~~~
cmeiklejohn
The syntax you're complaining about is Erlang's. (_ is to ignore a token in a
pattern match, braces denote tuples.)

I've added a simple example, because I received that criticism from others,
so, thanks for your feedback.

Lasp's prototypical implementation is provided as an Erlang library: this is a
research language and we're researching the semantics of distributed
computation and not the syntax. The syntax seen in the examples is extremely
close to the syntax of the built in 'lists' module of Erlang, with the
addition of having to declare types, because of Erlang's type system. This was
done to make it seem natural to Erlang programmers.

(Disclaimer, I'm one of the primary authors of Lasp, @cmeik on Twitter)

