You are viewing archived messages.
Go here to search the history.

Janne Aukia 2023-10-09 09:55:41

Has anyone thought about or written about malleable software + LLM:s? I feel that it is an area that could be quite interesting, but I haven't got yet a clear understanding on what this will lead to.

I think that pretty soon most of end-user code will be generated with the help of LLM:s. Some thoughts/questions I've been thinking about:

  • How to generate programming languages, libraries and abstractions that LLM:s can use well? Is that different from generating libraries etc for humans?
  • LLM:s are faster than humans in processing data, so API:s can be really wide and probably more complex than what would be practical for devs.
  • LLM:s can probably handle more condensed/optimized representation better, too.
  • And be able to infer system affordances directly from code.
  • How to support creating good and maintainable code from LLM:s? And will that matter? Or will actual code become irrelevant?
  • How to modularize apps so that they can be easily composed by LLM:s?
  • My hunch: making apps modular and composable would work really well with LLM:s already now and even better in the future. Doesn't matter if functional or OOP, as long as the LLM can understand the logic.
  • What kinds of new apps and malleable software will LLM:s enable?
  • Also: LLM:s could finally enable removing some boundaries between different programming tools, library ecosystems, etc, by enabling translations/bridges automatically.

Any thoughts?

Paul Sonnentag 2023-10-09 13:07:52

đź“ť Malleable software in the age of LLMs

All computer users may soon have the ability to author small bits of code. What structural changes does this imply for the production and distribution of software?

Konrad Hinsen 2023-10-09 15:39:08

One big question I see is: will anyone actually make an LLM that will do this job well? Are there economic incentives?

Today's LLMs are not up to the task. Whatever they produce, code or prose, needs to be checked by a human if precision matters (which is almost always does in code).

Also, today's LLMs are not up to the taks of maintaining anything, because they themselves evolve too quickly. It's very much "move quickly and break things". If you write end-user code in a natural language and count on an LLM to turn it into precise instructions, at the very least you want those precise instructions to be reproducible over time.

Janne Aukia 2023-10-09 15:53:58

Thanks Paul Sonnentag, this is pretty much exactly the kind of thing I was looking for and thinking about!

Janne Aukia 2023-10-09 15:59:34

Konrad Hinsen, good points! My hunch is that LLM:s will still improve a lot. Also model versioning, open-source models and fine-tuning will help at overcoming some of the other current bottle-necks. But we'll see. 🤷‍♂️

Mark Dewing 2023-10-09 17:07:48

LLMs are good a producing a first draft, since they do require a lot of human oversight of the output. I'm partial to modifying programs by describing the transformation of the code. LLMs might be useful for writing the first draft of those transformations. That helps with the reproducibility issue because the LLM is describing the changes to the code in more structured way, not the code itself. Unfortunately, as far as I know, there is no widely recognized syntax or system for describing program transformations.

Janne Aukia 2023-10-09 17:33:36

Right. Instead or in addition to editing raw low-level imperative code, I think LLM:s could be useful in altering module-level code/structure, such as which objects/panels are visible where, how they are interconnected, etc. And then create minimal required glue to bind them together. I think this kind of use-case could be interesting to explore and perhaps even more interesting than just creating for loops, if-statements, etc.

Kartik Agaram 2023-10-09 17:34:37

At least in my filter bubble, I'm seeing a lot of ferment in the area of local-only models. I think they go a long way towards addressing concerns of incentives as well as LLM evolution.

Janne Aukia 2023-10-09 17:37:23

Interesting idea of having LLM:s describe transformations of code @Mark Dewing, btw. Using an LLM to create a transpiler from one language to another would be something like this. Perhaps also LLM creating glue code between API layers. Or are you thinking of something different. 🤔

Tom Lieber 2023-10-09 17:44:28

OpenAI had a first-class “edit” API where you’d send it (for example) code and a description of a change, and it would return the modified version. They deprecated it this summer because it was just as reliable to use the chat API. Even without a transformation language, I find it easy to work with because I can examine the diff just like if another human made the change.

Greg Bylenok 2023-10-09 20:23:45

You may enjoy this: nothing concrete yet but a vision for the future: "LLM As Compiler": medium.com/redsquirrel-tech/llm-as-compiler-2a2f79d30f0b

Janne Aukia 2023-10-09 20:42:31

Interesting, thanks @Greg Bylenok! So if I get this correctly, the idea is that users will do coding in high-level pseudo-language, compile it to the actual target language and then verify that it works as intended.

Konrad Hinsen 2023-10-10 09:17:33

Something I'd like to see (but don't expect to) is the use of controlled natural languages as the intermediate layer. Generated by an LLM, checked by a human. Controlled natural languages are hard to write but easy to read, so they look like just the right level.

Problem: there is no big corpus of any controlled natural language that could be used to train LLMs. And such a corpus would be very expensive to create, because these languages are a pain to write.

Janne Aukia 2023-10-10 10:21:19

I've seen some posts about enforcing constraints on LLM output. Not sure what was the one I saw on Twitter, but perhaps this is something related: github.com/IsaacRe/Syntactically-Constrained-Sampling

