Re: Message passing syntax for objects | OOPv2
On Thursday, May 9, 2013 at 12:39:37 AM UTC-5, Steven D'Aprano wrote: On Wed, 08 May 2013 19:35:58 -0700, Mark Janssen wrote: Long story short: the lambda calculus folks have to split from the Turing machine folks. These models of computation should not use the same language. Their computation models are too radically different. Their computation models are exactly equivalent. No. Church's thesis was a thesis. So, yes in theory they can be made to be equivalent. In practice, it's not. Practicality beats purity, remember? This is like saying that Cartesian coordinates and polar coordinates are so radically different that they cannot possibly both describe the same space. Good analogy, they in theory have the same descriptive potential. In practice, you never do it. Mark Ho Hum...getting back to some old threads. -- https://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sun, May 12, 2013 at 10:48 PM, Mark Janssen dreamingforw...@gmail.com wrote: You're very right. But that is what has made it sort of a test-bed for internet collaboration. The project I'm working on is aimed to solve that problem and take the Wiki philosophy to its next or even ultimate level. By adding a natural per-revision voting and user-ranking it can clear up all the noise and scale to the whole internet itself. But no one around here seem to think its possible. I may have missed it in the noise, but I don't recall that you ever proposed such a project around here. That said, your brief description does sound rather like Cloud Cuckoo Land to me. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Sounds a lot like reddit threads. It's similar, but it goes a lot further. Where every other site without centralized editors, the thread mess on a simple flat page doesn't scale after about a 100 interactions. To sort out the mess, it takes another dimension. The project I'm working on uses a 3 dimensional visualization model that can scale and order millions of nodes. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Impressive, I'd say. On Tue, May 14, 2013 at 8:11 PM, Mark Janssen dreamingforw...@gmail.com wrote: Sounds a lot like reddit threads. It's similar, but it goes a lot further. Where every other site without centralized editors, the thread mess on a simple flat page doesn't scale after about a 100 interactions. To sort out the mess, it takes another dimension. The project I'm working on uses a 3 dimensional visualization model that can scale and order millions of nodes. -- MarkJ Tacoma, Washington -- Fábio Santos -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sun, May 12, 2013 at 10:18 AM, Ned Batchelder n...@nedbatchelder.com wrote: I've never understood why people use that site: the pages end up being unintelligible cocktail-party noise-scapes with no hope of understanding who is saying what, or in response to whom. You're very right. But that is what has made it sort of a test-bed for internet collaboration. The project I'm working on is aimed to solve that problem and take the Wiki philosophy to its next or even ultimate level. By adding a natural per-revision voting and user-ranking it can clear up all the noise and scale to the whole internet itself. But no one around here seem to think its possible. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 12 May 2013 18:23, Ned Batchelder n...@nedbatchelder.com wrote: I've never understood why people use that site: the pages end up being unintelligible cocktail-party noise-scapes with no hope of understanding who is saying what, or in response to whom. --Ned. There's not so much noise there, but indeed the communication gets confusing after a few paragraphs. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Sounds a lot like reddit threads. On 13 May 2013 08:17, Mark Janssen dreamingforw...@gmail.com wrote: On Sun, May 12, 2013 at 10:18 AM, Ned Batchelder n...@nedbatchelder.com wrote: I've never understood why people use that site: the pages end up being unintelligible cocktail-party noise-scapes with no hope of understanding who is saying what, or in response to whom. You're very right. But that is what has made it sort of a test-bed for internet collaboration. The project I'm working on is aimed to solve that problem and take the Wiki philosophy to its next or even ultimate level. By adding a natural per-revision voting and user-ranking it can clear up all the noise and scale to the whole internet itself. But no one around here seem to think its possible. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 5/8/2013 10:39 PM, Mark Janssen wrote: ...The field needs re-invented and re-centered.[...] For anyone who want to be involved. See the wikiwikiweb -- a tool that every programmer should know and use -- and these pages: ComputerScienceVersionTwo and ObjectOrientedRefactored. I've never understood why people use that site: the pages end up being unintelligible cocktail-party noise-scapes with no hope of understanding who is saying what, or in response to whom. --Ned. Cheers! -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 5/12/2013 1:18 PM, Ned Batchelder wrote: On 5/8/2013 10:39 PM, Mark Janssen wrote: ...The field needs re-invented and re-centered.[...] For anyone who want to be involved. See the wikiwikiweb -- a tool that every programmer should know and use -- and these pages: ComputerScienceVersionTwo and ObjectOrientedRefactored. I've never understood why people use that site: the pages end up being unintelligible cocktail-party noise-scapes with no hope of understanding who is saying what, or in response to whom. I certainly found it confusing that something responder and OP comments were in normal text and italic respectively, and sometimes the opposite, and maybe sometimes both in normal types. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Thu, 9 May 2013 11:33:45 -0600 Ian Kelly ian.g.ke...@gmail.com wrote: about Turing machines and lambda calculus that you've injected into the conversation though just reminds me of the Einstein was wrong cranks. But Einstein *was* wrong. http://www.xkcd.com/1206/ -- D'Arcy J.M. Cain da...@druid.net | Democracy is three wolves http://www.druid.net/darcy/| and a sheep voting on +1 416 788 2246 (DoD#0082)(eNTP) | what's for dinner. IM: da...@vex.net, VOIP: sip:da...@vex.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
...The field needs re-invented and re-centered.[...] For anyone who want to be involved. See the wikiwikiweb -- a tool that every programmer should know and use -- and these pages: ComputerScienceVersionTwo and ObjectOrientedRefactored. Cheers! -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, May 10, 2013 at 3:33 AM, Ian Kelly ian.g.ke...@gmail.com wrote: All this irrelevant nonsense about Turing machines and lambda calculus that you've injected into the conversation though just reminds me of the Einstein was wrong cranks. http://xkcd.com/1206/ ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 10 May, 13:07, Chris Angelico ros...@gmail.com wrote: Now, whether or not it's worth _debating_ the expressiveness of a language... well, that's another point entirely. But for your major project, I think you'll do better working in Python than in machine code. I wasn't disagreeing with the concept of linguistic expressiveness, my ire was over the I'm RIGHT and EVERYONE else is WRONG so STOP WHAT YOU'RE DOING so I can REBUILD COMPUTER SCIENCE aspect of these posts. Thought without experience or experiment is about as useful to my work requirements as bowel gas. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sun, May 12, 2013 at 5:32 AM, Dennis Lee Bieber wlfr...@ix.netcom.com wrote: On Fri, 10 May 2013 14:33:52 +1000, Chris Angelico ros...@gmail.com declaimed the following in gmane.comp.python.general: I don't answer to them. I also believe in a path of endless exponential growth. Challenge: Create more information than can be stored in one teaspoon of matter. Go ahead. Try! The coordinates of each particle storing the information in that teaspoon of matter. Which is probably more data than any of us will keyboard in a lifetime. Hence my point. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Dennis Lee Bieber wrote: I also believe in a path of endless exponential growth. Challenge: Create more information than can be stored in one teaspoon of matter. Go ahead. Try! If that's your argument, then you don't really believe in *endless* exponential growth. You only believe in exponential growth for long enough that I won't be around to suffer the consequences when it runs out. -- Greg -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Chris Angelico wrote: On Sun, May 12, 2013 at 5:32 AM, Dennis Lee Bieber wlfr...@ix.netcom.com wrote: The coordinates of each particle storing the information in that teaspoon of matter. Which is probably more data than any of us will keyboard in a lifetime. Hence my point. My 1TB hard disk *already* contains more information than I could keyboard in my lifetime. The fact that it all got there is due to two things: (1) I didn't have to enter it all myself, and (2) most of it was auto-generated from other information, using compilers and other such tools. Our disk capacities are increasing exponentially, but so is the rate at which we have the ability to create information. I wouldn't be surprised if, at some point before the human race becomes extinct, we build computers whose operating system requires more than a teaspoonful of atoms to store. Especially if Microsoft still exists by then. :-) -- Greg -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sun, May 12, 2013 at 10:50 AM, Gregory Ewing greg.ew...@canterbury.ac.nz wrote: Dennis Lee Bieber wrote: I also believe in a path of endless exponential growth. Challenge: Create more information than can be stored in one teaspoon of matter. Go ahead. Try! If that's your argument, then you don't really believe in *endless* exponential growth. You only believe in exponential growth for long enough that I won't be around to suffer the consequences when it runs out. Technically, according to the laws of thermodynamics, there cannot be any actually endless growth, yes. (Anything beyond that is the realm of religion, not science.) But in that case, the term endless is like infinity - a concept only. Like the Infinite Monkey Protocol Suite description in RFC 2795, there will be many numbers that come up that are plenty huge but fall pitifully short of infinity (Graham's Number, for instance, is pretty small in those terms). So long as storage capacities keep on increasing, we can keep increasing the world's information at the same rate. So long as the number of computers connected to the internet increases, we can keep increasing the internet's information at the same rate. Put both together - and neither shows any sign of ceasing any time soon - we can continue with the corresponding growth. How long before that runs out? A *long* time. We're not talking here of the Year 2000, a couple of decades after the software was written. We're not talking about the 2038 issues, roughly half a century after the software was written. We are talking timeframes that make the Y10K problem look like a serious lack of foresight. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sun, May 12, 2013 at 11:02 AM, Gregory Ewing greg.ew...@canterbury.ac.nz wrote: Chris Angelico wrote: On Sun, May 12, 2013 at 5:32 AM, Dennis Lee Bieber wlfr...@ix.netcom.com wrote: The coordinates of each particle storing the information in that teaspoon of matter. Which is probably more data than any of us will keyboard in a lifetime. Hence my point. My 1TB hard disk *already* contains more information than I could keyboard in my lifetime. The fact that it all got there is due to two things: (1) I didn't have to enter it all myself, and (2) most of it was auto-generated from other information, using compilers and other such tools. I would like to differentiate between information and data, here. Point 1 is correct, but point 2 is not; auto-generated data is not more information, and basic data compression can improve that. (Simple form of compression there: `rm *.o` - you've lost nothing.) Our disk capacities are increasing exponentially, but so is the rate at which we have the ability to create information. I wouldn't be surprised if, at some point before the human race becomes extinct, we build computers whose operating system requires more than a teaspoonful of atoms to store. Especially if Microsoft still exists by then. :-) That's possible. But that would be data bloat, not true information. It's certainly possible to conceive more data than can be stored. Microsoft, as you cite, are experts at this :) ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, May 10, 2013 at 2:55 PM, Roy Smith r...@panix.com wrote: In article mailman.1523.1368160434.3114.python-l...@python.org, Chris Angelico ros...@gmail.com wrote: The first hard disk I ever worked with stored 20MB in the space of a 5.25 slot (plus its associated ISA controller card). Heh. The first hard disk I ever worked with stored 2.4 MB in 6U of rack space (plus 4 Unibus cards worth of controller). That's not actually the first hard disk I ever used. Just the first one I ever got to touch with my own hands. Did I mention that the air filters had to be changed a few times a year? Uphill both ways, in the snow, while beating off the dinosaurs with sticks. Yeah, I'm pretty young. First computer I ever broke (the same one that had the aforementioned 20MB drive) addressed a whole megabyte of memory, 640KB of which was OK (we're left wondering whether anyone would notice if ROM developed a fault), and I got to play around with 64KB of it in DEBUG.EXE. And yeah, I wrote code straight in DEBUG and saved it and crashed the system. (Tip: If you want to write a device driver, make sure you start with your dad happy with you.) Was good fun. I heartily recommend the exercise, but... uhh... do consider setting up a virtual machine first :) ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On May 10, 2013, at 12:55 AM, Roy Smith r...@panix.com wrote: In article mailman.1523.1368160434.3114.python-l...@python.org, Chris Angelico ros...@gmail.com wrote: The first hard disk I ever worked with stored 20MB in the space of a 5.25 slot (plus its associated ISA controller card). Heh. The first hard disk I ever worked with stored 2.4 MB in 6U of rack space (plus 4 Unibus cards worth of controller). That's not actually the first hard disk I ever used. Just the first one I ever got to touch with my own hands. Sounds suspiciously like an RK05. We used a lot of those on DEC PDP-8e's. I can remember how startled I was when I first saw a DEC engineer pull the top off one and then, with it open, spin it up. The platter inside was warped (a ceiling light reflected off the platter wiggled and then blurred) but the head mechanism actually just followed it up and down!!! Bill Did I mention that the air filters had to be changed a few times a year? Uphill both ways, in the snow, while beating off the dinosaurs with sticks. -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On May 10, 2013, at 7:49 AM, William Ray Wing wrote: On May 10, 2013, at 12:55 AM, Roy Smith r...@panix.com wrote: In article mailman.1523.1368160434.3114.python-l...@python.org, Chris Angelico ros...@gmail.com wrote: The first hard disk I ever worked with stored 20MB in the space of a 5.25 slot (plus its associated ISA controller card). Heh. The first hard disk I ever worked with stored 2.4 MB in 6U of rack space (plus 4 Unibus cards worth of controller). That's not actually the first hard disk I ever used. Just the first one I ever got to touch with my own hands. Sounds suspiciously like an RK05. Yup. -- Roy Smith r...@panix.com -- http://mail.python.org/mailman/listinfo/python-list
Alternate computational models can be harmonious (was Message passing syntax for objects | OOPv2)
On May 9, 10:39 am, Steven D'Aprano steve +comp.lang.pyt...@pearwood.info wrote: On Wed, 08 May 2013 19:35:58 -0700, Mark Janssen wrote: Long story short: the lambda calculus folks have to split from the Turing machine folks. These models of computation should not use the same language. Their computation models are too radically different. Their computation models are exactly equivalent. This is like saying that Cartesian coordinates and polar coordinates are so radically different that they cannot possibly both describe the same space. Spot on Steven -- thanks. And further we do know that from a pragmatic POV the two can be quite different. For example cartesian are easier for add/subtract, whereas polar are easier for multiply/divide. And so on occasion the best way of doing an operation is to -- if necessary -- convert to the more appropriate format. I feel that the case of alternate computation models is analogous -- for some purposes one model works well and sometimes another. Python embeds the functional model almost as natively as it does the imperative/OO model. This is an aspect of python that is powerful but can also make it hard for some people. In short, python's multi- paradigm possibilities could do with some good publicity. My own attempts at bringing functional thinking to classical imperative languages and Python in particular, will be up at: https://moocfellowship.org/submissions/the-dance-of-functional-programming-languaging-with-haskell-and-python It is also an attempt at bringing the lightness and freedom of Python to the Haskell community and answer divisive judgements of computational models/paradigms such as the OP's. More details at http://blog.languager.org/2013/05/dance-of-functional-programming.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Wed, May 8, 2013 at 8:35 PM, Mark Janssen dreamingforw...@gmail.com wrote: Okay, to anyone who might be listening, I found the core of the problem. What problem are you referring to? You've been posting on this topic for going on two months now, and I still have no idea of what the point of it all is. I recall something about not being happy with the OOP paradigm because apparently none of the dozens of existing languages handle message passing in the particular way that you think it should work; but if that's all it is, then why don't you just build a new language that does it the way that you think is right? If it's good, spread it around and it will gain traction. If not, then it will die the quiet death it deserves. All this irrelevant nonsense about Turing machines and lambda calculus that you've injected into the conversation though just reminds me of the Einstein was wrong cranks. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
These models of computation should not use the same language. Their computation models are too radically different. Their computation models are exactly equivalent. No they are not. While one can find levels of indirection to translate between one and the other, that doesn't mean they're equivalent. It's like saying that because I can make an equivalence between the complex plane and the real, that they should be treated as equivalent. But they shouldn't -- else you run into a domain error. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Thu, May 9, 2013 at 10:33 AM, Ian Kelly ian.g.ke...@gmail.com wrote: On Wed, May 8, 2013 at 8:35 PM, Mark Janssen dreamingforw...@gmail.com wrote: Okay, to anyone who might be listening, I found the core of the problem. What problem are you referring to? You've been posting on this topic for going on two months now, and I still have no idea of what the point of it all is. You see Ian, while you and the other millions of coding practitioners have (mal)adapted to a suboptimal coding environment where hey there's a language for everyone and terms are thrown around, misused, this is not how it needs or should be. Instead of the thriving Open Source culture on the web we could have, the community stays fractured. Languages can reach for an optimal design (within a constant margin of leeway). Language expressivity can be measured. --Tron -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Thu, May 9, 2013 at 3:51 PM, Mark Janssen dreamingforw...@gmail.com wrote: On Thu, May 9, 2013 at 10:33 AM, Ian Kelly ian.g.ke...@gmail.com wrote: On Wed, May 8, 2013 at 8:35 PM, Mark Janssen dreamingforw...@gmail.com wrote: Okay, to anyone who might be listening, I found the core of the problem. What problem are you referring to? You've been posting on this topic for going on two months now, and I still have no idea of what the point of it all is. You see Ian, while you and the other millions of coding practitioners have (mal)adapted to a suboptimal coding environment where hey there's a language for everyone and terms are thrown around, misused, this is not how it needs or should be. Instead of the thriving Open Source culture on the web we could have, Non sequitur. Open source software has nothing to do with coding environment or choice of language or OOP paradigm. Or Turing machines or lambda calculus, for that matter. the community stays fractured. The open source community seems pretty healthy to me. What is the basis of your claim that it is fractured? Languages can reach for an optimal design (within a constant margin of leeway). There is no optimal design. The *reason* that there's a language for everyone is because different people think about software in different ways and find different approaches better suited to them. Furthermore, some programming styles are naturally more conducive to accomplishing certain tasks, and worse at others. Take video game programming for an example. If I'm working on the graphics engine for a game, I would probably want to use a low-level imperative language for efficiency reasons. If I'm working on the AI, I will more likely prefer a functional or declarative language for clarity, flexibility and static analysis. In either case, OOP is probably a bad choice. Language expressivity can be measured. And the measurements can be endlessly debated. Expressivity is not the sole measure of a programming language, though. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, May 10, 2013 at 8:30 AM, Ian Kelly ian.g.ke...@gmail.com wrote: On Thu, May 9, 2013 at 3:51 PM, Mark Janssen dreamingforw...@gmail.com wrote: the community stays fractured. The open source community seems pretty healthy to me. What is the basis of your claim that it is fractured? The carpentry community is fractured. There are people who use screwdrivers, and there are people who use hammers! Screws and nails are such completely different things that we shouldn't try to use the same language to discuss them. Language expressivity can be measured. And the measurements can be endlessly debated. Expressivity is not the sole measure of a programming language, though. Every programming language can encode every program. It's fairly straightforward to prove that a Python interpreter can be written in Ruby, or a C interpreter in Lua; so there is no program that can be expressed in one language and not in another (there will be apparent exceptions, eg web-browser JavaScript cannot call on arbitrary C-level functionality, but if the entirety of program code were written in C, then it could all be interpreted by one C interpreter). Larry Wall of Perl put it this way, in a State of the Onion address: http://www.perl.com/pub/2007/12/06/soto-11.html ... Human languages are Turing complete, as it were. Human languages therefore differ not so much in what you can say but in what you must say. In English, you are forced to differentiate singular from plural. In Japanese, you don't have to distinguish singular from plural, but you do have to pick a specific level of politeness, taking into account not only your degree of respect for the person you're talking to, but also your degree of respect for the person or thing you're talking about. So languages differ in what you're forced to say. Obviously, if your language forces you to say something, you can't be concise in that particular dimension using your language. Which brings us back to scripting. How many ways are there for different scripting languages to be concise? In C, for example, you are forced to write explicit notation representing {blocks; of; code;} and explicit characters separating; statements;. In Python, on the other hand, you have to write out your indentation. In Java, you state what exceptions you might throw. REXX mandates that you annotate procedures with their list of exposed names (effectively, non-local and global variables). So the expressivity of a language can't be defined in terms of how many programs can be written in it, but in how concisely they can be written - and that's something that depends on specific design choices and how they align with the code you're trying to write. Compare these two snippets: #!/bin/sh pg_dumpall | gzip | ssh user@host 'gzip -d|psql' #!/usr/bin/env python words=input(Enter words, blank delimited: ) lengths=[len(x) for x in words.split( )] print(Average word length: %d%int(sum(lengths)/len(lengths))) Could you write each in the other's language? Sure! But it won't be as concise. (The Python version of the shell script could cheat and just call on the shell to do the work, but even that would add the expressive overhead of os.system.) This is why there are so many languages: because each is good at something different. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 10 May, 03:33, Ian Kelly ian.g.ke...@gmail.com wrote: You've been posting on this topic for going on two months now, and I still have no idea of what the point of it all is. As Charlie Brooker put it: almost every monologue consists of nothing but the words PLEASE AUTHENTICATE MY EXISTENCE, repeated over and over again, in disguise. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 10 May, 07:51, Mark Janssen dreamingforw...@gmail.com wrote: You see Ian, while you and the other millions of coding practitioners have (mal)adapted to a suboptimal coding environment where hey there's a language for everyone and terms are thrown around, misused, this is not how it needs or should be. Please cite your industry experience so we know this is a pragmatic exercise for you and not a display of public onanism. Instead of the thriving Open Source culture on the web we could have, the community stays fractured. What fractures communities is telling millions of [maladapted] practitioners that they're wrong, and that your unsubstantiated intuition somehow trumps their billions of hours of combined experience. Languages can reach for an optimal design (within a constant margin of leeway). Language expressivity can be measured. I'm sure that's great. I, however, have a major project going live in a few weeks and would rather just get something done. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, May 10, 2013 at 9:58 AM, alex23 wuwe...@gmail.com wrote: On 10 May, 07:51, Mark Janssen dreamingforw...@gmail.com wrote: Languages can reach for an optimal design (within a constant margin of leeway). Language expressivity can be measured. I'm sure that's great. I, however, have a major project going live in a few weeks and would rather just get something done. Hmm, not really a fair argument there. A well-designed language lets you just get something done far more efficiently than a poorly-designed one. Being confident that similar objects behave correspondingly when invoked the same way lets you write your code without fiddling with minutiae, for instance. (Hmm, I'll just switch that from being a tuple to being a list, so I can modify this one element. - code that indexes or iterates won't be affected.) Now, whether or not it's worth _debating_ the expressiveness of a language... well, that's another point entirely. But for your major project, I think you'll do better working in Python than in machine code. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Thu, May 9, 2013 at 4:58 PM, alex23 wuwe...@gmail.com wrote: On 10 May, 07:51, Mark Janssen dreamingforw...@gmail.com wrote: You see Ian, while you and the other millions of coding practitioners have (mal)adapted to a suboptimal coding environment where hey there's a language for everyone and terms are thrown around, misused, this is not how it needs or should be. Please cite your industry experience so we know this is a pragmatic exercise for you and not a display of public onanism. Industry experience Do you know all the world's [industrial] leaders are endorsing an impossible path of endless, exponential growth on a finite planet? Is that who you answer to? --m -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, May 10, 2013 at 1:08 PM, Mark Janssen dreamingforw...@gmail.com wrote: On Thu, May 9, 2013 at 4:58 PM, alex23 wuwe...@gmail.com wrote: On 10 May, 07:51, Mark Janssen dreamingforw...@gmail.com wrote: You see Ian, while you and the other millions of coding practitioners have (mal)adapted to a suboptimal coding environment where hey there's a language for everyone and terms are thrown around, misused, this is not how it needs or should be. Please cite your industry experience so we know this is a pragmatic exercise for you and not a display of public onanism. Industry experience Do you know all the world's [industrial] leaders are endorsing an impossible path of endless, exponential growth on a finite planet? Is that who you answer to? I don't answer to them. I also believe in a path of endless exponential growth. Challenge: Create more information than can be stored in one teaspoon of matter. Go ahead. Try! The first hard disk I ever worked with stored 20MB in the space of a 5.25 slot (plus its associated ISA controller card). Later on we got 3.5 form factor drives, and I remember installing this *gigantic* FOUR GIGABYTE drive into our disk server. Wow! We'll NEVER use all that space! (Well, okay. Even then we knew that space consumption kept going up. But we did figure on that 4GB lasting us a good while, which it did.) Today, I can pop into Budget PC or MSY (or you folks in the US could check out newegg) and pick up a terabyte of storage in the same amount of physical space, or you can go 2.5 form factor and take up roughly a fifth of the physical space and still get half a terabyte fairly cheaply. So our exponential growth is being supported by exponential increases in data per cubic meter. Between that and the vast size of this planet, I don't think we really need to worry too much about finite limits to IT growth. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
In article mailman.1523.1368160434.3114.python-l...@python.org, Chris Angelico ros...@gmail.com wrote: The first hard disk I ever worked with stored 20MB in the space of a 5.25 slot (plus its associated ISA controller card). Heh. The first hard disk I ever worked with stored 2.4 MB in 6U of rack space (plus 4 Unibus cards worth of controller). That's not actually the first hard disk I ever used. Just the first one I ever got to touch with my own hands. Did I mention that the air filters had to be changed a few times a year? Uphill both ways, in the snow, while beating off the dinosaurs with sticks. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, Apr 12, 2013 at 11:28 PM, Mark Janssen dreamingforw...@gmail.com wrote: Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Wow, you guys are a bunch of ninnies. I'm going to find some theoretical folks Okay, to anyone who might be listening, I found the core of the problem. This issue is/was much deeper than OOP (which would be roughly a 20 year refactoring) -- that was my mistake. The issue goes right to the core to models of computation and the historical factions within theoretical CS itself (a 50+ year refactoring). The field needs re-invented and re-centered. Mark my words. There has been a half-century of confusion between two entirely separate domains and they've been using the same lexicon. Long story short: the lambda calculus folks have to split from the Turing machine folks. These models of computation should not use the same language. Their computation models are too radically different. Lisp will remain a pinnacle of the lambda calculus, but should be remanded to philosophy. The logic of the binary/boolean arithmetic is simply not compatible, but forms the basis of any sensible computer science here in the West. Here pronouncith the whatever -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On May 9, 7:35 am, Mark Janssen dreamingforw...@gmail.com wrote: On Fri, Apr 12, 2013 at 11:28 PM, Mark Janssen dreamingforw...@gmail.com wrote: Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Wow, you guys are a bunch of ninnies. I'm going to find some theoretical folks Okay, to anyone who might be listening, I found the core of the problem. This issue is/was much deeper than OOP (which would be roughly a 20 year refactoring) -- that was my mistake. The issue goes right to the core to models of computation and the historical factions within theoretical CS itself (a 50+ year refactoring). The field needs re-invented and re-centered. Mark my words. There has been a half-century of confusion between two entirely separate domains and they've been using the same lexicon. Long story short: the lambda calculus folks have to split from the Turing machine folks. These models of computation should not use the same language. Their computation models are too radically different. Lisp will remain a pinnacle of the lambda calculus, but should be remanded to philosophy. The logic of the binary/boolean arithmetic is simply not compatible, but forms the basis of any sensible computer science here in the West. Here pronouncith the whatever -- MarkJ Tacoma, Washington Lisp will remain the pinnacle of lambda calculus ??? : Surreal feeling of falling into a 25-year time-warp Read this http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf Just for historical context: When this was written in the 80s: - The FP languages of the time -- KRC, SASL, Miranda, Orwell -- were elegant and academic - Lisp was quasi-industrial-strength but as Wadler argues above, was not doing good service to functional programming -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Lisp will remain the pinnacle of lambda calculus ??? : Surreal feeling of falling into a 25-year time-warp Read this http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf Just for historical context: When this was written in the 80s: - The FP languages of the time -- KRC, SASL, Miranda, Orwell -- were elegant and academic - Lisp was quasi-industrial-strength but as Wadler argues above, was not doing good service to functional programming Fascinating. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Wed, 08 May 2013 19:35:58 -0700, Mark Janssen wrote: Long story short: the lambda calculus folks have to split from the Turing machine folks. These models of computation should not use the same language. Their computation models are too radically different. Their computation models are exactly equivalent. This is like saying that Cartesian coordinates and polar coordinates are so radically different that they cannot possibly both describe the same space. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Wow, you guys are a bunch of ninnies. I'm going to find some theoretical folks MarkJ -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Sat, Apr 13, 2013 at 4:28 PM, Mark Janssen dreamingforw...@gmail.com wrote: Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Wow, you guys are a bunch of ninnies. I'm going to find some theoretical folks Allow me to offer a serious suggestion: Just as C++ was originally implemented as a preprocessor that produced C code (Cfront), implement your language as a preprocessor that outputs Python (Pyfront?). Then you can explore your ideas relatively cheaply (since you don't have to implement a whole language) and portably (especially if you write your front-end in Python itself)... and, most importantly, you'll have *code* to show people, instead of half-baked theories. Get some real solid code, then start demonstrating how your new system is more expressive, or clearer, or what-have-you. It's much more effective when you can discuss something that actually exists. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 04/13/2013 12:28 AM, Mark Janssen wrote: Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Wow, you guys are a bunch of ninnies. I'm going to find some theoretical folks Insulting list members is not a great way to gain traction. Ned is correct, though. Your discussion is best held in another place where theoretical folks do hang out. Perhaps you should get together with Ranting Rick. Like you he lacks a formal background in language development, but also like you has strong opinions on how things should be done differently. Maybe you can roll your ideas into his Rython language. On this list I think the vast majority of us simply want to discuss how to effectively use Python to solve our problems. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, Apr 12, 2013 at 11:57 AM, Mark Janssen dreamingforw...@gmail.com wrote: Further, I will admit that I am not deeply experienced in application or Internet programming Would you listen to someone who is, by his own admission, not experienced as a surgeon, and tries to tell you that your liver and heart would be better placed the other way around? You may well have some insight that nobody else has yet seen, but you do yourself no service by trying to argue without first-hand experience, and lots of it. I'm not going to go to a LISP mailing list and try to tell them that functional programming is better done with some different syntax, because I am not an experienced LISPer. (Dabbled in Scheme, that's about as close as I get. And only dabbled. And only because GNU LilyPond uses it.) Things are the way they are because someone's spent decades working with them. Sure, not everything's perfect... but it takes someone with actual coding experience and expertise to point out improvements. Read the python-list and python-tutor archives and listen to people like Peter Otten and Steven D'Aprano, both of whom have been using the language for, uhh... 3.5 millenia, probably. (Me? I'm a n00b. Haven't seriously used Python for even a decade yet, though I think I met it in the late 90s or early 00s. Got my coding experience on other languages.) Listen to them when they explain to people why Python is how it is, and you'll gain a much greater comprehension of what actually works. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 12/04/2013 02:57, Mark Janssen wrote: [dross snipped] A summary here http://pinterest.com/pin/464293042804330899/ -- If you're using GoogleCrap™ please read this http://wiki.python.org/moin/GoogleGroupsPython. Mark Lawrence -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 4/11/2013 9:57 PM, Mark Janssen wrote: Okay peeps, I'm re-opening this thread, because despite being hijacked by naysayers, the merit of the underlying idea I think still has not been communicated or perceived adequately. Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Everyone else, there's no need to skewer Mark for off-topic things like tweets on topics other than Python. We can be civil, surely. --Ned. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
Okay peeps, I'm re-opening this thread, because despite being hijacked by naysayers, the merit of the underlying idea I think still has not been communicated or perceived adequately. As a personal request from the BDFL, which I begrudge him for, I've removed the thread from python-ideas. If you want to tail him and ignore it fine, but I will be addressing the naysayers one-by-one and (since no one was willing to do a modicum of interference for me) presumably by myself. For reference of how this topic began, see http://qr.ae/TM1Vb and http://qr.ae/TMh7A which were questions from the programming community not astroturfed nor sockpuppeted by/for me. For the underlying itch being scratched which motivates this whole thread, see http://qr.ae/TM1Vb. But basically, I'm proposing a programming language *synthesis* and unification of the object-oriented and imperative language paradigms (two of the four paradigms recognized on wikipedia: http://en.wikipedia.org/wiki/Programming_paradigm) to create what I'm calling a unified data ecosystem. I'm going to admit from the beginning that I am not deeply researched with the many varied explorations of the programming language *ontology*, BUT I have followed the main trunk, if not gone out on every branch. I *will* say that I am degreed in Computer Engineering (PLU '92) and have a fairly solid theoretical background in the art and the science of CS. Further, I will admit that I am not deeply experienced in application or Internet programming -- I have stayed on the outside watching those developments so that I can fulfill a vision I have of what the Internet can be (a world-changing technology to make a balanced socio-political platform and thereby a healthy planet). So my use of the term message-passing is not so much laden with its use in programming language theory as much as the more pedestrian notion of passing notes -- a conceptual model familiar to everybody. My interest in pursuing the topic isn't to radically change Python, to grind an axe or personal whim, nor to alter the spirit of Python in any way (a spirit which drew me to it back in 2001), but to consider a fairly large re-factoring or our current *programming ecosystem* while preserving and enhancing what I consider Python's main superpower: simplifying the complex. The real issue, then, is not changing *Python*, but something deeper: refactoring the OOP paradigm itself. ...Why? First, let it be noted clearly that OOP has not delivered on one its two main selling points: re-usable, sharable code. (The other main selling point being the ability to abstract away the details of the underlying machine -- which it still does well.) The proof of this is that we have *libraries* of code bundled with languages so that everyone uses the same vetted code base. Anything outside this,. though, feels, to most, like wearing other people's underwear. You'll note, even within the python library itself, that modules are hardly unified in coding *style*, showing the programming personality of the various developer histories that each library is representing. We accept this, because our benevolent dictator accepts it, and it's not easy to unify it further (despite an attempt with Pythonv3), because the issue, I'm arguing, is really about an inadequacy in the OOP model itself. What I'm proposing *should* create a data/object ecosystem much like Unix created a command ecosystem. An environment in which people could combine simple, modular commands into powerful, complex para-applications. In the case I'm proposing, the *Python* environment becomes a sort of lingua franca for the data ecosystem, not because of a war of whose language is better but because of the simple issue of practicality. In this data ecosystem, a network of objects becomes available and re-usable across the network (not a new idea). So, where are we now? Well we have this huge resource called the Internet, which has loads of data that no one has really exploited to its potential. Its value is scattered across the globe: warehoused in various databases, spreadsheets, blog silos, personal computers and whatnot. The OOP paradigm has not solved the problem, which it, in theory, could or SHOULD have. Instead, we have balkanization across many language platforms and data formats. XML, RDF, none of these really solves the problem, because the relationship to data is still too personal to everyone's private taxonomies. Of all the pages out there maybe 5% is incorporated into these attempts at data standardization. As for Python, its community has sort of splintered. Various language attempts to solve certain problems complexified the language and created a kind of growth knot on Python's tree. They weren't bad solutions, they were just the best solutions outside a refactoring of the OOP methodology. So what is OOP refactored? Building upon Alan Kay's tentative(?) description of the OOP essence (see
Re: Message passing syntax for objects | OOPv2
On 04/11/2013 06:57 PM, Mark Janssen wrote: [blah blah not python blah blah] Mark, this list if for Python, about Python, helping with Python. If you want to discuss whatever this idea is, you should do it somewhere else, as it is *not* Python. -- ~Ethan~ -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Apr 12, 11:57 am, Mark Janssen dreamingforw...@gmail.com wrote: hijacked by naysayers Says the man who wrote: - I blame the feminists for being too loyal to atheism and G-d for being too loyal to the Jews. Torture happened. - The world is insane because people loved snakes more than G-d, and believed in homosexuals more than Adam. It's frightening to see that your grip on theology and, hell, *basic humanity* is as tenuous as your understanding of computer science. Calling out blatant pap as pap is not being a naysayer. Shouldn't you be off single-handedly saving the creative economy? What happened to your simple rules to create a self-organized system and re-organize the Internet? Here endeth the lesson. I'd love to believe this is true but I bet it isn't; I'm pretty sure you've got plenty more delusional grandeur to inflict on us. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects
On Mar 20, 2:24 pm, Mark Janssen dreamingforw...@gmail.com wrote: Yes, that's the point I'm making, and it's significant because other programmers can't see other's mental models. How does having API-less magic objects make this any better? I pass a string message to your RSS object: does it create XML from it? does it parse it as RSS XML and return a mapping? Or do I have to read its code and/or documentation - like I currently do with the classes other developers create - and gain an understanding from that? How about backing up some of your claims of this brave new programming future with actual examples and evidence? Or would you prefer we listen to your gut feeling and ignore concrete research, as you recently recommended to Jane McGonigal? If that's the case, I believe there's a Python4K project which would benefit greatly from your radical ideas. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On 3/18/2013 11:31 PM, Andrew Barnert wrote: The idea that message passing is fundamentally different from method calling also turned out to be one of those strange ideas, since it only took a couple years to prove that they are theoretically completely isomorphic—and, Since the isomorphism is so obvious, I somehow missed that Kay actually thought that they were different. I suppose one could have different (but isomorphic) mental image models. For me, the problem with message passing, as usually though of, or method calls in their usual syntax, is the breaking of symmetries such as the commutivity of number addition. I think of 'a + b' as a message to the interpreter, as supervisor of Python objects, to add a and b together and give me the result. It turns out that a Python interpreter does that by calling *either* a.__add__(b) or b.__add__(a) or possibly both. The advantage of passing messages through a supervisor is that it can 'supervise' the process. The behavior with binary operators is one example. The behavior of len(c) is another. If c.__len__ does not exist, (the programmers fault for calling len(c)), it raises one message. If c.__len__ does not return a non-negative int, it raises another. for that matter, they're both isomorphic to closures. Translating into Python, does this refer to the fact that bound methods are closures? In effect, your objects are just single-parameter functions, and your messages are the call operator. The proposal seems to be that every object should have a single-parameter call method that in turn calls a preferred, default single-parameter named method. For lists: def __call__(self, ob): self.append(ob) For ints: def __call__(self, other): return self.__add__(other) That seems useless as a general pattern. -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Tue, Mar 19, 2013 at 1:09 PM, Terry Reedy tjre...@udel.edu wrote: On 3/18/2013 11:31 PM, Andrew Barnert wrote: The idea that message passing is fundamentally different from method calling also turned out to be one of those strange ideas, since it only took a couple years to prove that they are theoretically completely isomorphic—and, Since the isomorphism is so obvious, I somehow missed that Kay actually thought that they were different. I suppose one could have different (but isomorphic) mental image models. Yes, that's the point I'm making, and it's significant because other programmers can't see other's mental models. mark -- http://mail.python.org/mailman/listinfo/python-list
OOPv2: [Was: Message passing syntax for objects]
Hopefully this won't be considered mail spam, but another quora answer that gets to the idea I'm after: http://qr.ae/TMh7A Reposted here for those who don't have accounts: Q. Is it time for us to dump the OOP paradigm? If yes, what can replace it? When I was using C++ and Java, more of my time was spent fitting the problem to languages' OO paradigm than actually solving the problem. When I used Python, I found I was focusing on the problem more compared to other languages, but still that fitting aspect remained. I am looking for a language design perspective answer, where we can compare logic programming, functional, etc approaches and really see if the OOP still fits/necessary and do we need to evolve towards a better paradigm. A. Yes. OOP was the evolution of applying abstraction to a programming language, to the machine, having to remember that we used to deal very concretely with switches and bits. Looking back, it can be seen to having gone too far. We don't need objects. Programmers don't model physical things within the computer, except in the limited domain of (generally game) simulation. It misinformed the paradigm in the wrong direction as many people found when programmers started making vast hierarchies of objects to try to categorize reality (Suburu inherits from Car inherits from Vehicle inherits from.). So we went the wrong direction. What's to replace it? There was an interesting discussion on comp.lang.python started in 2004 by Mark Hahn about prototypes. (See: Google Groups and Google Groups). I think somehow it captures the idea pretty well. Prototypes are a refactoring of all the explorations that OOP made, taking us back to our roots. From the high-level abstraction of objects in the computer, back to the simple, understandable (C) structs and then encoding a way to shape or template data into a form that can take on abstract qualities which can then be used in a very general way. The key difference? You're not way up in abstraction-land attempting to impose your personal taxonomy into the machine; instead, you're working from the common-ground of the machine and co-ordinating a object/data space into existence where other programmers can actually use them. In other words, you're advancing the state-of-the-art of data structuring instead of applying some conceptual, hyper-personal abstraction into your code and onto the machine. The result? Programmers can start making very simple, loosely-coupled, universal types and build upwards with other programmers into more and more complex, re-usable mashups. This will create modularity, agility, and facilitate the evolution of a universal programming space as well as create the Open Source Culture that the Internet needs to re-start itself. -- http://mail.python.org/mailman/listinfo/python-list
Re: OOPv2: [Was: Message passing syntax for objects]
On Tue, Mar 19, 2013 at 9:46 PM, Mark Janssen dreamingforw...@gmail.com wrote: Hopefully this won't be considered mail spam, but another quora answer that gets to the idea I'm after: http://qr.ae/TMh7A Reposted here for those who don't have accounts: Q. Is it time for us to dump the OOP paradigm? If yes, what can replace it? When I was using C++ and Java, more of my time was spent fitting the problem to languages' OO paradigm than actually solving the problem. When I used Python, I found I was focusing on the problem more compared to other languages, but still that fitting aspect remained. I am looking for a language design perspective answer, where we can compare logic programming, functional, etc approaches and really see if the OOP still fits/necessary and do we need to evolve towards a better paradigm. A. Yes. OOP was the evolution of applying abstraction to a programming language, to the machine, having to remember that we used to deal very concretely with switches and bits. Looking back, it can be seen to having gone too far. We don't need objects. Programmers don't model physical things within the computer, except in the limited domain of (generally game) simulation. It misinformed the paradigm in the wrong direction as many people found when programmers started making vast hierarchies of objects to try to categorize reality (Suburu inherits from Car inherits from Vehicle inherits from.). So we went the wrong direction. What's to replace it? There was an interesting discussion on comp.lang.python started in 2004 by Mark Hahn about prototypes. (See: Google Groups and Google Groups). I think somehow it captures the idea pretty well. (Actual links to the referenced discussion(s) would be appreciated.) Prototypes are a refactoring of all the explorations that OOP made, taking us back to our roots. From the high-level abstraction of objects in the computer, back to the simple, understandable (C) structs and then encoding a way to shape or template data into a form that can take on abstract qualities which can then be used in a very general way. The key difference? You're not way up in abstraction-land attempting to impose your personal taxonomy into the machine; instead, you're working from the common-ground of the machine and co-ordinating a object/data space into existence where other programmers can actually use them. In other words, you're advancing the state-of-the-art of data structuring instead of applying some conceptual, hyper-personal abstraction into your code and onto the machine. The result? Programmers can start making very simple, loosely-coupled, universal types and build upwards with other programmers into more and more complex, re-usable mashups. This will create modularity, agility, and facilitate the evolution of a universal programming space as well as create the Open Source Culture that the Internet needs to re-start itself. What a crock. Prototype-based languages are a somewhat interesting alternative model, but IMO they are nowhere near as game-changing as the post suggests. The elimination of classes simplifies the MOP/metamodel a bit, but AFAICT doesn't improve much otherwise. If prototypes were so revolutionary, they would presumably be faring better in the marketplace of ideas (its promoters have been at it since about as long as Python's have, apparently with less luck). If you need evidence, look at JavaScript. It is, for better or worse, among the most popular languages of our time and it is prototype-based, but virtually no one chooses to make use of its prototypical nature; almost all projects seem to end up consciously re-implementing an approximation of traditional classes on top of the prototype system (using one of several techniques, there seeming to be no widespread agreement about which one is superior). Even prior to JavaScript, in orthodox prototype-based languages, there is/was even a concept of traits objects, which basically play much the same role as classes in traditional OOP. Also, I cannot for the life of me figure out how you made the abrupt leap from message-passing to prototype-based OOP. I echo Mark Lawrence's comment from your previous thread. +1 best trolling so far this millennium. Have fun with your architecture astronautics. Regards, Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects
On 2013-03-18, Mark Janssen dreamingforw...@gmail.com wrote: Alan Kay's idea of message-passing in Smalltalk are interesting, and like the questioner says, never took off. My answer was that Alan Kay's abstraction of Everything is an object fails because you can't have message-passing, an I/O task, working in the same space as your objects -- they are two very different functionalities and they have to be preserved **for the programmer**. Without concurrency, message passing and interacting through functions are semantically similar. You have operating for sending and receiving messages. Python does this through methods which potentially have inputs and outputs. Function syntax does have two slight advantages over pure message passing. 1. A command is sent with the message as opposed to requiring requests to be parsed from the message separately from the data. 2. Functions constrain what actions are available and what inputs they can legal accept. This is doubly true With concurrency, CSP has shown us that message passing is valuable for syncronization. Most CSP languages retain the idea of passing messages. This need not be the case. The same semantics could be acheived through function call syntax, although it would likely be less intuitive. If you want to pursue your ideas further, and you have not already, I suggest that you investigate Erlang and its CSP based concurrent oriented programming. Alan Kay, himself, commented that he felt it matched his ideas of message based OOP. When you return, there is a Candygram package providing similar constructs (last I knew, it did not yet impliment light weight processes) for Python. You might also look at using Go which has CSP based channel and coroutine semantics. It has many things in common with Python. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
So, by introducing this collaboration mechanism with a syntax that defines it as sending and receiving things that are *not* arbitrary objects, the language would naturally reinforce a more thoroughly decoupled architecture? Sent from my iPad On Mar 17, 2013, at 8:53 PM, Mark Janssen dreamingforw...@gmail.com wrote: Hello, I just posted an answers on quora.com about OOP (http://qr.ae/TM1Vb) and wanted to engage the python community on the subject. Alan Kay's idea of message-passing in Smalltalk are interesting, and like the questioner says, never took off. My answer was that Alan Kay's abstraction of Everything is an object fails because you can't have message-passing, an I/O task, working in the same space as your objects -- they are two very different functionalities and they have to be preserved **for the programmer**. This functional separation made me think that Python could benefit from a syntactical, language-given separation between Classes and the messages between them, to encourage loosely-coupled, modular OOP. Something that OOP has always promised but never delivered. I think we should co-opt C++'s poorly used and I/O operators (for files) and re-purpose them for objects/classes. One could then have within interpreter space, the ability to pass in a message to an object. 42 MyObject #sends 42 as a message into MyObject The Object definition would then have special methods __in__ to receive data and a special way of outputing data that can be caught __str__(?). I'm hoping the community can comment on the matter Thanks, Mark Tacoma, Washington ___ Python-ideas mailing list python-id...@python.org http://mail.python.org/mailman/listinfo/python-ideas -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Sun, Mar 17, 2013 at 11:46 PM, Steven D'Aprano st...@pearwood.info wrote: I am very interested in this as a concept, although I must admit I'm not entirely sure what you mean by it. I've read your comment on the link above, and subsequent emails in this thread, and I'm afraid I don't understand what you mean here. I feel you are assuming that your readers are already experts on message-passing languages (Smalltalk?). I know what *I* mean by message passing, but that's not necessarily what you mean by it. I'm sorry, I haven't been very clear. I'm not even an expert on message-passing languages, but I see that it's a profound concept that hasn't been adequately integrated into the OOP model. In any case, I will try to do better. And I apologize to everyone on the list for the prior mail spam. A part of me is a bit giddy with the idea. By message passing, I mean all the ways we communicate to objects in the OOP environment. Usually we communicate to them through method-invokation. But this is the wrong way, I argue, to look at the problem. With function or method syntax, you're telling the computer to execute something, but that is not the right concepts for OOP. You want the objects to interact with each other and in a high-level language, the syntax should assist with that. By building it into the language, it would *enforce* a modular object style, rather than the current, very specialized and very programmer specific way there is now. In fact, most people never really think in that paradigm, yet if the language supported/proposed such a syntax, programmers would start to re-arrange the whole object hierarchy in a new, more modular and universal way. [end quote] I don't understand this. In what way would message passing enforce a modular object style? In what way does Python not already have a modular object style? Hopefully my paragraph clarifies that a bit. But the key conceptual shift is that by enforcing a syntax that moves away from invoking methods and move to message passing between objects, you're automatically enforcing a more modular approach. Mark -- http://mail.python.org/mailman/listinfo/python-list
[Python-ideas] Message passing syntax for objects
Ian Cordasco wrote: On Sun, Mar 17, 2013 at 11:53 PM, Mark Janssen dreamingforw...@gmail.com wrote: Hello, I just posted an answers on quora.com about OOP (http://qr.ae/TM1Vb) and wanted to engage the python community on the subject. My answer to that question would be that it *did* catch on, it's just that we changed the terminology. Instead of message passing, we talk about calling methods. Yes, but this is where it breaks the OOP abstraction by 90 degrees. By using function calls, you're telling the machine to do something. But when you want to pass something to an object there should be a natural way to do this for every object. By using methods you pollute the concept space with all sorts of semi-random (i.e. personal) names, like append, add, enqueue, etc. This proposal would not only make a consistent syntax across all objects, but train the programmer to *think* modularly in the sense of having a community of re-usable object. I.e. What should I do if another object passes me something?. No one thinks this now, because the programmer expects new developers to learn *their* interface! Mark -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Mon, Mar 18, 2013 at 10:18 AM, Mark Janssen dreamingforw...@gmail.com wrote: Ian Cordasco wrote: On Sun, Mar 17, 2013 at 11:53 PM, Mark Janssen dreamingforw...@gmail.com wrote: Hello, I just posted an answers on quora.com about OOP (http://qr.ae/TM1Vb) and wanted to engage the python community on the subject. My answer to that question would be that it *did* catch on, it's just that we changed the terminology. Instead of message passing, we talk about calling methods. Yes, but this is where it breaks the OOP abstraction by 90 degrees. By using function calls, you're telling the machine to do something. But when you want to pass something to an object there should be a natural way to do this for every object. By using methods you pollute the concept space with all sorts of semi-random (i.e. personal) names, like append, add, enqueue, etc. This proposal would not only make a consistent syntax across all objects, but train the programmer to *think* modularly in the sense of having a community of re-usable object. I.e. What should I do if another object passes me something?. No one thinks this now, because the programmer expects new developers to learn *their* interface! Mark -- You're dreaming of a utopia where computers just read our minds and know what we're thinking. So what if I can pass 42 into an object. What do I intend to happen with that 42? Do I want to add the element to a list? Access the 42nd element? Delete the 42nd element? Let the object pick a behavior at random? Clearly there must be some sort of behavior defined for passing a message into an object. And now we're back to learning the interface that the programmer designed. Only now, instead of having different types of behavior grouped together into classes, we have to use a different object for each operation. So what's the benefit of that over having the object implement the __call__ method? Also, why would we re-use the bit shift operators for message passing? Just because C++ decided to overload the existing operators to mean reading into and writing out of a stream doesn't mean it's a good idea. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
zipher於 2013年3月19日星期二UTC+8上午1時04分36秒寫道: On Sun, Mar 17, 2013 at 11:46 PM, Steven D'Aprano st...@pearwood.info wrote: I am very interested in this as a concept, although I must admit I'm not entirely sure what you mean by it. I've read your comment on the link above, and subsequent emails in this thread, and I'm afraid I don't understand what you mean here. I feel you are assuming that your readers are already experts on message-passing languages (Smalltalk?). I know what *I* mean by message passing, but that's not necessarily what you mean by it. I'm sorry, I haven't been very clear. I'm not even an expert on message-passing languages, but I see that it's a profound concept that hasn't been adequately integrated into the OOP model. In any case, I will try to do better. And I apologize to everyone on the list for the prior mail spam. A part of me is a bit giddy with the idea. By message passing, I mean all the ways we communicate to objects in the OOP environment. Usually we communicate to them through method-invokation. But this is the wrong way, I argue, to look at the problem. With function or method syntax, you're telling the computer to execute something, but that is not the right concepts for OOP. You want the objects to interact with each other and in a high-level language, the syntax should assist with that. By building it into the language, it would *enforce* a modular object style, rather than the current, very specialized and very programmer specific way there is now. In fact, most people never really think in that paradigm, yet if the language supported/proposed such a syntax, programmers would start to re-arrange the whole object hierarchy in a new, more modular and universal way. [end quote] I don't understand this. In what way would message passing enforce a modular object style? In what way does Python not already have a modular object style? Hopefully my paragraph clarifies that a bit. But the key conceptual shift is that by enforcing a syntax that moves away from invoking methods and move to message passing between objects, you're automatically enforcing a more modular approach. Mark Please check object pascal and objective c and erlang for the message-action director model of what you want. C is too low level to be suitable for everything. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
You're dreaming of a utopia where computers just read our minds and know what we're thinking. So what if I can pass 42 into an object. What do I intend to happen with that 42? Do I want to add the element to a list? Access the 42nd element? Delete the 42nd element? Let the object pick a behavior at random? Huh?, No the programmer has to think of how data interacts with his/her objects. It's just that *now* the language is wise enough to teach them to think about it. So what's the benefit of that over having the object implement the __call__ method? You bring up an interesting subject. I think you could get rid of the __call__ special method on objects. I think this is the wrong view into the object universe or *data ecosystem*. Also, why would we re-use the bit shift operators for message passing? Just because C++ decided to overload the existing operators to mean reading into and writing out of a stream doesn't mean it's a good idea. You're right, perhaps there's a better set of symbols that suggest moving data. Mark -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
8 Dihedral dihedral88...@googlemail.com writes: zipher於 2013年3月19日星期二UTC+8上午1時04分36秒寫道: the key conceptual shift is that by enforcing a syntax that moves away from invoking methods and move to message passing between objects, you're automatically enforcing a more modular approach. Please check object pascal and objective c and erlang for the message-action director model of what you want. I fail to see how syntax differences would change the modularity of your product. The fact that (say) ObjC use the name message while Python calls the same a method isn't actually changing the concrete fact that both are executing some sort of function that accepts an instance object as one of the arguments (in Python, the first parameter, usually called self, in ObjC, and implicit self). In other words, the following ObjC [someObj getItemAt: i] is perfectly equivalent to the following Python someObj.getItemAt(i) and to the following Smalltalk someObj getItemAt: i How is the former syntax, where getItemAt: is called a message, more modular from the second, where getItemAt() is called a method? ciao, lele. -- nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia. l...@metapensiero.it | -- Fortunato Depero, 1929. -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Mon, Mar 18, 2013 at 12:06 PM, Georg Brandl g.bra...@gmx.net wrote: Am 18.03.2013 05:26, schrieb Mark Janssen: Continuing on this thread, there would be a new bunch of behaviors to be defined. Since everything is an object, there can now be a standard way to define the *next* common abstraction of every object interacts with other objects. The problem is that for most objects there isn't *the* interaction. Sure, you could split up complicated objects into small pieces with a smaller functionality, but at some point you have to stop. Yes. But that is the point, if you look at the quora post -- to invert the object model and create mashups of simple modular data types and working *upwards*. Let's see how this concept fares with simple types such as integers or collections... 42 MyNumberType #would add the integer to your integer type That's just random. Why not multiply? Why not exponentiate? Well, as I noted in another post, that while these can be broken down into their simpler component (addition and negative numbers), numbers should probably be treated separately. 42 MyCollectionType #would add the object into your collection: *poof*: no more random syntaxiis for putting things in collections.\ So you've replaced one method of a collections API by your magical operator, for all collections. Yes -- for all collections. That's a pretty big gain right? What about the other methods that are just as important, such as deleting items, indexing, and querying? The syntaxitis would stay just the same, except if you introduce more operators, which means new syntax again. Also, how would this work for dictionaries or deques? Well, now you get into the Work: a unified data model. Deques, trees, lists, etc were all preliminary evolutionary explorations on this giant computer science journey of knowledge (and data types) which will have to be, can be, pruned and dropped. MyObject # queries the object to output its state. What is its state? A readable representation? A serialized representation? A memory dump? That's still for us to decide. We're mastering the OOP paradigm here: What is the ideal object and what is in common across all objects? We are Zen, we want to master the notion of object. What is the simplest object model possible without sacrificing critical functionality... http://www.cnn.com; MyInternetObject #outputs the HTML text from CNN's home page. Each object has to figure out how it will receive things from outside of it. Things it can't handle (a string sent to an int) just have to be dropped to some other space, much like stderr does within the O.S. There are probably many other very interesting examples, but the key idea I'm working on (as noted in other messages), is a sort-of universal language for the internet, a WebOS to be applied to a universal data model. It seems that you are reinventing pipes (such as UNIX shell pipes). That is a very interesting comparison. That is something like what I'm trying to do. In tandem with the Internet, I do see a kind of synthesis of Web + O.S. integration -- ultimately, creating a data ecosystem. mark -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Mon, Mar 18, 2013 at 1:24 PM, Mark Janssen dreamingforw...@gmail.com wrote: On Mon, Mar 18, 2013 at 12:06 PM, Georg Brandl g.bra...@gmx.net wrote: Am 18.03.2013 05:26, schrieb Mark Janssen: Continuing on this thread, there would be a new bunch of behaviors to be defined. Since everything is an object, there can now be a standard way to define the *next* common abstraction of every object interacts with other objects. The problem is that for most objects there isn't *the* interaction. Sure, you could split up complicated objects into small pieces with a smaller functionality, but at some point you have to stop. Yes. But that is the point, if you look at the quora post -- to invert the object model and create mashups of simple modular data types and working *upwards*. Let's see how this concept fares with simple types such as integers or collections... 42 MyNumberType #would add the integer to your integer type That's just random. Why not multiply? Why not exponentiate? Well, as I noted in another post, that while these can be broken down into their simpler component (addition and negative numbers), numbers should probably be treated separately. 42 MyCollectionType #would add the object into your collection: *poof*: no more random syntaxiis for putting things in collections.\ So you've replaced one method of a collections API by your magical operator, for all collections. Yes -- for all collections. That's a pretty big gain right? Nope. No gain at all. Instead of learning the add() method, you learn the operator. You have not simplified anything. It seems that you are reinventing pipes (such as UNIX shell pipes). That is a very interesting comparison. That is something like what I'm trying to do. In tandem with the Internet, I do see a kind of synthesis of Web + O.S. integration -- ultimately, creating a data ecosystem. mark Yes, having the whole program run by chaining functions together is a neat idea. And it works great in functional languages- if you want that as a feature, use OCaml or Haskell. It works less well in imperative languages where you are manipulating data, not just passing it around. -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
On Mon, Mar 18, 2013 at 2:51 PM, Andrew Barnert abarn...@yahoo.com wrote: Have you even looked at a message-passing language? A Smalltalk message is a selector and a sequence of arguments. That's what you send around. Newer dynamic-typed message-passing OO and actor languages are basically the same as Smalltalk. Yes, but you have to understand that Alan Kays came with strange ideas of some future computer-human symbiosis. So his language design and other similar attempts (like php) is rather skewed from that premise And also, despite name-dropping, I'm not trying to create anything like that idea of message-passing. I'm talking about something very simple, a basic and universal way for objects to communicate. With function or method syntax, you're telling the computer to execute something, but that is not the right concepts for OOP. You want the objects to interact with each other and in a high-level language, the syntax should assist with that. And you have to tell the object _how_ to interact with each other. This is a different paradigm that what I'm talking about. In the OOP of my world, Objects already embody the intelligence of how they are going to interact with the outside world, because I put them there. Even with reasonably intelligent animals, you don't just tell two animals to interact, except in the rare case where you don't care whether they become friends or dinner. You're model of computer programming is very alien to me. So I don't think it will be productive to try to convince you of what I'm suggesting, but feel free to continue... Mark -- http://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Message passing syntax for objects
From: Mark Janssen dreamingforw...@gmail.com Sent: Monday, March 18, 2013 4:41 PM On Mon, Mar 18, 2013 at 2:51 PM, Andrew Barnert abarn...@yahoo.com wrote: Have you even looked at a message-passing language? A Smalltalk message is a selector and a sequence of arguments. That's what you send around. Newer dynamic-typed message-passing OO and actor languages are basically the same as Smalltalk. Yes, but you have to understand that Alan Kays came with strange ideas of some future computer-human symbiosis. So his language design and other similar attempts (like php) is rather skewed from that premise The idea that message passing is fundamentally different from method calling also turned out to be one of those strange ideas, since it only took a couple years to prove that they are theoretically completely isomorphic—and, for that matter, they're both isomorphic to closures. And also, despite name-dropping, I'm not trying to create anything like that idea of message-passing. I'm talking about something very simple, a basic and universal way for objects to communicate. Message passing is a simple, basic, and universal way for objects to communicate. Everything from dot-syntax method calls to JSON RPC protocols can be modeled as passing messages. But what you're talking about isn't message passing. The idea that messages have names, and reference objects as arguments, is fundamental, and by leaving that out, you're talking about something different. In effect, your objects are just single-parameter functions, and your messages are the call operator. With function or method syntax, you're telling the computer to execute something, but that is not the right concepts for OOP. You want the objects to interact with each other and in a high-level language, the syntax should assist with that. And you have to tell the object _how_ to interact with each other. This is a different paradigm that what I'm talking about. In the OOP of my world, Objects already embody the intelligence of how they are going to interact with the outside world, because I put them there. The paradigm you're talking about is useless. You have lists that know how to append, but don't know how to get/search/iterate. Almost every useful object needs the intelligence to interact with the world in two or more ways. Even with reasonably intelligent animals, you don't just tell two animals to interact, except in the rare case where you don't care whether they become friends or dinner. You're model of computer programming is very alien to me. So I don't think it will be productive to try to convince you of what I'm suggesting, but feel free to continue... My model of (object-oriented) computer programming is that programming objects model objects which have a variety of behaviors, each of which is triggered by sending a different message. This is pretty much the central definition that everyone who programs or theorizes about programming uses. If you read any textbook, wiki page, journal article, or tutorial, they're all talking about that, or something directly isomorphic to it. If that's alien to you, then object-oriented programming is alien to you. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects
Continuing on this thread, there would be a new bunch of behaviors to be defined. Since everything is an object, there can now be a standard way to define the *next* common abstraction of every object interacts with other objects. And going with my suggestion of defining and operators, I'm going to explore the concept further 42 MyNumberType #would add the integer to your integer type 42 MyCollectionType #would add the object into your collection: *poof*: no more random syntaxiis for putting things in collections.\ MyObject # queries the object to output its state. http://www.cnn.com; MyInternetObject #outputs the HTML text from CNN's home page. Each object has to figure out how it will receive things from outside of it. Things it can't handle (a string sent to an int) just have to be dropped to some other space, much like stderr does within the O.S. There are probably many other very interesting examples, but the key idea I'm working on (as noted in other messages), is a sort-of universal language for the internet, a WebOS to be applied to a universal data model. Mark -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects
On Sun, Mar 17, 2013 at 9:26 PM, Mark Janssen dreamingforw...@gmail.com wrote: Continuing on this thread, there would be a new bunch of behaviors to be defined. Since everything is an object, there can now be a standard way to define the *next* common abstraction of every object interacts with other objects. And going with my suggestion of defining and operators, I'm going to explore the concept further Each object has to figure out how it will receive things from outside of it. Things it can't handle (a string sent to an int) just have to be dropped to some other space, much like stderr does within the O.S. I guess here's the idea I'm getting at. As a programming language paradigm, OOP has to evolve -- it still has too much dependency on number-crunching and the mathematical operators still dominate. But a better abstraction to wrap the OOP paradigm around is *message-passing* rather than *arithmetic*. And having in/out operators on objects is just *way cool*. mark -- http://mail.python.org/mailman/listinfo/python-list