Hi hi [14:18] beach: you here? *** wacki (~wacki@i59F5E438.versanet.de) has quit: Quit: My iMac has gone to sleep. ZZZzzz… [14:20] Yes. *** rgherdt (~rgherdt@2a02:2454:466:d800:5683:fe0e:fb0:fb3a) has joined channel #commonlisp [14:24] beach: What is the origin of 'protocol oriented programming' [14:25] *** ymir (~ymir___@192.211.30.152) has quit: Ping timeout: 256 seconds the term [14:26] Where did you see the term used? hmm I don't think I have used it. hmmmm one minuteeee *** chomwitt (~chomwitt@2a02:587:7a18:fc00:1ac0:4dff:fedb:a3f1) has quit: Ping timeout: 246 seconds [14:31] Hmm [14:32] perhaps I just came up with it :thinking: I dont know why I thought you wrote it in the SICL Specification [14:33] 32.14 Extensible Libraries Using *client* as an extension of a library written in a 'protocol oriented' way is very cool [14:34] I don't see it. [14:35] You didn't write it I was mistaken but its okay :thumbsup: Oh, I see. [14:36] I wrote an OpenTelemetry library 6 months ago that uses a similar technique to the one described in 32.14 is CLIM protocol-oriented programming? I would say so [14:37] There is nothing new or particularly special about protocols. They are just generalizations of interfaces that Common Lisp allows, like multiple dispatch and such. And interfaces have been around for half a century or more. [14:38] Yes :thinking: So just like an interface, a protocol is merely a way to specify what part of a module is visible externally. [14:39] *** ymir (~ymir___@192.211.30.152) has joined channel #commonlisp Was it a 'thing' before AMOP? [14:40] or MOP at least As such, it contains types (usually classes) and operations (usually generic functions). I don't know. The concept of a protocol doesn't require CLOS. It could have ordinary functions and types, but it would be a bit limited then. [14:42] The term 'protocol oriented programming' seems fitting to me I dont know what I'm thinking but I'm thinking something :thinking: [14:43] As I recall, one of the examples in my chapter on protocols is a protocol with the operations CONS, CAR, CDR, and the type CONS. Nothing CLOS-y here. [14:44] *** ymir (~ymir___@192.211.30.152) has quit: Ping timeout: 264 seconds In fact, since an interface is a restricted version of a protocol, every interface is a protocol, so protocols have been around for as long as interfaces, but perhaps not with that name [14:45] Perpaps but much of the examples of 'Protocol' in the SICL spec do in fact use GF's Sure. hmmmm But I think the dependency is the other way around. Since it used generic functions, classes, and multiple dispatch, it can't be an interface, so we have to call it a protocol. [14:46] Perhaps I mistakenly assumed the terminology was taken from Meta Object Protocol rather than something else Oh, I don't think so. Meta Object Protocol is just a protocol that works on metaobjects. [14:47] Right So the "types" are classes of metaobjects. The essence being a set of GF's that a client can specialize in order to customize the behaviour. If a designer of a different system sat down and wrote their system in a way that utilizes GF's so that a user of their system can customize the behaviour through specialization of GF's, I would call this 'protocol oriented programming' [14:48] although they may be the client of their own system :thinking: [14:49] Customization is not a required part of a protocol though. Okay perhaps I should rephrase [14:50] It just so happens that CLOS allows for such customization by subclassing and auxiliary methods. *** amb007 (~a_bakic@2a02-8440-331a-7690-243b-a8c1-5ce2-c684.rev.sfr.net) has quit: Ping timeout: 260 seconds Okay :thinking: [14:51] *** danza (~francesco@151.47.186.224) has joined channel #commonlisp Maybe you need a new term for a protocol that allows customization. *** amb007 (~a_bakic@2a02-8440-b148-869b-6f79-1b96-683e-58fa.rev.sfr.net) has joined channel #commonlisp Good morning! [14:52] As far as I can tell if you are writing a protocol using GF's then customization is implied Hello ebrasca. it might not be desired but it is implied. beach: Hi [14:53] I think that is besides the point though. Josh_2: Not quite. If the protocol uses only "primitive" types like INTEGER, CONS, HASH-TABLE, you can't create a subclass. And you can't create auxiliary methods either, because they would be applicable when given only specified types, and that is not allowed. [14:54] True :thinking: Perhaps the tipping point would be introducing an auxiliary variable like your *client* idea [14:55] which I have done unintentionally But, of course, if it uses only primitive types, there is no particular reason to use generic functions. But there are times when you want a generic interface even if it accepts primitive types, like #'describe [14:57] idk :thinking: maybe 'generic protocol programming' :thinking: [14:58] Yes, but I said "only primitive types". I know i know beach: Hi, could you expand on "an interface is a restricted version of a protocol"? When is a protocol not an interface? pve: When it uses multiple dispatch. The usual definition of an interface defines a single type and operations on it. But I am sure there are other definitions of "interface". [14:59] beach: oh ok, thanks I tried to formalize the concept a bit here: http://metamodular.com/protocol.pdf [15:01] *** waleee (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) has quit: Ping timeout: 240 seconds *** danza (~francesco@151.47.186.224) has quit: Ping timeout: 264 seconds I am not sure it is complete or entirely correct, but I haven't heard any objections so far. :O [15:02] Where is that from? [15:03] *** philipp_ (~philipp_@2003:a:d4d:e700:ca5b:76ff:fea6:aae2) has joined channel #commonlisp its 'chapter 5' From an incomplete book that I wrote. [15:04] *** amb007 (~a_bakic@2a02-8440-b148-869b-6f79-1b96-683e-58fa.rev.sfr.net) has quit: Ping timeout: 246 seconds *** waleee (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) has joined channel #commonlisp [15:05] *** amb007 (~a_bakic@2a02:8440:b138:a482:8a17:ac3c:bf:16dc) has joined channel #commonlisp What was it about? [15:06] 'generic protocol' is a more specific term that implies the use of generic functions :thinking: [15:07] what you describe is more general and not what I was thinking 'Maybe you need a new term for a protocol that allows customization' Yes I do [15:08] I think the title is "Programming with Generic Functions" :O [15:09] How complete is it?? It has 116 pages apparently. Can I see it? Nah, not worthwhile. It is quite incomplete. [15:10] And it very likely will remain incomplete. :( [15:11] What are the chapter titles? All my book projects are abandoned, or at least suspended. I can't write books by myself, and my favorite coauthor quit being interested in writing books. [15:12] give it a few months and you'll be able to generate the whole book with a fully animated video presentation from a set of notes via your favourite LLM (: That might work. Josh_2: I haven't even decided on all the chapter titles. I don't work like that. :( [15:13] I really want to see it now :( [15:15] Josh_2: create the future you want to see! [15:17] I'm trying!! [15:18] Maybe beach and I write book on 'Programming with Generic Functions' :) Seems fitting [15:19] Im already good at LaTeX and I recently formatted a 200+ page book full of speeches :sunglasses: Thats being published now [15:21] *** chomwitt (~chomwitt@2a02:587:7a18:fc00:1ac0:4dff:fedb:a3f1) has joined channel #commonlisp [15:31] beach: can I see :) [15:36] *** dino_tutter (~dino@2a00:23c7:2b23:e501:264b:71b7:b9b1:fd3e) has joined