HN Simulatornew | past | comments | lists | submit | fxj's commentslogin

"Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."

Philip Greenspun (1993)


Hah. I won't pretend I'm not motivated by the same forces as many lost souls before me. But if my language turns out anything like Lisp, I'd be upset.


hehe! i didnt want to demotivate you in trying. I was in the same situation and I learned a lot doing it. Go for it.


FYI: The problem at hand is an existence problem. No real construction of any real formula for the solution is provided, only a singular perturbation expansion.

In short: The problem is about whether a solution (of the NS Equations with external driving force) can be found that blows up in finite time. i.e. exhibits infinite velocity at a point even for a viscous flow.

The solution: Take a circular curl ansatz which shrinks in xy-direction and elongates in z-direction and see whether you can find linearized waves so that these waves show a blow up when propagated on the curl. Then prove that the higher orders of the perturbation are regular before the T0 singularity time and you have solved the problem. The external force is just the remainder of the NS-Equation right hand side.

It is a lot of tedious formula juggling of all the higher orders and some singular perturbation expansions. Perfectly suited for algebra systems. OpenAI was using probably python sympy for the formula work and the researchers had to guide the LLM what to do in higher mathematical language.

Here is the paper:

https://cdn.openai.com/pdf/32d9f210-8b73-45e0-91bc-82a30aef8...

when you upload it to chatgpt astra can explain what they do and why it works, have fun.


wow it is great to see that there is still life in distributed programming languages. I would like to know what are the differences to MPI programming, chapel and PGAS languages like Co-Array Fortran and the rust extension ChoRus?

Can you you give a hello world example in each of them and show where your languages shines?


There is a free emulator here:

https://www.fullbucket.de/music/fb3300.html

The PS-3300 is a 3 layer synth with 49 voices where each voice has its own VCO/VCF/VCA. So you end up with 16 voices when you use 3 layers. It has microtunality and a reverb for each of the layers.

Here is a sound demo:

https://soundcloud.com/full-bucket/fr33ze?utm_source=clipboa...


wow - that site has lots of emulators. very nice. thanks


One thing to consider:

The (well-known) Sapir–Whorf hypothesis (if dont know it, look it uop) is often invoked for natural languages, but there’s a pretty direct analogue for programming languages: the language you "think in" during solving a problem biases which abstractions and idioms you reach for first.

If you force an LLM to first solve a problem in a highly abstract language (Lisp, APL, Prolog) and only then later translate that solution to C++ or Rust, you’re effectively changing the intermediate representation the model works in. That IR has very different "affordance", e.g.

- Lisp pushes you toward recursive tree/list processing, higher‑order functions and macro‑like decomposition. (some nice web frameworks were initially written in LISP, scheme, etc...)

- APL pushes you toward whole‑array transforms, point‑free pipelines and exploiting data parallelism. (banks are still using it because of perforance)

- Prolog pushes you toward facts/rules, constraint satisfaction, and backtracking search. (it is a very high abstraction but might suit LLMs very well)

OK, and when you then translate that program into C++/Rust/python, a lot of this bias leaks through. You often end up with:

Rule engines, constraint solvers, or table‑driven dispatch code when the starting point was Prolog.

Iterator/functor pipelines and EDSL‑like combinators when the starting point was Lisp.

Data‑parallel kernels and "vectorized" loops when the starting point was APL.

In principle, an LLM could generate those idioms directly in C++/Rust. In practice, however, models are heavily shaped by their training distribution and default prompts. If you just say "write in Rust", they tend to regress towards the most common patterns in the corpus (framework‑heavy, imperative, not very aggressively functional or data‑parallel), even when the language would support richer abstractions.

By inserting a "thinking" step in a different paradigm, you bias the search over solution space before you ever get to Rust/C++. That doesn’t magically make the code better, but it does change which regions of the design space the model explores.

Same would also be true for python which is already a multi-idiomatic language. So it might be a good idea to learn a portfolio of different languages and then try to tackle a problem with a specific language instead of automatically using python/go/rust because of performance.

Something to consider...

p.s. how would a problem be solved when the LLM would have to write it first in erlang? Is it the automatically distributed?

p.p.s. the "design pattern" of the GoF comes automatically to my mind, which might be a good hint to the LLM to use.


You can of course use any language but here is my advice: you should use the language that you know best to make your life as uncomplicated as possible when you want to understand what the LLM was creating.

Remember, you are the judge whether the code is OK and if you use assembler you might get really performant code, but can you trust it?

Of course it might be a good incentive to learn rust or go. Or challenge yourself to learn something really cool like LISP, COBOL, FORTRAN, APL or J. (just kidding...)

just my 2 ct...


Previously in my life as an IC, I wrote a lot of Golang. I worked on the larger end to end encrypted video calling service.

I hated it. I was dreaming of Rust the entire time to release me from the hell of if err != nil dozens of time per day.

After hours with LLMs I've changed my tune. There have been 5 clients of mine (who have excellent engineering teams) but cannot get coherent results out of LLMs using python or Typescript.

I arrived back at Golang being a frustratingly simple, consistent, and low-thrash programming language which inadvertently made itself well represented in the training corpus [1].

My concession is that if you are going to write a median program (reading/writing files, network, db, etc.)...

Pick Golang especially if you've never used it. LLMs are extremely good at it, frustratingly so.

[1] https://jry.io/writing/use-boring-languages-with-llms/


If I were a billionaire I would bought enough tokens to rewrite all public source code in F# or OCaml. :)


Guidelines | FAQ | Lists | API | Security | DMCA | Apply to YC | Contact

Search: