Live data from Hacker News

What Sucks About Erlang (2008)

damienkatz.net

41–50 of 105 posts

Re: What Sucks About Erlang (2008)

#41

Earlier quoted context omitted.

It doesn't use real node-local/shard-local MVCC AFAICT. It's O_APPEND on flat files.

Sorry, wasn't clear if you were talking about MVCC in a replication context or in a node-local context. It does the former, it definitely does not do the latter.

I don't know that much about databases, could you go into more detail?

Re: What Sucks About Erlang (2008)

#42

Earlier quoted context omitted.

I don't quite get pouchdb. Do you need to store multiple revisions of the same document in a browser database? Locks/transactions seem like a better approach here for writing to data client side.

The main point is to sync server side data to a client side database, smoothly, so that the application can continue to function offline and then resync once the connection is re-established. Couch has always been good at this use case where systems on both ends may have changed in the disconnect time.

but you could store Ids and revisions on any key/value store on the client. Why does the client need pouchdbs multiple revisions?

Re: What Sucks About Erlang (2008)

#43

Earlier quoted context omitted.

I don't quite get pouchdb. Do you need to store multiple revisions of the same document in a browser database? Locks/transactions seem like a better approach here for writing to data client side.

The main point is to sync server side data to a client side database, smoothly, so that the application can continue to function offline and then resync once the connection is re-established. Couch has always been good at this use case where systems on both ends may have changed in the disconnect time.

Realm looks like a much more modern solution to that problem.

Re: What Sucks About Erlang (2008)

#44
post #40

Earlier quoted context omitted.

C# is widely used, but it's a bit of a sacred cow.

C#’s a weird one: it’s widely used, but still unpopular. It’s got genuinely large problems (like the anemic OS ecosystem) but when considered as a language on its own, it’s been ahead of the game in its class.

It may be unpopular with the HN crowd, but that's more by proxy, in so far as a Microsoft stack in general is unpopular here.

C# is however very popular in the enterprise world. I've been using it for work and side projects alike for many years, and personally I love it.

Re: What Sucks About Erlang (2008)

#45

Earlier quoted context omitted.

Any complaints in particular? I had been contemplating CouchDB for a new application at work, maybe you have a link I could read about it? I thought that the incrementally updating mapreduce style views looked really powerful, especially when combined with the changes subscriptions / long polling features.

God, where to start. Map/reduce views ("secondary indexes") are currently built by serializing JSON down a pipe to an external process called couchjs that links against a seven year old version of Mozilla Spidermonkey (1.8.5, released on March 31st 2011, and the only version it currently works with). This external process then pipes the map results back, again as JSON. Forget zerocopy; we're serializing and deseriali…

For balance: there is a newer query/index system called Mango in Apache CouchDB 2.0+, that IIRC is internal and doesn't rely on any external view server. It wasn't in 1.7.1, though, so if you're coming from there, it's very much a "switch query APIs to get tolerable performance" situation.

Re: What Sucks About Erlang (2008)

#46

Earlier quoted context omitted.

Sorry, wasn't clear if you were talking about MVCC in a replication context or in a node-local context. It does the former, it definitely does not do the latter.

I don't know that much about databases, could you go into more detail?

From the point of view of a single cluster or node (ignoring replication for a moment), it just doesn't have any strong notion of transactions. There's no write-ahead log, no rollback, and no situation where you'd be able to operate in a mode equivalent to something like `SERIALIZABLE` on a relational database.

Re: What Sucks About Erlang (2008)

#47
Is it right to say that Erlang and Prolog are actually that close as stated at the beginning of the article ?

As far as I am aware Erlang does not run the unification algorithm and it is very different, you can, for instance, assign variables.

I don't think it is right to compare the two as close languages as it is claimed but I would be interested in your opinion

Re: What Sucks About Erlang (2008)

#48
post #6

Erlang's statement separators seem to me more like English. I don't hear a lot of complaints about commas, semicolons, and periods in English and I don't find it an issue in Erlang.

I was going to rage on the author, but I'll just let it go. "," means AND. ";" means OR. "." ends the rules. In Algol based languages ";" ends each statement. To apply OR or AND conditions between statements, you then need to use if/then/switch conditions.

This could still be simpler without losing anything: It's kind of redundant to use ";" at the end of rules that are followed by another rule for the same function. Erlang could just use "." here as well. The parser could still tell that another rule for the same function follows by seeing if another rule for the same function follows ;-)

(Prolog, which influenced this part of Erlang syntax an many others, does it this simpler way. It still sucks if you want to comment out the last line of a clause, or switch the last line of a clause with some other line.)

Re: What Sucks About Erlang (2008)

#49
post #26

It's a 10 year old blog post from the creator of CouchDB who then later declared the project dead despite it already having a vibrant open source community with multiple users and contributors. Then went on to create another project that had a similar name but was a merge of a bunch of other technologies which lead to endless confusion years on after the fact. http://damienkatz.net/2012/01/the_future_of_couchdb.html…

Minor points:

> Had Prolog used statements and not expressions or ; instead of .

Prolog uses "goals", which are a lot more like statements than they are like expressions. Also, Prolog doesn't use ; to separate the clauses ("rules") of a predicate, it uses . to terminate each one.

But I agree that whether or not Prolog sucks for building entire applications has nothing to do with these points.

Re: What Sucks About Erlang (2008)

#50
You have Erlang the programming language, Erlang the system (OTP, philosophy), and even Erlang the eco system (including Elixir).

Personally I like Erlang the language, but it is still Erlang the system that truly shines.

It says a lot of Erlang the system that we’re fondly criticizing the language, warts and all. Erlang is all about pragmatism and we hand it over to the academy (the Swedish one, notch, notch, know what I mean?) to dwell on the Important Details about ‘.’, ‘,’ and ’;’ ;)

Post reply on HN