- From: Léonie Watson <lwatson@tetralogical.com>
- Date: Mon, 21 Oct 2019 12:53:33 +0100
- To: Adam Sobieski <adamsobieski@hotmail.com>, "public-webapps@w3.org" <public-webapps@w3.org>
Adam, Thanks for posting your ideas to the WebApps WG. New ideas and proposals are typically raised in the Web Incubator Community Group (WICG): https://discourse.wicg.io/t/welcome-to-wicg-discourse/6 If an idea gains traction and support, it may then transfer into a WG like WebApps, but the goal is for it to be incubated before that happens. Hope this helps. Léonie - WebApps co-chair. On 21/10/2019 00:08, Adam Sobieski wrote: > W3C Web Applications Working Group, > > The following sketch of a hypothetical new “code-element” element and > its attributes is offered for discussion and to clarify upon the > contents of the previous letter. > > The following sketch intends to informally describe a new element, some > of its attributes and a JavaScript API towards advancing Web documents > for scenarios including: literate computer programming, computer-aided > reasoning, computer-aided mathematical proofs, computer-aided > argumentation, computer-aided fact-checking and computational journalism. > > > Element and Attributes > > *<code-element service="https://…" service-type="xml-rpc" session="…" > index="…" state="…" message="…">…</code-element>* > > *service* – A URL for a service with which to process the code elements > in a document session or scope. An XML-RPC service, for example, could > receive an XML-based request containing a number of code elements’ > contents and return an XML-based response with a state and message(s) > for each code element. > > *service-type* – The type of or protocol for the service, e.g. XML-RPC. > > *session* – A unique text string identifying the document session or > scope that a code element is in. A Web document can contain multiple > document sessions or scopes and each of those can contain multiple code > elements. > > *index* – The index of a code element in the sequence of code elements > within a session or scope (defaults to auto-incrementing the code > elements as they occur in document order). > > *state* – A service-specific text value returned by a service for the > code element and automatically placed into the attribute’s value for > purposes of scripting and styling. > > body[data-visible-feedback='true'] code-element[state='ok']:after { > content:url('ok.png') } > > body[data-visible-feedback='true'] code-element[state='not-ok']:after { > content:url('not-ok.png') } > > or > > body[data-visible-feedback='true'] code-element[state='not-ok'] { > text-decoration:underline; text-decoration-style:wavy; > text-decoration-color:red } > > *message* – An array of service-specific text string values returned by > a service for a specific element and automatically placed into the > attribute’s value for purposes of scripting. Where the state attribute > could indicate an error, the value(s) of a message attribute could > describe the error. > > *content-editable* – Can the user edit the content of the element. > > > Javascript API > > A code-element element would also have a JavaScript API. > > Such an API for a code-element element could have a JavaScript property > “sessionObject” with which to obtain a session object common to all code > elements in a document session or scope and with which to (re)invoke the > specified service. Features such as automatic line numbering of the > contents of a document session or scope, syntax highlighting for > arbitrary syntaxes, intellisense, and so on, are also topical and could > be implemented via JavaScript. > > Best regards, > > Adam Sobieski > > ------------------------------------------------------------------------ > *From:* Adam Sobieski <adamsobieski@hotmail.com> > *Sent:* Friday, October 18, 2019 5:02:23 PM > *To:* public-webapps@w3.org <public-webapps@w3.org> > *Subject:* Literate Computer Programming, Document Science and the Web > > W3C Web Applications Working Group, > > I would like to share some ideas with the group. The ideas pertain to > connections between literate computer programming, computer-aided > reasoning, computer-aided mathematical proofs, computer-aided > argumentation, computer-aided fact-checking and computational journalism. > > A summary of the ideas is that documents can include code regions for > content in programming languages, machine-readable syntaxes, or natural > languages. These code regions in word processors or IDE’s connect to > back end systems, via extensions, to provide features including > presenting users with visual hints and feedback. Such visual hints and > feedback could pertain to the correctness of programming language > portions, to epistemological factors pertaining to fact-checking, or to > the verification and correctness of reasoning or argumentation. > > While scenarios for both word processors and IDE’s are described, these > document-related ideas also pertain to Web documents. > > I hope that you find the ideas to be interesting. They are indicated > below and are available at: > https://www.linkedin.com/pulse/general-purpose-literate-programming-environments-adam-sobieski/ > . > > If you do find these ideas to be interesting, please take a minute to > vote for them in the Microsoft Word and Microsoft Visual Studio feature > request areas. > > Microsoft Word feature request area: > https://word.uservoice.com/forums/304924-word-for-windows-desktop-application/suggestions/38803918-general-purpose-literate-programming-environments > . > > Microsoft Visual Studio feature request area: > https://developercommunity.visualstudio.com/idea/775100/general-purpose-literate-programming-environments.html > . > > Thank you. > > > Introduction > > Literate programming is a programming paradigm first introduced by > Donald Knuth. In literate programming, a computer program is accompanied > by a natural language explanation of its logic. In literate programming, > a natural-language document contains a number of code regions. > > Expanding upon the literate programming paradigm, we can envision rich, > full-fledged word-processing documents which contain code regions. Such > code regions could connect to back-end systems via extensions to > literate document authoring or viewing software. Such code regions could > be adorned with visual hints and feedback items depending upon the > contents of the code regions. > > Potential uses of general-purpose literate programming environments > include: literate computer programming, computer-aided reasoning, > computer-aided mathematical proofs, computer-aided argumentation, > computer-aided fact-checking and computational journalism. > > Potential benefits of such environments include: the advancement of > artificial intelligence, the advancement of scholarly and scientific > communication, and the advancement of science, technology, engineering > and mathematics. > > > Code Regions > > Code regions are document elements which contain content in programming > languages, other machine-readable languages, or natural languages. Code > regions could be either inline or block elements in documents, flowing > within regions of text or positioned between regions of text. > > Via extensions to general-purpose literate programming environments, > collections of code regions can be connected to back-end software. Code > regions are envisioned as participating in document-based sessions or > scopes. Such sessions or scopes would allow for content from multiple > code regions to be processed as a sequential collection, for code region > content to be processed in contexts, and for meaningful visual hints and > feedback to be provided. > > General-purpose literate programming environments could provide users > with visual hints and feedback upon code regions as well as entire > documents. Code regions connected to back ends pertaining to programming > languages could provide users with help, information, warnings and > errors. Code regions connected to back ends pertaining to fact-checking > could provide users with a number of epistemological visual hints and > feedback items. Code regions connected to back ends pertaining to > automated reasoning or automated theorem proving could provide users > with visual hints and feedback related to verification or correctness. > > > Back Ends > > A back end is any compiler, interpreter, runtime environment, automated > theorem prover, automated reasoner, fact-checking system, or other > software system which can be encapsulated via an extension to provide a > set of features to a literate document authoring or viewing environment. > > As envisioned, general-purpose literate programming environments could > connect to any number of back ends via extensions. > > Back ends could be hosted locally on the machines presenting documents > to users, hosted on remote servers, or hosted on the cloud. > > One can envision literate documents which have multiple document-based > sessions or scopes and one can envision literate documents which connect > to multiple back ends simultaneously. > > > Document Portability > > Literate documents could either be authored via a new software, e.g. > Visual Studio Notebook, or from a versioned or extended existing > software, e.g. Microsoft Word or Visual Studio. As envisioned, literate > documents could also be viewed with word processing software, e.g. > Microsoft Word, which would ensure the portability of literate documents > and ease the sharing of such documents. > > One file format or a small set of file formats common across back ends > would also ensure the portability of literate documents and ease the > sharing of such documents. A literate document could be, for example, a > .docx file, an .odt file, or exportable to such file formats, regardless > of which extensions it utilizes to connect to arbitrary back ends. > > > The Advancement of Artificial Intelligence > > Beyond literate computer programming scenarios, extensible > general-purpose literate programming environments could function as > universal front ends for artificial intelligence systems such as > fact-checking systems, automated theorem provers, and automated reasoners. > > Users could, for instance, author argumentative essays and utilize code > regions to show that their arguments were valid and machine-verifiable. > > The ease of authoring, viewing and sharing literate documents which > utilize artificial intelligence back ends could invigorate artificial > intelligence research and development. > > > Conclusion > > Extensible word processors or code editors, general-purpose literate > programming environments, were described and some of the many uses and > benefits of such environments were indicated. > > Best regards, > > Adam Sobieski > -- Director @TetraLogical
Received on Monday, 21 October 2019 12:10:13 UTC