Lambda World 2018 - Introduction to the Unison programming language - Rúnar Bjarnason

  Рет қаралды 8,208

Lambda World

Lambda World

Күн бұрын

Пікірлер: 19
@nathansire6623
@nathansire6623 4 жыл бұрын
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.
@web3tel
@web3tel 6 жыл бұрын
Looks extremely promising!
@nathansire6623
@nathansire6623 4 жыл бұрын
how do you solve hash conflicts on the dependency management? Every senior has complained to me about Python, Node and Ruby's dependency management.
@JesseWarden
@JesseWarden 5 жыл бұрын
@37:56 D&D joke == Unison gets a +2 to Charisma
@validate_6674
@validate_6674 5 жыл бұрын
34:14 - example from LYAH, chapter "Tasteful stateful computations")
@AbhiroopSarkar
@AbhiroopSarkar 5 жыл бұрын
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.
@stevekane8609
@stevekane8609 4 жыл бұрын
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.
@AbhiroopSarkar
@AbhiroopSarkar 4 жыл бұрын
@@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.
@stevekane8609
@stevekane8609 4 жыл бұрын
@@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).
@stevekane8609
@stevekane8609 4 жыл бұрын
@@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.
@nathansire6623
@nathansire6623 4 жыл бұрын
I have looked at Elixir. And I really do like it. But it does not have hashing like Unison... to help promote immutability.
@Tvaroh
@Tvaroh 5 жыл бұрын
What's the intro music?
@pick-pock
@pick-pock 6 жыл бұрын
Cool!
@bocckoka
@bocckoka 3 жыл бұрын
excellent for SW copyrights! (JK)
@wliaputs
@wliaputs 5 жыл бұрын
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.)
@stevekane8609
@stevekane8609 4 жыл бұрын
An effect system helps distributed computing by managing effects across nodes.
@nathansire6623
@nathansire6623 4 жыл бұрын
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.
小丑揭穿坏人的阴谋 #小丑 #天使 #shorts
00:35
好人小丑
Рет қаралды 41 МЛН
How Strong is Tin Foil? 💪
00:25
Brianna
Рет қаралды 64 МЛН
Category Theory for the Working Hacker by Philip Wadler
50:52
Lambda World
Рет қаралды 93 М.
Constraints Liberate, Liberties Constrain - Runar Bjarnason
51:40
"Unison: a new distributed programming language" by Paul Chiusano
41:06
Strange Loop Conference
Рет қаралды 42 М.
Lambda World 2018 - Opening Keynote by Edward Kmett
47:49
Lambda World
Рет қаралды 6 М.
Category Theory in Life - Eugenia Cheng
40:39
Lambda World
Рет қаралды 102 М.
Functional Programming in 40 Minutes • Russ Olsen • GOTO 2018
41:35
GOTO Conferences
Рет қаралды 817 М.
Distributed Streaming on Unison Cloud - Fabio Labella
52:20
Unison Language
Рет қаралды 468
Effective Programs - 10 Years of Clojure - Rich Hickey
1:14:52
ClojureTV
Рет қаралды 163 М.
"A Little Taste of Dependent Types" by David Christiansen
38:36
Strange Loop Conference
Рет қаралды 39 М.