I was sold on the very first video. This solves sooo many challenges... And the language wars is a sign a new paradigm is soon here.
@web3tel6 жыл бұрын
Looks extremely promising!
@nathansire66234 жыл бұрын
how do you solve hash conflicts on the dependency management? Every senior has complained to me about Python, Node and Ruby's dependency management.
@JesseWarden5 жыл бұрын
@37:56 D&D joke == Unison gets a +2 to Charisma
@validate_66745 жыл бұрын
34:14 - example from LYAH, chapter "Tasteful stateful computations")
@AbhiroopSarkar5 жыл бұрын
I didn't understand how is this any different from Erlang. Except the error messages work, a lot of it seems to be a type system bolted over Erlang style actor systems. In Erlang you have the same ability of sending "computations" to a remote node. The state handler example for stacks in fact would look much prettier in Erlang syntactically and the type system doesn't get in the way.
@stevekane86094 жыл бұрын
I used to think the same thing when I first heard about Unison, but then thinking about it I realized Unison is about something else that Erlang doesn't bring to the table as much: a globally accessible codebase where code is treated as actual data. I am not too familiar with Erlang but I know the other language built for the EVM: Elixir has a nice but still traditional package management system. In Unison, you have functions and data structures that type check and can be referenced using their types. Developer A commits a new function that Developer B can consume immediately by just subscribing to the Unison codebase, and because of the type information, Developer B's IDE can make Developer B immediately aware of the new function. Developer B can also search for the function by its type etc.
@AbhiroopSarkar4 жыл бұрын
@@stevekane8609 "Developer A commits a new function that Developer B can consume immediately by just subscribing to the Unison codebase, and because of the type information, Developer B's IDE can make Developer B immediately aware of the new function. Developer B can also search for the function by its type etc." What you said here makes it sound like a distributed version control system like git. Could you explain if this is a distributed programming running that you are talking about? I don't think so, because you also mention Developer B's IDE. But again that is exactly what a version control system does. And when IntelliJ is connected git, if one developer pushes a new function and you ask intellij to pull you can get access to developer A's new function and in fact, in static typed languages like Java search it by type. I still don't understand how is this a unique feature of Unison. Or are you suggesting Unison is a language which comes integrated with a version control system, the code itself is versioned and addressable (that makes sense because the developers mention that Unison code is content addressable)? This might be in some way novel, that you integrate version control with your code but again its utility needs to be judged by some convincing use case which demonstrates that it is useful. I am yet to see one. Also, you mention you are not too familiar with Erlang but I would urge you to look into Erlang's online code loading/reloading capacity(very different from REPLs in a single machine programming language like Lisp etc) where it actually versions the code behind the scene.
@stevekane86094 жыл бұрын
@@AbhiroopSarkar Yes, Unison does have a version control system. It is described in more detail in Runar's other talk here: kzbin.info/www/bejne/r5rGiZaaga5lj6M I am interested in Erlang/Elixir, so I started to learn Erlang/Elixir recently. Unison's version control is at the function/datatype level and is managed using namespaces and hashes. So not only do you get to search an entire (potentially global/universal) codebase as it is an actual database, but with the namespacing and hashing at the function/datatype level, you avoid a lot of problems with traditional semantically versioned modules/classes. BTW, I am speaking about this in theory because I have not used Unison. As far as I know, it's not ready for real application implementations. And I'm also not saying Unison will automatically replace Erlang/Elixir. I'm sure there's a lot in the OTP that will either take a long time to build in Unison, or can't really be implemented because of the type system (hot swappable code for instance).
@stevekane86094 жыл бұрын
@@AbhiroopSarkar Another thing I would like to point out is that the granularity of version control with Unision seems to be much better. In a language like Java, you could end up with something like a class which contains methods, but those methods are tied to some kind of state, so you have to initialize an object of the class etc. In a pure functional language the only state the function can have is what you pass in. I think there are big advantages to having version control at the most granular level possible: individual functions and datatypes. Once again this is theoretical. It could turn out that Unison has an awful type system that gets in the way of implementation. Plus there are other aspects of the language that might turn out to be unpalatable. But even if that were the case, the idea is still there and another language could come along to fix the issues of Unison.
@nathansire66234 жыл бұрын
I have looked at Elixir. And I really do like it. But it does not have hashing like Unison... to help promote immutability.
@Tvaroh5 жыл бұрын
What's the intro music?
@pick-pock6 жыл бұрын
Cool!
@bocckoka3 жыл бұрын
excellent for SW copyrights! (JK)
@wliaputs5 жыл бұрын
I feel like this language want to achieves way too many things at once, the main focus should be ease of distributed computing, not some other aspects (like better error messages, effect systems etc.)
@stevekane86094 жыл бұрын
An effect system helps distributed computing by managing effects across nodes.
@nathansire66234 жыл бұрын
I think we are witnessing a divide between distributed computing and vertical monolithic centralized stacks. Oracle is using Graal to consolidate. And unison is decentral... like block chain.