3 ms·
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
by rdtsc 8y ago
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 http://damienkatz.net/2012/01/the_future_of_couchdb.html
Yes, of course the argument should stand on its own despite the author's other claims or blog posts, so let's review some claims:
> Because Prolog sucks ass for building entire applications.
There have been entire applications written in Prolog. Attacking syntax is is just silly. Had Prolog used statements and not expressions or ; instead of . I doubt we'd would have a seen a lot more or less applications in Prolog.
> But that hasn't deterred Erlang from stealing it's dynamite syntax.
The syntax is consistent. That's the point. It has relatively few syntax and semantic rules. It has strong types and behaves consistently, comparing say, with "this" in Javascript. js has semicolons but it behave inconsistently sometimes. You'd have to explain why {} + [] = 0 for example. Picking on js here since the author used js as an example of a "good" language.
> editing code is much harder than conventional languages.
Have not found this to be true. It is a bit harder. But not much harder and not a show stopper. You can't randomly copy and paste code and reorder statements because compiler will not like it. That's probably a good thing. Variables being immutable is helping when inserting a new function call in the middle, you have to think well if that modified value is suitable for the operations that follow below.
> If Expressions
There are 6 paragraphs talking about the "if" expression. "if" is not even used that often and focusing on it just because it has the same name as the "if" statement from Algol (C) type languages is a waste of time.
Use "case" instead or even better multiple function clause heads. Yes, you can't do an early return so you have to explicitly handle every case. I see it as a good thing. You can cheat and say "_ -> ...DefaultValue" but it will stand and be obvious what's happening to the reader.
> You Say String of Characters, I Say List of Integers
Or list of unicode code points... You have a choice to use binaries instead of lists of integers. They are closer to the traditional strings in other languages. This is a better explanation of how they work: https://medium.com/@jlouis666/erlang-string-handling-7588daad8f05 https://medium.com/@jlouis666/erlang-string-handling-7588daa...
> but it's surprisingly limited and verbose, requiring you to state the type of the record for each reference in the code.
Since the blog was written Erlang got maps other languages call them dicts or hash tables for example.
All in all I'd say syntax is often what people talk about but it is closer to bike shedding. It is easy to argue about because it's right there and everyone can see a . instead of a ;. It would better to talk about the semantics of the language, sending messages, concurrency, modeling applications as a set of communicating processes, supervision trees etc.
- facetube 8y agoHe was right to abandon CouchDB. Here's my rationale: https://news.ycombinator.com/item?id=17116306 https://news.ycombinator.com/item?id=17116306
- tom_mellior 8y agoMinor 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.