Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Why don't we have programming languages that use this as their fundamental design principle?

It would be great if programs were collaborative out of the box.



I can't picture how that would work. While collaborative features require that some objects are shared and synchronized, efficiency and programmer sanity rely on the fact that some objects are not. If synchronization is opt-in, how would a language integrate it any more fundamentally than a library can?

Also, CRDT's don't provide synchronization for free. They ensure that all concurrent modifications will be merged somehow. If the data being synchronized has any structure, it requires careful CRDT-aware data model design to ensure the merging is semantically reasonable (or that, in the worst case, incompatible changes produce a detectably broken state).


Think about things like browser profiles or password managers that are kind of predicated on multi device and how none of that stuff is what you’d call zero setup. Does every app that wants to do this stuff need a key base or drop box backend? Is apps joining an ad hoc k8s network mesh or relying on a preexisting central redis or postgres or something really necessary for something like sharing data structures?

There’s definitely some room for interesting work here and language level support could be cool.

Elixir interpreter clustering and otp is maybe the closest existing thing, which is awesome but only for existing erlang fans.


It'd be great, but I think that we are not ready for this yet. Think on how long we needed to make the idea of having good tooling, cross-compiling support, testing or debugging support a requirement.

A library or even built-in language support for distributed data structures will take a decade or two to get to the point of proving a set of features to be truly helpful and good/necessary to have as a library or maybe even as a built-in feature.

BTW, we don't even have quickcheck yet, since the generation and proof reduction quality isn't great across implementations :/


Why a language and not a framework? I mean some langs even implement half their functionality in std libraries rather than part of the lang (as a preference actually).

I see their being overhead and what not that would make it very domain specific and less appealing for anything that doesn't need collaboration.


> Why a language and not a framework?

People said the same about web programming and yet we have e.g. Svelte.

Some things are just not so well expressed in a framework. Especially things that manipulate state in special ways.


What do you mean? Svelte isn’t a language


Why would you even want to start an entire new language with no tools, no debugging, no libraries, no ides and no optimizations just so you could make some data structures that could be made with C++ classes?


Because you haven't created it yet.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: