Waiting..
Auto Scroll
Sync
Top
Bottom
Select text to annotate, Click play in YouTube to begin
00:00:02
to some degree the entirety of the system as far as i understand is written in various variants of lisp so my favorite program language is still lisp i don't program it in much anymore
00:00:16
because you know the world has in majority of its system has moved on like everybody respects lists but many of the systems are not um written in lisp anymore but
00:00:28
psych as far as i understand maybe you can correct me there's a bunch of lisp in it yeah so it's based on lisp code that we produced most of the programming is still going on in a dialectic lisp and
00:00:42
then the for efficiency reasons that gets automatically translated into things like java um or c nowadays it's almost all translated into java because java
00:00:53
has gotten good enough that uh that's that's really all we need to do so it's translating to java and then java is compiled down to uh by code yes okay so that's sort of that's a that that
00:01:06
um that's a you know it's a process that probably has to do with the fact that when psych was originally written and you build up a powerful system like there is some technical depth you have to deal with as is the case with
00:01:20
most powerful systems that span years um have you ever considered this this would help me understand because from my perspective so much of
00:01:32
the value of everything you've done with psych and psychopaths then is the is the knowledge have you ever considered just like throwing away the code base and starting from scratch not really throwing away
00:01:46
but sort of moving it to uh like room throwing away that technical debt starting with a more updated programming language is that throwing away a lot of value or
00:01:59
no like what's your sense how much of the value is in the silly software engineering aspect and how much of the value is in the knowledge so development
00:02:12
of of programs in lisp proceeds i think somewhere between a thousand and fifty 000 times faster than development in any any of what
00:02:25
you're calling um modern or improved computer languages well there's other functional languages like you know closure and all the there's but i mean i'm with you i i like lisp i just wonder how many great programmers
00:02:38
there are there's still like yes so so it is true when a new inference programmer comes on board they need to learn um some of lisp and in fact we have a subset of
00:02:49
lisp which we call cleverly sub l which is really all they need to learn and so the programming actually goes on in sub l not in full lisp and so it does not take programmers very long at all to
00:03:03
learn sub-l and that's something which can then be translated efficiently into java and for some of our programmers who are doing say user interface work then
00:03:15
they never have to even learn sub-l they just have to learn apis into the the basic psych engine so you're not necessarily feeling the burden of like it's extremely efficient there's
00:03:28
that's not a problem to solve okay right the other thing is remember that we're talking about hiring programmers to do inference who are programmers interested in effectively automatic theorem proving right and so
00:03:42
those are people already predisposed to representing things in logic and so on and lisp really was the programming law language based on logic that john mccarthy and
00:03:55
others who developed it basically create took the the formalisms that alonso church and other philosophers other logicians had come up with and basically said can we basically make a programming la
00:04:09
language which is effectively logic and so since we're talking about reasoning in about expressions written in this logical epistemological language and
00:04:22
we're doing operations which are effectively like theorem proving type operations and so on there's a natural impedance match between lisp and the the knowledge the way it's
00:04:34
represented so i i guess you could say it's a perfectly logical language to use oh yes okay i'm sorry i'll even let you uh get away with that that thing
00:04:46
so i'll probably use that in the future without without credit without credit but no i think i think the uh the the point is that the the language you program in isn't really
00:04:58
that important um it's more that you have to be able to think in terms of for instance creating new helpful hl modules and how they'll work with each other and
00:05:10
looking at things that are taking a long time and coming up with new specialized data structures that will make this efficient so let me just give you one very simple example which is when you have a
00:05:23
transitive relation like larger than this is larger than that which is larger than that which is larger than that so the first thing must be larger than the the last thing whenever you have a transitive relation if you're not careful if i ask whether
00:05:37
this thing over here is larger than the thing over here i'll have to do some kind of graph walk or theorem proving that might involve like 5 or 10 or 20 or 30 steps but if you store
00:05:49
redundantly store the transit of closure the cleaning star of that transit of relation now you have this big table but you can always guarantee that in one single step you can just look up whether
00:06:03
this is larger than that and so we there are lots of cases where storage is cheap today and so by having this extra redundant data structure we can answer
00:06:16
this commonly occurring type of question very very efficiently and let me give you one other analogy analog of that which is something we call rule macro predicates which is we'll see this
00:06:29
complicated rule and we'll notice that things very much like it syntactically come up again and again and again so we'll create a whole brand new relation
00:06:42
or predicate or function that captures that and takes maybe not two arguments takes maybe three four five arguments and so on um and
00:06:54
now we have effectively converted some complicated if then rule that might have to have inference done on it into some ground atomic formula
00:07:06
which is just a the name of a relation and a few arguments and so on and so converting commonly occurring types or schemas of rules into
00:07:18
brand new predicates brand new functions turns out to enormously speed up the inference process you
End of transcript