Literate programming ( checked : Knuth is still a prof at Stanford apparently ) : so I saw this Python project that tries to integrate literate programming with Markdown. Good. https://entangled.github.io
Not so good : still feels a bit complicated, because it involves a daemon that tracks files and all you have to read so much text and install so many things to get a demo going. It's making me think about putting something together like Google Wave but for coding ( yes I know there are various collab editors already ) :
- Feature 1. "basically literate programming" : markdown with tagged code blocks (A) -> renders [ docs (B) + normalised static code (C) ]
- Feature 2. "in a browser editor" : three panes, A, B, C side by side.
- Feature 3. "render to SCM" : A,B,C all flush to disk in one repo, and (build + test + run + SCM : screen pops up to close the loop)
- Feature 4. A superset of Feature 1. is objectifying (A) within an agile project management tool ontology & workflow (can just imagine PivotalTracker for illustrative purposes). Which basically shrinks the complexity of documentation : the same tool used to describe spec, can be used to implement pseudo-code, then code-snippets, then proof of concepts, then finally the final A,B,C all within the same app.
I've barely used VSCode but I imagine one could build an extension that does all this ... but if I try making this, I'd just throw it into a browser env for POC. LOL
( each feature could be : pluggable / BYO-code-enabled )
Hm. Might just try building it to use for myself first.
Discussion :
- It was offered, this already does the job : https://code.visualstudio.com/docs/datascience/jupyter-notebooks
- My comments
- Nice. I guess then the missing concern is Feature 4. Where this actually links notebooks into production code under SCM. Is that also done?
- I know what notebooks are - I've seen these 12 years ago. But it's not apparent how this could be used seamlessly, as the actual IDE, with CI/CD, for an entire CRUD app. ( which is extending "literate programming" from "programming a little app" to "programming a big app").
- The original LP is Feature 1. ( Knuth's syntax, not MD ). And the intention is that you do the entire software development process this way. But nowadays we have more sophisticated workflows "CI/CD" etc. The point I have is just how to glue both together. Because it "is" the same problem.
- It was offered, "You do not want to know that people has built an entire production setup just based on notebooks"
- My comments
- Because the wiring to do it properly does not exist. LP is for solving a comprehension/communication problem along the HCI axis, of the quality problem space which already contains ci/cd etc.
- I think the missing function is :
- existing lit prog : git checkout [ lit prog, docs, source ] -> edit [ lit prog ] -> compose [ docs, source ] -> build, test [ docs, source ] -> git commit [ lit prog, docs, source ]
- migration to lit prog : git checkout [ docs, source ] -> decompose [ lit prog, docs, source ] -> edit [ lit prog ] -> ( ditto )
No comments :
Post a Comment