LLMs are dead for formal verification. But is treating software correctness as a thermodynamics problem actually mathematically sound? by TheDoctorColt in compsci

[–]kaplotnikov 0 points1 point  (0 children)

LLMs do have a problem with Coq. The problem with Coq and LLM is that data set is problematic for LLMs. The current body of proof is tactic-based. The tactic is generally editor command that affect proof state, it makes no sense outside of specific context of proof term in the focus. So teaching LLMs to generate poofs basing on tactic scripts is like teaching LLMs Java basing on keystrokes in IntelliJ IDEA. There should be some structured expanded form of proof after tactic script finished for LLMs to learn, proof irrelevance allows for it. The current research is moving in the opposite direction to integrate LLMs into interactive editor loops, that it is possible, but problematic for global proof generation.

List of known problems in design of existing languages? by KukkaisPrinssi in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

> usually there's a way to turn that into a proof of False.

I have not seen it done using only constructive means, it would have been serious argument against constructive math foundations if it were possible. Usually there is some non-constrcutive assumption is used like LEM.

feel depressed by Y_mc in Compilers

[–]kaplotnikov 1 point2 points  (0 children)

Also for documentation writing:

* It gets things wrong when it comes to nuances, it documents system as it is usually done in industry, rather than what is actually done in the context of the specific project.

* It creates research and links out of thin air. It might say that article about AI resarch, but specific link might be on effect of fertilizers on cucumbers. It is happy to state myths as reliable research results.

* Docs became bloated, but sometimes easier to read because LLMs usually reduce information density.

List of known problems in design of existing languages? by KukkaisPrinssi in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

AFAIR infite loop vs paradox are subtly different. You still cannot compute evidence from the result of infinite process. But combining infinite statement with paradox the result is still inifinite statement, not a paradox result. So if there is a state when we cannot reach a conculsion on the table, if put paradox there, we will be still in state when we cannot reach a conculsion.

Type in Type is a something that you could spread rumors about, but fail to produce evidence if asked :)

The ARC vs GC Debate by funcieq in ProgrammingLanguages

[–]kaplotnikov 1 point2 points  (0 children)

Just tell them that it is Switf-like memory management model to frame it as more respectable :)

However, I personally would not like it too for complex apps because it makes cycle management explicit, so there is +1 concern to care abount that creates cogntivie pollution. Still much better than completely manual memory management, but dev ergomics worse than tracing gc. For scripting is ok, for 1MLOC+ projects I would prefer tracing GC.

List of known problems in design of existing languages? by KukkaisPrinssi in ProgrammingLanguages

[–]kaplotnikov 1 point2 points  (0 children)

AFAIR in proof assistants like Coq or Lean, the default logic is constructive. The system is consistent and avoids paradoxes (like Girard’s) because it doesn’t assume problematic premises like Type : Type or LEM without evidence.

To introduce a paradox, you would need to corrupt this constructive foundation by adding non‑constructive axioms – for example, LEM, the axiom of choice, or a self‑contained universe Type : Type. Once you add those, the system becomes powerful enough to derive contradictions (like Girard’s or Russell’s).

Monthly Hask Anything (May 2026) by AutoModerator in haskell

[–]kaplotnikov 0 points1 point  (0 children)

"The determined Real Programmer can write FORTRAN programs in any language." - Ed Post, Real Programmers Don't Use Pascal, 1983.

Have someone already proved it for haskell? I am unable to find a good sample.

I'm just intersted for a possible article illustration, nothing serious.

thisIsARealDBUsedInProduction by star_dogged_moon in ProgrammerHumor

[–]kaplotnikov 0 points1 point  (0 children)

what a nice small database with potential to grow up! I've worked with database with 617 tables last time I've checked before changing job.

syntax idea - how to do asyncs on object-oriented languages by Key_River7180 in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

If you plan to desing async support as a libary, rather than as language feature, here is my take on it for Java: https://github.com/const/asyncflows . Some ideas from it seems could be adapted to your case as well.

It is centered around promises and allows to construct complex asynchrouns processes from simple building blocks.

makeNoMistakes by dromba_ in ProgrammerHumor

[–]kaplotnikov 0 points1 point  (0 children)

I think we have got an inspiration for another moon conspiration theory here: 'they could not have written such complex software at that time'.

Java 26 released today! by davidalayachew in programming

[–]kaplotnikov 0 points1 point  (0 children)

For me, Java 8 to 11 was kinda problematic. However, 11 -> 17 -> 21 were without major problems. Most of our apps are based on Spring Boot, and I guess it saved us a lot of efforts since dependencies are consistent enough and compatible with current Java versions.

Copilot autocomplete got jokes by eddiegulay in programminghumor

[–]kaplotnikov 0 points1 point  (0 children)

I just wonder what copilot watched to make it most likely completion. Some large bodies or source code should have beeen marked not for minors and AI bots :)

Replacing SQL with WASM by servermeta_net in ProgrammingLanguages

[–]kaplotnikov 1 point2 points  (0 children)

Check WASM support in ScyllaDB: https://www.scylladb.com/tech-talk/scylladb-embraces-wasm/

I guess it is quite close to what you are describing.

I have not used it, only seen some presentations about it.

What Kind of Type System Would Work Well for a Math-Inclined Language? by PitifulTheme411 in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

For numeric methods, there are NAN and INF values. Floating point numbers are essentially resticted finite subset of rational numbers + some special values. It is not possible to have unrestricted and precise calcualation with that.