Something like this might work even for a controlled natural language, as long as you can formalize/validate the language?

And I really hope that some type of forced constraints will be in all LLM:s soon.

Greg Bylenok 2023-10-10 11:25:07

100% on the constraints. For now, we attempt to accomplish through prompting, like "put your answer in the following JSON structure"... When it neglects to do so, we have to remind it via "now put your answer in the following JSON structure". Obviously not robust, but so far "good enough" for our use case. Another change that would help: eliminating the non-determinism in the reply. Can anyone explain why today's LLMs are not deterministic? Has non-determinism been added as a "feature" to avoid repetitive responses? Or is it somehow fundamental to the inference algorithm itself?

Konrad Hinsen 2023-10-10 11:39:12

It's a feature. And as long as LLM output is not reliable, I don't see the point of making it determinstic.

Tom Lieber 2023-10-10 14:58:02

@Greg Bylenok writings.stephenwolfram.com/2023/05/the-new-world-of-llm-functions-integrating-llm-technology-into-the-wolfram-language touches on it.

“The basic issue is that current neural nets operate with approximate real numbers, and occasionally roundoff in those numbers can be critical to “decisions” made by the neural net (typically because the application of the activation function for the neural net can lead to a bifurcation between results from numerically nearby values). And so, for example, if different LLMFunction evaluations happen on servers with different hardware and different roundoff characteristics, the results can be different.”

The next few paragraphs go into how GPU parallelism inserts nondeterminism too.

But that’s just an explanation of why it’s difficult to remove entirely. Most systems do insert it intentionally to produce variation in the responses.

đź“ť The New World of LLM Functions: Integrating LLM Technology into the Wolfram Language

How to install and use Wolfram's instant LLM-powered functions. Stephen Wolfram shares dozens of examples and explains how the functions work. Also download

Alex McLean 2023-10-09 20:19:29

Kartik Agaram's draft programmer's pledge reminded me of Ursula Franklin's checklist for technology projects, which is a bit hidden in one of her really excellent 1986 lectures on the "real world of technology"

“… whether it:

(1) promotes justice;

(2) restores reciprocity;

(3) confers divisible or indivisible benefits;

(4) favours people over machines;

(5) whether its strategy maximizes gain or minimizes disaster;

(6) whether conservation is favoured over waste; and

(7), whether the reversible is favoured over the irreversible?”

I tried to summarise these points in a blog post here or you can listen to the lectures directly, or read it in book form.

I'll pull out a couple of quotes, first on 3) divisible/indivisible benefits:

“If you have a garden and your friends help you to grow a tremendous tomato crop, you can share it out among those who helped. What you have obtained is a divisible benefit and the right to distribute it. Whoever didn’t help you, may not get anything. On the other hand, if you work hard to fight pollution and you and your friends succeed in changing the practices of the battery-recycling plant down the street, those who helped you get the benefits, but those who didn’t get them too. What you and your friends have obtained are indivisible benefits.”

and on 7) reversible vs irreversible:

“The last item is obviously important. Considering that most projects do not work out as planned, it would be helpful if they proceeded in a way that allowed revision and learning, that is, in small reversible steps.”

5) on maximising gain vs minimising disaster is also a really interesting point, where she argues against planning, and for finding the right conditions for something to grow, at its own rate.

Kartik Agaram 2023-10-10 15:04:40

I thought I'd watched real world of technology , but looking again I think I only watched the first episode. That might be why I was utterly ignorant of this list. Goes on top of Todo stack.

Alex McLean 2023-10-10 15:09:50

Note that the second lecture seems to be missing from the audio recordings on archive.org

Daniel Buckmaster 2023-10-10 15:38:02

In a similar vein, Jacques Ellul's 76 questions 76questions.neocities.org. there are 76 of them because Ellul has issues with concision

đź“ť 76 reasonable questions to ask about any technology

Dear technologist, Please keep these questions in mind as you consider your work and its potential implications. Instead of focusing only on efficiency, please expand your conscience's horizon and consider the human context around you.

🕰️ 2023-10-06 21:46:31

...

Nilesh Trivedi 2023-10-10 14:40:59

Just today, I watched this interview where Yanis Varoufakis argues that capitalism has been devoured by "Cloud Capital": youtube.com/watch?v=VatYrw0uqjU

Jason Morris 2023-10-12 16:12:48

I just (finally) figured out how to represent my coding language as a directed multi-graph with labeled edges. Now I'm wondering if the interpretation steps could be represented as graph translations, so you could literally "watch" it execute. Anyone have any ideas for libraries that I could use to explore that idea, or examples I could look to? My current best guess is NetworkX and visdcc+dash.

Tom Lieber 2023-10-12 17:27:08

I swear I read articles from more people than just Stephen Wolfram, but he just happened to publish a good one for this: writings.stephenwolfram.com/2023/09/expression-evaluation-and-fundamental-physics

It won’t help you explore the idea outside his environment, but the article presents a few different ways of conceptualizing and visualizing trees of expression evaluation.

đź“ť Expression Evaluation and Fundamental Physics

A deep correspondence is discussed between the computational evaluation of symbolic expressions and recent results on discrete models of fundamental physics.

