Re: [fonc] Personal Programming Environment as Extension of Self
I don't know the details of your language, but I see two possibilities: 1) If the textual representation of your language is parenthesis-balanced by definition, just do what Lisp does. 2) If not, format quoted text like quote number_of_chars char char char Yes I know 2) is fragile, but so is escaping. On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.com wrote: Oh, I see. As I mentioned in the first message, I plan on UTF-8 text being one of the three basic types in ABC. There is text, rational numbers, and blocks. Even if I'm not using names, I think text is very useful for tagged values and such. {Hello, World!} Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. Best, Dave On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.com wrote: I don't really have a big concern. If you just support numbers, people will find clever, but potentially incompatible ways of doing strings. I recall in the pre-STL days supporting 6 different string classes. I understand that a name is different than a string, but I come from a perl background. People don't reinvent strings in perl to my knowledge. On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote: I think it's fine if people model names, text, documents, association lists, wikis, etc. -- and processing thereof. And I do envision use of graphics as a common artifact structure, and just as easily leveraged for any explanation as text (though I imagine most such graphics will also have text associated). Can you explain your concern? On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote: Don't forget that words can be images, vector graphics or 3D graphics. If you have an open system, then people will incorporate names/symbols. I'm not sure you want to avoid symbolic processing, but that's your choice. I'm reminded of the omgcraft ad for cachefly. John On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote: Okay, so if I understand correctly you want everyone to see the same thing, and just deal with the collisions when they occur. You also plan to mitigate this by using some visual indicators when that word doesn't mean what you think it means. This would require search before rendering, but perhaps it could be a search of the user's personal dictionary - i.e. ambiguity only within a learned set. I wonder if we could use colors or icons to help disambiguate. A concern I have about this design is when words have meanings that are subtly but significantly different. Selecting among these distinctions takes extra labor compared to using different words or parameterizing the distinctions. But perhaps this also could be mitigated, through automatic refactoring of the personal dictionary (such that future exposure to a given word will automatically translate it). I titled this Personal Programming Environment as Extension of Self because I think it should reflect our own metaphors, our own thoughts, while still being formally precise when we share values. Allowing me to use your words, your meanings, your macros is one thing - a learning experience. Asking me to stick with it, when I have different subtle distinctions I favor, is something else. Personally, I think making the community see the same things is less important so long as they can share and discover by *meaning* of content rather than by the words used to describe it. Translator packages could be partially automated and further maintained implicitly with permission from the people who explore different projects and small communities. Can we create systems that enable people to use the same words and metaphors with subtly different meanings, but still interact efficiently, precisely, and unambiguously? Best, Dave On Mon, Sep 23, 2013 at 5:26 PM, Sean McDirmid smcd...@microsoft.comwrote: The names are for people, and should favor readability over uniqueness in the namespace; like ambiguous English words context should go a long way in helping the reader understand on their own (if not, they can do some mouse over). We can even do fancy things with the names when they are being rendered, like, if they are ambiguous, underlay them with a dis-ambiguating qualifier. The world is wide open once you’ve mastered how to build a code editor!
Re: [fonc] Personal Programming Environment as Extension of Self
David Barbour dmbarb...@gmail.com writes: Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. The geometric explosion comes from the unary nature of escaping. It wouldn't be too difficult to add a 'level', for example: {} - {{\0}} - {{{\1}\0}} - \2}\1}\0}} - {\3}\2}\1}\0}} The main problem with escaping is that it is homomorphic: ie. it is usually String - String. This is basically the source of all code injection attacks. It wouldn't be too bad if escaping were idempotent, since we could add extra escapes just in case, but it's not so we end up keeping track manually, and failing. There's a good post on this at http://blog.moertel.com/posts/2006-10-18-a-type-based-solution-to-the-strings-problem.html It would be tricky to implement a solution to this in a way that's open and extensible; if we're be passing around first-class functions anyway, we could do Haskell's dictionary-passing manually. Cheers, Chris ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Personal Programming Environment as Extension of Self
Thanks for the ref, Chris. I'll take some time to absorb it. On Tue, Sep 24, 2013 at 1:46 AM, Chris Warburton chriswa...@googlemail.comwrote: David Barbour dmbarb...@gmail.com writes: Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. The geometric explosion comes from the unary nature of escaping. It wouldn't be too difficult to add a 'level', for example: {} - {{\0}} - {{{\1}\0}} - \2}\1}\0}} - {\3}\2}\1}\0}} The main problem with escaping is that it is homomorphic: ie. it is usually String - String. This is basically the source of all code injection attacks. It wouldn't be too bad if escaping were idempotent, since we could add extra escapes just in case, but it's not so we end up keeping track manually, and failing. There's a good post on this at http://blog.moertel.com/posts/2006-10-18-a-type-based-solution-to-the-strings-problem.html It would be tricky to implement a solution to this in a way that's open and extensible; if we're be passing around first-class functions anyway, we could do Haskell's dictionary-passing manually. Cheers, Chris ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Personal Programming Environment as Extension of Self
I have nothing against name resolution at edit-time. My concern is that giving the user a list of 108 subtly different definitions of 'OOP' and saying I can't resolve this in context. Which one do you mean here? every single time would be insufferable, even if the benefit is that everyone 'sees' the same code. On Sep 24, 2013 7:15 AM, Matt M mclelland.m...@gmail.com wrote: Person.draw(object) -- What do I mean by this? Am I drawing a picture? a gun? a curtain? And the way this works in conversation is that your partner stops you and says wait, what do you mean by 'draw'? Similarly an IDE can underline the ambiguity and leave it to the user to resolve, either explicitly or implicitly by continuing to write more (often ambiguity is removed with further context). I completely agree with Sean's quote (of Johnathan Edwards?) that names are for people, and that name resolution should almost never be part of the dynamics of a language. Names should be resolved statically (preferably at edit time). Matt On Monday, September 23, 2013 9:24:52 PM UTC-5, dmbarbour wrote: Ambiguity in English is often a problem. The Artist vs. Cowboy example shows that ambiguity is in some cases not a problem. I think it reasonable to argue that: when the context for two meanings of a word is obviously different, you can easily disambiguate using context. The same is true for types. But review my concern below: when words have meanings that are * subtly* but significantly different. In many cases the difference is * subtle* but important. It is these cases where ambiguity can be troublesome. Person.draw(object) -- What do I mean by this? Am I drawing a picture? a gun? a curtain? Regarding conversations with coworkers: I think in the traditional KVM programming environment, the common view does seem important - e.g. for design discussions or over-the-shoulder debugging. At the moment, there is no easy way to use visual aides and demonstrations when communicating structure or meaning. In an AR or VR environment, I hypothesize this pressure would be alleviated a great deal, since the code could be shown to each participant in his or her own form and allow various meaning-by-demonstration/**exploration forms of communication. I'm curious whether having different 'ways' of seeing the code might even help for debugging. Multiple views could also be juxtaposed if there are just a few people involved, enabling them to more quickly understand the other person's point of view. Best, Dave On Mon, Sep 23, 2013 at 6:21 PM, Sean McDirmid smc...@microsoft.comwrote: Ambiguity is common in English and it’s not a big problem: words have many different definitions, but when read in context we can usually tell what they mean. For “Cowboy.Draw(Gun)” and “Artist.Draw(Picture)”, we can get a clue about what Draw means; ambiguity is natural! For my language, choosing what Draw is meant drives type inference, so I can’t rely on types driving name lookup. But really, the displayed annotation goes in the type of the variables surrounding the Draw call (Cowboy, Gun) rather than the Draw Call itself. ** ** Language is an important part of society. Though I can use translation to talks to my Chinese speaking colleagues, that we all speak in English at work and share the names for things is very important for collaboration (and suffers when we don’t). For code, we might be taking about it even when we are not reading it, so standardizing the universe of names is still very important. ** ** *From:* augmented-...@**googlegroups.com [mailto:augmented-...@** googlegroups.com] *On Behalf Of *David Barbour *Sent:* Tuesday, September 24, 2013 9:11 AM *To:* augmented-...@**googlegroups.com; reactiv...@googlegroups.**com; Fundamentals of New Computing *Subject:* Re: Personal Programming Environment as Extension of Self ** ** Okay, so if I understand correctly you want everyone to see the same thing, and just deal with the collisions when they occur. ** ** You also plan to mitigate this by using some visual indicators when that word doesn't mean what you think it means. This would require search before rendering, but perhaps it could be a search of the user's personal dictionary - i.e. ambiguity only within a learned set. I wonder if we could use colors or icons to help disambiguate. ** ** A concern I have about this design is when words have meanings that are subtly but significantly different. Selecting among these distinctions takes extra labor compared to using different words or parameterizing the distinctions. But perhaps this also could be mitigated, through automatic refactoring of the personal dictionary (such that future exposure to a given word will automatically translate it). ** ** I titled this Personal Programming Environment as Extension of Self because I think it should reflect our own metaphors, our own thoughts,
Re: [fonc] Personal Programming Environment as Extension of Self
Even Lisp isn't parentheses balanced by definition, because you can do this: '()) In that same sense my bytecode is block balanced, except in text. [ [ [] [] ] [] ] { ] } The idea of using number of chars is possible, something like: {42|forty two characters here. But that would also be very difficult to use in a streaming bytecode. It's also difficult to read. I've always felt that bytecode should at least be slightly legible, so I can easily get a sense of what's happening just by looking at the raw streams, even though I don't expect people to program in bytecode directly (nor read it that way often). On Tue, Sep 24, 2013 at 12:49 AM, Pavel Bažant pbaz...@gmail.com wrote: I don't know the details of your language, but I see two possibilities: 1) If the textual representation of your language is parenthesis-balanced by definition, just do what Lisp does. 2) If not, format quoted text like quote number_of_chars char char char Yes I know 2) is fragile, but so is escaping. On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.comwrote: Oh, I see. As I mentioned in the first message, I plan on UTF-8 text being one of the three basic types in ABC. There is text, rational numbers, and blocks. Even if I'm not using names, I think text is very useful for tagged values and such. {Hello, World!} Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. Best, Dave On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.com wrote: I don't really have a big concern. If you just support numbers, people will find clever, but potentially incompatible ways of doing strings. I recall in the pre-STL days supporting 6 different string classes. I understand that a name is different than a string, but I come from a perl background. People don't reinvent strings in perl to my knowledge. On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote: I think it's fine if people model names, text, documents, association lists, wikis, etc. -- and processing thereof. And I do envision use of graphics as a common artifact structure, and just as easily leveraged for any explanation as text (though I imagine most such graphics will also have text associated). Can you explain your concern? On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote: Don't forget that words can be images, vector graphics or 3D graphics. If you have an open system, then people will incorporate names/symbols. I'm not sure you want to avoid symbolic processing, but that's your choice. I'm reminded of the omgcraft ad for cachefly. John On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote: Okay, so if I understand correctly you want everyone to see the same thing, and just deal with the collisions when they occur. You also plan to mitigate this by using some visual indicators when that word doesn't mean what you think it means. This would require search before rendering, but perhaps it could be a search of the user's personal dictionary - i.e. ambiguity only within a learned set. I wonder if we could use colors or icons to help disambiguate. A concern I have about this design is when words have meanings that are subtly but significantly different. Selecting among these distinctions takes extra labor compared to using different words or parameterizing the distinctions. But perhaps this also could be mitigated, through automatic refactoring of the personal dictionary (such that future exposure to a given word will automatically translate it). I titled this Personal Programming Environment as Extension of Self because I think it should reflect our own metaphors, our own thoughts, while still being formally precise when we share values. Allowing me to use your words, your meanings, your macros is one thing - a learning experience. Asking me to stick with it, when I have different subtle distinctions I favor, is something else. Personally, I think making the community see the same things is less important so long as they can share and discover by *meaning* of content rather than by the words used to describe it. Translator packages could be partially automated and further maintained implicitly with permission from the people who explore different projects and small communities. Can we
Re: [fonc] Personal Programming Environment as Extension of Self
We developed an s-expression-like client-server based UI protocol. We used class ids and object ids. It was very difficult to debug. So much so that I developed a non distributed version (well it used X11). Note that we used string length for our strings. It was more of an issue of numbers everywhere that caused the confusion. When HTML came out, we abandoned our protocol. Learn from the past. HTML also knocked out other distributed options like NeWS and Display PostScript. These were lower level than HTML for a long time. I encourage you to leverage HTML and JavaScript to the extent you need to, but beware of more understandable protocols happening at the same level or above. Sometimes giving up expressive power can be better in the short run to gain market share. That is, the best product doesn't always win. John On Sep 24, 2013 10:54 AM, David Barbour dmbarb...@gmail.com wrote: Even Lisp isn't parentheses balanced by definition, because you can do this: '()) In that same sense my bytecode is block balanced, except in text. [ [ [] [] ] [] ] { ] } The idea of using number of chars is possible, something like: {42|forty two characters here. But that would also be very difficult to use in a streaming bytecode. It's also difficult to read. I've always felt that bytecode should at least be slightly legible, so I can easily get a sense of what's happening just by looking at the raw streams, even though I don't expect people to program in bytecode directly (nor read it that way often). On Tue, Sep 24, 2013 at 12:49 AM, Pavel Bažant pbaz...@gmail.com wrote: I don't know the details of your language, but I see two possibilities: 1) If the textual representation of your language is parenthesis-balanced by definition, just do what Lisp does. 2) If not, format quoted text like quote number_of_chars char char char Yes I know 2) is fragile, but so is escaping. On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.comwrote: Oh, I see. As I mentioned in the first message, I plan on UTF-8 text being one of the three basic types in ABC. There is text, rational numbers, and blocks. Even if I'm not using names, I think text is very useful for tagged values and such. {Hello, World!} Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. Best, Dave On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.comwrote: I don't really have a big concern. If you just support numbers, people will find clever, but potentially incompatible ways of doing strings. I recall in the pre-STL days supporting 6 different string classes. I understand that a name is different than a string, but I come from a perl background. People don't reinvent strings in perl to my knowledge. On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote: I think it's fine if people model names, text, documents, association lists, wikis, etc. -- and processing thereof. And I do envision use of graphics as a common artifact structure, and just as easily leveraged for any explanation as text (though I imagine most such graphics will also have text associated). Can you explain your concern? On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote: Don't forget that words can be images, vector graphics or 3D graphics. If you have an open system, then people will incorporate names/symbols. I'm not sure you want to avoid symbolic processing, but that's your choice. I'm reminded of the omgcraft ad for cachefly. John On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote: Okay, so if I understand correctly you want everyone to see the same thing, and just deal with the collisions when they occur. You also plan to mitigate this by using some visual indicators when that word doesn't mean what you think it means. This would require search before rendering, but perhaps it could be a search of the user's personal dictionary - i.e. ambiguity only within a learned set. I wonder if we could use colors or icons to help disambiguate. A concern I have about this design is when words have meanings that are subtly but significantly different. Selecting among these distinctions takes extra labor compared to using different words or parameterizing the distinctions. But perhaps this also
Re: [fonc] Personal Programming Environment as Extension of Self
One way of escaping is indentation, like Markdown. This is arbitrary code This is arbitrary code *in* arbitrary code. and so on. No more escape sequences in the quotation. You just have the inconvenience of prefixing each line with a tab or something. Loup. On Mon, Sep 23, 2013 at 10:24:20PM -0700, David Barbour wrote: Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Personal Programming Environment as Extension of Self
Hmm. Indentation - i.e. newline as a default escape, then using spacing after newline as a sort of counter-escape - is a possibility I hadn't considered. It seems a little awkward in context of a bytecode, but I won't dismiss it out of hand. I'd need to change my open-quote character, of course. I'll give this some thought. Thanks. On Tue, Sep 24, 2013 at 4:19 PM, Loup Vaillant-David l...@loup-vaillant.frwrote: One way of escaping is indentation, like Markdown. This is arbitrary code This is arbitrary code *in* arbitrary code. and so on. No more escape sequences in the quotation. You just have the inconvenience of prefixing each line with a tab or something. Loup. On Mon, Sep 23, 2013 at 10:24:20PM -0700, David Barbour wrote: Text is also one of the problems I've been banging my head against since Friday. Thing is, I really hate escapes. They have this nasty geometric progression when dealing with deeply quoted code: {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} - {\\\}\\\}\\\}\}} I feel escapes are too easy to handle incorrectly, and too difficult to inspect for correctness. I'm currently contemplating a potential solution: require all literal text to use balanced `{` and `}` characters, and use post-processing in ABC to introduce any imbalance. This could be performed in a streaming manner. Inductively, all quoted code would be balanced. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
[fonc] Urbit, Nock, Hoon
http://www.urbit.org/2013/08/22/Chapter-0-intro.html Interesting? Julian ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc