Because there’s no modularity: writing probability models is still like using unstructured assembly.
[0] https://www.andrew.cmu.edu/user/scheines/tutor/d-sep.html
In normal programming, there's no fool-proof formula for picking the best data structure or the best algorithm. If there were, we could just write one program to write all other programs and be done with it!
This part reminds me of some of capabilities of the Idris compiler [1]. In an Idris program you can leave "holes" to stand in for incomplete parts of a program [2], and the compiler can infer various bits of code from types and holes. In a demo of the in-progress Idris 2 compiler [3], Edwin Brady refers to it as a "lab assistant" and shows it writing a whole function when given a function type.
[1] http://docs.idris-lang.org/en/latest/tutorial/interactive.ht...
[2] http://docs.idris-lang.org/en/latest/tutorial/typesfuns.html...
Similarly, many JIT compilers create statistics on the fly already; for instance these are used to better predict which branches are most likely to occur and thus be prefetched.