 Good morning, everyone. We are fortunate to have Bob along with us. Welcome Bob to the functional conference. And Bob is going to talk about COSI APL. Over to you, Bob. Okay. I want to say hi to the international global crowd and indication from that of how COSI is both very old and perhaps the newest language that's here. And let me go over here. This is actually COSI running. And let me put down a timestamp. It's 7.30 a.m. here. Let me loop that out. COSI has evolved and lived my life in APL in the 70s on. And I learned of FORCE, which I consider the minimal machine. Well, I'll go through this. But it's Ken Iverson is the daddy of APL. And Chuck Moore, who's still with us, is the creator of FORCE. And the purpose of COSI, I put it, is to artificially aid my intelligence. I learned APL in the first place because I needed to learn math of multi-dimensional algebra and geometry. And as we talked, there are other talks on APL which give you a flavor of that. So one of the other notions is the only way you can truly control your intelligence systems, your computers, is through language. As long as you're dealing in menus and so forth, you can't truly have control over it. You need language. And so the effort is for very, very simple language, but at the same time profoundly deep. Because one of my particular interests, for instance, would be making a boxing model of planetary physics and temperature physics in particular. So it's for the computer-aided individual's purpose. And thus the interface itself, and this is COSI divided by MIM, is integral to productivity. So a desire is to maximize the derivatives, the real productivity per unit time, and the acceleration of that, continual acceleration. And one of the things is the goals is not so much system programming and all of that as, again, the use of more or less ordinary people who've never heard of GitHub and COSI language is more powerful in any case. So I just have all the code. The code is all open code. And it's simply index because that's easy to deal with. And this is one of the things relative to a lot of the things spoken at this conference. The code is material. And this APL notions from APL went out to Archive Witness K. But bottom line, instead of having a lot of vocabulary about things, you know, when it gets down to it, particularly because all the code is open, so you can look at it and see exactly what it does. And that represents that is the theory. APL and forth shares some attributes. And I've been accused also of taking it to the extreme. And actually I will go and just, there's a quote from Chuck Moore. There's some links to simplify and there's several other quotes. This is Paige, it's got a lot of the, well, one of the things that's interesting is Hello World versus Python. At the top level, they are interpreted. So you're sitting there and you're able to go and do things in the interactive. This is essentially the APL concept of the workspace. This is essentially my workspace. And you have this is essentially the log section. And this is any result we'll see coming up with results. And the other thing about both APL and forth, they are languages for creating vocabulary as opposed to making programs. So the vocabulary that works together, words that work together in sentences rather than making, if you will, massive programs and set programs. A couple of design principles is great video on the design of the Apollo 11 computer, which of course is very minimal in 1969. There are a couple of design principles that are fundamental and cozy. One of the things is when I hit, I just hit control up, then we'll get to control it. But one of the first design principles on the incredible, you know, just absolutely minimal moon lander computer was use a high level language. And that's why APL, APL is the highest level language as you can see from some of the other presentations. The other one has become quite important because it's trivial to go right down and see when I start executing things, right down something that will blow cozy away. The other, like there, I'm not sure what I did control off mine. Yeah, the others restart on failure and because it just did. Now APL works on entire collections on order checks. As you've seen in other presentations, and it put the overall goal in terms of the vocabulary of cozy and it's very, very much derivative of both the witness K and check out kx.com for sort of on an enterprise level. What what these languages can do, but put it in terms of wanting to have a vocabulary that is easy. It facilitates become the tort application of functions or Arthur and Iverson before start calling verbs to data or nouns. And APL factors and notes which you see continually into operators or what what can we call adverbs. And an aspect of APL the level of APL is just to have a vocabulary so that you can think it's done. This is the thing for people that to have an extremely powerful replacement for a slide rule in a sense except, you know, orders of magnitude more powerful. And I don't like to have to think something twice, which is why I'd like to be able to go and and define something. Arthur Whitney, the APL you've seen out with Whitney simplified that to this list, which actually box is that suggested you're talking about Iverson's work back in his original touring award lecture. And Arthur made the structure much more transparent. And cozy is taking that absolutely further so it's open code all the way down to the chip or all the way down to the processes on on an FPGA, his fourth processes are actually run directly in FPGA. This, for instance, is the definition of a dot product. Classical about product in cave. They now will shift to to the fourth and things which is what a is not just sort of. The alternative to the languages like C and Java and so forth that are generally used before it was generally used for very, very small very compact embedded systems and so forth. But most fundamentally it's a minimal vocabulary. The goal is a minimal vocabulary to create a dictionary capable of extending itself, the way I would put it, but you can create language in the language of chip word by word to interface with other languages, including human. It's the ultimate flexibility. And it's RPM reverse Polish notation, read it do it syntax, but you can make a word words that look ahead in the input, as you'll see. Get down to what it actually looks like. So you can construct any vocabulary and since that you can see all of the languages presented here could be written probably more succinctly and directly than whatever languages have written and I'm actually I'm not that clear on. See is fundamental or this job is left. I don't know that any of these other languages directly in assembly. And here. There's basic basic rules for for. The extreme simplicity of force and. Whoops. And I'm cozy. A word in force is what is any non blank string of characters, okay, and space is the prime denominator. This simple brilliance by Chuck Moore is tremendously opens up the nature of the words you can create. Very simple and as I said syntax is essentially now noun verb. Because it's a stack oriented language. And in cozy. You'll see. Well, I'll get to that. But one of the things all nouns and this. And at the fourth level, you'll see, they have, well, I'll get back over here and get back to where I was. But here actually, this is an important a very, very, very easy indexing is modulo. So it's like zero one, two, three, four, zero. And that that replaces for this syntax extension, which is talked about an APL and so forth. And, yeah, let me just be good over here. I'm not a fashion is going towards this. Yes, I'll go to to here's the. Now here actually check. Just simply returns you the name of the non blank string of characters after you. And let me, this is a comment symbol, let me put in a comment symbol. So that just returns that string, let me take out the, the comment symbol. This will start this job. Which is the, the job that you normally, this is the beginning job. You'll see actually the definitions of the other function keys and function keys that execute things. The most important one is that six whatever line. The cursor is on this will execute it and shift up to that you'll see will execute as raw force. And the other one you'll see me use is, is control which you see me whenever anything I open up everything in a browser. Those are the main keys and then there are timestamp keys because keeping a time stamp log of all your businesses is important for the ordinary for the business of life. But everything is in this. And this is most most fundamental. This is, this is back to here is names. This gives a list of names. I'm going to just go through here because again, it should become interested in it. Then we can get together and follow up and so forth. But the first three items in a cozy word. Word. Any, any list are tied counts and reference count. Let me come back over here. I'll refer back over to this. But here I'm going to go and starting when I talk about force being right at the chip level. And this happens to be at 86. I'm just going to just execute this and I'm using the shift that fits which are, as I said, go and execute just in raw force. And looks. You'll see. I'll go through this step by step and what it does. But this essentially is reverse Polish. So it puts things on status. There is actually a vision of the staff down here at the very bottom of the screen. But that can't read. So God asked those and puts me shows me the contents of the staff. And so when I execute the one it puts a one on the stack. Two puts it now it's got one and two on the stack. Minus is obviously a verb that takes the difference of the two and puts that on the staff. And then, and then. God goes in and prints out the one and now there's nothing on the staff. Um, as I said, the a cozy objects. Um, let me come I'll go and kind of figure out the sequencing of going through things to get through things. This is I'm sure rather foreign to most people here trying to get the sequence to go through things. To take that one to take the one off the staff. Underline nine is also underline after they go floating points. This goes and and I'm hitting it. That's six. Now. Not sure why that happened. Yeah. Um, but again, that's why the restart on failure is important. Um, that puts that return to actually one item. cozy object and and to show you how directly. Uh, what what that created. Is it actually created a, a, a, it's allocated a. It was just tight. The first cell type four is integer. It's four bytes. It's the count is one. It's the one item. And actually, uh, here. Um, it's got, um, it's got zero is the reference. There's no other, there's no other objects watching it. When, when things are allocated, they start off with the reference count of zero. When something else is referring to them, then that count will increase. This is never managed dynamic objects. You can see. And when it returns to zero, then it's free. It's following Arthur's hit me structure. Greatly out of this. So, um, I can go and execute here. The difference in at the x86 level and then converted it to an industry. Now to make the word. Then in, in, in, of course, it's just colon, the name of the word. And then the, uh, the, uh, sequence. Um, in. For this, sort of the original concatenated language, that's a word that's used. It's not quite as pure as I wish there were various things, but this is where we're starting. But so this, this creates the word. I've just created the word. Minus minus two. So now I can go and execute this and I'm going to show. But that returns this, this one, oh, here's the, or the minus one. Here's the minus one action. So one of the things you see, I'm like any, this is the person. I think seen actually the x86 level. Um, um, What's, what's actually at the bottom of, of, of, of these, um, Languages. So, um, Oh, here we've got iota was, was mentioned earlier. And let me put it in again. One of the things that's very convenient about this RPM. Notations. See it do it notation. Is that iota actually mentioned as an APL. And when I first heard APL, I thought, boy, that's weird. This returns first in injuries. They wanted to show that, that in APL, this, this would not work. This is again, you have these, these, this is times and it's integer time. This is one of the things that a level of generic generic, genericization has not been done in pose. Yes. It's after has done that. In any case, I've done things that were reduced the, the variance and unknown going in generalizing and making tables to go and then have it. No, whether something is an integer or not, I mean, type is, that's why the type is the very first shell in the, in a, in an item. This doesn't show us it's typically it just used this modular index and causes it to use one minus one one minus one. And you see the multiplied top and bottom and so forth. You seem to use this word. Pick, which just essentially, or I'm calling it quaw. It just simply returns the following word as a string and I found this extremely useful because the names of things and this is all about having an interactive, you know, computing environments. Now, one of the most fundamental, extremely powerful words. And I think I may want to get back over here. You show this tick versus tick. This is extremely powerful word because what it does is it returns the address of the following word the address of whether it's a noun, or a verb. So, here's, here's the dot product. We just use that in, in, in cozy. And so it's floating point. It multiplies the voting point and then check those and returns the address of this verb. And blank over here. Again, there are these iterators. I guess I've heard that word is here, but essentially you can have several different forms. And these these follow monadic and dyadic and not terminology is from a pl. And there's also this is something that Arthur really sort of I think added is left and right versions. And then there are various scans and so forth and I guess another language is called maps. So, this is, this is taking. So this multiplies the two items and then goes and then applies it adds across them. This is a scan across. So essentially that's the same. That's equivalent to the definition and you've got a plus slash. Okay. So, and this is one of the things is here if I have six this and now defined it and see actually goes and there's actually the x86 code. And then it's it's it's not the address of that. Plus. And then it's loading that and then it's just calling us across to go and then some across the list. You can see I guess in other languages, a lot of evaporation to call like maps and so forth. And let's see where. Oh, okay, let me just show that the thing works. Taking 10 out and let me go and put a comment symbol right in there. So there you have, I would attend converted to floats. And dot dot makes, puts to make, you know, duplicates it and then got. Okay. Just to show, again, they actually be on the fourth end of things people do not have any sorts of objects. There's a difference if I do it and flip it and then do it dot. Now, one of the things is you see here that that I was able to define something just with a colon. And that starts that says essentially go and instead of executing this, go and add it to the dictionary, the fourth dictionary and because that you see actually the fourth has a different relationship between compilation versus any, any, any traditional language. And there's actually quite a vocabulary to do things that just are inconceivable in other languages. And so there's a fair amount of vocabulary that that just is about definitions and turning on and off from definitions, this in particular those and stop compiling and switch to the middle of the definition, you can go and say, okay, execute something now, while I'm watching the action of defining and then go and put that on the stack and then go and, you know, so again, these are things that are inconceivable in other languages. That is not essentially, I think, derived, I guess, post script to understand this and stuff. A lot of similar features. In any case. Oh, one of the things. No, I think I've got it over here. Yeah, you have a vocabulary of since you're working on lists all the time. And they can be numeric they can be very general type zero. In type is actually the list of lists. The list of the addresses and so forth so. You have let me come down here. Oh, all of the the entire dictionary, everything that is saved when, whenever I execute something any, any of these languages that actually saving my entire environment so that's why it restarts where it is. And all of that is stored in a in a root directory are. And our is a list of two, two lists. Let me go and show the status is count because how many that's. And so I got to items and it's a list of let me quickly. Each of those just got 28 items in it. And the first the first column. Let me put a comment in there. One of the things you can see is that this is definitely an environment for this interactive action and so forth. So, these are all the items, the names of the items that are in each of those groups, which is saved every time I had a and that's it can execute something. And in particular you can see. Oh, here's the text. This is this is actually. This is actually a little bit of cleverness to show, which is going to take me that person. And it's the size of each of those. It's going and catnating connecting them in a very list like way is two items, and then it's flipping them so I'm going to just execute that. So this is the size, the number of bites of each one of those for instance the text is currently 36,000 bytes. And which is Yeah, let me take off this. This is conceived. This is all the same text and so forth that is right here. The tabularies tend to be big. Because we'd like to have, again, it's just thinking you go and I'm trying to word that will go and get things done and there's a tremendous amount of a tabular that is dealing with the splitting and bicing strings and so forth might protect yourself. No, just go. Yeah, this is this is actually x words goes and returns a list of their these contexts and these are these are the words and all of the different contexts. And this is essentially grabbing the first items out of those. The one thing I want to, you know, get across because going in is a lot to get done very succinctly. And this environment you see has got this result variable. And it's got the text which is just like a log to use like a log and this bottom one which I haven't gotten to state. This contains one of the things you can see is virtually any single line you have is like having a, it's like menu, every line is menu. All you have to do is that fix it, execute it and so forth. So there are a lot of things kept around just simply to do in that in that manner. One of the thing is cozy. I don't know how you count all it's got is my man use and it's at this point. And it needs a hedge to make a community. I know that this is an awful lot. And I'm not the most straightforward under, you know, mind to follow. But if this gets across the notion that here is something to express with something that despite it has very, very. You can start if you will foundation and APL goes back to potentially not the same age and risk. Chuck Moore slightly later around the end of the 60s. But these two languages. APL and simplified some of them. Okay. Are the, the queen of language that are, you know, the mathematically, the most succinct there's simplicity in the mathematical sense of being able to express algorithms. Very, very succinctly and definitely to go and look at what these languages are capable of the main uses. Well, for instance, I mean, the main uses are in global and global finance. Arthur came out of Morton Stanley and K is that's kx.com market you go and look at that. Because essentially for cozy is that opened up to the chip. And even to to the, the fourth processor, which is the fundamental fourth language is consistent as few as about 30 definitions. And I know that these three projects one by a friend another that's going to be spoken about the Silicon Valley fourth interest group conference this Saturday. Another fourth processor as a core on on an FPGA so you can have entire fields of fourth processors on an FPGA and cozy is there to be able to express the parallel algorithms and have that implemented. You don't know and like recompile from big thing. If you've got something that needs to be changed in cozy you just go down to that vocabulary that is relevant and change you to that level. I, yeah, need definitely at this point, and this is harder perhaps in creating languages creating the language community, the language pool, the ecosystem and business. And one of the particular needs is replacing this, this IUP GUI which is one has its own bugs, and is used because that was what got connected to the V before this was building. But it needs to be, you know, this is, you know, let me talk about it. This is where it is. This is both with very old roots, but youngest language, and definitely something you've not seen before. But one of the things I plan to have a zoom next Saturday morning and email me to RSVP if you want to get that. Since this has been up all night, and now the sun is out, I'm not going to hang around after the talk, but let me. Any, any, anybody. Yeah, any questions, whatever. Hey Bob. Thanks. Thanks for the time for the talk. It's something completely different. Yeah. And it's very, very, you know, I think you can see that all the confusion there's a tremendous amount of power though. Right. Yeah. Yeah. Right. And there's definitely not seen nobody else has shown you actual machine code. Right. There are a lot of definitions. I know that one of the things that impressed Jim, Jim Brown, who wrote the IBM's APL two. That's one of the things that impressed me when he was impressed by the fact. Oh, wow. The assembly language, but the actual words are the definitions tend to be various to shape to. But again, it's an awful lot to just go into and, you know, right. I wedded some people's appetite. Right. Right. I just like want to see like if anyone from the audience has any questions. Superficially complicated. Yeah, they're both, they're both, they're both complicated and simple. That is this sort of, yeah, that's actually sort of this duality there. I'm talking to people about, about, you know, APL being simple with the simplicity of mathematics, the simplicity of like matrix notation. I learned APL because I recognize that I really needed to learn multi dimensional algebra and geometry. And I, the complexity of even summation signs was too much for me. I really couldn't get things until essentially, I learned a times B where A and B were two matrices. Okay, that I can bet that fits in my brain from one to end of, you know, this and so forth. That's too complex for me. So thank you everyone for joining and thank you all for this amazing talk.