Jason Morris 2023-10-13 00:56:27

An example of what I'm talking about, done in graphviz as a prototype. Ugly, but promising.

graphviz (2).png

Arcade Wise 2023-10-13 13:33:59

Oh! Have you heard of interaction nets?

Jason Morris 2023-10-13 21:06:01

I have now?

Arcade Wise 2023-10-13 22:51:06

Oh! So they're these really cool methods of modeling computation, that use graphs as the computer itself!

wiki.xxiivv.com/site/interaction_nets.html

Eli Mellen 2023-10-13 14:31:25

What does it mean to you when someone says something like “code as literature?”

Often the implication seems to be that code should be readable — which I take to mean “understandable,” which I further take to me “as a person looking at this code I can map what it’s output will be.”

Where my specific hangup enters is that a lot of literature isn’t directly “understandable” in this sense. There are many layers at which to understand literature. How about code? Code as more than it’s outcomes.

Alex McLean 2023-10-13 15:11:10

I'd assume they're a Critical Code Studies scholar, have probably read a lot of Heidegger, Deleuze etc, and I haven't so I'm probably not going to understand what they're going to say about it

Eli Mellen 2023-10-13 15:14:27

See, there may be my problem. I have read oh so much of both of those…

Though, the Heidegger was all out of anger in grad school

Alex McLean 2023-10-13 15:17:03

Heh, a friend was telling me that Germans wonder why others are so obsessed with him when he was such a nazi

Alex McLean 2023-10-13 15:19:17

I do enjoy CCS stuff though even though a lot goes over my head!

Eli Mellen 2023-10-13 15:20:10

yeah…um…Heidegger isn’t worth reading in my opinion

brett g porter 2023-10-13 15:58:39

@Alex McLean any CCS recommendations? All I've read from that world was the 10 PRINT book that came out a few years back, which I dug, as an aging pseudo-intellectual.

Eli Mellen 2023-10-13 16:00:33

[August 16th, 2023 4:29 AM] eli.mellen: <https://digitalhumanities.org/dhq/vol/17/2/000713/000713.html|Introduction: Situating Critical Code Studies in the Digital Humanities>

&gt; Critical code studies is the application of the hermeneutics of the humanities to the interpretation of the extra-functional significance of computer source code. “Extra” here does not mean “outside of” or “apart from” but instead it refers to a significance that is “growing out of” an understanding of the functioning of the code. This piece also links to a few other interesting resources on the subject, including, the <https://electronicbookreview.com/essay/critical-code-studies/|initial manifesto for critical code studies.>

I also liked this quote,

&gt; Still, reading code, even without interpreting its cultural significance, can be no easy task. Ask a professional programmer who inherits legacy code to maintain or, worse yet, to improve, and they will tell you about the dread of sorting out just-in-time code, minimally documented, written with hasty patches, full of compromises and workarounds. Even those who write their code in artistic projects can be shy about sharing their code out of embarrassment and self-consciousness. This shame is a product of the “encoded chauvinism” of programming culture, one that can be fostered on the internet as much as it is in classrooms [<https://digitalhumanities.org/dhq/vol/17/2/000713/000713.html#marino2020|Marino 2020>, 148].

Alex McLean 2023-10-13 16:04:50

I haven't read much apart from taking part in the working group wg.criticalcodestudies.com

Mike Austin 2023-10-13 23:27:24

Only a fraction of what is represented by this topic if I understand it, I often use rigaux.org/language-study/syntax-across-languages.html and en.wikipedia.org/wiki/Rosetta_Code (which seems to be down currently) when thinking about writing languages. I also read older books such as SmallTalk implementation and how it progressed from the early stages (1972) to later (1980). My favorite, although a bit heavy in syntax is the Dylan programming language en.wikipedia.org/wiki/Dylan_(programming_language) It is sort of an Algol syntax for LISP-type language. I believe Julia is a somewhat of a relative of Dylan for modern languages.

brett g porter 2023-10-13 14:42:04

I can only interpret it in the sense that Jon Bentley discussed in Programming Pearls : code that you would be interested in reading while sitting by a fire with a snifter of brandy. After that, my next step is Knuth's Literate Programming , well-structured narrative text describing a program's operations and the thought process behind it (that happens to have pieces of compilable code embedded within).

Duncan Cragg 2023-10-14 22:00:50

"code that you would be interested in reading while sitting by a fire with a snifter of brandy" - Christ, that's when I start discussing UFOs and conspiracy theories.

Josh Cho 2023-10-15 03:07:01

better DSLs for prompt engineering? i am being inspired by forth

Paul Tarvydas 2023-10-15 10:49:58

observation: similarities - Forth, de Bruijn Indexing, Lambda Calculus, Currying ...

Paul Tarvydas 2023-10-15 10:50:49

FYI - David B. McClain wrote Forth for a living (Kitt Peak) and is now using Lisp. I posted some of his comments here, including a reference to his Forth in Lisp: guitarvydas.github.io/2023/10/06/David-McClain-on-FORTH.html

đź“ť David mcclain on forth

[shared by permission]