Literate Computer Programming, Document Science and the Web

W3C Semantic Web Interest Group,
W3C Artificial Intelligence Knowledge Representation Community Group,

I would like to share some ideas with the groups. 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. Furthermore, artificial intelligence knowledge representation topics are pertinent to some envisioned machine-readable syntaxes in the aforementioned code regions.

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

Received on Sunday, 20 October 2019 00:41:16 UTC