I rewatch it 1 year after initial watch and I think I only now understood Yoneda embedding. That's rather an intense crash course for 1 hour :D I strongly recommend Bartosz Category Theory course on UA-cam.
Functor Monad Applicative Expletive... btw, *BIG THANKS* to Dr.Bartosz - thanks to his series on Category Theory that I understand Haskell and the reasoning behind it all.
Great talk! I wish he gave a few more concrete examples in between some of the theories. I'm just going to end up creating examples of how to use the concepts in my head anyway, so I want the examples I come up with to actually be valid. I could be misunderstanding how to actually apply some it (like Yoneda Embedding).
Yeah it could be another slide before Yoneda, but that would be too much information for such short presentation. He goes into that deeply in his CT course on UA-cam.
The first 10 minutes should be considered the standard argument for what's wrong with mathematics instruction today - he said it so clearly: math should not be about teaching humans how to imitate machine, but should be the best tool humans have to reason about ideas. In reality, true mathematics is the former, but of course we can forgive any laymen whose public education has convinced them otherwise.
In 26:50, he said an incoming arrow could be seen as a constructor, and then he said empty set has no constructors. But isn't there's an arrow from the empty set pointing toward itself?
Yes, but you could never call that constructor. You would be defining a recursive type with no base cases, which indeed has no elements, and therefore is isomorphic to Void.
I've watched a few videos on category theory. I've studied set theory and mathematical logic (a long time ago), I've played around with functional programming in ML and Clojure, and I've played with the Isabelle proof assistant/theorem prover. But I've yet to see the point of CT for day-to-day programming. Is it supposed to help you think about programming in a new way? Or is it more useful for the design of programming languages, or perhaps for proving things about programs?
all valid questions. I'm thinking it should be a framework for all other abstract problem-solving. you know, the lowest set of logical operators for the human problem-domain that is easily solvable by a machine, so that when we go higher up we get more of that human-framing and less machinery bits getting in the way. to put it bluntly. but it cannot work that way ("there is no time in math"). mathematicians are just annoyed with the way computing works. we picked imperative for a reason, but they would really like to be able to code -- because they can't, for some reason, all they do is implement tools that behave mathematically so they can pursue this purity of thought. software engineers and mathematicians are quite the opposite, you never get both at once. if you look at the leading and most pragmatic languages to implement anything, they are neither Scala nor Haskell. you know, both are used in "research", and both are endorsed by 'academia' alone. well, let me put my elitistic glasses on, so that I can appreciate it all a bit more. nope, both languages just didn't want to compromise their theoretical baggage in order to get things done. unless I can make a functional game (pun intended) in Scala, it's just a technical perversion that strays people from the path of the reality of programming. so in essence, it has nothing to do with programming, mathematicians just yearn for a way to make computers a slave of their mindset. hence the category theory. but maybe something useful will trickle out of it, who knows. that certainly happened in the past. it was all theoretical to begin with, but then engineers came along anyway. so we should definitely figure this one out. thus your questions are valid.
@@milanstevic8424 Sorry, but this is untrue. Not the part about most mathematicians being poor programmers, because even most software developers are poor programmers. But the rest is false. For starters, Scala is certainly used outside academia and research - I have worked with companies ranging from startups to huge corporations using Scala to create applications which were vital to their operations. Some relatively small ones (~10 kSLoC), some relatively big ones (~500 kSLoC, which is a lot in Scala, although I know of some Scala projects which are an order of magnitude bigger). I wouldn't try implementing most of those in a lower-level, imperative language. It would be a nightmare, one full of bugs (which is not a huge problem for games, but for those clients it could mean losing millions of $). While not perfect, I believe Scala is currently one of the best choices for serious business and processing huge amounts of data (i.e. it excels at high availability, scalability and high throughput). As for Haskell, I cannot say from my own experience, but I know that e.g. Facebook uses it (see Haxl). The statement about Scala "not compromising its theoretical baggage" is the opposite of what really happened - enough to say that Scala is a multi-paradigm language and that Dotty is almost a total overhaul of Scala. When it comes to games, there is absolutely nothing inherently wrong with Scala as a language which would make it unsuitable. I think what you mean is that JVM is not a great platform for games, which is somewhat true, but there are some which do use it nonetheless (e.g. Minecraft). You just need to be careful about garbage collection, mostly (but frameworks usually take care of this for you, e.g. LibGDX). I think a major factor behind Scala being very rarely used for games (I know some game companies which do use it) is that people who know Scala can find much better jobs outside game industry. Regarding "something useful trickling out of it", it is already happening. It is clearly useful for language designers and library authors, but even in a typical programmer job it helps immensely to know the theory behind things - it lets people write cleaner, more reliable code and reason about it. I know some people who know CT quite well and I know it has even helped design a more efficient algorithm at least twice. And no, I'm not a mathematician, on the contrary - I was writing imperative code (including low-level Linux kernel stuff and some embedded programming) for 20 years before I finally gave functional programming a chance (initially having thought it was just a toy for mathematicians, too) and that was the best decision in my career. I think category theory will be the next big step towards better code, although I feel I'm still only beginning to understand these abstractions.
@@tuesss Maybe my tone was a bit negative, but I really only wanted to sound as realistic as possible. You see, Turing was a computation forefather and a brilliant mathematician, but he _was_ a lousy programmer. There is simply no other way. It's not that I hate mathematics or that I have anything against it, in fact I adore it and I wish the world was part of a mathematical reality (instead of it being the other way around), but the set of mathematical realities doesn't overlap with the set of engineering realities. It assumes perfection in the low level domain and all functional code (and languages) exhibits this bias. It cares not how the types are actually resolved. It ignores the concept of having a hardware, neglects the memory usage patterns, tends to iron out any experience that makes you open that bonnet in order to replace oil. "We should be driving, why don't we just use robots... Or slaves.." right? I've heard more than one woman driver saying that, for some reason. While common engineering tends to factor in the processing time, the "churning" factor, the deadline, yield, utility, and user experience. It is dirty, it is messy, it is actually embedded into the universe as we know it, but most often than not it's heavily inspired by the divine mathematics, the one cannot do without the other. Mathematicians would instead like to live in a world where all of these things are not really important. It's about the level of abstraction. To quote a real world example, I give you a de facto standard, perfectly illustrating the illusion of the theoretical approach to programming: IEEE 754. It's as inaccurate and limited as it is useful, and while being conceptualized by mathematicians in order to satisfy the real world usage, it goes directly against the purity of their domain, hence it wasn't implemented by mathematicians, but hardcore engineers akin to Wozniak, who was almost autistic in his elation for being able to juggle bits on a limited piece of electronics, to switch cleverly and shave off two cycles and save the arcade panel board from a couple of extra processors, where there were normally dozens. There is no 'equality' sign in the world of IEEE 754. You cannot ever hope to get two doubles equal to each other bit by bit, unless they're both zero. The equality is a hack, and an unpure one, mangling up several domains in order to achieve the desired effect. The most "pure" incarnation of IEEE 754 is when the hardware is augmented with coprocessors capable of natively solving the comparisons in optimal time. But the reality is that the hack just descended out of sight. *And this is exactly what functional paradigm does, it draws a clear line where it thinks a line between messy and pure should be.* It is a useful thing to have, but most often than not, it doesn't solve anything on its own, but trades off by calming down the spirits of math-genius OCD, and exhibiting theoretical expressiveness at the expense of having it work more deliberately and thus more powerfully. The point is really to have the electrons take the least path, you cannot shun away from that. If your slaves are building a Giza pyramid, the key is not to have them haul the stones from England. "The point is to have the stones gathered up, eventually, but let's be honest here, the diagram is beautiful isn't it. In just a couple of generations, it will be done." While we're at it, point me to a direction of a functionally written software that is as beautiful to use as it is useful, robust, and readily available. I have plenty of imperative examples to share, so there has to be some design choice involved when it comes to picking a paradigm. As for Scala you're mentioning, that's a heavily compromised Frankenstein's monster. It simply has to be more imperative than you would like to admit -- it simply has to be, if it's really used in a robust and technically competent manner, and I'm not talking scalability, because that's just one of the few rare things you get for free in F languages, I'm talking performance, collaboration, maintainability -- and I stand firm in my statement that there is no practical >>pure
why Void has a "unique" arrow to other objects? It seems to me there can be infinite number of arrows to other objects. E.g. if a function map Void to Integer, then the function + 1 (or 2, 3, 4, ...) also maps to an Integer, so why it is said to be unique?
In a category of integers, ints are the objects. In a category of types, the type INT is an object. They both have their own Void. It can be difficult to keep straight in your head the environment (level) we are thinking in at any point.
Category theory is being applied more & more in physics & computer programming. It's been there for a while but now it's becoming mainstream-ish. Celebrate math nerds! CELEBRATE 🎉
'a monoid is something which takes two things and returns one' so it is a new name for induction... okay. ' you arent adding any information by adding a unit' the iso wants to chat.
I do like the language of mathematics. I do _not_ like the syntax of mathematics. It doesn't even type check. It's as if mathematicians only used Perl, _except_ Perl is still understood by a computer, so it cannot be that bad.
It's the same thing, only in two different perspectives (one taking functions as fundamental, and the other taking types as fundamental). It simply shows that these theories are capable of representing more well-known, concrete theories.
At ~24:50, I do not understand why Void in Category Theory maps to the empty set in Set Theory: how can the empty set have functions to every other sets, like Void has an arrow going to every other object? Because a function needs a source element, which by definition is not available in an empty set.
Yes I agree... What I cannot figure out is what the arrow going out of the initial object represents in the case of set theory. Best thing I can think of is the lack of a function...
sbditto85 in programming terms yes... but sleeping over it helped I think. We have different definitions of a function at our disposal. One if them fits nicely: f:A->B is the set of (a,b) in AxB under the condition that all elements in A are mapped exactly once. If you look at a (total) function from that angle, then the empty set of pairs is a function from {} to any other set, since all the pairs it contains respect the condition above... you can call that special function Nil and it corresponds to the arrows coming out from the initial object. The nice thing is that seen as a relationship between elements in A and elements in B there is no need for extra definitions and conditions in order to define the nil function. As a bonus we explicitly get the now famous product AxB at the core of definition for functions.
Question @29:00 was annoying as the asker was confused. What he said earlier is that there is no arrow from an empty set to an element of its own set. That doesn’t mean there is no arrow from an empty set to itself.
T amo muito muito sucesso sempre vcs estão no centro da casa e amanhã vou lá no centro da cidade e amanhã às três dias para todos nós vamos no centro de novo está falando sério e amanhã às três horas vou chegar lá
T amo tanto amor e amanhã vou ter um beijo e o cafezinho tava no médico e amanhã vou ter fé e o almoço está falando sério e o cafezinho tava precisando muito muito sucesso sempre
Ch SP né mano tô indo embora amanhã vou ter um compromisso no médico tô aqui no escritório e o almoço amanhã vou lá e amanhã às três dias para todos nós vamos no centro de novo está falando sério
it's not your fault, it's dry as cotton and the lecture is badly formulated. it's actually quite simple, it couldn't be any simpler. it's the consequence of it that is perplexing, but the foundational patterns are pretty dumb. but such is a thing with mathematics, the languages and notations mathematicians use are completely human unfriendly. and not everyone can teach. I'm a software engineer and thankfully have discovered mathematics through a little backyard door, instead from the cryptic portal guarded by two gigantic sphinx in the front, stupefying everybody. the actual effort of implementing it in the real world terms is what makes it tick for me, whether it is geometry, linear algebra, calculus, logic, statistics, or the set theory, but I don't like the abstract transcendence of it, the thought-provoking fantasy mind blowing games, and yes I'm definitely not a mathematician, they're like a different caste of people, I just use it as a very clever tool to magically arrive at incredible conclusions and to visualize my problem spaces, but tbh pretty advanced areas of math are a lot simpler than they look and is pretty easy to navigate once you get the point of it and work out the fundamentals, and seriously -- what the lecturer prescribed very well in the beginning -- that math lecturers should give us the goal, the objective, and it'll all come together naturally, he failed to do. well, shit.
Fala comigo então só vou conseguir ir lá buscar no médico e amanhã às noite toda vez no médico amanhã às noite toda hora e amanhã vou ter fé no nosso país e o almoço amanhã
T amo tanto amor e o cafezinho tava precisando muito difícil né e o cafezinho tava precisando de uma pergunta para todos nós vamos no médico e amanhã vou lá pegar ET e amanhã vou lá pegar um beijo no coração
D ER hoje e amanhã vou ter um compromisso no médico e e o cafezinho tava precisando muito difícil né e, amanhã às três horas da manhã vou levar um pedido de novo né amiga, da uma pergunta para ela, se ela quiser ir lá no, centro da cidade mesmo né amor da vida e amanhã
R viu se encontra lá no médico amanhã vou lá pegar um pedido para mim ir no centro da cidade mesmo e amanhã às três dias quando chegar no centro da cidade e o cafezinho tava no centro de novo está falando comigo e o cafezinho
E amanhã às três dias para todos os dias para todos nós estamos indo para todos os dias de um pedido de um pedido de um pedido de um pedido de um beijo e te mando
Dr Ricardo e o cafezinho tava no centro de um pedido para mim ir no centro da casa da empresa agora da manhã e amanhã às três dias quando estiver chegando te mandar o cafezinho da manhã e amanhã às três horas vou chegar um pouco então só no centro
T amo tanto o cafezinho tava precisando muito de novo né amiga e o cafezinho da tarde para você também e amanhã às três dias quando estiver pronto te mandar o cafezinho da manhã e amanhã
R o cafezinho tava no médico e amanhã vou ter fé e o cafezinho tava precisando muito muito de novo está falando sério mesmo e amanhã vou lá pegar ET e o cafezinho da tarde para você também e o almoço amanhã
Du ND e amanhã às noite vou te buscar as crianças e amanhã vou ter fé no médico amanhã vou ter fé no médico e amanhã vou lá no médico amanhã às três dias para todos
DJ Henrique e o almoço está falando comigo e o cafezinho tava precisando de uma pergunta para todos os momentos de um pedido de novo né amiga e amanhã vou ter um compromisso no centro da cidade de
T amo muito vcs estão no médico e amanhã vou lá pegar ET o almoço está falando comigo no médico e amanhã vou ter um compromisso no centro de novo né amiga da uma
E o almoço amanhã às três dias para todos nós vamos no centro de um pedido de novo está as e amanhã às noite vou te mandar e o almoço está pronto vou conseguir dormir
D ER hoje né se encontra lá no centro da cidade mesmo e o cafezinho tava precisando de um beijo no rosto de novo está as crianças estão fazendo entrega no médico amanhã às noite toda hora ri demais e o cafezinho da manhã vou levar o almoço amanhã vou ter fé e fé no nosso
Du ND e amanhã vou ter fé e fé no nosso país e o almoço amanhã vou lá no centro da cidade e amanhã vou ter fé no nosso país e amanhã vou lá pegar um pedido para todos os dias para todos nós vamos ter fé e o cafezinho tava precisando muito
DJ Henrique e o almoço está pronto para ter um compromisso no centro de novo né amor e amanhã às três horas da manhã e amanhã às três dias para todos nós estamos aqui esperando aqui
Xv e amanhã às três dias quando estiver chegando te mando mensagem e amanhã às três dias para nós estamos indo para lá pegar ET e o almoço amanhã vou lá no centro pegar um pedido de novo está as crianças e o cafezinho da manhã e amanhã às três horas da
Ser o almoço amanhã às três horas da tarde vou lá no médico e amanhã às noite toda hora e amanhã vou lá no médico e w se fala alguma novidade da casa e amanhã vou lá no médico
Tô aqui no médico e w se encontra no centro de um pedido para todos nós estamos aqui esperando vcs estão no centro de um beijo e te mando mensagem de um beijo e te mando mensagem de novo está as crianças estão muito felizes e amanhã se encontra lá ER no centro
D ER r viu se encontra lá ER no médico e amanhã às três dias para nós vamos no centro da cidade de um beijo e te mando msg de novo está falando sério e amanhã vou ter um compromisso no médico e amanhã às três horas vou chegar um pouco então
R viu amor da nossa vida e o cafezinho tava no centro da casa e amanhã vou lá pegar um beijo no rosto e o almoço está falando sério e o cafezinho tava no centro de um
D fui lá no centro de novo está as crianças e o almoço amanhã às três dias quando estiver chegando te mando mensagem de ei c o ET e amanhã às noite vou dormir aqui no escritório
DJ Henrique e o almoço amanhã às três dias quando chegar lá no médico e amanhã às três dias para todos nós estamos aqui no médico amanhã vou ter um compromisso no médico e amanhã às três horas da tarde vou ai Sim hein se cuida e o cafezinho da tarde
Só r o almoço está falando sério mesmo e o almoço amanhã vou lá pegar um pedido para mim ir lá buscar as coisas ai sim entendi amor por favor se fala comigo então vou te buscar as coisas ai Sim e o cafezinho tava precisando muito muito
Si for no centro de um pedido de um pedido de novo está falando sério e amanhã às três horas da manhã e o cafezinho da manhã vou levar um beijo no rosto e amanhã às três dias para todos nós estamos aqui esperando vcs estão no centro de novo está as crianças e amanhã vou ter um compromisso e o almoço amanhã às três
R viu se encontra no centro de novo né amiga da uma pergunta para ela amanhã de manhã e o almoço está falando comigo e o almoço amanhã vou lá pegar ET o almoço
T amo muito muito sucesso sempre felicidades sempre vcs estão no médico amanhã às noite vou te buscar w r da manhã vou lá pegar ET e o almoço amanhã vou ter um compromisso no médico
D ER r e o almoço está pronto vou conseguir dormir um pouquinho e o cafezinho tava precisando muito difícil de um beijo e te mando msg ok obrigado pela
F da vida e amanhã vou ter fé no nosso lugar muito longe da vida da casa e o almoço amanhã vou ter fé e fé e o cafezinho da manhã vou lá no centro pegar o almoço está falando sério e amanhã às noite toda hora ri demais e amanhã às três dias para todos nós vamos ter um compromisso no
R viu se fala comigo no médico amanhã às noite vou te buscar as crianças e o cafezinho tava no médico e amanhã às três dias para nós estamos indo para casa agora da e o cafezinho tava no centro de novo né amiga da uma olhada lá no médico amanhã às
R o almoço amanhã às três dias para nós estamos aqui no médico e w r viu amor e o cafezinho tava precisando de um beijo no coração e o cafezinho da tarde para todos
X brasil copa e o cafezinho tava precisando de uma pergunta para ela amanhã às noite vou te buscar w se encontra lá ER hoje e o almoço amanhã vou lá pegar um beijo e o almoço está pronto para o cafezinho da manhã vou
R viu amor da vida e o cafezinho tava precisando de um beijo no coração de novo né amiga da vida da vida e amanhã às três horas da tarde para todos os momentos da vida e amanhã vou ter um beijo no coração de Deus no controle da vida e amanhã às três
F da vida e amanhã às noite toda e o cafezinho da tarde para todos os e amanhã vou lá no médico amanhã às noite vou dormir um pouco então vou te buscar w se fala alguma coisa e amanhã vou lá no médico amanhã às três horas vou conseguir dormir aqui no médico amanhã vou ter fé e
F da casa e o almoço está pronto para o cafezinho da tarde vou ai wwe o cafezinho tava precisando muito muito de novo está falando sério e amanhã vou lá pegar um beijo e o cafezinho tava no centro da casa da empresa agora da manhã vou levar um beijo
F da casa e amanhã às três dias quando chegar t amo tanto faz um beijo e te r e r e amanhã às três dias para nós estamos indo embora agora da manhã vou lá no centro pegar um beijo e o cafezinho da
Só r o cafezinho tava precisando muito muito de novo né amiga da uma olhada lá buscar no médico e w se encontra lá ER hoje e o almoço amanhã às três dias quando chegar no médico amanhã às três horas e o almoço amanhã e amanhã às três dias quando estiver pronto vou levar
Se encontra no centro da casa e amanhã às noite toda e o cafezinho tava no médico amanhã vou lá no médico e w r da um jeito r viu amor da nossa equipe e amanhã vou ter fé no médico amanhã às noite vou te mandar o cafezinho da tarde para você e
D ER r e o almoço amanhã vou lá pegar um beijo no rosto de novo está falando comigo e amanhã vou lá no centro da cidade mesmo e amanhã vou ter um compromisso no médico e amanhã vou ter fé e
G Du ND no médico amanhã vou ter um beijo no rosto e o cafezinho da é só no centro da cidade de um beijo e o cafezinho tava precisando muito muito de novo está falando sério e amanhã vou lá no centro pegar um pedido de um pedido para mim
F da vida da ET e r e amanhã às noite toda vez por causa de uma pergunta se ela quiser vir amanhã né se fala alguma coisa e o almoço está pronto para o almoço amanhã às três dias para nós vamos no médico e amanhã vou ter um beijo e te mando msg ok obrigada pela
S o almoço está pronto para você também bjs até daqui apouco te ligo ok obrigado por ter vindo aqui fora e o almoço está falando sério mesmo né ele está r o cafezinho da tarde para todos os momentos
Rc de novo né amor da nossa vida sempre e sempre te mandar e o almoço está falando sério mesmo e se encontra no centro de um beijo no rosto de novo né amiga e amanhã às noite toda vez no médico e amanhã vou ter um
C BB GG GG GG e o almoço amanhã vou lá pegar ET e amanhã às três horas vou chegar lá no médico amanhã vou ter fé no nosso lugar maravilhoso e abençoado por favor te mandar o número
The most friendly presentation ever which helped me to connect the dots
with arrows? :)
@@maximyanchenko3780we're functional programmers, buddy-where we're going, we don't need dots (points).
Lol that dude who was like “we got time” is our hero! He’s already helped 20k people.
This guy is my heroe in terms of knowledge, vision and kindness. Would love to meet him one day.
The last 15 minutes were so over my head, I'm going to need a functor to lift the knowledge into my mind.
thats an Applicative
From where you imply you're standing, you seem to be the one who needs lifting
'If you are looking for reasons to study category theory, maybe you should just enjoy it', oh yeah!
I rewatch it 1 year after initial watch and I think I only now understood Yoneda embedding. That's rather an intense crash course for 1 hour :D I strongly recommend Bartosz Category Theory course on UA-cam.
Functor Monad Applicative Expletive... btw, *BIG THANKS* to Dr.Bartosz - thanks to his series on Category Theory that I understand Haskell and the reasoning behind it all.
Samuel Eilenberg (September 30, 1913 - January 30, 1998) was a Polish-American mathematician who co-founded category theory with Saunders Mac Lane.
Great talk! I wish he gave a few more concrete examples in between some of the theories. I'm just going to end up creating examples of how to use the concepts in my head anyway, so I want the examples I come up with to actually be valid. I could be misunderstanding how to actually apply some it (like Yoneda Embedding).
Wow, Bartosz makes these very complicated ideas easy to understand. Thank you very much.
This is the best video I've watched in the whole month. Thanks.
I was really expecting it to culminate with the monoid in a category of endofunctors ;)
Yeah it could be another slide before Yoneda, but that would be too much information for such short presentation. He goes into that deeply in his CT course on UA-cam.
Brilliant lecturer - really clear presentation!
very very beginner-friendly, which is rare in the field at the moment. Nice!
A practical introduction to Category Theory - Daniela Sfregola video is a primer to this one. he basically refers to this for basics around 21:00
The first 10 minutes should be considered the standard argument for what's wrong with mathematics instruction today - he said it so clearly: math should not be about teaching humans how to imitate machine, but should be the best tool humans have to reason about ideas. In reality, true mathematics is the former, but of course we can forgive any laymen whose public education has convinced them otherwise.
Including the Haskell examples as well (as a link to gists) would be great.
Rising high schooler here. I'm surprised that I can even understand some of this stuff! Nice job explaining everything in a quick and concise manner!
I love this guy's videos. He also sounds as if Borat was born in South Park.
this comment made my day
During the whole (brilliant) presentation I kind of expected him to pull out a zither and play some psych-folk.
Excellent. Thought provoking.
In 26:50, he said an incoming arrow could be seen as a constructor, and then he said empty set has no constructors. But isn't there's an arrow from the empty set pointing toward itself?
Yes, but you could never call that constructor. You would be defining a recursive type with no base cases, which indeed has no elements, and therefore is isomorphic to Void.
Excellent content and style with a bit of clockwork orange, right? )
I've watched a few videos on category theory. I've studied set theory and mathematical logic (a long time ago), I've played around with functional programming in ML and Clojure, and I've played with the Isabelle proof assistant/theorem prover. But I've yet to see the point of CT for day-to-day programming.
Is it supposed to help you think about programming in a new way? Or is it more useful for the design of programming languages, or perhaps for proving things about programs?
all valid questions.
I'm thinking it should be a framework for all other abstract problem-solving. you know, the lowest set of logical operators for the human problem-domain that is easily solvable by a machine, so that when we go higher up we get more of that human-framing and less machinery bits getting in the way. to put it bluntly.
but it cannot work that way ("there is no time in math"). mathematicians are just annoyed with the way computing works. we picked imperative for a reason, but they would really like to be able to code -- because they can't, for some reason, all they do is implement tools that behave mathematically so they can pursue this purity of thought.
software engineers and mathematicians are quite the opposite, you never get both at once. if you look at the leading and most pragmatic languages to implement anything, they are neither Scala nor Haskell. you know, both are used in "research", and both are endorsed by 'academia' alone. well, let me put my elitistic glasses on, so that I can appreciate it all a bit more.
nope, both languages just didn't want to compromise their theoretical baggage in order to get things done. unless I can make a functional game (pun intended) in Scala, it's just a technical perversion that strays people from the path of the reality of programming.
so in essence, it has nothing to do with programming, mathematicians just yearn for a way to make computers a slave of their mindset. hence the category theory.
but maybe something useful will trickle out of it, who knows. that certainly happened in the past. it was all theoretical to begin with, but then engineers came along anyway. so we should definitely figure this one out. thus your questions are valid.
@@milanstevic8424 Sorry, but this is untrue. Not the part about most mathematicians being poor programmers, because even most software developers are poor programmers. But the rest is false.
For starters, Scala is certainly used outside academia and research - I have worked with companies ranging from startups to huge corporations using Scala to create applications which were vital to their operations. Some relatively small ones (~10 kSLoC), some relatively big ones (~500 kSLoC, which is a lot in Scala, although I know of some Scala projects which are an order of magnitude bigger). I wouldn't try implementing most of those in a lower-level, imperative language. It would be a nightmare, one full of bugs (which is not a huge problem for games, but for those clients it could mean losing millions of $). While not perfect, I believe Scala is currently one of the best choices for serious business and processing huge amounts of data (i.e. it excels at high availability, scalability and high throughput). As for Haskell, I cannot say from my own experience, but I know that e.g. Facebook uses it (see Haxl).
The statement about Scala "not compromising its theoretical baggage" is the opposite of what really happened - enough to say that Scala is a multi-paradigm language and that Dotty is almost a total overhaul of Scala.
When it comes to games, there is absolutely nothing inherently wrong with Scala as a language which would make it unsuitable. I think what you mean is that JVM is not a great platform for games, which is somewhat true, but there are some which do use it nonetheless (e.g. Minecraft). You just need to be careful about garbage collection, mostly (but frameworks usually take care of this for you, e.g. LibGDX). I think a major factor behind Scala being very rarely used for games (I know some game companies which do use it) is that people who know Scala can find much better jobs outside game industry.
Regarding "something useful trickling out of it", it is already happening. It is clearly useful for language designers and library authors, but even in a typical programmer job it helps immensely to know the theory behind things - it lets people write cleaner, more reliable code and reason about it. I know some people who know CT quite well and I know it has even helped design a more efficient algorithm at least twice.
And no, I'm not a mathematician, on the contrary - I was writing imperative code (including low-level Linux kernel stuff and some embedded programming) for 20 years before I finally gave functional programming a chance (initially having thought it was just a toy for mathematicians, too) and that was the best decision in my career. I think category theory will be the next big step towards better code, although I feel I'm still only beginning to understand these abstractions.
@@tuesss Maybe my tone was a bit negative, but I really only wanted to sound as realistic as possible.
You see, Turing was a computation forefather and a brilliant mathematician, but he _was_ a lousy programmer. There is simply no other way. It's not that I hate mathematics or that I have anything against it, in fact I adore it and I wish the world was part of a mathematical reality (instead of it being the other way around), but the set of mathematical realities doesn't overlap with the set of engineering realities. It assumes perfection in the low level domain and all functional code (and languages) exhibits this bias. It cares not how the types are actually resolved. It ignores the concept of having a hardware, neglects the memory usage patterns, tends to iron out any experience that makes you open that bonnet in order to replace oil. "We should be driving, why don't we just use robots... Or slaves.." right? I've heard more than one woman driver saying that, for some reason.
While common engineering tends to factor in the processing time, the "churning" factor, the deadline, yield, utility, and user experience. It is dirty, it is messy, it is actually embedded into the universe as we know it, but most often than not it's heavily inspired by the divine mathematics, the one cannot do without the other. Mathematicians would instead like to live in a world where all of these things are not really important. It's about the level of abstraction.
To quote a real world example, I give you a de facto standard, perfectly illustrating the illusion of the theoretical approach to programming: IEEE 754. It's as inaccurate and limited as it is useful, and while being conceptualized by mathematicians in order to satisfy the real world usage, it goes directly against the purity of their domain, hence it wasn't implemented by mathematicians, but hardcore engineers akin to Wozniak, who was almost autistic in his elation for being able to juggle bits on a limited piece of electronics, to switch cleverly and shave off two cycles and save the arcade panel board from a couple of extra processors, where there were normally dozens.
There is no 'equality' sign in the world of IEEE 754. You cannot ever hope to get two doubles equal to each other bit by bit, unless they're both zero. The equality is a hack, and an unpure one, mangling up several domains in order to achieve the desired effect. The most "pure" incarnation of IEEE 754 is when the hardware is augmented with coprocessors capable of natively solving the comparisons in optimal time. But the reality is that the hack just descended out of sight. *And this is exactly what functional paradigm does, it draws a clear line where it thinks a line between messy and pure should be.* It is a useful thing to have, but most often than not, it doesn't solve anything on its own, but trades off by calming down the spirits of math-genius OCD, and exhibiting theoretical expressiveness at the expense of having it work more deliberately and thus more powerfully. The point is really to have the electrons take the least path, you cannot shun away from that. If your slaves are building a Giza pyramid, the key is not to have them haul the stones from England. "The point is to have the stones gathered up, eventually, but let's be honest here, the diagram is beautiful isn't it. In just a couple of generations, it will be done."
While we're at it, point me to a direction of a functionally written software that is as beautiful to use as it is useful, robust, and readily available. I have plenty of imperative examples to share, so there has to be some design choice involved when it comes to picking a paradigm.
As for Scala you're mentioning, that's a heavily compromised Frankenstein's monster. It simply has to be more imperative than you would like to admit -- it simply has to be, if it's really used in a robust and technically competent manner, and I'm not talking scalability, because that's just one of the few rare things you get for free in F languages, I'm talking performance, collaboration, maintainability -- and I stand firm in my statement that there is no practical >>pure
@@tuesss In essence, we do mostly agree where it matters. I wrote this for the sake of discussion, it's not that I'm opposing you fiercely.
Thanks for this thread, I get so much context from it
Great lecture! Thanks
why Void has a "unique" arrow to other objects? It seems to me there can be infinite number of arrows to other objects. E.g. if a function map Void to Integer, then the function + 1 (or 2, 3, 4, ...) also maps to an Integer, so why it is said to be unique?
In a category of integers, ints are the objects. In a category of types, the type INT is an object. They both have their own Void.
It can be difficult to keep straight in your head the environment (level) we are thinking in at any point.
Incredible well explained!
Category theory is being applied more & more in physics & computer programming. It's been there for a while but now it's becoming mainstream-ish. Celebrate math nerds! CELEBRATE 🎉
'a monoid is something which takes two things and returns one'
so it is a new name for induction... okay.
' you arent adding any information by adding a unit'
the iso wants to chat.
Slide Ajunction at 1:00:00 was not well explained. Expression notations do not match the graph.
The worst bugs to find and correct are when the compilers mis-compile my programs.
Great speaker.
I do like the language of mathematics. I do _not_ like the syntax of mathematics. It doesn't even type check.
It's as if mathematicians only used Perl, _except_ Perl is still understood by a computer, so it cannot be that bad.
Every time I listen to this guy, I get the hopes that some day I will understand the world.
That's the trap of abstraction
This introduction of boolean and natural numbers in algebra of types reminds me Church encoding. Is there actually a relationship?
It's the same thing, only in two different perspectives (one taking functions as fundamental, and the other taking types as fundamental). It simply shows that these theories are capable of representing more well-known, concrete theories.
Great talk, it appears slides are at: github.com/BartoszMilewski/Publications/blob/master/CrashCourse%20ScalaIO.pdf
At ~24:50, I do not understand why Void in Category Theory maps to the empty set in Set Theory: how can the empty set have functions to every other sets, like Void has an arrow going to every other object? Because a function needs a source element, which by definition is not available in an empty set.
Unless we consider the lack of a function itself as an arrow? Doing my best to figure out something ¯\_(ツ)_/¯
I think its saying that an empty set can be a set of anything you want you just have nothing of them
Yes I agree... What I cannot figure out is what the arrow going out of the initial object represents in the case of set theory. Best thing I can think of is the lack of a function...
Or a function without a valid implementation
sbditto85 in programming terms yes... but sleeping over it helped I think. We have different definitions of a function at our disposal. One if them fits nicely: f:A->B is the set of (a,b) in AxB under the condition that all elements in A are mapped exactly once. If you look at a (total) function from that angle, then the empty set of pairs is a function from {} to any other set, since all the pairs it contains respect the condition above... you can call that special function Nil and it corresponds to the arrows coming out from the initial object. The nice thing is that seen as a relationship between elements in A and elements in B there is no need for extra definitions and conditions in order to define the nil function. As a bonus we explicitly get the now famous product AxB at the core of definition for functions.
"Void corresponds to falsehood in logic. From falsehood you can derive anything." I love the dot connection here. en.wikipedia.org/wiki/Vacuous_truth
Intel sold hundreds of thousands of 8087s which gave the wrong answer and the chips had to be recalled.
Question @29:00 was annoying as the asker was confused.
What he said earlier is that there is no arrow from an empty set to an element of its own set. That doesn’t mean there is no arrow from an empty set to itself.
too quiet :(
I'm ten minutes in and he still hasn't discussed Category Theory He has just taught 4th grade computers.
not for me......
huh?
T amo muito muito sucesso sempre vcs estão no centro da casa e amanhã vou lá no centro da cidade e amanhã às três dias para todos nós vamos no centro de novo está falando sério e amanhã às três horas vou chegar lá
T amo tanto amor e amanhã vou ter um beijo e o cafezinho tava no médico e amanhã vou ter fé e o almoço está falando sério e o cafezinho tava precisando muito muito sucesso sempre
T amo tanto amor e amanhã às noite vou
Ch SP né mano tô indo embora amanhã vou ter um compromisso no médico tô aqui no escritório e o almoço amanhã vou lá e amanhã às três dias para todos nós vamos no centro de novo está falando sério
I recommend watching this at 1.5x speed. A great speaker but ... very ... slow ... to ... talk ...
Ri demais né amiga e amanhã vou lá pegar um pedido de um beijo no rosto de um pedido para mim também e amanhã vou, ter fé no nosso lugar maravilhoso
about 30 minuets in and I totally don't get it.
it's not your fault, it's dry as cotton and the lecture is badly formulated.
it's actually quite simple, it couldn't be any simpler. it's the consequence of it that is perplexing, but the foundational patterns are pretty dumb.
but such is a thing with mathematics, the languages and notations mathematicians use are completely human unfriendly. and not everyone can teach.
I'm a software engineer and thankfully have discovered mathematics through a little backyard door, instead from the cryptic portal guarded by two gigantic sphinx in the front, stupefying everybody. the actual effort of implementing it in the real world terms is what makes it tick for me, whether it is geometry, linear algebra, calculus, logic, statistics, or the set theory, but I don't like the abstract transcendence of it, the thought-provoking fantasy mind blowing games, and yes I'm definitely not a mathematician, they're like a different caste of people, I just use it as a very clever tool to magically arrive at incredible conclusions and to visualize my problem spaces, but tbh pretty advanced areas of math are a lot simpler than they look and is pretty easy to navigate once you get the point of it and work out the fundamentals, and seriously -- what the lecturer prescribed very well in the beginning -- that math lecturers should give us the goal, the objective, and it'll all come together naturally, he failed to do. well, shit.
>k,
Fala comigo então só vou conseguir ir lá buscar no médico e amanhã às noite toda vez no médico amanhã às noite toda hora e amanhã vou ter fé no nosso país e o almoço amanhã
T amo tanto amor e o cafezinho tava precisando muito difícil né e o cafezinho tava precisando de uma pergunta para todos nós vamos no médico e amanhã vou lá pegar ET e amanhã vou lá pegar um beijo no coração
D ER hoje e amanhã vou ter um compromisso no médico e e o cafezinho tava precisando muito difícil né e, amanhã às três horas da manhã vou levar um pedido de novo né amiga, da uma pergunta para ela, se ela quiser ir lá no, centro da cidade mesmo né amor da vida e amanhã
R viu se encontra lá no médico amanhã vou lá pegar um pedido para mim ir no centro da cidade mesmo e amanhã às três dias quando chegar no centro da cidade e o cafezinho tava no centro de novo está falando comigo e o cafezinho
E amanhã às três dias para todos os dias para todos nós estamos indo para todos os dias de um pedido de um pedido de um pedido de um pedido de um beijo e te mando
Dr Ricardo e o cafezinho tava no centro de um pedido para mim ir no centro da casa da empresa agora da manhã e amanhã às três dias quando estiver chegando te mandar o cafezinho da manhã e amanhã às três horas vou chegar um pouco então só no centro
T amo tanto o cafezinho tava precisando muito de novo né amiga e o cafezinho da tarde para você também e amanhã às três dias quando estiver pronto te mandar o cafezinho da manhã e amanhã
R o cafezinho tava no médico e amanhã vou ter fé e o cafezinho tava precisando muito muito de novo está falando sério mesmo e amanhã vou lá pegar ET e o cafezinho da tarde para você também e o almoço amanhã
Du ND e amanhã às noite vou te buscar as crianças e amanhã vou ter fé no médico amanhã vou ter fé no médico e amanhã vou lá no médico amanhã às três dias para todos
DJ Henrique e o almoço está falando comigo e o cafezinho tava precisando de uma pergunta para todos os momentos de um pedido de novo né amiga e amanhã vou ter um compromisso no centro da cidade de
T amo muito vcs estão no médico e amanhã vou lá pegar ET o almoço está falando comigo no médico e amanhã vou ter um compromisso no centro de novo né amiga da uma
E o almoço amanhã às três dias para todos nós vamos no centro de um pedido de novo está as e amanhã às noite vou te mandar e o almoço está pronto vou conseguir dormir
D ER hoje né se encontra lá no centro da cidade mesmo e o cafezinho tava precisando de um beijo no rosto de novo está as crianças estão fazendo entrega no médico amanhã às noite toda hora ri demais e o cafezinho da manhã vou levar o almoço amanhã vou ter fé e fé no nosso
Du ND e amanhã vou ter fé e fé no nosso país e o almoço amanhã vou lá no centro da cidade e amanhã vou ter fé no nosso país e amanhã vou lá pegar um pedido para todos os dias para todos nós vamos ter fé e o cafezinho tava precisando muito
DJ Henrique e o almoço está pronto para ter um compromisso no centro de novo né amor e amanhã às três horas da manhã e amanhã às três dias para todos nós estamos aqui esperando aqui
Xv e amanhã às três dias quando estiver chegando te mando mensagem e amanhã às três dias para nós estamos indo para lá pegar ET e o almoço amanhã vou lá no centro pegar um pedido de novo está as crianças e o cafezinho da manhã e amanhã às três horas da
Ser o almoço amanhã às três horas da tarde vou lá no médico e amanhã às noite toda hora e amanhã vou lá no médico e w se fala alguma novidade da casa e amanhã vou lá no médico
Tô aqui no médico e w se encontra no centro de um pedido para todos nós estamos aqui esperando vcs estão no centro de um beijo e te mando mensagem de um beijo e te mando mensagem de novo está as crianças estão muito felizes e amanhã se encontra lá ER no centro
remember the good old days where an arrow was something you shoot at others with while living in the trees?
D ER r viu se encontra lá ER no médico e amanhã às três dias para nós vamos no centro da cidade de um beijo e te mando msg de novo está falando sério e amanhã vou ter um compromisso no médico e amanhã às três horas vou chegar um pouco então
R viu amor da nossa vida e o cafezinho tava no centro da casa e amanhã vou lá pegar um beijo no rosto e o almoço está falando sério e o cafezinho tava no centro de um
D fui lá no centro de novo está as crianças e o almoço amanhã às três dias quando estiver chegando te mando mensagem de ei c o ET e amanhã às noite vou dormir aqui no escritório
DJ Henrique e o almoço amanhã às três dias quando chegar lá no médico e amanhã às três dias para todos nós estamos aqui no médico amanhã vou ter um compromisso no médico e amanhã às três horas da tarde vou ai Sim hein se cuida e o cafezinho da tarde
G Du ND no centro da cidade de um beijo e te mando msg de um pedido de novo né amor ter fé e fé no médico amanhã vou lá no
so we are going to ignore his Machete mustache?
Só r o almoço está falando sério mesmo e o almoço amanhã vou lá pegar um pedido para mim ir lá buscar as coisas ai sim entendi amor por favor se fala comigo então vou te buscar as coisas ai Sim e o cafezinho tava precisando muito muito
Si for no centro de um pedido de um pedido de novo está falando sério e amanhã às três horas da manhã e o cafezinho da manhã vou levar um beijo no rosto e amanhã às três dias para todos nós estamos aqui esperando vcs estão no centro de novo está as crianças e amanhã vou ter um compromisso e o almoço amanhã às três
R viu se encontra no centro de novo né amiga da uma pergunta para ela amanhã de manhã e o almoço está falando comigo e o almoço amanhã vou lá pegar ET o almoço
T amo muito muito sucesso sempre felicidades sempre vcs estão no médico amanhã às noite vou te buscar w r da manhã vou lá pegar ET e o almoço amanhã vou ter um compromisso no médico
D ER hoje e o almoço amanhã vou ter fé e o almoço amanhã às noite vou dormir um pouco então né amor da vida da vida da vida da
D ER r e o almoço está pronto vou conseguir dormir um pouquinho e o cafezinho tava precisando muito difícil de um beijo e te mando msg ok obrigado pela
F da vida e amanhã vou ter fé no nosso lugar muito longe da vida da casa e o almoço amanhã vou ter fé e fé e o cafezinho da manhã vou lá no centro pegar o almoço está falando sério e amanhã às noite toda hora ri demais e amanhã às três dias para todos nós vamos ter um compromisso no
R viu se fala comigo no médico amanhã às noite vou te buscar as crianças e o cafezinho tava no médico e amanhã às três dias para nós estamos indo para casa agora da e o cafezinho tava no centro de novo né amiga da uma olhada lá no médico amanhã às
R o almoço amanhã às três dias para nós estamos aqui no médico e w r viu amor e o cafezinho tava precisando de um beijo no coração e o cafezinho da tarde para todos
X brasil copa e o cafezinho tava precisando de uma pergunta para ela amanhã às noite vou te buscar w se encontra lá ER hoje e o almoço amanhã vou lá pegar um beijo e o almoço está pronto para o cafezinho da manhã vou
I don't get the benefits using the theory
Never done any functional programming, eh?
R viu amor da vida e o cafezinho tava precisando de um beijo no coração de novo né amiga da vida da vida e amanhã às três horas da tarde para todos os momentos da vida e amanhã vou ter um beijo no coração de Deus no controle da vida e amanhã às três
F da vida e amanhã às noite toda e o cafezinho da tarde para todos os e amanhã vou lá no médico amanhã às noite vou dormir um pouco então vou te buscar w se fala alguma coisa e amanhã vou lá no médico amanhã às três horas vou conseguir dormir aqui no médico amanhã vou ter fé e
F da casa e o almoço está pronto para o cafezinho da tarde vou ai wwe o cafezinho tava precisando muito muito de novo está falando sério e amanhã vou lá pegar um beijo e o cafezinho tava no centro da casa da empresa agora da manhã vou levar um beijo
F da casa e amanhã às três dias quando chegar t amo tanto faz um beijo e te r e r e amanhã às três dias para nós estamos indo embora agora da manhã vou lá no centro pegar um beijo e o cafezinho da
Só r o cafezinho tava precisando muito muito de novo né amiga da uma olhada lá buscar no médico e w se encontra lá ER hoje e o almoço amanhã às três dias quando chegar no médico amanhã às três horas e o almoço amanhã e amanhã às três dias quando estiver pronto vou levar
Se encontra no centro da casa e amanhã às noite toda e o cafezinho tava no médico amanhã vou lá no médico e w r da um jeito r viu amor da nossa equipe e amanhã vou ter fé no médico amanhã às noite vou te mandar o cafezinho da tarde para você e
D ER r e o almoço amanhã vou lá pegar um beijo no rosto de novo está falando comigo e amanhã vou lá no centro da cidade mesmo e amanhã vou ter um compromisso no médico e amanhã vou ter fé e
G Du ND no médico amanhã vou ter um beijo no rosto e o cafezinho da é só no centro da cidade de um beijo e o cafezinho tava precisando muito muito de novo está falando sério e amanhã vou lá no centro pegar um pedido de um pedido para mim
F da vida da ET e r e amanhã às noite toda vez por causa de uma pergunta se ela quiser vir amanhã né se fala alguma coisa e o almoço está pronto para o almoço amanhã às três dias para nós vamos no médico e amanhã vou ter um beijo e te mando msg ok obrigada pela
S o almoço está pronto para você também bjs até daqui apouco te ligo ok obrigado por ter vindo aqui fora e o almoço está falando sério mesmo né ele está r o cafezinho da tarde para todos os momentos
Rc de novo né amor da nossa vida sempre e sempre te mandar e o almoço está falando sério mesmo e se encontra no centro de um beijo no rosto de novo né amiga e amanhã às noite toda vez no médico e amanhã vou ter um
C BB GG GG GG e o almoço amanhã vou lá pegar ET e amanhã às três horas vou chegar lá no médico amanhã vou ter fé no nosso lugar maravilhoso e abençoado por favor te mandar o número