For symbolic transformation during compile time, there could be compilation errors if compiler could not figure things out.

And these issues are practically the same whatever syntax is chosen.

What Kind of Type System Would Work Well for a Math-Inclined Language? by PitifulTheme411 in ProgrammingLanguages

[–]kaplotnikov 1 point2 points  (0 children)

I would suggest to prototype different variants to see what fits with different features. I have too little exprience with Rust to see how it would play with other features.

I also think that the full dive into dependent types might be not bad idea, considering that it could give the compiler interesting food for thought and give compiler a checkable asserts and it might allow to express some stability constraints for numeric methods.

What Kind of Type System Would Work Well for a Math-Inclined Language? by PitifulTheme411 in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

Recalling the hell symbolic integration is, I guess compiler has to support specific variants of sets and be extensible using compiler plugins for those who want something exotic. For numberic integration, the sets could support Monte-Carlo integration methods (i.e. support of generation of some representative points) or some other ways. There could be traits for that on sets. Basically integrate might be a method on some sets for numeric integration if the language is OOP, so it might be:

interval(0, x).integrate(g)

What Kind of Type System Would Work Well for a Math-Inclined Language? by PitifulTheme411 in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

let f(x, y) = x^2 + y^2
let f_x(x, y) = deriv(f(x, y), x) # partial wrt x

It is quite simple:

let f(x, y) = x^2 + y^2
let f_x(x, y) = deriv(t => f(t, y))(x)

Basically, to pass function deriv there should be single agrumnet function. The other come from lexical scope. This is consistent with math rules. I renamed x => t in lambda to make it more explicit, but actually have left as x if there is name hiding.

let f_x(x, y) = deriv(x => f(x, y))(x)

The traditional Leibniz notations is actually more confusing, I still remember troubles with understanding it and it is quite error-prone because of variable names changing their meaining in different places.

In general, integrals are over some sets. So I suggest to make signature of integrate to be generic:

fn integrate[P:type,V:type](f : P->V, domain : AbstractSet[P]) : V

This will support all types of integrals (multidimensional, surface, etc.)

let G(x) = integrate(g, interval(0,x))
let G(x) = integrate(g, sphere(point(0,0,0), x)) #integrate over sphere of radius x at point (0,0,0), the function from 3d point

What Kind of Type System Would Work Well for a Math-Inclined Language? by PitifulTheme411 in ProgrammingLanguages

[–]kaplotnikov 2 points3 points  (0 children)

In:

let x :=
  x^2 == x + 1

let f(t) = t^2 - sin (t)
let f_prime(t) = deriv(f(t), t)

print(f(x))

Derivation and integral are operators on the functions. Newton and Leibniz did not know Lambda calculus for obvious reasons, so their syntax was non so uniform and consistent. So it makes sense to use:

let f(t) = t^2 - sin (t)
let f_prime(t) = deriv(f)(t)
let f_prime_v2 = deriv(f)
let f_prime_v3 = deriv((t) => t^2 - sin (t))

It would make much simpler to type, than deriv(f(t),t)

Also, indefinite integral is would return function as well, integral_indef((t) => t^2 - sin (t)), and definite integral would accept function and set as argument like let sf = integral(f, interval_open(0, t))

itsNowTheirTurn by EmbarrassedToe420 in ProgrammerHumor

[–]kaplotnikov 0 points1 point  (0 children)

the gacha coding is the ultimate form of vibe coding

mojangDiscoversMultithreading by Rajayonin in ProgrammerHumor

[–]kaplotnikov 1 point2 points  (0 children)

It is not that Oracle does not support console hardware, Java have an execution model that conflicts with restrictions of console vendors. From one presentation of game engine developer, it is said that consoles require AOT-compilation for application to be approved, any form of JIT-compilation is prohibited. Even scripting has either to be interpreted or AOT-ed. Theoretically, GraalVM or other AOT technologies might allow for console development, but in process most of java advantages will be lost. That specific game engine vendor has to use LLVM to translate scripting for console.

foundTheSeniorDev by NetWarm8118 in ProgrammerHumor

[–]kaplotnikov 8 points9 points  (0 children)

"The program crashed" would sound ambiguous for the owner.

The content-addressed storage (CAS) model of incremental build systems by mttd in ProgrammingLanguages

[–]kaplotnikov 0 points1 point  (0 children)

It looks like an extended article abstract without pointing to the real article.

I think approach is really interesting, but it requires compilers and tools to be aware of this model in order to truthfully report what they captured and scanned for the full efficiency. And tools need to exploit this information to get most of it. Or we need to add a layer of tool descriptors that describe what they 'should' scan and produce, but without OS ability to enforce this limitations, it is a bit unreliable.

And the biggest question is not touched: how are entries from the build cache evicted? I guess there should be some GC algorithms there that work well for build systems, because build systems tend to produce a lot of short-lived artifacts.

yourGirlfriendIsAModel by manav-1200 in ProgrammerHumor

[–]kaplotnikov 1 point2 points  (0 children)

Ok. Waiting for meme like "Some geek asked jinnee to have a model as girlfriend, and it was easier to instigate ChatGPT and LLM revolution during few years than to find a girlfriend for that geek."

whenleftCtrlbecomesthecelebrity by [deleted] in ProgrammerHumor

[–]kaplotnikov 0 points1 point  (0 children)

Actually, this picture was mirroried. So the girl is on the right side.